window-list: Fix live window previews
The wf-live-previews plugin now only creates a single output instead of recreating a new output on each hover, so the result is no lag spikes and speedier tooltip popups.
The wf-live-previews plugin now only creates a single output instead of recreating a new output on each hover, so the result is no lag spikes and speedier tooltip popups.
by soreau, Thursday, 26 February 2026, 06:22:54 (1772086974), pushed by soreau, Thursday, 26 February 2026, 06:23:23 (1772087003)
Author identity: Scott Moreau <oreaus@gmail.com>
167100e18a77d9bb4e4f8456cb3bb00fe405adcf
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(None)
def show_menu(self, gesture, n_presses, x, y):
if self.window_list.live_preview_tooltips:
return self.output
def wl_output_enter(self, output, name):
self.set_live_preview_output(None)
if name.startswith("live-preview"):
self.set_live_preview_output(output)
return
self.applets_window = None
self.edit_mode = False
self.output_proxies = []
self.live_preview_output = None
self.drags = {}
self.wl_output_ids = set()
self.started = False
self.foreign_toplevel_manager.dispatcher["toplevel"] = self.on_new_toplevel
self.foreign_toplevel_manager.dispatcher["finished"] = self.on_foreign_toplevel_manager_finish
self.wl_display.roundtrip()
else:
self.live_preview_output = output
print(f"Monitor {output.name} ({interface}) connected", file=sys.stderr)
elif interface == "wl_seat":
self.wl_seat = registry.bind(name, WlSeat, version)
panel.present()
panel.realize()
panel.monitor_name = my_monitor.get_connector()
panel.wl_output_enter(self.live_preview_output, self.live_preview_output.name)
def do_startup(self):
Gtk.Application.do_startup(self)