aboutsummaryrefslogtreecommitdiff
path: root/sway/config.c
diff options
context:
space:
mode:
authorCalvin Lee <cyrus296@gmail.com>2017-06-07 16:45:28 -0700
committerCalvin Lee <cyrus296@gmail.com>2017-06-07 17:49:16 -0700
commit843ad38b3c427adb0bf319e9613d9813c8d9246c (patch)
treee02a5b06e2b6923371fd53724791c147c18a1fa4 /sway/config.c
parentfd47a30e75cccfc3789eafa4bfabd66f4696099b (diff)
Implement Tray Icons
This commit implements the StatusNotifierItem protocol, and enables swaybar to show tray icons. It also uses `xembedsniproxy` in order to communicate with xembed applications. The tray is completely optional, and can be disabled on compile time with the `enable-tray` option. Or on runtime with the bar config option `tray_output none`. Overview of changes: In swaybar very little is changed outside the tray subfolder except that all events are now polled in `event_loop.c`, this creates no functional difference. Six bar configuration options were added, these are detailed in sway-bar(5) The tray subfolder is where all protocol implementation takes place and is organised as follows: tray/sni_watcher.c: This file contains the StatusNotifierWatcher. It keeps track of items and hosts and reports when they come or go. tray/tray.c This file contains the StatusNotifierHost. It keeps track of sway's version of the items and represents the tray itself. tray/sni.c This file contains the StatusNotifierItem struct and all communication with individual items. tray/icon.c This file implements the icon theme protocol. It allows for finding icons by name, rather than by pixmap. tray/dbus.c This file allows for asynchronous DBus communication. See #986 #343
Diffstat (limited to 'sway/config.c')
-rw-r--r--sway/config.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/sway/config.c b/sway/config.c
index 85823953..e0b65615 100644
--- a/sway/config.c
+++ b/sway/config.c
@@ -69,6 +69,10 @@ static void free_bar(struct bar_config *bar) {
}
free(bar->mode);
free(bar->hidden_state);
+#ifdef ENABLE_TRAY
+ free(bar->tray_output);
+ free(bar->icon_theme);
+#endif
free(bar->status_command);
free(bar->font);
free(bar->separator_symbol);
@@ -1386,7 +1390,14 @@ struct bar_config *default_bar_config(void) {
bar->separator_symbol = NULL;
bar->strip_workspace_numbers = false;
bar->binding_mode_indicator = true;
+#ifdef ENABLE_TRAY
+ bar->tray_output = NULL;
+ bar->icon_theme = NULL;
bar->tray_padding = 2;
+ bar->activate_button = 0x110; /* BTN_LEFT */
+ bar->context_button = 0x111; /* BTN_RIGHT */
+ bar->secondary_button = 0x112; /* BTN_MIDDLE */
+#endif
bar->verbose = false;
bar->pid = 0;
// set default colors