diff options
author | Drew DeVault <sir@cmpwn.com> | 2018-12-31 15:43:23 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-31 15:43:23 -0500 |
commit | 3d7c20f062bebe39199d3872e5b64d5e8d61d100 (patch) | |
tree | 93b8ddb51873cae14db8d5f07db74ca96236f184 /sway/commands/bar/tray_output.c | |
parent | 4a3ada303b948ce2bdf21c7e6254005c85b000ea (diff) | |
parent | 9e31f5d79ce9de8f1c73013b792aa94f355a1983 (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.c | 39 |
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 } |