update #9

Merged
S4NKALP merged 3 commits from fabric-dev into fabric 2024-12-03 07:55:01 +00:00
4 changed files with 1 additions and 128 deletions

No files matched your search

+1 -1
View File
@@ -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,
@@ -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
@@ -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)
-41
View File
@@ -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);
}