summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/swaybar/tray/item.h1
-rw-r--r--swaybar/tray/item.c5
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
39struct swaybar_sni *create_sni(char *id, struct swaybar_tray *tray); 40struct 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);