From 50d36ef238182c33bca8dfc01dd56957e31ff6bd Mon Sep 17 00:00:00 2001 From: Brian Ashworth Date: Sun, 13 Jan 2019 12:06:35 -0500 Subject: swaybar: allow identifiers for output and tray This allows `bar output` and `bar tray_output` to specify an output identifier. Output names should still work as well. This parses the output identifier from the xdg_output description, which wlroots currently sets to `make model serial (name)`. Since this could change in the future, all identifier comparisons are guarded by NULL-checks in case the description cannot be parsed to an identifier. --- swaybar/tray/tray.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'swaybar/tray') diff --git a/swaybar/tray/tray.c b/swaybar/tray/tray.c index 0c3517cb..d5d0c84e 100644 --- a/swaybar/tray/tray.c +++ b/swaybar/tray/tray.c @@ -101,13 +101,17 @@ void tray_in(int fd, short mask, void *data) { } static int cmp_output(const void *item, const void *cmp_to) { - return strcmp(item, cmp_to); + const struct swaybar_output *output = cmp_to; + if (output->identifier && strcmp(item, output->identifier) == 0) { + return 0; + } + return strcmp(item, output->name); } uint32_t render_tray(cairo_t *cairo, struct swaybar_output *output, double *x) { struct swaybar_config *config = output->bar->config; if (config->tray_outputs) { - if (list_seq_find(config->tray_outputs, cmp_output, output->name) == -1) { + if (list_seq_find(config->tray_outputs, cmp_output, output) == -1) { return 0; } } // else display on all -- cgit v1.2.3