From a30007a95fbb7de6e5855e525b73bcf50cd3bdcf Mon Sep 17 00:00:00 2001
From: matt1432 <matt@nelim.org>
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 7ff9f1d7..be6e912a 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<number, string>,
 });
@@ -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<number, string>, m2: Map<number, string>) =>
         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,
         });