aboutsummaryrefslogtreecommitdiff
path: root/sway/commands
diff options
context:
space:
mode:
authorbR3iN <bR3iN@posteo.de>2021-07-21 14:08:29 +0200
committerSimon Ser <contact@emersion.fr>2021-07-22 10:12:33 +0200
commitc9458b9fb1034b1fd9a946aa85d4a7c1f07f2af3 (patch)
treecdf870f70466cc96a518987ed9c47d03e17b99f8 /sway/commands
parent2024725cc0a38b3db3cb10f67ee4dc750b7feb3a (diff)
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/commands')
-rw-r--r--sway/commands/gaps.c14
1 files changed, 10 insertions, 4 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 @@
enum gaps_op {
GAPS_OP_SET,
GAPS_OP_ADD,
- GAPS_OP_SUBTRACT
+ GAPS_OP_SUBTRACT,
+ GAPS_OP_TOGGLE
};
struct gaps_data {
@@ -102,6 +103,9 @@ static void apply_gaps_op(int *prop, enum gaps_op op, int amount) {
case GAPS_OP_SUBTRACT:
*prop -= amount;
break;
+ case GAPS_OP_TOGGLE:
+ *prop = *prop ? 0 : amount;
+ break;
}
}
@@ -133,9 +137,9 @@ static void configure_gaps(struct sway_workspace *ws, void *_data) {
}
// gaps inner|outer|horizontal|vertical|top|right|bottom|left current|all
-// set|plus|minus <px>
+// set|plus|minus|toggle <px>
static const char expected_runtime[] = "'gaps inner|outer|horizontal|vertical|"
- "top|right|bottom|left current|all set|plus|minus <px>'";
+ "top|right|bottom|left current|all set|plus|minus|toggle <px>'";
static struct cmd_results *gaps_set_runtime(int argc, char **argv) {
struct cmd_results *error = checkarg(argc, "gaps", EXPECTED_EQUAL_TO, 4);
if (error) {
@@ -180,6 +184,8 @@ static struct cmd_results *gaps_set_runtime(int argc, char **argv) {
data.operation = GAPS_OP_ADD;
} else if (strcasecmp(argv[2], "minus") == 0) {
data.operation = GAPS_OP_SUBTRACT;
+ } else if (strcasecmp(argv[2], "toggle") == 0) {
+ data.operation = GAPS_OP_TOGGLE;
} else {
return cmd_results_new(CMD_INVALID, "Expected %s", expected_runtime);
}
@@ -200,7 +206,7 @@ static struct cmd_results *gaps_set_runtime(int argc, char **argv) {
}
// gaps inner|outer|<dir>|<side> <px> - sets defaults for workspaces
-// gaps inner|outer|<dir>|<side> current|all set|plus|minus <px> - runtime only
+// gaps inner|outer|<dir>|<side> current|all set|plus|minus|toggle <px> - runtime only
// <dir> = horizontal|vertical
// <side> = top|right|bottom|left
struct cmd_results *cmd_gaps(int argc, char **argv) {