aboutsummaryrefslogtreecommitdiffstats
path: root/swaybar/tray
diff options
context:
space:
mode:
authorLibravatar Ian Fan <ianfan0@gmail.com>2018-12-05 17:36:37 +0000
committerLibravatar Ian Fan <ianfan0@gmail.com>2018-12-31 20:40:18 +0000
commitef555012fa49e66c30264fcb7ab2d62391b4aa2e (patch)
treef57112fc252f9b5dd5f6d1ba27b6633b177c6151 /swaybar/tray
parentswaybar: add tray interface (diff)
downloadsway-ef555012fa49e66c30264fcb7ab2d62391b4aa2e.tar.gz
sway-ef555012fa49e66c30264fcb7ab2d62391b4aa2e.tar.zst
sway-ef555012fa49e66c30264fcb7ab2d62391b4aa2e.zip
swaybar: add skeleton dbus code to tray
Diffstat (limited to 'swaybar/tray')
-rw-r--r--swaybar/tray/tray.c31
1 files changed, 30 insertions, 1 deletions
diff --git a/swaybar/tray/tray.c b/swaybar/tray/tray.c
index d5fb3ea9..0a4f2955 100644
--- a/swaybar/tray/tray.c
+++ b/swaybar/tray/tray.c
@@ -1,19 +1,48 @@
1#include <cairo.h> 1#include <cairo.h>
2#include <stdint.h> 2#include <stdint.h>
3#include <stdlib.h> 3#include <stdlib.h>
4#include <string.h>
4#include "swaybar/bar.h" 5#include "swaybar/bar.h"
5#include "swaybar/tray/tray.h" 6#include "swaybar/tray/tray.h"
6#include "log.h" 7#include "log.h"
7 8
8struct swaybar_tray *create_tray(struct swaybar *bar) { 9struct swaybar_tray *create_tray(struct swaybar *bar) {
9 wlr_log(WLR_DEBUG, "Initializing tray"); 10 wlr_log(WLR_DEBUG, "Initializing tray");
10 return NULL; 11
12 sd_bus *bus;
13 int ret = sd_bus_open_user(&bus);
14 if (ret < 0) {
15 wlr_log(WLR_ERROR, "Failed to connect to user bus: %s", strerror(-ret));
16 return NULL;
17 }
18
19 struct swaybar_tray *tray = calloc(1, sizeof(struct swaybar_tray));
20 if (!tray) {
21 return NULL;
22 }
23 tray->bar = bar;
24 tray->bus = bus;
25 tray->fd = sd_bus_get_fd(tray->bus);
26 return tray;
11} 27}
12 28
13void destroy_tray(struct swaybar_tray *tray) { 29void destroy_tray(struct swaybar_tray *tray) {
30 if (!tray) {
31 return;
32 }
33 sd_bus_flush_close_unref(tray->bus);
34 free(tray);
14} 35}
15 36
16void tray_in(int fd, short mask, void *data) { 37void tray_in(int fd, short mask, void *data) {
38 sd_bus *bus = data;
39 int ret;
40 while ((ret = sd_bus_process(bus, NULL)) > 0) {
41 // This space intentionally left blank
42 }
43 if (ret < 0) {
44 wlr_log(WLR_ERROR, "Failed to process bus: %s", strerror(-ret));
45 }
17} 46}
18 47
19uint32_t render_tray(cairo_t *cairo, struct swaybar_output *output, double *x) { 48uint32_t render_tray(cairo_t *cairo, struct swaybar_output *output, double *x) {