soreau,
created on Wednesday, 3 September 2025, 06:05:28 (1756879528),
received on Saturday, 6 September 2025, 21:54:28 (1757195668)
Author identity: Scott Moreau <oreaus@gmail.com>
e68e4f4cd815e97285908a505a02d789c004952a
applets/wf-window-list/__init__.py
@@ -172,6 +172,7 @@ class WindowButton(Gtk.ToggleButton):
self.wf_sock = window_list.wf_socket
self.window_list = window_list
self.wf_ipc_id: typing.Optional[int] = None
self.popover_open = False
self.set_has_frame(False)
self.label = Gtk.Label()
self.icon = Gtk.Image.new_from_icon_name("application-x-executable")
@@ -207,6 +208,7 @@ class WindowButton(Gtk.ToggleButton):
self.popover_menu.set_flags(Gtk.PopoverMenuFlags.NESTED)
self.popover_menu.set_has_arrow(False)
self.popover_menu.set_halign(Gtk.Align.END)
self.popover_menu.connect("closed", self.hide_menu)
self.right_click_controller = Gtk.GestureClick(button=3)
self.right_click_controller.connect("pressed", self.show_menu)
@@ -248,6 +250,9 @@ class WindowButton(Gtk.ToggleButton):
return True
def on_button_enter(self, button, x, y):
print("on_button_enter")
if self.popover_open:
return
view_id = self.wf_ipc_id
self.window_list.set_live_preview_output_name("live-preview-" + str(view_id))
message = self.window_list.get_msg_template("live_previews/request_stream")
@@ -255,18 +260,23 @@ class WindowButton(Gtk.ToggleButton):
self.wf_sock.send_json(message)
def on_button_leave(self, button):
print("on_button_leave")
if self.popover_open:
return
message = self.window_list.get_msg_template("live_previews/release_output")
self.wf_sock.send_json(message)
self.window_list.set_live_preview_output_name(None)
def show_menu(self, gesture, n_presses, x, y):
rect = Gdk.Rectangle()
rect.x = int(x)
rect.y = int(y)
rect.width = 1
rect.height = 1
print("show_menu")
self.popover_open = True
self.popover_menu.popup()
def hide_menu(self, popover):
print("hide_menu")
self.popover_open = False
self.popover_menu.popdown()
def close_associated(self, *args):
self.window_id.close()
main.py
@@ -739,7 +739,11 @@ class PanoramaPanel(Gtk.Application):
def idle_proxy_cover(self, output_name):
for monitor in self.display.get_monitors():
wl_output = gtk.gdk_wayland_monitor_get_wl_output(ffi.cast("void *", ctypes.pythonapi.PyCapsule_GetPointer(monitor.__gpointer__, None)))
if wl_output:
found = False
for proxy in self.output_proxies:
if proxy._ptr == wl_output:
found = True
if wl_output and not found:
print("Create proxy")
output_proxy = WlOutputProxy(wl_output, self.wl_display)
output_proxy.interface.registry[output_proxy._ptr] = output_proxy