diff --git a/src/modules/wlr/taskbar.cpp b/src/modules/wlr/taskbar.cpp index f588970..95a7a51 100644 --- a/src/modules/wlr/taskbar.cpp +++ b/src/modules/wlr/taskbar.cpp @@ -77,6 +77,7 @@ static bool image_load_icon(Gtk::Image& image, Glib::RefPtr icon const std::string &app_id_list, int size) { std::string app_id; + std::string lower_app_id; std::istringstream stream(app_id_list); bool found = false; @@ -85,9 +86,19 @@ static bool image_load_icon(Gtk::Image& image, Glib::RefPtr icon * send a single app-id, but in any case this works fine */ while (stream >> app_id) { - std::string icon_name = get_from_desktop_app_info(app_id); + std::string icon_name = get_from_icon_theme(icon_theme, app_id); + if (icon_name.empty()) { + lower_app_id = app_id; + std::transform(lower_app_id.begin(), lower_app_id.end(), lower_app_id.begin(), + [](char c){ return std::tolower(c); }); + icon_name = get_from_icon_theme(icon_theme, lower_app_id); + } + if (icon_name.empty()) - icon_name = get_from_icon_theme(icon_theme, app_id); + icon_name = get_from_desktop_app_info(app_id); + + if (icon_name.empty()) + icon_name = get_from_desktop_app_info(lower_app_id); if (icon_name.empty()) continue; @@ -271,7 +282,7 @@ void Task::handle_title(const char *title) void Task::handle_app_id(const char *app_id) { app_id_ = app_id; - if (!image_load_icon(icon_, tbar_->icon_theme(), app_id_, + if (!image_load_icon(icon_, tbar_->icon_theme(), app_id_, config_["icon-size"].isInt() ? config_["icon-size"].asInt() : 16)) spdlog::warn("Failed to load icon for {}", app_id);