From a30007a95fbb7de6e5855e525b73bcf50cd3bdcf Mon Sep 17 00:00:00 2001 From: matt1432 Date: Fri, 22 Mar 2024 02:15:48 -0400 Subject: [PATCH] fix(ags fullscreen): consider fullscreen clients when on monitor only --- modules/ags/config/ts/bar/fullscreen.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/modules/ags/config/ts/bar/fullscreen.ts b/modules/ags/config/ts/bar/fullscreen.ts index 7ff9f1d..be6e912 100644 --- a/modules/ags/config/ts/bar/fullscreen.ts +++ b/modules/ags/config/ts/bar/fullscreen.ts @@ -3,7 +3,6 @@ const { Box, EventBox, Revealer, Window } = Widget; const FullscreenState = Variable({ - fullscreen: false, monitors: [] as number[], clientAddrs: new Map() as Map, }); @@ -11,24 +10,28 @@ const FullscreenState = Variable({ Hyprland.connect('event', (hyprObj) => { const arrayEquals = (a1: unknown[], a2: unknown[]) => a1.sort().toString() === a2.sort().toString(); + const mapEquals = (m1: Map, m2: Map) => m1.size === m2.size && Array.from(m1.keys()).every((key) => m1.get(key) === m2.get(key)); const fs = FullscreenState.value; - const fsClients = hyprObj.clients.filter((c) => c.fullscreen); + const fsClients = hyprObj.clients.filter((c) => { + const mon = Hyprland.getMonitor(c.monitor); + + return c.fullscreen && + c.workspace.id === mon?.activeWorkspace.id; + }); - const fullscreen = fsClients.length > 0; const monitors = fsClients.map((c) => c.monitor); const clientAddrs = new Map(fsClients.map((c) => [c.monitor, c.address])); - const hasChanged = fullscreen !== fs.fullscreen || + const hasChanged = !arrayEquals(monitors, fs.monitors) || !mapEquals(clientAddrs, fs.clientAddrs); if (hasChanged) { FullscreenState.setValue({ - fullscreen, monitors, clientAddrs, });