From 17055c4998a70ffa92dc72f77a8cc0a9d9a0b761 Mon Sep 17 00:00:00 2001 From: carsten Date: Wed, 21 Jan 2026 16:31:20 +0100 Subject: [PATCH] NEW: menu: Add option to hide categories icons Adds a new toggle "Show categories icons" to the menu applet settings. When disabled, category buttons display only text without icons. The existing "symbolic icons" and "icon size" options become dependent on this setting and are grayed out when icons are hidden. Fixes linuxmint/cinnamon#13368 --- .../applets/menu@cinnamon.org/applet.js | 51 ++++++++++--------- .../menu@cinnamon.org/settings-schema.json | 13 +++-- 2 files changed, 37 insertions(+), 27 deletions(-) diff --git a/files/usr/share/cinnamon/applets/menu@cinnamon.org/applet.js b/files/usr/share/cinnamon/applets/menu@cinnamon.org/applet.js index e2d290d0d9..fe10a4128b 100644 --- a/files/usr/share/cinnamon/applets/menu@cinnamon.org/applet.js +++ b/files/usr/share/cinnamon/applets/menu@cinnamon.org/applet.js @@ -838,32 +838,34 @@ class CategoryButton extends SimpleMenuItem { categoryId: categoryId, }); - let size = applet.categoryIconSize; - if (applet.symbolicCategoryIcons) { - symbolic = true; - if (typeof icon !== 'string') - if (icon?.get_names) - icon = icon.get_names()[0]; + if (applet.showCategoryIcons) { + let size = applet.categoryIconSize; + if (applet.symbolicCategoryIcons) { + symbolic = true; + if (typeof icon !== 'string') + if (icon?.get_names) + icon = icon.get_names()[0]; + else + icon = ""; + if (icon.startsWith("applications-") || icon === "folder-recent") + icon = "xsi-" + icon; + else if (icon == "xapp-user-favorites") + icon = "xsi-user-favorites-symbolic"; + else if (icon == "preferences-system") + icon = "xsi-applications-administration"; + else if (icon == "preferences-desktop") + icon = "xsi-applications-preferences"; + else if (icon == "wine") + icon = "xsi-applications-wine"; else - icon = ""; - if (icon.startsWith("applications-") || icon === "folder-recent") - icon = "xsi-" + icon; - else if (icon == "xapp-user-favorites") - icon = "xsi-user-favorites-symbolic"; - else if (icon == "preferences-system") - icon = "xsi-applications-administration"; - else if (icon == "preferences-desktop") - icon = "xsi-applications-preferences"; - else if (icon == "wine") - icon = "xsi-applications-wine"; - else - icon = "xsi-applications-other"; - } + icon = "xsi-applications-other"; + } - if (typeof icon === 'string') - this.addIcon(size, icon, null, symbolic); - else if (icon) - this.addIcon(size, null, icon, symbolic); + if (typeof icon === 'string') + this.addIcon(size, icon, null, symbolic); + else if (icon) + this.addIcon(size, null, icon, symbolic); + } this.addLabel(this.name, 'appmenu-category-button-label'); @@ -1175,6 +1177,7 @@ class CinnamonMenuApplet extends Applet.TextIconApplet { this.settings.bind("menu-icon-size", "menuIconSize", this._updateIconAndLabel); this.settings.bind("menu-label", "menuLabel", this._updateIconAndLabel); this.settings.bind("overlay-key", "overlayKey", this._updateKeybinding); + this.settings.bind("show-category-icons", "showCategoryIcons", () => this.queueRefresh(REFRESH_ALL_MASK)); this.settings.bind("symbolic-category-icons", "symbolicCategoryIcons", () => this.queueRefresh(REFRESH_ALL_MASK)); this.settings.bind("category-icon-size", "categoryIconSize", () => this.queueRefresh(REFRESH_ALL_MASK)); this.settings.bind("category-hover", "categoryHover", this._updateCategoryHover); diff --git a/files/usr/share/cinnamon/applets/menu@cinnamon.org/settings-schema.json b/files/usr/share/cinnamon/applets/menu@cinnamon.org/settings-schema.json index 7de182792d..1e4654d681 100644 --- a/files/usr/share/cinnamon/applets/menu@cinnamon.org/settings-schema.json +++ b/files/usr/share/cinnamon/applets/menu@cinnamon.org/settings-schema.json @@ -30,7 +30,7 @@ "appearance-menu" : { "type" : "section", "title" : "Options", - "keys" : ["search-position", "system-position", "show-description", "symbolic-category-icons", "category-icon-size", + "keys" : ["search-position", "system-position", "show-description", "show-category-icons", "symbolic-category-icons", "category-icon-size", "application-icon-size", "sidebar-icon-size", "sidebar-max-width", "reset-menu-size-button"] }, @@ -83,10 +83,16 @@ "description" : "Text", "dependency" : "menu-custom" }, + "show-category-icons" : { + "type" : "switch", + "default" : true, + "description" : "Show categories icons" + }, "symbolic-category-icons" : { "type" : "switch", "default" : true, - "description" : "Use symbolic icons for categories" + "description" : "Use symbolic icons for categories", + "dependency" : "show-category-icons" }, "category-icon-size" : { "type": "spinbutton", @@ -95,7 +101,8 @@ "max" : 48, "step" : 1, "units" : "px", - "description" : "Categories icon size" + "description" : "Categories icon size", + "dependency" : "show-category-icons" }, "application-icon-size" : { "type": "spinbutton",