summaryrefslogtreecommitdiff
path: root/sway/commands/bar/tray_padding.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/commands/bar/tray_padding.c')
-rw-r--r--sway/commands/bar/tray_padding.c37
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
}