mirror of
https://github.com/swaywm/sway.git
synced 2025-10-29 05:40:18 -04:00
swaybar: implement tray config
This commit is contained in:
parent
74655f835a
commit
6b03c68775
18 changed files with 271 additions and 55 deletions
|
|
@ -11,6 +11,7 @@
|
|||
#include <wayland-client.h>
|
||||
#include <wayland-cursor.h>
|
||||
#include <wlr/util/log.h>
|
||||
#include "config.h"
|
||||
#include "swaybar/bar.h"
|
||||
#include "swaybar/config.h"
|
||||
#include "swaybar/i3bar.h"
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
#include <wlr/util/log.h>
|
||||
#include "swaybar/config.h"
|
||||
#include "wlr-layer-shell-unstable-v1-client-protocol.h"
|
||||
#include "config.h"
|
||||
#include "stringop.h"
|
||||
#include "list.h"
|
||||
|
||||
|
|
@ -73,6 +74,10 @@ struct swaybar_config *init_config(void) {
|
|||
config->colors.binding_mode.background = 0x900000FF;
|
||||
config->colors.binding_mode.text = 0xFFFFFFFF;
|
||||
|
||||
#if HAVE_TRAY
|
||||
config->tray_padding = 2;
|
||||
#endif
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
|
|
@ -102,5 +107,12 @@ void free_config(struct swaybar_config *config) {
|
|||
free(coutput->name);
|
||||
free(coutput);
|
||||
}
|
||||
#if HAVE_TRAY
|
||||
list_free_items_and_destroy(config->tray_outputs);
|
||||
for (int i = 0; i < 10; ++i) {
|
||||
free(config->tray_bindings[i]);
|
||||
}
|
||||
free(config->icon_theme);
|
||||
#endif
|
||||
free(config);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
#include <wlr/util/log.h>
|
||||
#include "swaybar/config.h"
|
||||
#include "swaybar/ipc.h"
|
||||
#include "config.h"
|
||||
#include "ipc-client.h"
|
||||
#include "list.h"
|
||||
|
||||
|
|
@ -282,6 +283,39 @@ static bool ipc_parse_config(
|
|||
ipc_parse_colors(config, colors);
|
||||
}
|
||||
|
||||
#if HAVE_TRAY
|
||||
json_object *tray_outputs, *tray_padding, *tray_bindings, *icon_theme;
|
||||
|
||||
if ((json_object_object_get_ex(bar_config, "tray_outputs", &tray_outputs))) {
|
||||
config->tray_outputs = create_list();
|
||||
int length = json_object_array_length(tray_outputs);
|
||||
for (int i = 0; i < length; ++i) {
|
||||
json_object *o = json_object_array_get_idx(tray_outputs, i);
|
||||
list_add(config->tray_outputs, strdup(json_object_get_string(o)));
|
||||
}
|
||||
}
|
||||
|
||||
if ((json_object_object_get_ex(bar_config, "tray_padding", &tray_padding))) {
|
||||
config->tray_padding = json_object_get_int(tray_padding);
|
||||
}
|
||||
|
||||
if ((json_object_object_get_ex(bar_config, "tray_bindings", &tray_bindings))) {
|
||||
int length = json_object_array_length(tray_bindings);
|
||||
for (int i = 0; i < length; ++i) {
|
||||
json_object *bind = json_object_array_get_idx(tray_bindings, i);
|
||||
json_object *button, *command;
|
||||
json_object_object_get_ex(bind, "input_code", &button);
|
||||
json_object_object_get_ex(bind, "command", &command);
|
||||
config->tray_bindings[json_object_get_int(button)] =
|
||||
strdup(json_object_get_string(command));
|
||||
}
|
||||
}
|
||||
|
||||
if ((json_object_object_get_ex(bar_config, "icon_theme", &icon_theme))) {
|
||||
config->icon_theme = strdup(json_object_get_string(icon_theme));
|
||||
}
|
||||
#endif
|
||||
|
||||
json_object_put(bar_config);
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue