roundabout,
created on Friday, 15 August 2025, 20:38:08 (1755290288),
received on Friday, 15 August 2025, 20:38:11 (1755290291)
Author identity: Vlad <vlad.muntoiu@gmail.com>
54f214f47027d8ef753eb0a1838044d90c917186
applets/wf-window-list/__init__.py
@@ -61,6 +61,7 @@ gtk = ffi.dlopen("libgtk-4.so.1")
class WindowListOptions(Gtk.Window):
__gtype_name__ = "WindowListOptions"
button_width_adjustment: Gtk.Adjustment = Gtk.Template.Child()
workspace_filter_checkbutton: Gtk.CheckButton = Gtk.Template.Child()
def __init__(self, **kwargs):
super().__init__(**kwargs)
@@ -363,7 +364,7 @@ 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
return True
try:
message = self.wf_socket.read_next_event()
event = message.get("event")
@@ -618,6 +619,8 @@ class WFWindowList(panorama_panel.Applet):
self.options_window = WindowListOptions()
self.options_window.button_width_adjustment.set_value(self.window_button_options.max_width)
self.options_window.button_width_adjustment.connect("value-changed", self.update_button_options)
self.options_window.workspace_filter_checkbutton.set_active(self.show_only_this_wf_workspace)
self.options_window.workspace_filter_checkbutton.connect("toggled", self.update_workspace_filter)
def reset_window(*args):
self.options_window = None
@@ -625,6 +628,18 @@ class WFWindowList(panorama_panel.Applet):
self.options_window.connect("close-request", reset_window)
self.options_window.present()
def remove_workspace_filtering(self):
for button in self.toplevel_buttons.values():
if button.get_parent() is None:
self.append(button)
def update_workspace_filter(self, checkbutton):
self.show_only_this_wf_workspace = checkbutton.get_active()
if checkbutton.get_active():
self.filter_to_wf_workspace()
else:
self.remove_workspace_filtering()
def update_button_options(self, adjustment):
self.window_button_options.max_width = adjustment.get_value()
child: Gtk.Widget = self.get_first_child()
applets/wf-window-list/panorama-window-list-options.ui
@@ -83,6 +83,46 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. -->
</child>
</object>
</child>
<child>
<object class="GtkFrame">
<property name="label-widget">
<object class="GtkLabel">
<property name="label" translatable="yes">Windows to show</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</property>
<child>
<object class="GtkListBox">
<property name="selection-mode">none</property>
<child>
<object class="GtkListBoxRow">
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="hexpand">True</property>
<property name="label" translatable="yes">Show only windows on this workspace</property>
<property name="use-markup">True</property>
<property name="wrap">True</property>
</object>
</child>
<child>
<object class="GtkCheckButton" id="workspace_filter_checkbutton">
<signal name="activate" handler="workspace_filter_changed"/>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
applets/wf-window-list/panorama-window-list.cmb
@@ -2,5 +2,5 @@
<!DOCTYPE cambalache-project SYSTEM "cambalache-project.dtd">
<!-- Created with Cambalache 0.96.1 -->
<cambalache-project version="0.96.0" target_tk="gtk-4.0">
<ui template-class="WindowListOptions" filename="panorama-window-list-options.ui" sha256="e6cdf67148fbc801397fdef5ceb66c558cd4b1dad19dc1d5ef94af454c0afd0b"/>
<ui template-class="WindowListOptions" filename="panorama-window-list-options.ui" sha256="f46a850a22d34bff26a2319aae3c29fcda38cff86bb778cfaf5fbac948537628"/>
</cambalache-project>