summaryrefslogtreecommitdiff
path: root/swaynag/config.c
diff options
context:
space:
mode:
authorGraham Christensen <[email protected]>2020-06-07 10:47:56 -0400
committerSimon Ser <[email protected]>2020-06-09 00:00:14 +0200
commita974300652fc5cea72db60e1e39b0f7da7e9f334 (patch)
treebb976b50668afd3d700b8f7738a193a025870324 /swaynag/config.c
parentce494a5811ddd01b09295ae1a91596f74ee1823c (diff)
swaynag: allow specifying more buttons which execute and dismiss
I don't love -z / -Z, but I figure this patch is far from being accepted for other reasons too.
Diffstat (limited to 'swaynag/config.c')
-rw-r--r--swaynag/config.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/swaynag/config.c b/swaynag/config.c
index f1161b39..d702cc95 100644
--- a/swaynag/config.c
+++ b/swaynag/config.c
@@ -52,6 +52,8 @@ int swaynag_parse_options(int argc, char **argv, struct swaynag *swaynag,
static struct option opts[] = {
{"button", required_argument, NULL, 'b'},
{"button-no-terminal", required_argument, NULL, 'B'},
+ {"button-dismiss", required_argument, NULL, 'z'},
+ {"button-dismiss-no-terminal", required_argument, NULL, 'Z'},
{"config", required_argument, NULL, 'c'},
{"debug", no_argument, NULL, 'd'},
{"edge", required_argument, NULL, 'e'},
@@ -90,6 +92,11 @@ int swaynag_parse_options(int argc, char **argv, struct swaynag *swaynag,
"be defined.\n"
" -B, --button-no-terminal <text> <action> Like --button, but does"
"not run the action in a terminal.\n"
+ " -z, --button-dismiss <text> <action> Create a button with text that "
+ "dismisses swaynag, and executes action in a terminal when pressed. "
+ "Multiple buttons can be defined.\n"
+ " -Z, --button-dismiss-no-terminal <text> <action> Like "
+ "--button-dismiss, but does not run the action in a terminal.\n"
" -c, --config <path> Path to config file.\n"
" -d, --debug Enable debugging.\n"
" -e, --edge top|bottom Set the edge to use.\n"
@@ -120,13 +127,15 @@ int swaynag_parse_options(int argc, char **argv, struct swaynag *swaynag,
optind = 1;
while (1) {
- int c = getopt_long(argc, argv, "b:B:c:de:f:hlL:m:o:s:t:v", opts, NULL);
+ int c = getopt_long(argc, argv, "b:B:z:Z:c:de:f:hlL:m:o:s:t:v", opts, NULL);
if (c == -1) {
break;
}
switch (c) {
case 'b': // Button
case 'B': // Button (No Terminal)
+ case 'z': // Button (Dismiss)
+ case 'Z': // Button (Dismiss, No Terminal)
if (swaynag) {
if (optind >= argc) {
fprintf(stderr, "Missing action for button %s\n", optarg);
@@ -138,6 +147,7 @@ int swaynag_parse_options(int argc, char **argv, struct swaynag *swaynag,
button->type = SWAYNAG_ACTION_COMMAND;
button->action = strdup(argv[optind]);
button->terminal = c == 'b';
+ button->dismiss = c == 'z' || c == 'Z';
list_add(swaynag->buttons, button);
}
optind++;