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 /include/swaybar/tray/tray.h | |
| parent | fd47a30e75cccfc3789eafa4bfabd66f4696099b (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 'include/swaybar/tray/tray.h')
| -rw-r--r-- | include/swaybar/tray/tray.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/include/swaybar/tray/tray.h b/include/swaybar/tray/tray.h new file mode 100644 index 00000000..7d371008 --- /dev/null +++ b/include/swaybar/tray/tray.h @@ -0,0 +1,26 @@ +#ifndef _SWAYBAR_TRAY_H +#define _SWAYBAR_TRAY_H + +#include <stdint.h> +#include <stdbool.h> +#include "swaybar/tray/dbus.h" +#include "swaybar/tray/sni.h" +#include "list.h" + +extern struct tray *tray; + +struct tray { + list_t *items; +}; + +/** + * Initializes the tray host with D-Bus + */ +int init_tray(); + +/** + * Returns an item if `x` and `y` collide with it and NULL otherwise + */ +struct StatusNotifierItem *collides_with_sni(int x, int y); + +#endif /* _SWAYBAR_TRAY_H */ |
