aboutsummaryrefslogtreecommitdiff
path: root/sway/commands/bar/tray_output.c
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2018-12-31 15:43:23 -0500
committerGitHub <noreply@github.com>2018-12-31 15:43:23 -0500
commit3d7c20f062bebe39199d3872e5b64d5e8d61d100 (patch)
tree93b8ddb51873cae14db8d5f07db74ca96236f184 /sway/commands/bar/tray_output.c
parent4a3ada303b948ce2bdf21c7e6254005c85b000ea (diff)
parent9e31f5d79ce9de8f1c73013b792aa94f355a1983 (diff)
Merge pull request #3249 from ianyfan/tray
Swaybar tray
Diffstat (limited to 'sway/commands/bar/tray_output.c')
-rw-r--r--sway/commands/bar/tray_output.c39
1 files changed, 37 insertions, 2 deletions
diff --git a/sway/commands/bar/tray_output.c b/sway/commands/bar/tray_output.c
index e6c77128..a1169c20 100644
--- a/sway/commands/bar/tray_output.c
+++ b/sway/commands/bar/tray_output.c
@@ -1,7 +1,42 @@
+#define _POSIX_C_SOURCE 200809L
#include <string.h>
+#include "config.h"
#include "sway/commands.h"
+#include "sway/config.h"
+#include "list.h"
+#include "log.h"
struct cmd_results *bar_cmd_tray_output(int argc, char **argv) {
- // TODO TRAY
- return cmd_results_new(CMD_INVALID, "tray_output", "TODO TRAY");
+#if HAVE_TRAY
+ struct cmd_results *error = NULL;
+ if ((error = checkarg(argc, "tray_output", EXPECTED_EQUAL_TO, 1))) {
+ return error;
+ }
+
+ if (!config->current_bar) {
+ return cmd_results_new(CMD_FAILURE, "tray_output", "No bar defined.");
+ }
+
+ list_t *outputs = config->current_bar->tray_outputs;
+ if (!outputs) {
+ config->current_bar->tray_outputs = outputs = create_list();
+ }
+
+ if (strcmp(argv[0], "none") == 0) {
+ wlr_log(WLR_DEBUG, "Hiding tray on bar: %s", config->current_bar->id);
+ for (int i = 0; i < outputs->length; ++i) {
+ free(outputs->items[i]);
+ }
+ outputs->length = 0;
+ } else {
+ wlr_log(WLR_DEBUG, "Showing tray on output '%s' for bar: %s", argv[0],
+ config->current_bar->id);
+ }
+ list_add(outputs, strdup(argv[0]));
+
+ return cmd_results_new(CMD_SUCCESS, NULL, NULL);
+#else
+ return cmd_results_new(CMD_INVALID, "tray_output",
+ "Sway has been compiled without tray support");
+#endif
}