aboutsummaryrefslogtreecommitdiffstats
path: root/swaynag/main.c
diff options
context:
space:
mode:
authorLibravatar Brian Ashworth <bosrsf04@gmail.com>2018-07-29 22:42:03 -0400
committerLibravatar Brian Ashworth <bosrsf04@gmail.com>2018-08-01 22:47:54 -0400
commite01acb6097b583fcf2f6d0e0afe1bd878dd9b683 (patch)
treecf3e715870bb22d9ef7d5bee9457fdcc70e31ee2 /swaynag/main.c
parentswaynag: add math to meson.build (diff)
downloadsway-e01acb6097b583fcf2f6d0e0afe1bd878dd9b683.tar.gz
sway-e01acb6097b583fcf2f6d0e0afe1bd878dd9b683.tar.zst
sway-e01acb6097b583fcf2f6d0e0afe1bd878dd9b683.zip
swaynag: allow more config options
Diffstat (limited to 'swaynag/main.c')
-rw-r--r--swaynag/main.c33
1 files changed, 23 insertions, 10 deletions
diff --git a/swaynag/main.c b/swaynag/main.c
index 0493c1f0..20d03c31 100644
--- a/swaynag/main.c
+++ b/swaynag/main.c
@@ -5,7 +5,6 @@
5#include "swaynag/config.h" 5#include "swaynag/config.h"
6#include "swaynag/swaynag.h" 6#include "swaynag/swaynag.h"
7#include "swaynag/types.h" 7#include "swaynag/types.h"
8#include "wlr-layer-shell-unstable-v1-client-protocol.h"
9 8
10static struct swaynag swaynag; 9static struct swaynag swaynag;
11 10
@@ -26,10 +25,6 @@ int main(int argc, char **argv) {
26 swaynag_types_add_default(types); 25 swaynag_types_add_default(types);
27 26
28 memset(&swaynag, 0, sizeof(swaynag)); 27 memset(&swaynag, 0, sizeof(swaynag));
29 swaynag.anchors = ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP
30 | ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT
31 | ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT;
32 swaynag.font = strdup("pango:monospace 10");
33 swaynag.buttons = create_list(); 28 swaynag.buttons = create_list();
34 29
35 struct swaynag_button *button_close = 30 struct swaynag_button *button_close =
@@ -44,7 +39,7 @@ int main(int argc, char **argv) {
44 39
45 char *config_path = NULL; 40 char *config_path = NULL;
46 bool debug = false; 41 bool debug = false;
47 int launch_status = swaynag_parse_options(argc, argv, NULL, NULL, 42 int launch_status = swaynag_parse_options(argc, argv, NULL, NULL, NULL,
48 &config_path, &debug); 43 &config_path, &debug);
49 if (launch_status != 0) { 44 if (launch_status != 0) {
50 exit_code = launch_status; 45 exit_code = launch_status;
@@ -66,8 +61,13 @@ int main(int argc, char **argv) {
66 } 61 }
67 62
68 if (argc > 1) { 63 if (argc > 1) {
64 struct swaynag_type *type_args;
65 type_args = calloc(1, sizeof(struct swaynag_type));
66 type_args->name = strdup("<args>");
67 list_add(types, type_args);
68
69 int result = swaynag_parse_options(argc, argv, &swaynag, types, 69 int result = swaynag_parse_options(argc, argv, &swaynag, types,
70 NULL, NULL); 70 type_args, NULL, NULL);
71 if (result != 0) { 71 if (result != 0) {
72 exit_code = result; 72 exit_code = result;
73 goto cleanup; 73 goto cleanup;
@@ -84,7 +84,20 @@ int main(int argc, char **argv) {
84 swaynag.type = swaynag_type_get(types, "error"); 84 swaynag.type = swaynag_type_get(types, "error");
85 } 85 }
86 86
87 swaynag.type = swaynag_type_clone(swaynag.type); 87 // Construct a new type using the config defaults as base, then merging
88 // config type defaults on top, then merging arguments on top of that, and
89 // finally merging defaults on top.
90 struct swaynag_type *type = calloc(1, sizeof(struct swaynag_type));
91 type->name = strdup(swaynag.type->name);
92 swaynag_type_merge(type, swaynag_type_get(types, "<args>"));
93 swaynag_type_merge(type, swaynag.type);
94 swaynag_type_merge(type, swaynag_type_get(types, "<config>"));
95 swaynag_type_merge(type, swaynag_type_get(types, "<defaults>"));
96 swaynag.type = type;
97 if (swaynag.type->output) {
98 swaynag.output.name = strdup(swaynag.type->output);
99 }
100
88 swaynag_types_free(types); 101 swaynag_types_free(types);
89 102
90 if (swaynag.details.message) { 103 if (swaynag.details.message) {
@@ -94,10 +107,10 @@ int main(int argc, char **argv) {
94 } 107 }
95 108
96 wlr_log(WLR_DEBUG, "Output: %s", swaynag.output.name); 109 wlr_log(WLR_DEBUG, "Output: %s", swaynag.output.name);
97 wlr_log(WLR_DEBUG, "Anchors: %d", swaynag.anchors); 110 wlr_log(WLR_DEBUG, "Anchors: %d", swaynag.type->anchors);
98 wlr_log(WLR_DEBUG, "Type: %s", swaynag.type->name); 111 wlr_log(WLR_DEBUG, "Type: %s", swaynag.type->name);
99 wlr_log(WLR_DEBUG, "Message: %s", swaynag.message); 112 wlr_log(WLR_DEBUG, "Message: %s", swaynag.message);
100 wlr_log(WLR_DEBUG, "Font: %s", swaynag.font); 113 wlr_log(WLR_DEBUG, "Font: %s", swaynag.type->font);
101 wlr_log(WLR_DEBUG, "Buttons"); 114 wlr_log(WLR_DEBUG, "Buttons");
102 for (int i = 0; i < swaynag.buttons->length; i++) { 115 for (int i = 0; i < swaynag.buttons->length; i++) {
103 struct swaynag_button *button = swaynag.buttons->items[i]; 116 struct swaynag_button *button = swaynag.buttons->items[i];