diff options
Diffstat (limited to 'sway/commands/bar/tray_padding.c')
-rw-r--r-- | sway/commands/bar/tray_padding.c | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/sway/commands/bar/tray_padding.c b/sway/commands/bar/tray_padding.c index 91c56f19..eb795b00 100644 --- a/sway/commands/bar/tray_padding.c +++ b/sway/commands/bar/tray_padding.c @@ -1,9 +1,42 @@ #include <stdlib.h> #include <strings.h> +#include "config.h" #include "sway/commands.h" +#include "sway/config.h" #include "log.h" struct cmd_results *bar_cmd_tray_padding(int argc, char **argv) { - // TODO TRAY - return cmd_results_new(CMD_INVALID, "tray_padding", "TODO TRAY"); +#if HAVE_TRAY + struct cmd_results *error = NULL; + if ((error = checkarg(argc, "tray_padding", EXPECTED_AT_LEAST, 1))) { + return error; + } + if ((error = checkarg(argc, "tray_padding", EXPECTED_AT_MOST, 2))) { + return error; + } + + if (!config->current_bar) { + return cmd_results_new(CMD_FAILURE, "tray_padding", "No bar defined."); + } + struct bar_config *bar = config->current_bar; + + char *end; + int padding = strtol(argv[0], &end, 10); + if (padding < 0 || (*end != '\0' && strcasecmp(end, "px") != 0)) { + return cmd_results_new(CMD_INVALID, "tray_padding", + "[Bar %s] Invalid tray padding value: %s", bar->id, argv[0]); + } + + if (argc == 2 && strcasecmp(argv[1], "px") != 0) { + return cmd_results_new(CMD_INVALID, "tray_padding", + "Expected 'tray_padding <px> [px]'"); + } + + wlr_log(WLR_DEBUG, "[Bar %s] Setting tray padding to %d", bar->id, padding); + config->current_bar->tray_padding = padding; + return cmd_results_new(CMD_SUCCESS, NULL, NULL); +#else + return cmd_results_new(CMD_INVALID, "tray_padding", + "Sway has been compiled without tray support"); +#endif } |