roundabout,
created on Friday, 15 August 2025, 19:06:48 (1755284808),
received on Friday, 15 August 2025, 22:21:41 (1755296501)
Author identity: Vlad <vlad.muntoiu@gmail.com>
72a34ce9678c8c423e4d194aedec8f97d52dbfe6
applets/wf-window-list/__init__.py
@@ -307,6 +307,8 @@ class WFWindowList(panorama_panel.Applet):
self.set_homogeneous(True)
self.window_button_options = WindowButtonOptions(config.get("max_button_width", 256))
self.show_only_this_wf_workspace = config.get("show_only_this_wf_workspace", True)
self.show_only_this_output = config.get("show_only_this_output", True)
self.toplevel_buttons: dict[ZwlrForeignToplevelHandleV1, WindowButton] = {}
self.toplevel_buttons_by_wf_id: dict[int, WindowButton] = {}
@@ -360,6 +362,8 @@ class WFWindowList(panorama_panel.Applet):
def on_wf_event(self, source, condition):
if condition & GLib.IO_IN:
if not self.show_only_this_wf_workspace:
return
try:
message = self.wf_socket.read_next_event()
event = message.get("event")
@@ -417,6 +421,9 @@ class WFWindowList(panorama_panel.Applet):
return True
def filter_to_wf_workspace(self):
if not self.show_only_this_wf_workspace:
return
output = self.wf_socket.get_output(self.get_root().monitor_index + 1)
for wf_id, button in self.toplevel_buttons_by_wf_id.items():
view = self.wf_socket.get_view(wf_id)
@@ -502,9 +509,7 @@ class WFWindowList(panorama_panel.Applet):
handle.dispatcher["closed"] = lambda h: self.on_closed(h)
def on_output_entered(self, handle, output):
# TODO: make this configurable
# TODO: on wayfire, append/remove buttons when the workspace changes
if output != self.my_output:
if self.show_only_this_output and output != self.my_output:
return
if handle in self.toplevel_buttons:
button = self.toplevel_buttons[handle]
@@ -512,6 +517,8 @@ class WFWindowList(panorama_panel.Applet):
self.set_all_rectangles()
def on_output_left(self, handle, output):
if not self.show_only_this_output:
return
if output != self.my_output:
return
if handle in self.toplevel_buttons:
@@ -630,7 +637,11 @@ class WFWindowList(panorama_panel.Applet):
self.emit("config-changed")
def get_config(self):
return {"max_button_width": self.window_button_options.max_width}
return {
"max_button_width": self.window_button_options.max_width,
"show_only_this_wf_workspace": self.show_only_this_wf_workspace,
"show_only_this_output": self.show_only_this_output,
}
def output_changed(self):
self.get_wl_resources()
config.yaml
@@ -60,6 +60,8 @@ panels:
applets:
left:
- WFWindowList:
max_button_width: 256
max_button_width: 256.0
show_only_this_wf_workspace: true
show_only_this_output: true
centre: []
right: []