From e7fc5c05af7c49cadad28d235dd9ddd62740d48f Mon Sep 17 00:00:00 2001 From: Kiana Sheibani Date: Thu, 29 Jan 2026 20:24:59 -0500 Subject: [PATCH 1/2] feat: add libreoffice desktop entry subs --- util/Icons.qml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/util/Icons.qml b/util/Icons.qml index 8975f1c..8cbacb0 100644 --- a/util/Icons.qml +++ b/util/Icons.qml @@ -76,7 +76,15 @@ Singleton { readonly property var desktopEntrySubs: ({ "gimp-3.0": ["gimp"], - "discord": ["discord", "discord-canary"] + "discord": ["discord", "discord-canary"], + // Libreoffice + "libreoffice-startcenter": ["libreoffice-startcenter", "startcenter"], + "libreoffice-writer": ["libreoffice-writer", "writer"], + "libreoffice-draw": ["libreoffice-draw", "draw"], + "libreoffice-impress": ["libreoffice-impress", "impress"], + "libreoffice-math": ["libreoffice-math", "math"], + "libreoffice-base": ["libreoffice-base", "base"], + "libreoffice-calc": ["libreoffice-calc", "calc"] }) readonly property var categoryIcons: ({ From 24d4c6cc3bc3dd52d5921511d90bf887e42fc7df Mon Sep 17 00:00:00 2001 From: Kiana Sheibani Date: Thu, 29 Jan 2026 20:25:24 -0500 Subject: [PATCH 2/2] fix: use `icon-missing` image always for fallback --- modules/bar/popouts/ActiveWindow.qml | 2 +- modules/dashboard/Mixer.qml | 4 ++-- modules/dashboard/Workspaces.qml | 2 +- util/Icons.qml | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/bar/popouts/ActiveWindow.qml b/modules/bar/popouts/ActiveWindow.qml index a8afc95..574d29d 100644 --- a/modules/bar/popouts/ActiveWindow.qml +++ b/modules/bar/popouts/ActiveWindow.qml @@ -127,7 +127,7 @@ Item { Layout.alignment: Qt.AlignVCenter implicitSize: 36 - source: Icons.getAppIcon(toplevel?.lastIpcObject.class ?? "", "") + source: Icons.getAppIcon(toplevel?.lastIpcObject.class ?? "") } ColumnLayout { diff --git a/modules/dashboard/Mixer.qml b/modules/dashboard/Mixer.qml index a83ae58..397298b 100644 --- a/modules/dashboard/Mixer.qml +++ b/modules/dashboard/Mixer.qml @@ -110,8 +110,8 @@ Item { source: { const icon = entry.modelData.properties["application.icon-name"]; if (icon) - return Icons.getAppIcon(icon, "icon-missing"); - Icons.getAppIcon(entry.modelData.name, "icon-missing") + return Icons.getAppIcon(icon); + Icons.getAppIcon(entry.modelData?.name ?? "") } } diff --git a/modules/dashboard/Workspaces.qml b/modules/dashboard/Workspaces.qml index 6f5db42..9aa8c63 100644 --- a/modules/dashboard/Workspaces.qml +++ b/modules/dashboard/Workspaces.qml @@ -377,7 +377,7 @@ Item { anchors.centerIn: parent implicitSize: Math.min(48, window.width * 0.5, window.height * 0.5) - source: Icons.getAppIcon(window.ipc?.class ?? "", "") + source: Icons.getAppIcon(window.ipc?.class ?? "") } // Interactions diff --git a/util/Icons.qml b/util/Icons.qml index 8cbacb0..9f4d6fe 100644 --- a/util/Icons.qml +++ b/util/Icons.qml @@ -139,8 +139,8 @@ Singleton { return DesktopEntries.applications.values.find(a => names.includes(a.id.toLowerCase())) ?? null; } - function getAppIcon(name: string, fallback: string): string { - return Quickshell.iconPath(getDesktopEntry(name)?.icon, fallback); + function getAppIcon(name: string): string { + return Quickshell.iconPath(getDesktopEntry(name)?.icon, "icon-missing"); } function getAppCategoryIcon(name: string, fallback: string): string {