soreau,
created on Sunday, 17 August 2025, 19:52:12 (1755460332),
received on Sunday, 17 August 2025, 20:32:30 (1755462750)
Author identity: Scott Moreau <oreaus@gmail.com>
7bf485802bb78bad22de13e169e89b9fa20eec3b
applets/wf-window-list/__init__.py
@@ -469,11 +469,11 @@ class WFWindowList(panorama_panel.Applet):
self.my_output = output_proxy
# End hack
fd = self.display.get_fd()
GLib.io_add_watch(fd, GLib.IO_IN, self.on_display_event)
self.registry = self.display.get_registry()
self.registry.dispatcher["global"] = self.on_global
self.display.roundtrip()
fd = self.display.get_fd()
GLib.io_add_watch(fd, GLib.IO_IN, self.on_display_event)
if self.wf_socket is not None:
self.filter_to_wf_workspace()
@@ -489,8 +489,6 @@ class WFWindowList(panorama_panel.Applet):
self.manager = registry.bind(name, ZwlrForeignToplevelManagerV1, version)
self.manager.dispatcher["toplevel"] = self.on_new_toplevel
self.manager.dispatcher["finished"] = lambda *a: print("Toplevel manager finished")
self.display.roundtrip()
self.display.flush()
elif interface == "wl_seat":
self.print_log("Seat found")
self.seat = registry.bind(name, WlSeat, version)
@@ -510,10 +508,14 @@ class WFWindowList(panorama_panel.Applet):
handle.dispatcher["closed"] = lambda h: self.on_closed(h)
def on_output_entered(self, handle, output):
if self.show_only_this_output and output != self.my_output:
return
if handle in self.toplevel_buttons:
button = self.toplevel_buttons[handle]
if handle not in self.toplevel_buttons:
button = WindowButton(handle, handle.title)
self.set_title(button, handle.title)
self.set_app_id(button, handle.app_id)
button.set_group(self.initial_button)
button.set_layout_manager(WindowButtonLayoutManager(self.window_button_options))
button.connect("clicked", self.on_button_click)
self.toplevel_buttons[handle] = button
self.append(button)
self.set_all_rectangles()
@@ -527,17 +529,15 @@ class WFWindowList(panorama_panel.Applet):
self.remove(button)
self.set_all_rectangles()
def set_title(self, button, title):
button.window_title = title
button.set_tooltip_text(title)
def on_title_changed(self, handle, title):
if handle not in self.toplevel_buttons:
button = WindowButton(handle, title)
button.set_group(self.initial_button)
button.set_layout_manager(WindowButtonLayoutManager(self.window_button_options))
button.connect("clicked", self.on_button_click)
self.toplevel_buttons[handle] = button
else:
handle.title = title
if handle in self.toplevel_buttons:
button = self.toplevel_buttons[handle]
button.window_title = title
button.set_tooltip_text(title)
self.set_title(button, title)
def set_all_rectangles(self):
child = self.get_first_child()
@@ -561,8 +561,6 @@ class WFWindowList(panorama_panel.Applet):
button.window_id.unset_minimized()
button.window_id.activate(self.seat)
self.display.flush()
def on_state_changed(self, handle, states):
if handle in self.toplevel_buttons:
state_info = WindowState.from_state_array(states)
@@ -575,14 +573,18 @@ class WFWindowList(panorama_panel.Applet):
self.set_all_rectangles()
def set_app_id(self, button, app_id):
button.set_icon_from_app_id(app_id)
app_ids = app_id.split()
for app_id in app_ids:
if app_id.startswith("wf-ipc-"):
self.toplevel_buttons_by_wf_id[int(app_id.removeprefix("wf-ipc-"))] = button
def on_app_id_changed(self, handle, app_id):
handle.app_id = app_id
if handle in self.toplevel_buttons:
button = self.toplevel_buttons[handle]
button.set_icon_from_app_id(app_id)
app_ids = app_id.split()
for app_id in app_ids:
if app_id.startswith("wf-ipc-"):
self.toplevel_buttons_by_wf_id[int(app_id.removeprefix("wf-ipc-"))] = button
self.set_app_id(button, app_id)
def on_closed(self, handle):
button: WindowButton = self.toplevel_buttons[handle]