roundabout,
created on Thursday, 14 August 2025, 13:37:35 (1755178655),
received on Thursday, 14 August 2025, 13:37:37 (1755178657)
Author identity: Vlad <vlad.muntoiu@gmail.com>
eaefedca701ce44f3f84c03b9992c59a42ceb606
applets/app-menu/__init__.py
@@ -34,18 +34,18 @@ _ = lambda x: locale.dgettext("panorama-app-menu", x)
CATEGORY_MAPPINGS = {
"Utility": (_("Accessories"), "applications-accessories"),
"Development": (_("Programming"), "applications-development"),
"Game": (_("Games"), "applications-games"),
"Graphics": (_("Graphics"), "applications-graphics"),
"Network": (_("Network"), "applications-internet"),
"AudioVideo": (_("Multimedia"), "applications-multimedia"),
"Office": (_("Office"), "applications-office"),
"Science": (_("Science"), "applications-science"),
"Education": (_("Education"), "applications-education"),
"System": (_("System"), "applications-system"),
"Settings": (_("Settings"), "preferences-desktop"),
"Other": (_("Other"), "applications-other"),
"Utility": {"menu_name": _("Accessories"), "icon": "applications-accessories"},
"Development": {"menu_name": _("Programming"), "icon": "applications-development"},
"Game": {"menu_name": _("Games"), "icon": "applications-games"},
"Graphics": {"menu_name": _("Graphics"), "icon": "applications-graphics"},
"Network": {"menu_name": _("Network"), "icon": "applications-internet"},
"AudioVideo": {"menu_name": _("Multimedia"), "icon": "applications-multimedia"},
"Office": {"menu_name": _("Office"), "icon": "applications-office"},
"Science": {"menu_name": _("Science"), "icon": "applications-science"},
"Education": {"menu_name": _("Education"), "icon": "applications-education"},
"System": {"menu_name": _("System"), "icon": "applications-system"},
"Settings": {"menu_name": _("Settings"), "icon": "preferences-desktop"},
"Other": {"menu_name": _("Other"), "icon": "applications-other"},
}
custom_css = """
@@ -130,6 +130,7 @@ class AppMenu(panorama_panel.Applet):
super().__init__(orientation=orientation, config=config)
if config is None:
config = {}
self.category_mappings = config.get("category_mappings", CATEGORY_MAPPINGS)
self.button = Gtk.MenuButton()
self.button.set_has_frame(False) # flat look
self.icon = Gtk.Image.new_from_icon_name("start-here")
@@ -194,7 +195,7 @@ class AppMenu(panorama_panel.Applet):
...
def get_config(self):
return {}
return {"category_mappings": self.category_mappings}
def set_panel_position(self, position):
self.popover.set_position(panorama_panel.OPPOSITE_POSITION[position])
@@ -206,7 +207,7 @@ class AppMenu(panorama_panel.Applet):
all_apps = Gio.AppInfo.get_all()
apps_by_category: dict[str, list[Gio.AppInfo]] = {}
for category, info in CATEGORY_MAPPINGS.items():
for category, info in self.category_mappings.items():
apps_by_category[category] = []
for app in all_apps:
@@ -222,10 +223,10 @@ class AppMenu(panorama_panel.Applet):
if not category_found:
apps_by_category["Other"].append(app)
for category, info in CATEGORY_MAPPINGS.items():
for category, info in self.category_mappings.items():
if apps_by_category[category]:
item = Gio.MenuItem.new(info[0])
item.set_icon(Gio.ThemedIcon.new(info[1]))
item = Gio.MenuItem.new(info["menu_name"])
item.set_icon(Gio.ThemedIcon.new(info["icon"]))
submenu = Gio.Menu()
for app in apps_by_category[category]:
config.yaml
@@ -7,7 +7,44 @@ panels:
can_capture_keyboard: false
applets:
left:
- AppMenu: {}
- AppMenu:
category_mappings:
Utility:
menu_name: Accessories
icon: applications-accessories
Development:
menu_name: Programming
icon: applications-development
Game:
menu_name: Games
icon: applications-games
Graphics:
menu_name: Graphics
icon: applications-graphics
Network:
menu_name: Network
icon: applications-internet
AudioVideo:
menu_name: Multimedia
icon: applications-multimedia
Office:
menu_name: Office
icon: applications-office
Science:
menu_name: Science
icon: applications-science
Education:
menu_name: Education
icon: applications-education
System:
menu_name: System
icon: applications-system
Settings:
menu_name: Settings
icon: preferences-desktop
Other:
menu_name: Other
icon: applications-other
- WFWindowList:
max_button_width: 256
centre: []