From d68494d257685c13e9df8050b767d3bb69f3ca53 Mon Sep 17 00:00:00 2001 From: Peter Fajdiga Date: Sun, 30 Nov 2025 11:10:51 +0100 Subject: [PATCH] WIP --- src/lib/workspace.ts | 50 ++++++++++++++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 16 deletions(-) diff --git a/src/lib/workspace.ts b/src/lib/workspace.ts index 284452e..d364344 100644 --- a/src/lib/workspace.ts +++ b/src/lib/workspace.ts @@ -7,22 +7,40 @@ function initWorkspaceSignalHandlers(world: World, focusPasser: FocusPassing.Pas }); }); - manager.connect(Workspace.windowRemoved, (kwinClient: KwinClient) => { - world.do((clientManager, desktopManager) => { - clientManager.removeClient(kwinClient, FocusPassing.Type.Immediate); - }); - }); - - manager.connect(Workspace.windowActivated, (kwinClient: KwinClient|null) => { - if (kwinClient === null) { - focusPasser.activate(); - } else { - focusPasser.clearIfDifferent(kwinClient); - world.do((clientManager, desktopManager) => { - clientManager.onClientFocused(kwinClient); - }); - } - }); + new SignalGrouping.Group([ + new SignalGrouping.Handler( + [Workspace.windowRemoved, Workspace.windowActivated] as const, + (windowRemovedArgs, windowActivatedArgs) => { + const kwinClient = windowRemovedArgs[0]; + world.do((clientManager, desktopManager) => { + clientManager.removeClient(kwinClient, FocusPassing.Type.Immediate); + }); + }, + ), + new SignalGrouping.Handler( + [Workspace.windowRemoved], + (windowRemovedArgs) => { + const kwinClient = windowRemovedArgs[0]; + world.do((clientManager, desktopManager) => { + clientManager.removeClient(kwinClient, FocusPassing.Type.Immediate); + }); + }, + ), + new SignalGrouping.Handler( + [Workspace.windowActivated], + (windowActivatedArgs) => { + const kwinClient = windowActivatedArgs[0]; + if (kwinClient === null) { + focusPasser.activate(); + } else { + focusPasser.clearIfDifferent(kwinClient); + world.do((clientManager, desktopManager) => { + clientManager.onClientFocused(kwinClient); + }); + } + }, + ), + ]).connect(manager); manager.connect(Workspace.currentDesktopChanged, () => { world.do(() => {}); // re-arrange desktop