aboutsummaryrefslogtreecommitdiffstats
path: root/sway/commands/border.c
diff options
context:
space:
mode:
authorLibravatar Zandr Martin <zandrmartin@gmail.com>2016-09-01 21:39:08 -0500
committerLibravatar Zandr Martin <zandrmartin@gmail.com>2016-09-01 21:39:08 -0500
commitb374c35758777f98e5ddbe4b0dc43bd7c80f36d7 (patch)
tree04bb4cfc3da7d2e0de7fbc38db42f65c66d2df4c /sway/commands/border.c
parentMerge pull request #874 from yohanesu75/ipc-client-fix (diff)
downloadsway-b374c35758777f98e5ddbe4b0dc43bd7c80f36d7.tar.gz
sway-b374c35758777f98e5ddbe4b0dc43bd7c80f36d7.tar.zst
sway-b374c35758777f98e5ddbe4b0dc43bd7c80f36d7.zip
refactor commands.c
Diffstat (limited to 'sway/commands/border.c')
-rw-r--r--sway/commands/border.c64
1 files changed, 64 insertions, 0 deletions
diff --git a/sway/commands/border.c b/sway/commands/border.c
new file mode 100644
index 00000000..30798c6d
--- /dev/null
+++ b/sway/commands/border.c
@@ -0,0 +1,64 @@
1#include <errno.h>
2#include <stdlib.h>
3#include <string.h>
4#include "commands.h"
5#include "container.h"
6#include "focus.h"
7
8struct cmd_results *cmd_border(int argc, char **argv) {
9 struct cmd_results *error = NULL;
10 if (!config->active) {
11 return cmd_results_new(CMD_FAILURE, "border", "Can only be used when sway is running.");
12 }
13 if ((error = checkarg(argc, "border", EXPECTED_AT_LEAST, 1))) {
14 return error;
15 }
16
17 if (argc > 2) {
18 return cmd_results_new(CMD_INVALID, "border",
19 "Expected 'border <normal|pixel|none|toggle> [<n>]");
20 }
21
22 swayc_t *view = get_focused_view(&root_container);
23 enum swayc_border_types border = view->border_type;
24 int thickness = view->border_thickness;
25
26 if (strcasecmp(argv[0], "none") == 0) {
27 border = B_NONE;
28 } else if (strcasecmp(argv[0], "normal") == 0) {
29 border = B_NORMAL;
30 } else if (strcasecmp(argv[0], "pixel") == 0) {
31 border = B_PIXEL;
32 } else if (strcasecmp(argv[0], "toggle") == 0) {
33 switch (border) {
34 case B_NONE:
35 border = B_PIXEL;
36 break;
37 case B_NORMAL:
38 border = B_NONE;
39 break;
40 case B_PIXEL:
41 border = B_NORMAL;
42 break;
43 }
44 } else {
45 return cmd_results_new(CMD_INVALID, "border",
46 "Expected 'border <normal|pixel|none|toggle>");
47 }
48
49 if (argc == 2 && (border == B_NORMAL || border == B_PIXEL)) {
50 thickness = (int)strtol(argv[1], NULL, 10);
51 if (errno == ERANGE || thickness < 0) {
52 errno = 0;
53 return cmd_results_new(CMD_INVALID, "border", "Number is out of range.");
54 }
55 }
56
57 if (view) {
58 view->border_type = border;
59 view->border_thickness = thickness;
60 update_geometry(view);
61 }
62
63 return cmd_results_new(CMD_SUCCESS, NULL, NULL);
64}