From 68f3eab84d48aaa4ef8853740f9c02fb6d6cfb9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Tue, 19 Mar 2024 14:15:10 +0100 Subject: [PATCH] Prefer window icons in window list Resolves: RHEL-24713 --- gnome-shell-extensions.spec | 7 +++- prefer-window-icon.patch | 70 +++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 prefer-window-icon.patch diff --git a/gnome-shell-extensions.spec b/gnome-shell-extensions.spec index e940993..022d74e 100644 --- a/gnome-shell-extensions.spec +++ b/gnome-shell-extensions.spec @@ -7,7 +7,7 @@ Name: gnome-shell-extensions Version: 40.7 -Release: 13%{?dist} +Release: 14%{?dist} Summary: Modify and extend GNOME Shell functionality and behavior License: GPLv2+ @@ -44,6 +44,7 @@ Patch021: 0001-desktop-icons-Don-t-try-spawn-with-non-existent-work.patch Patch022: 0001-docking-Only-remove-spacer-if-necessary.patch Patch023: 0001-classification-banner-Hide-from-picks.patch Patch024: 0001-desktop-icons-Notify-icon-drags.patch +Patch025: prefer-window-icon.patch %description GNOME Shell Extensions is a collection of extensions providing additional and @@ -447,6 +448,10 @@ workspaces. %changelog +* Tue Mar 19 2024 Florian Müllner - 40.7-14 +- Prefer window icons in window list + Resolves: RHEL-24713 + * Wed Mar 06 2024 Florian Müllner - 40.7-13 - Notify on desktop icon drags Resolves: RHEL-26989 diff --git a/prefer-window-icon.patch b/prefer-window-icon.patch new file mode 100644 index 0000000..1b543e3 --- /dev/null +++ b/prefer-window-icon.patch @@ -0,0 +1,70 @@ +From 34d8854677513b016a08a04cdd9973b165146215 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Tue, 19 Mar 2024 13:16:50 +0100 +Subject: [PATCH 1/2] window-list: Use more appropriate fallback icon + +'icon-missing' is not an actual icon name. It somewhat works +because an invalid icon name will fallback to the correct +'image-missing', however for apps the generic app icon is +a better fallback. +--- + extensions/window-list/extension.js | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/extensions/window-list/extension.js b/extensions/window-list/extension.js +index 91ee3e6b..1f112548 100644 +--- a/extensions/window-list/extension.js ++++ b/extensions/window-list/extension.js +@@ -188,7 +188,7 @@ class WindowTitle extends St.BoxLayout { + this._icon.child = app.create_icon_texture(ICON_TEXTURE_SIZE); + } else { + this._icon.child = new St.Icon({ +- icon_name: 'icon-missing', ++ icon_name: 'application-x-executable', + icon_size: ICON_TEXTURE_SIZE, + }); + } +-- +2.44.0 + + +From 032cfb3593651c8344a59828a9c674f148329889 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Tue, 19 Mar 2024 14:07:12 +0100 +Subject: [PATCH 2/2] window-list: Override with window icon if available + +--- + extensions/window-list/extension.js | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +diff --git a/extensions/window-list/extension.js b/extensions/window-list/extension.js +index 1f112548..0c28692d 100644 +--- a/extensions/window-list/extension.js ++++ b/extensions/window-list/extension.js +@@ -192,6 +192,23 @@ class WindowTitle extends St.BoxLayout { + icon_size: ICON_TEXTURE_SIZE, + }); + } ++ ++ // Override with window icon if available ++ if (this._hasWindowIcon()) { ++ const textureCache = St.TextureCache.get_default(); ++ this._icon.child.gicon = textureCache.bind_cairo_surface_property( ++ this._metaWindow, 'icon'); ++ } ++ } ++ ++ _hasWindowIcon() { ++ // HACK: GI cannot handle CairoSurface, so this ++ // will throw if the icon property is null ++ try { ++ return this._metaWindow.icon !== null; ++ } catch (e) { ++ return true; ++ } + } + + _onDestroy() { +-- +2.44.0 +