diff options
author | bR3iN <bR3iN@posteo.de> | 2021-07-21 14:08:29 +0200 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2021-07-22 10:12:33 +0200 |
commit | c9458b9fb1034b1fd9a946aa85d4a7c1f07f2af3 (patch) | |
tree | cdf870f70466cc96a518987ed9c47d03e17b99f8 /sway | |
parent | Add meson options to enable/disable swaybar and swaynag (diff) | |
download | sway-c9458b9fb1034b1fd9a946aa85d4a7c1f07f2af3.tar.gz sway-c9458b9fb1034b1fd9a946aa85d4a7c1f07f2af3.tar.zst sway-c9458b9fb1034b1fd9a946aa85d4a7c1f07f2af3.zip |
Add `gaps <type> <scope> toggle <px>` command
Add a subcommand for `gaps` that allows to toggle gaps at
runtime. This functionality is part of i3-gaps since [1]
but is missing in sway.
[1] https://github.com/Airblader/i3/pull/264
Diffstat (limited to 'sway')
-rw-r--r-- | sway/commands/gaps.c | 14 | ||||
-rw-r--r-- | sway/sway.5.scd | 2 |
2 files changed, 11 insertions, 5 deletions
diff --git a/sway/commands/gaps.c b/sway/commands/gaps.c index 021df843..1deeb56e 100644 --- a/sway/commands/gaps.c +++ b/sway/commands/gaps.c | |||
@@ -11,7 +11,8 @@ | |||
11 | enum gaps_op { | 11 | enum gaps_op { |
12 | GAPS_OP_SET, | 12 | GAPS_OP_SET, |
13 | GAPS_OP_ADD, | 13 | GAPS_OP_ADD, |
14 | GAPS_OP_SUBTRACT | 14 | GAPS_OP_SUBTRACT, |
15 | GAPS_OP_TOGGLE | ||
15 | }; | 16 | }; |
16 | 17 | ||
17 | struct gaps_data { | 18 | struct gaps_data { |
@@ -102,6 +103,9 @@ static void apply_gaps_op(int *prop, enum gaps_op op, int amount) { | |||
102 | case GAPS_OP_SUBTRACT: | 103 | case GAPS_OP_SUBTRACT: |
103 | *prop -= amount; | 104 | *prop -= amount; |
104 | break; | 105 | break; |
106 | case GAPS_OP_TOGGLE: | ||
107 | *prop = *prop ? 0 : amount; | ||
108 | break; | ||
105 | } | 109 | } |
106 | } | 110 | } |
107 | 111 | ||
@@ -133,9 +137,9 @@ static void configure_gaps(struct sway_workspace *ws, void *_data) { | |||
133 | } | 137 | } |
134 | 138 | ||
135 | // gaps inner|outer|horizontal|vertical|top|right|bottom|left current|all | 139 | // gaps inner|outer|horizontal|vertical|top|right|bottom|left current|all |
136 | // set|plus|minus <px> | 140 | // set|plus|minus|toggle <px> |
137 | static const char expected_runtime[] = "'gaps inner|outer|horizontal|vertical|" | 141 | static const char expected_runtime[] = "'gaps inner|outer|horizontal|vertical|" |
138 | "top|right|bottom|left current|all set|plus|minus <px>'"; | 142 | "top|right|bottom|left current|all set|plus|minus|toggle <px>'"; |
139 | static struct cmd_results *gaps_set_runtime(int argc, char **argv) { | 143 | static struct cmd_results *gaps_set_runtime(int argc, char **argv) { |
140 | struct cmd_results *error = checkarg(argc, "gaps", EXPECTED_EQUAL_TO, 4); | 144 | struct cmd_results *error = checkarg(argc, "gaps", EXPECTED_EQUAL_TO, 4); |
141 | if (error) { | 145 | if (error) { |
@@ -180,6 +184,8 @@ static struct cmd_results *gaps_set_runtime(int argc, char **argv) { | |||
180 | data.operation = GAPS_OP_ADD; | 184 | data.operation = GAPS_OP_ADD; |
181 | } else if (strcasecmp(argv[2], "minus") == 0) { | 185 | } else if (strcasecmp(argv[2], "minus") == 0) { |
182 | data.operation = GAPS_OP_SUBTRACT; | 186 | data.operation = GAPS_OP_SUBTRACT; |
187 | } else if (strcasecmp(argv[2], "toggle") == 0) { | ||
188 | data.operation = GAPS_OP_TOGGLE; | ||
183 | } else { | 189 | } else { |
184 | return cmd_results_new(CMD_INVALID, "Expected %s", expected_runtime); | 190 | return cmd_results_new(CMD_INVALID, "Expected %s", expected_runtime); |
185 | } | 191 | } |
@@ -200,7 +206,7 @@ static struct cmd_results *gaps_set_runtime(int argc, char **argv) { | |||
200 | } | 206 | } |
201 | 207 | ||
202 | // gaps inner|outer|<dir>|<side> <px> - sets defaults for workspaces | 208 | // gaps inner|outer|<dir>|<side> <px> - sets defaults for workspaces |
203 | // gaps inner|outer|<dir>|<side> current|all set|plus|minus <px> - runtime only | 209 | // gaps inner|outer|<dir>|<side> current|all set|plus|minus|toggle <px> - runtime only |
204 | // <dir> = horizontal|vertical | 210 | // <dir> = horizontal|vertical |
205 | // <side> = top|right|bottom|left | 211 | // <side> = top|right|bottom|left |
206 | struct cmd_results *cmd_gaps(int argc, char **argv) { | 212 | struct cmd_results *cmd_gaps(int argc, char **argv) { |
diff --git a/sway/sway.5.scd b/sway/sway.5.scd index 02592b5f..8958c7e3 100644 --- a/sway/sway.5.scd +++ b/sway/sway.5.scd | |||
@@ -155,7 +155,7 @@ They are expected to be used with *bindsym* or at runtime through *swaymsg*(1). | |||
155 | is specified, the view will be fullscreen across all outputs. | 155 | is specified, the view will be fullscreen across all outputs. |
156 | 156 | ||
157 | *gaps* inner|outer|horizontal|vertical|top|right|bottom|left all|current | 157 | *gaps* inner|outer|horizontal|vertical|top|right|bottom|left all|current |
158 | set|plus|minus <amount> | 158 | set|plus|minus|toggle <amount> |
159 | Changes the _inner_ or _outer_ gaps for either _all_ workspaces or the | 159 | Changes the _inner_ or _outer_ gaps for either _all_ workspaces or the |
160 | _current_ workspace. _outer_ gaps can be altered per side with _top_, | 160 | _current_ workspace. _outer_ gaps can be altered per side with _top_, |
161 | _right_, _bottom_, and _left_ or per direction with _horizontal_ and | 161 | _right_, _bottom_, and _left_ or per direction with _horizontal_ and |