From dbac8994373c640f5f42445f2de9ab8e57ea9dbb Mon Sep 17 00:00:00 2001
From: matt1432 <matt@nelim.org>
Date: Sun, 24 Mar 2024 17:23:38 -0400
Subject: [PATCH] feat(ags binto): fix caps lock osd

---
 modules/ags/config/binto.ts               |  4 ++++
 modules/ags/config/services/brightness.ts | 14 +++++++++++---
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/modules/ags/config/binto.ts b/modules/ags/config/binto.ts
index 691dd89f..e9bd200a 100644
--- a/modules/ags/config/binto.ts
+++ b/modules/ags/config/binto.ts
@@ -1,4 +1,5 @@
 import Pointers from './services/pointers.ts';
+import Brightness from './services/brightness.ts';
 
 import AppLauncher from './ts/applauncher/main.ts';
 import Bar from './ts/bar/binto.ts';
@@ -13,6 +14,9 @@ App.config({
 
     onConfigParsed: () => {
         globalThis.Pointers = Pointers;
+
+        Brightness.capsName = 'input30::capslock';
+        globalThis.Brightness = Brightness;
     },
 
     windows: () => [
diff --git a/modules/ags/config/services/brightness.ts b/modules/ags/config/services/brightness.ts
index 2dd9cd56..93b26901 100644
--- a/modules/ags/config/services/brightness.ts
+++ b/modules/ags/config/services/brightness.ts
@@ -1,7 +1,6 @@
 const { exec, execAsync } = Utils;
 
 const KBD = 'tpacpi::kbd_backlight';
-const CAPS = 'input0::capslock';
 const INTERVAL = 500;
 const SCREEN_ICONS = {
     90: 'display-brightness-high-symbolic',
@@ -26,9 +25,18 @@ class Brightness extends Service {
     #kbdMax = 0;
     #screen = 0;
     #screenIcon = 'display-brightness-symbolic';
+    #capsName = 'input0::capslock';
     #caps = 0;
     #capsIcon = 'caps-lock-symbolic';
 
+    get capsName() {
+        return this.#capsName;
+    }
+
+    set capsName(value: string) {
+        this.#capsName = value;
+    }
+
     get kbd() {
         return this.#kbd;
     }
@@ -85,7 +93,7 @@ class Brightness extends Service {
         try {
             this.#monitorKbdState();
             this.#kbdMax = Number(exec(`brightnessctl -d ${KBD} m`));
-            this.#caps = Number(exec(`brightnessctl -d ${CAPS} g`));
+            this.#caps = Number(exec(`bash -c brightnessctl -d ${this.#capsName} g`));
             this.#screen = Number(exec('brightnessctl g')) /
                 Number(exec('brightnessctl m'));
         }
@@ -107,7 +115,7 @@ class Brightness extends Service {
     }
 
     fetchCapsState() {
-        execAsync(`brightnessctl -d ${CAPS} g`)
+        execAsync(`brightnessctl -d ${this.#capsName} g`)
             .then((out) => {
                 this.#caps = Number(out);
                 this.#capsIcon = this.#caps ?