diff options
author | Ian Fan <ianfan0@gmail.com> | 2018-12-17 23:52:15 +0000 |
---|---|---|
committer | Ian Fan <ianfan0@gmail.com> | 2018-12-31 20:40:18 +0000 |
commit | 9e31f5d79ce9de8f1c73013b792aa94f355a1983 (patch) | |
tree | 93b8ddb51873cae14db8d5f07db74ca96236f184 | |
parent | swaybar: handle new and lost StatusNotifierWatcher (diff) | |
download | sway-9e31f5d79ce9de8f1c73013b792aa94f355a1983.tar.gz sway-9e31f5d79ce9de8f1c73013b792aa94f355a1983.tar.zst sway-9e31f5d79ce9de8f1c73013b792aa94f355a1983.zip |
swaybar: use KDE's SNI IconThemePath property
-rw-r--r-- | include/swaybar/tray/item.h | 1 | ||||
-rw-r--r-- | swaybar/tray/item.c | 5 |
2 files changed, 6 insertions, 0 deletions
diff --git a/include/swaybar/tray/item.h b/include/swaybar/tray/item.h index 53d7e48c..9bba7951 100644 --- a/include/swaybar/tray/item.h +++ b/include/swaybar/tray/item.h | |||
@@ -34,6 +34,7 @@ struct swaybar_sni { | |||
34 | list_t *attention_icon_pixmap; // struct swaybar_pixmap * | 34 | list_t *attention_icon_pixmap; // struct swaybar_pixmap * |
35 | bool item_is_menu; | 35 | bool item_is_menu; |
36 | char *menu; | 36 | char *menu; |
37 | char *icon_theme_path; // non-standard KDE property | ||
37 | }; | 38 | }; |
38 | 39 | ||
39 | struct swaybar_sni *create_sni(char *id, struct swaybar_tray *tray); | 40 | struct swaybar_sni *create_sni(char *id, struct swaybar_tray *tray); |
diff --git a/swaybar/tray/item.c b/swaybar/tray/item.c index d00339e2..41cacd16 100644 --- a/swaybar/tray/item.c +++ b/swaybar/tray/item.c | |||
@@ -228,6 +228,7 @@ struct swaybar_sni *create_sni(char *id, struct swaybar_tray *tray) { | |||
228 | sni->service = strndup(id, path_ptr - id); | 228 | sni->service = strndup(id, path_ptr - id); |
229 | sni->path = strdup(path_ptr); | 229 | sni->path = strdup(path_ptr); |
230 | sni->interface = "org.kde.StatusNotifierItem"; | 230 | sni->interface = "org.kde.StatusNotifierItem"; |
231 | sni_get_property_async(sni, "IconThemePath", "s", &sni->icon_theme_path); | ||
231 | } | 232 | } |
232 | 233 | ||
233 | // Ignored: Category, Id, Title, WindowId, OverlayIconName, | 234 | // Ignored: Category, Id, Title, WindowId, OverlayIconName, |
@@ -353,6 +354,10 @@ uint32_t render_sni(cairo_t *cairo, struct swaybar_output *output, double *x, | |||
353 | char *icon_path = find_icon(sni->tray->themes, sni->tray->basedirs, | 354 | char *icon_path = find_icon(sni->tray->themes, sni->tray->basedirs, |
354 | icon_name, ideal_size, output->bar->config->icon_theme, | 355 | icon_name, ideal_size, output->bar->config->icon_theme, |
355 | &sni->min_size, &sni->max_size); | 356 | &sni->min_size, &sni->max_size); |
357 | if (!icon_path && sni->icon_theme_path) { | ||
358 | icon_path = find_icon_in_dir(icon_name, sni->icon_theme_path, | ||
359 | &sni->min_size, &sni->max_size); | ||
360 | } | ||
356 | if (icon_path) { | 361 | if (icon_path) { |
357 | cairo_surface_destroy(sni->icon); | 362 | cairo_surface_destroy(sni->icon); |
358 | sni->icon = load_background_image(icon_path); | 363 | sni->icon = load_background_image(icon_path); |