summaryrefslogtreecommitdiffstats
path: root/sway/commands.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/commands.c')
-rw-r--r--sway/commands.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/sway/commands.c b/sway/commands.c
index 4a3ebf9e..bc182cee 100644
--- a/sway/commands.c
+++ b/sway/commands.c
@@ -43,6 +43,7 @@ static sway_cmd cmd_assign;
43static sway_cmd cmd_bar; 43static sway_cmd cmd_bar;
44static sway_cmd cmd_bindcode; 44static sway_cmd cmd_bindcode;
45static sway_cmd cmd_bindsym; 45static sway_cmd cmd_bindsym;
46static sway_cmd cmd_border;
46static sway_cmd cmd_debuglog; 47static sway_cmd cmd_debuglog;
47static sway_cmd cmd_exec; 48static sway_cmd cmd_exec;
48static sway_cmd cmd_exec_always; 49static sway_cmd cmd_exec_always;
@@ -346,6 +347,55 @@ static struct cmd_results *cmd_bindcode(int argc, char **argv) {
346 return cmd_results_new(CMD_SUCCESS, NULL, NULL); 347 return cmd_results_new(CMD_SUCCESS, NULL, NULL);
347} 348}
348 349
350static struct cmd_results *cmd_border(int argc, char **argv) {
351 struct cmd_results *error = NULL;
352 if ((error = checkarg(argc, "border", EXPECTED_AT_LEAST, 1))) {
353 return error;
354 }
355
356 if (argc > 2) {
357 return cmd_results_new(CMD_FAILURE, "border",
358 "Expected 'border <normal|pixel|none|toggle> [<n>]");
359 }
360
361 enum swayc_border_types border = config->border;
362
363 if (strcasecmp(argv[0], "none") == 0) {
364 border = B_NONE;
365 } else if (strcasecmp(argv[0], "normal") == 0) {
366 border = B_NORMAL;
367 } else if (strcasecmp(argv[0], "pixel") == 0) {
368 border = B_PIXEL;
369 } else if (strcasecmp(argv[0], "toggle") == 0) {
370 switch (config->border) {
371 case B_NONE:
372 border = B_PIXEL;
373 break;
374 case B_NORMAL:
375 border = B_NONE;
376 break;
377 case B_PIXEL:
378 border = B_NORMAL;
379 break;
380 }
381 } else {
382 return cmd_results_new(CMD_FAILURE, "border",
383 "Expected 'border <normal|pixel|none|toggle>");
384 }
385
386 if (argc == 2 && (border == B_NORMAL || border == B_PIXEL)) {
387 int thickness = (int)strtol(argv[1], NULL, 10);
388 if (errno == ERANGE || thickness < 0) {
389 errno = 0;
390 return cmd_results_new(CMD_INVALID, "border", "Number is out out of range.");
391 }
392 config->border_thickness = thickness;
393 }
394
395 config->border = border;
396 return cmd_results_new(CMD_SUCCESS, NULL, NULL);
397}
398
349static struct cmd_results *cmd_exec_always(int argc, char **argv) { 399static struct cmd_results *cmd_exec_always(int argc, char **argv) {
350 struct cmd_results *error = NULL; 400 struct cmd_results *error = NULL;
351 if (!config->active) return cmd_results_new(CMD_DEFER, NULL, NULL); 401 if (!config->active) return cmd_results_new(CMD_DEFER, NULL, NULL);
@@ -2074,6 +2124,7 @@ static struct cmd_handler handlers[] = {
2074 { "bar", cmd_bar }, 2124 { "bar", cmd_bar },
2075 { "bindcode", cmd_bindcode }, 2125 { "bindcode", cmd_bindcode },
2076 { "bindsym", cmd_bindsym }, 2126 { "bindsym", cmd_bindsym },
2127 { "border", cmd_border },
2077 { "debuglog", cmd_debuglog }, 2128 { "debuglog", cmd_debuglog },
2078 { "default_orientation", cmd_orientation }, 2129 { "default_orientation", cmd_orientation },
2079 { "exec", cmd_exec }, 2130 { "exec", cmd_exec },