From c3089d70c0841d5a820ac6425043bb3ea771cdc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kondor=20D=C3=A1niel?= Date: Sat, 21 Sep 2024 15:48:36 +0200 Subject: [PATCH 1/3] dock: look for GNOME apps when matching icons fixes finding icon for gedit on Ubuntu 24.04 --- src/dock/toplevel-icon.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/dock/toplevel-icon.cpp b/src/dock/toplevel-icon.cpp index d0dbfe5e..7b95cf24 100644 --- a/src/dock/toplevel-icon.cpp +++ b/src/dock/toplevel-icon.cpp @@ -239,8 +239,10 @@ Icon get_from_desktop_app_info(std::string app_id) "/usr/share/applications/", "/usr/share/applications/kde/", "/usr/share/applications/org.kde.", + "/usr/share/applications/org.gnome.", "/usr/local/share/applications/", "/usr/local/share/applications/org.kde.", + "/usr/local/share/applications/org.gnome.", }; std::vector app_id_variations = { From d8ca94ed65376b4c44e2fbdb5b22baebcc25722c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kondor=20D=C3=A1niel?= Date: Sat, 21 Sep 2024 16:16:34 +0200 Subject: [PATCH 2/3] dock: more cases when matching apps handle when the .desktop file start with a capital letter; fixes evince (org.gnome.Evince) and devhelp (org.gnome.Devhelp) on Ubuntu 24.04 --- src/dock/toplevel-icon.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/dock/toplevel-icon.cpp b/src/dock/toplevel-icon.cpp index 7b95cf24..e29fb124 100644 --- a/src/dock/toplevel-icon.cpp +++ b/src/dock/toplevel-icon.cpp @@ -248,7 +248,10 @@ Icon get_from_desktop_app_info(std::string app_id) std::vector app_id_variations = { app_id, tolower(app_id), + tolower(app_id), }; + // e.g. org.gnome.Evince.desktop + app_id_variations[2][0] = std::toupper(app_id_variations[2][0]); std::vector suffixes = { "", From 7680279bc9f8b652de29a4296c9bc71d6be7411a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kondor=20D=C3=A1niel?= Date: Sat, 21 Sep 2024 16:26:27 +0200 Subject: [PATCH 3/3] dock: handle icons for snap apps --- src/dock/toplevel-icon.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/dock/toplevel-icon.cpp b/src/dock/toplevel-icon.cpp index e29fb124..20ccb1ec 100644 --- a/src/dock/toplevel-icon.cpp +++ b/src/dock/toplevel-icon.cpp @@ -273,6 +273,22 @@ Icon get_from_desktop_app_info(std::string app_id) } } + if (!app_info) + { + // special treatment for snap apps + std::string prefix = "/var/lib/snapd/desktop/applications/"; + auto& id = app_id_variations[1]; // seems to be lower case + for (auto& suffix : suffixes) + { + app_info = Gio::DesktopAppInfo::create_from_filename( + prefix + id + "_" + id + suffix); + if (app_info) + { + break; + } + } + } + if (app_info) // success { return app_info->get_icon();