diff options
author | Calvin Lee <cyrus296@gmail.com> | 2017-06-07 16:45:28 -0700 |
---|---|---|
committer | Calvin Lee <cyrus296@gmail.com> | 2017-06-07 17:49:16 -0700 |
commit | 843ad38b3c427adb0bf319e9613d9813c8d9246c (patch) | |
tree | e02a5b06e2b6923371fd53724791c147c18a1fa4 /sway/config.c | |
parent | Merge pull request #1232 from johalun/master-freebsd (diff) | |
download | sway-843ad38b3c427adb0bf319e9613d9813c8d9246c.tar.gz sway-843ad38b3c427adb0bf319e9613d9813c8d9246c.tar.zst sway-843ad38b3c427adb0bf319e9613d9813c8d9246c.zip |
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.c | 11 |
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) { | |||
69 | } | 69 | } |
70 | free(bar->mode); | 70 | free(bar->mode); |
71 | free(bar->hidden_state); | 71 | free(bar->hidden_state); |
72 | #ifdef ENABLE_TRAY | ||
73 | free(bar->tray_output); | ||
74 | free(bar->icon_theme); | ||
75 | #endif | ||
72 | free(bar->status_command); | 76 | free(bar->status_command); |
73 | free(bar->font); | 77 | free(bar->font); |
74 | free(bar->separator_symbol); | 78 | free(bar->separator_symbol); |
@@ -1386,7 +1390,14 @@ struct bar_config *default_bar_config(void) { | |||
1386 | bar->separator_symbol = NULL; | 1390 | bar->separator_symbol = NULL; |
1387 | bar->strip_workspace_numbers = false; | 1391 | bar->strip_workspace_numbers = false; |
1388 | bar->binding_mode_indicator = true; | 1392 | bar->binding_mode_indicator = true; |
1393 | #ifdef ENABLE_TRAY | ||
1394 | bar->tray_output = NULL; | ||
1395 | bar->icon_theme = NULL; | ||
1389 | bar->tray_padding = 2; | 1396 | bar->tray_padding = 2; |
1397 | bar->activate_button = 0x110; /* BTN_LEFT */ | ||
1398 | bar->context_button = 0x111; /* BTN_RIGHT */ | ||
1399 | bar->secondary_button = 0x112; /* BTN_MIDDLE */ | ||
1400 | #endif | ||
1390 | bar->verbose = false; | 1401 | bar->verbose = false; |
1391 | bar->pid = 0; | 1402 | bar->pid = 0; |
1392 | // set default colors | 1403 | // set default colors |