roundabout,
created on Monday, 18 August 2025, 14:13:30 (1755526410),
received on Monday, 18 August 2025, 14:13:33 (1755526413)
Author identity: Vlad <vlad.muntoiu@gmail.com>
7c8025178b928e42e52feeb75f242dbf3a04e9a2
applets/notifier/__init__.py
@@ -111,7 +111,9 @@ class NotifierApplet(panorama_panel.Applet):
self.stack = Gtk.Stack() self.button.set_child(self.stack) self.notification_indicator = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) self.notification_indicator.append(Gtk.Image.new_from_icon_name(""))self.notification_indicator.append(Gtk.Image.new_from_icon_name("emblem-important")) self.notification_count_label = Gtk.Label.new("0") self.notification_indicator.append(self.notification_count_label)self.stack.add_child(self.notification_indicator) self.stack.set_transition_type(Gtk.StackTransitionType.SLIDE_UP_DOWN) self.stack.set_transition_duration(500)
@@ -127,10 +129,18 @@ class NotifierApplet(panorama_panel.Applet):
self.stack.add_child(new_child) self.stack.set_visible_child(new_child) def remove_notification(): self.stack.set_visible_child(self.stack.get_visible_child().get_prev_sibling())def remove_child(): self.stack.remove(new_child) GLib.timeout_add(self.stack.get_transition_duration(), remove_child)if self.stack.get_visible_child() == new_child: self.stack.set_visible_child(self.stack.get_visible_child().get_prev_sibling()) GLib.timeout_add(self.stack.get_transition_duration(), remove_child) else: # TODO: split the time def readd_timeout(*args): if new_child == self.stack.get_visible_child(): GLib.timeout_add(self.stack.get_transition_duration(), remove_notification) self.stack.connect("notify::visible-child", readd_timeout)return False if expire_timeout <= 0: expire_timeout = 2500
config.yaml
@@ -47,7 +47,8 @@ panels:
icon: applications-other trigger_name: app-menu icon_name: start-here-symbolic centre: []centre: - NotifierApplet: {}right: - Volume: {} - ClockApplet:
main.py
@@ -163,6 +163,7 @@ class PanelConfigurator(Gtk.Frame):
app: PanoramaPanel = self.get_root().get_application() monitor = app.monitors[int(self.monitor_number_adjustment.get_value())] self.panel.unmap() self.panel.monitor_index = int(self.monitor_number_adjustment.get_value())Gtk4LayerShell.set_monitor(self.panel, monitor) self.panel.show()
@@ -342,7 +343,7 @@ POSITION_TO_LAYER_SHELL_EDGE = {
class Panel(Gtk.Window): def __init__(self, application: Gtk.Application, monitor: Gdk.Monitor, position: Gtk.PositionType = Gtk.PositionType.TOP, size: int = 40, autohide: bool = False, hide_time: int = 0, can_capture_keyboard: bool = False):def __init__(self, application: Gtk.Application, monitor: Gdk.Monitor, position: Gtk.PositionType = Gtk.PositionType.TOP, size: int = 40, autohide: bool = False, hide_time: int = 0, can_capture_keyboard: bool = False, monitor_index: int = 0):super().__init__(application=application) self.drop_motion_controller = None self.motion_controller = None
@@ -351,6 +352,7 @@ class Panel(Gtk.Window):
self.autohide = None self.monitor_name = monitor.get_connector() self.hide_time = None self.monitor_index = 0self.can_capture_keyboard = can_capture_keyboard self.open_popovers: set[int] = set()
@@ -625,7 +627,7 @@ class PanoramaPanel(Gtk.Application):
hide_time = panel_data["hide_time"] can_capture_keyboard = panel_data["can_capture_keyboard"] panel = Panel(self, monitor, position, size, autohide, hide_time, can_capture_keyboard)panel = Panel(self, monitor, position, size, autohide, hide_time, can_capture_keyboard, monitor_index)self.panels.append(panel) print(f"{size}px panel on {position} edge of monitor {monitor_index}, autohide is {autohide} ({hide_time}ms)")