diff options
author | Ian Fan <ianfan0@gmail.com> | 2018-12-09 15:10:41 +0000 |
---|---|---|
committer | Ian Fan <ianfan0@gmail.com> | 2018-12-31 20:40:18 +0000 |
commit | 6b03c68775c9c638def342c82b1fa3beffa52645 (patch) | |
tree | a3b18d948f8e2a51151f24aab47c552f28a17f70 /swaybar | |
parent | swaybar: add StatusNotifierItem to tray (diff) | |
download | sway-6b03c68775c9c638def342c82b1fa3beffa52645.tar.gz sway-6b03c68775c9c638def342c82b1fa3beffa52645.tar.zst sway-6b03c68775c9c638def342c82b1fa3beffa52645.zip |
swaybar: implement tray config
Diffstat (limited to 'swaybar')
-rw-r--r-- | swaybar/bar.c | 1 | ||||
-rw-r--r-- | swaybar/config.c | 12 | ||||
-rw-r--r-- | swaybar/ipc.c | 34 |
3 files changed, 47 insertions, 0 deletions
diff --git a/swaybar/bar.c b/swaybar/bar.c index c26e76ce..668168eb 100644 --- a/swaybar/bar.c +++ b/swaybar/bar.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <wayland-client.h> | 11 | #include <wayland-client.h> |
12 | #include <wayland-cursor.h> | 12 | #include <wayland-cursor.h> |
13 | #include <wlr/util/log.h> | 13 | #include <wlr/util/log.h> |
14 | #include "config.h" | ||
14 | #include "swaybar/bar.h" | 15 | #include "swaybar/bar.h" |
15 | #include "swaybar/config.h" | 16 | #include "swaybar/config.h" |
16 | #include "swaybar/i3bar.h" | 17 | #include "swaybar/i3bar.h" |
diff --git a/swaybar/config.c b/swaybar/config.c index 10c78c8a..9cafe061 100644 --- a/swaybar/config.c +++ b/swaybar/config.c | |||
@@ -4,6 +4,7 @@ | |||
4 | #include <wlr/util/log.h> | 4 | #include <wlr/util/log.h> |
5 | #include "swaybar/config.h" | 5 | #include "swaybar/config.h" |
6 | #include "wlr-layer-shell-unstable-v1-client-protocol.h" | 6 | #include "wlr-layer-shell-unstable-v1-client-protocol.h" |
7 | #include "config.h" | ||
7 | #include "stringop.h" | 8 | #include "stringop.h" |
8 | #include "list.h" | 9 | #include "list.h" |
9 | 10 | ||
@@ -73,6 +74,10 @@ struct swaybar_config *init_config(void) { | |||
73 | config->colors.binding_mode.background = 0x900000FF; | 74 | config->colors.binding_mode.background = 0x900000FF; |
74 | config->colors.binding_mode.text = 0xFFFFFFFF; | 75 | config->colors.binding_mode.text = 0xFFFFFFFF; |
75 | 76 | ||
77 | #if HAVE_TRAY | ||
78 | config->tray_padding = 2; | ||
79 | #endif | ||
80 | |||
76 | return config; | 81 | return config; |
77 | } | 82 | } |
78 | 83 | ||
@@ -102,5 +107,12 @@ void free_config(struct swaybar_config *config) { | |||
102 | free(coutput->name); | 107 | free(coutput->name); |
103 | free(coutput); | 108 | free(coutput); |
104 | } | 109 | } |
110 | #if HAVE_TRAY | ||
111 | list_free_items_and_destroy(config->tray_outputs); | ||
112 | for (int i = 0; i < 10; ++i) { | ||
113 | free(config->tray_bindings[i]); | ||
114 | } | ||
115 | free(config->icon_theme); | ||
116 | #endif | ||
105 | free(config); | 117 | free(config); |
106 | } | 118 | } |
diff --git a/swaybar/ipc.c b/swaybar/ipc.c index 2b930786..df0586bf 100644 --- a/swaybar/ipc.c +++ b/swaybar/ipc.c | |||
@@ -6,6 +6,7 @@ | |||
6 | #include <wlr/util/log.h> | 6 | #include <wlr/util/log.h> |
7 | #include "swaybar/config.h" | 7 | #include "swaybar/config.h" |
8 | #include "swaybar/ipc.h" | 8 | #include "swaybar/ipc.h" |
9 | #include "config.h" | ||
9 | #include "ipc-client.h" | 10 | #include "ipc-client.h" |
10 | #include "list.h" | 11 | #include "list.h" |
11 | 12 | ||
@@ -282,6 +283,39 @@ static bool ipc_parse_config( | |||
282 | ipc_parse_colors(config, colors); | 283 | ipc_parse_colors(config, colors); |
283 | } | 284 | } |
284 | 285 | ||
286 | #if HAVE_TRAY | ||
287 | json_object *tray_outputs, *tray_padding, *tray_bindings, *icon_theme; | ||
288 | |||
289 | if ((json_object_object_get_ex(bar_config, "tray_outputs", &tray_outputs))) { | ||
290 | config->tray_outputs = create_list(); | ||
291 | int length = json_object_array_length(tray_outputs); | ||
292 | for (int i = 0; i < length; ++i) { | ||
293 | json_object *o = json_object_array_get_idx(tray_outputs, i); | ||
294 | list_add(config->tray_outputs, strdup(json_object_get_string(o))); | ||
295 | } | ||
296 | } | ||
297 | |||
298 | if ((json_object_object_get_ex(bar_config, "tray_padding", &tray_padding))) { | ||
299 | config->tray_padding = json_object_get_int(tray_padding); | ||
300 | } | ||
301 | |||
302 | if ((json_object_object_get_ex(bar_config, "tray_bindings", &tray_bindings))) { | ||
303 | int length = json_object_array_length(tray_bindings); | ||
304 | for (int i = 0; i < length; ++i) { | ||
305 | json_object *bind = json_object_array_get_idx(tray_bindings, i); | ||
306 | json_object *button, *command; | ||
307 | json_object_object_get_ex(bind, "input_code", &button); | ||
308 | json_object_object_get_ex(bind, "command", &command); | ||
309 | config->tray_bindings[json_object_get_int(button)] = | ||
310 | strdup(json_object_get_string(command)); | ||
311 | } | ||
312 | } | ||
313 | |||
314 | if ((json_object_object_get_ex(bar_config, "icon_theme", &icon_theme))) { | ||
315 | config->icon_theme = strdup(json_object_get_string(icon_theme)); | ||
316 | } | ||
317 | #endif | ||
318 | |||
285 | json_object_put(bar_config); | 319 | json_object_put(bar_config); |
286 | return true; | 320 | return true; |
287 | } | 321 | } |