From 843ad38b3c427adb0bf319e9613d9813c8d9246c Mon Sep 17 00:00:00 2001 From: Calvin Lee Date: Wed, 7 Jun 2017 16:45:28 -0700 Subject: 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 --- swaybar/CMakeLists.txt | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'swaybar/CMakeLists.txt') diff --git a/swaybar/CMakeLists.txt b/swaybar/CMakeLists.txt index f59a48fd..373719de 100644 --- a/swaybar/CMakeLists.txt +++ b/swaybar/CMakeLists.txt @@ -5,7 +5,13 @@ include_directories( ${PANGO_INCLUDE_DIRS} ${JSONC_INCLUDE_DIRS} ${XKBCOMMON_INCLUDE_DIRS} + ${DBUS_INCLUDE_DIRS} ) +if (enable-tray) + file(GLOB tray + tray/*.c + ) +endif() add_executable(swaybar main.c @@ -14,6 +20,8 @@ add_executable(swaybar bar.c status_line.c ipc.c + event_loop.c + ${tray} ) target_link_libraries(swaybar @@ -24,6 +32,7 @@ target_link_libraries(swaybar ${CAIRO_LIBRARIES} ${PANGO_LIBRARIES} ${JSONC_LIBRARIES} + ${DBUS_LIBRARIES} ) if (WITH_GDK_PIXBUF) @@ -32,6 +41,8 @@ if (WITH_GDK_PIXBUF) ) endif() +target_link_libraries(swaybar rt) + install( TARGETS swaybar RUNTIME -- cgit v1.2.3