aboutsummaryrefslogtreecommitdiffstats
path: root/swaybar
diff options
context:
space:
mode:
authorLibravatar Ian Fan <ianfan0@gmail.com>2018-12-09 15:10:41 +0000
committerLibravatar Ian Fan <ianfan0@gmail.com>2018-12-31 20:40:18 +0000
commit6b03c68775c9c638def342c82b1fa3beffa52645 (patch)
treea3b18d948f8e2a51151f24aab47c552f28a17f70 /swaybar
parentswaybar: add StatusNotifierItem to tray (diff)
downloadsway-6b03c68775c9c638def342c82b1fa3beffa52645.tar.gz
sway-6b03c68775c9c638def342c82b1fa3beffa52645.tar.zst
sway-6b03c68775c9c638def342c82b1fa3beffa52645.zip
swaybar: implement tray config
Diffstat (limited to 'swaybar')
-rw-r--r--swaybar/bar.c1
-rw-r--r--swaybar/config.c12
-rw-r--r--swaybar/ipc.c34
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}