soreau,
created on Tuesday, 19 August 2025, 09:23:40 (1755595420),
received on Tuesday, 19 August 2025, 12:12:46 (1755605566)
Author identity: Scott Moreau <oreaus@gmail.com>
49b99c71170916b13a94c9c211bdea56ee27e71a
applets/soreaus-menu/__init__.py
@@ -135,6 +135,14 @@ class WayfireLogoutUI(Gtk.Window):
def on_cancel_click(self, button): self.hide() class MenuItemButton(Gtk.Button): def __init__(self, name, desc, exe): super().__init__() self.name = name self.desc = desc self.exe = exe class SoreausMenu(panorama_panel.Applet): name = "Soreau's menu" description = "Flowbox app menu"
@@ -152,7 +160,10 @@ class SoreausMenu(panorama_panel.Applet):
self.popover = Gtk.Popover() self.popover.set_parent(self) self.flowbox = Gtk.FlowBox() self.flowbox.set_valign(Gtk.Align.START); self.flowbox.set_homogeneous(True);self.flowbox_item_focus_signal = self.flowbox.connect("selected-children-changed", self.on_flowbox_item_focus) self.app_buttons = []self.populate_menu_entries() self.scrolled_window = Gtk.ScrolledWindow() self.scrolled_window.set_size_request(-1, 350)
@@ -167,6 +178,9 @@ class SoreausMenu(panorama_panel.Applet):
self.logout_button.connect("clicked", self.on_logout_button_clicked) self.logout_box.set_halign(Gtk.Align.END) self.logout_box.append(self.logout_button) self.search_entry = Gtk.SearchEntry() self.search_entry.connect("search-changed", self.on_search_changed) self.menu_box.append(self.search_entry)self.menu_box.append(self.scrolled_window) self.menu_box.append(self.logout_box) self.popover.set_child(self.menu_box)
@@ -175,6 +189,15 @@ class SoreausMenu(panorama_panel.Applet):
self.button.set_popover(self.popover) self.logout_ui = WayfireLogoutUI() def on_search_changed(self, search_entry): text = search_entry.get_text().lower() self.flowbox.remove_all() for button in self.app_buttons: if (button.name and text in button.name.lower()) or \ (button.desc and text in button.desc.lower()) or \ (button.exe and text in button.exe.lower()): self.flowbox.append(button) def on_logout_button_clicked(self, button): self.logout_ui.present() self.popover.popdown()
@@ -187,6 +210,7 @@ class SoreausMenu(panorama_panel.Applet):
def on_popover_popup(self, parent): for child in self.flowbox.get_selected_children(): self.flowbox.unselect_child(child) self.search_entry.set_text("")self.popover.popup() def app_button_clicked(self, app_button):
@@ -195,14 +219,16 @@ class SoreausMenu(panorama_panel.Applet):
def populate_menu_entries(self): app_infos = Gio.AppInfo.get_all() # Get all registered applications app_infos = sorted(app_infos, key=lambda obj: obj.get_display_name().lower())for app_info in app_infos: app_categories = app_info.get_categories() if app_categories == None: continue app_name = app_info.get_display_name() app_button = Gtk.Button()app_button.command = app_info.get_executable()command = app_info.get_executable() app_button = MenuItemButton(app_name, app_info.get_description(), command) app_button.command = commandapp_button.set_tooltip_text(app_name) app_label = Gtk.Label(label=app_name) app_label.set_ellipsize(Pango.EllipsizeMode.END)
@@ -230,3 +256,4 @@ class SoreausMenu(panorama_panel.Applet):
self.flowbox.append(app_button) app_button.connect("clicked", self.app_button_clicked) app_button_box.prepend(image) self.app_buttons.append(app_button)