Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 5 additions & 17 deletions modules/systemtray.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
logger = logging.getLogger(__name__)

class SystemTray(Box):
def __init__(self, pixel_size: int = 20, refresh_interval: int = 1, **kwargs) -> None:
def __init__(self, pixel_size: int = 20, **kwargs) -> None:
orientation = Gtk.Orientation.HORIZONTAL if not data.VERTICAL else Gtk.Orientation.VERTICAL
super().__init__(
name="systray",
Expand All @@ -23,16 +23,12 @@ def __init__(self, pixel_size: int = 20, refresh_interval: int = 1, **kwargs) ->
self.enabled = True
super().set_visible(False)
self.pixel_size = pixel_size
self.refresh_interval = refresh_interval

self.buttons_by_id = {}
self.items_by_id = {}

self.watcher = Gray.Watcher()
self.watcher.connect("item-added", self.on_watcher_item_added)

GLib.timeout_add_seconds(self.refresh_interval, self._refresh_all_items)

def set_visible(self, visible: bool):
self.enabled = visible
self._update_visibility()
Expand Down Expand Up @@ -71,7 +67,7 @@ def _get_item_pixbuf(self, item: Gray.Item) -> GdkPixbuf.Pixbuf:
"image-missing", self.pixel_size, Gtk.IconLookupFlags.FORCE_SIZE
)

def _refresh_item_ui(self, identifier: str, item: Gray.Item, button: Gtk.Button):
def _refresh_item_ui(self, item: Gray.Item, button: Gtk.Button):
pixbuf = self._get_item_pixbuf(item)
img = button.get_image()
if isinstance(img, Gtk.Image):
Expand All @@ -90,14 +86,6 @@ def _refresh_item_ui(self, identifier: str, item: Gray.Item, button: Gtk.Button)
else:
button.set_has_tooltip(False)

def _refresh_all_items(self) -> bool:

for ident, item in self.items_by_id.items():
btn = self.buttons_by_id.get(ident)
if btn:
self._refresh_item_ui(ident, item, btn)
return True

def on_watcher_item_added(self, _, identifier: str):
item = self.watcher.get_item_for_identifier(identifier)
if not item:
Expand All @@ -113,12 +101,12 @@ def on_watcher_item_added(self, _, identifier: str):
self.items_by_id[identifier] = item

item.connect("notify::icon-pixmaps",
lambda itm, pspec: self._refresh_item_ui(identifier, itm, btn))
lambda itm, pspec: self._refresh_item_ui(itm, btn))
item.connect("notify::icon-name",
lambda itm, pspec: self._refresh_item_ui(identifier, itm, btn))
lambda itm, pspec: self._refresh_item_ui(itm, btn))

try:
item.connect("updated", lambda itm: self._refresh_item_ui(identifier, itm, btn))
item.connect("icon-changed", lambda itm: self._refresh_item_ui(itm, btn))
except TypeError:
pass

Expand Down