diff --git a/config/fabric/modules/bar/bar.py b/config/fabric/modules/bar/bar.py index e565b3fb..eb46622a 100644 --- a/config/fabric/modules/bar/bar.py +++ b/config/fabric/modules/bar/bar.py @@ -1,4 +1,5 @@ from fabric.hyprland.widgets import Language +from fabric.system_tray.widgets import SystemTray from fabric.utils import FormattedString, bulk_replace from fabric.widgets.box import Box from fabric.widgets.button import Button @@ -13,7 +14,6 @@ from modules.bar.widgets import ( Network, PowerProfile, SystemInfo, - SystemTray, TaskBar, VolumeIndicator, workspace, diff --git a/config/fabric/modules/bar/widgets/__init__.py b/config/fabric/modules/bar/widgets/__init__.py index e31c7cda..27ff16e8 100644 --- a/config/fabric/modules/bar/widgets/__init__.py +++ b/config/fabric/modules/bar/widgets/__init__.py @@ -5,7 +5,6 @@ from .info import SystemInfo from .microphone import MicrophoneIndicator from .network import Network from .powerprofile import PowerProfile -from .systray import SystemTray from .taskbar import TaskBar from .volume import VolumeIndicator from .workspace import workspace diff --git a/config/fabric/modules/bar/widgets/systray.py b/config/fabric/modules/bar/widgets/systray.py deleted file mode 100644 index 7ffdf085..00000000 --- a/config/fabric/modules/bar/widgets/systray.py +++ /dev/null @@ -1,85 +0,0 @@ -import gi -from gi.repository import Gdk, GdkPixbuf, Gray, Gtk -from loguru import logger - -from fabric.widgets.box import Box -from fabric.widgets.button import Button -from fabric.widgets.image import Image - -gi.require_version("Gray", "0.1") -gi.require_version("Gtk", "3.0") - - -class SystemTray(Box): - - def __init__(self, pixel_size=22, **kwargs) -> None: - super().__init__(name="system-tray", **kwargs) - self.pixel_size = pixel_size - self.watcher = Gray.Watcher() - self.watcher.connect("item-added", self.on_item_added) - - def on_item_added(self, _, identifier: str): - item = self.watcher.get_item_for_identifier(identifier) - item_button = self.do_bake_item_button(item) - item.connect("removed", lambda *args: item_button.destroy()) - item_button.show_all() - self.add(item_button) - - def do_bake_item_button(self, item: Gray.Item) -> Button: - button = Button() - - button.set_tooltip_text(item.get_property("title")) - - # context menu handler - button.connect( - "button-press-event", - lambda button, event: self.on_button_click(button, item, event), - ) - - # get pixel map of item's icon - pixmap = Gray.get_pixmap_for_pixmaps(item.get_icon_pixmaps(), 24) - - # convert the pixmap to a pixbuf - pixbuf: GdkPixbuf.Pixbuf = ( - pixmap.as_pixbuf(self.pixel_size, GdkPixbuf.InterpType.HYPER) - if pixmap is not None - else Gtk.IconTheme() - .get_default() - .load_icon( - item.get_icon_name(), - self.pixel_size, - Gtk.IconLookupFlags.FORCE_SIZE, - ) - ) - - # resize/scale the pixbuf - pixbuf.scale_simple( - self.pixel_size, - self.pixel_size, - GdkPixbuf.InterpType.HYPER, - ) - - image = Image(pixbuf=pixbuf, pixel_size=self.pixel_size) - button.set_image(image) - - return button - - def on_button_click(self, button, item: Gray.Item, event): - match event.button: - case 1: - try: - item.activate(event.x, event.y) - except Exception as e: - logger.error(e) - case 3: - menu = item.get_property("menu") - menu.set_name("system-tray-menu") - if menu: - menu.popup_at_widget( - button, - Gdk.Gravity.SOUTH, - Gdk.Gravity.NORTH, - event, - ) - else: - item.context_menu(event.x, event.y) diff --git a/config/fabric/styles/bar.css b/config/fabric/styles/bar.css index 1e3d4137..6d8af42b 100644 --- a/config/fabric/styles/bar.css +++ b/config/fabric/styles/bar.css @@ -155,44 +155,3 @@ menu > menuitem:hover { color: lighter(@outlineVariant); border: 2px solid @onSecondaryContainer; } - -/* - * ── system tray ─────────────────────────────────────────────────────── -*/ - -#system-tray { - background-color: @surfaceContainer; - border-radius: 100px; - padding: 2px 10px 0 10px; -} - -#system-tray > button { - margin: 0px; - padding: 0px; -} - -#system-tray-menu > menuitem menu, -#system-tray-menu { - background-color: @surfaceContainer; - border-radius: 12px; - padding: 10px; -} - -#system-tray-menu > menuitem menu > menuitem, -#system-tray-menu > menuitem { - margin: 5px 0px; - background-color: @surfaceContainer; - padding: 0.3em 0.5em; - border-radius: 10px; -} - -#system-tray-menu > menuitem menu > menuitem:disabled, -#system-tray-menu > menuitem:disabled { - background-color: transparent; -} - -#system-tray-menu > menuitem menu > menuitem:hover, -#system-tray-menu > menuitem:hover, -#submenu-button:hover { - background-color: mix(@onSurface, @surface, 0.85); -}