This commit is contained in:
ItsLemmy
2025-10-30 23:46:00 -04:00
parent 84e058fb07
commit d4be3a2cc2
2 changed files with 64 additions and 60 deletions
+56 -56
View File
@@ -6,80 +6,80 @@ import Quickshell.Io
import qs.Commons import qs.Commons
Singleton { Singleton {
id: root id: root
property bool capsLockOn: false property bool capsLockOn: false
property bool numLockOn: false property bool numLockOn: false
property bool scrollLockOn: false property bool scrollLockOn: false
signal capsLockChanged(bool active) signal capsLockChanged(bool active)
signal numLockChanged(bool active) signal numLockChanged(bool active)
signal scrollLockChanged(bool active) signal scrollLockChanged(bool active)
Process { Process {
id: stateCheckProcess id: stateCheckProcess
property string checkCommand: " \ property string checkCommand: " \
caps=0; cat /sys/class/leds/input*::capslock/brightness 2>/dev/null | grep -q 1 && caps=1; echo \"caps:${caps}\"; \ caps=0; cat /sys/class/leds/input*::capslock/brightness 2>/dev/null | grep -q 1 && caps=1; echo \"caps:${caps}\"; \
num=0; cat /sys/class/leds/input*::numlock/brightness 2>/dev/null | grep -q 1 && num=1; echo \"num:${num}\"; \ num=0; cat /sys/class/leds/input*::numlock/brightness 2>/dev/null | grep -q 1 && num=1; echo \"num:${num}\"; \
scroll=0; cat /sys/class/leds/input*::scrolllock/brightness 2>/dev/null | grep -q 1 && scroll=1; echo \"scroll:${scroll}\"; \ scroll=0; cat /sys/class/leds/input*::scrolllock/brightness 2>/dev/null | grep -q 1 && scroll=1; echo \"scroll:${scroll}\"; \
" "
command: ["sh", "-c", stateCheckProcess.checkCommand] command: ["sh", "-c", stateCheckProcess.checkCommand]
stdout: StdioCollector { stdout: StdioCollector {
onStreamFinished: { onStreamFinished: {
var lines = this.text.trim().split('\n') var lines = this.text.trim().split('\n')
for (var i = 0; i < lines.length; i++) { for (var i = 0; i < lines.length; i++) {
var parts = lines[i].split(':') var parts = lines[i].split(':')
if (parts.length === 2) { if (parts.length === 2) {
var key = parts[0] var key = parts[0]
var newState = (parts[1] === '1') var newState = (parts[1] === '1')
if (key === "caps") { if (key === "caps") {
if (root.capsLockOn !== newState) { if (root.capsLockOn !== newState) {
root.capsLockOn = newState root.capsLockOn = newState
root.capsLockChanged(newState) root.capsLockChanged(newState)
Logger.i("LockKeysService", "Caps Lock:", capsLockOn) Logger.i("LockKeysService", "Caps Lock:", capsLockOn)
} }
} else if (key === "num") { } else if (key === "num") {
if (root.numLockOn !== newState) { if (root.numLockOn !== newState) {
root.numLockOn = newState root.numLockOn = newState
root.numLockChanged(newState) root.numLockChanged(newState)
Logger.i("LockKeysService", "Num Lock:", numLockOn) Logger.i("LockKeysService", "Num Lock:", numLockOn)
} }
} else if (key === "scroll") { } else if (key === "scroll") {
if (root.scrollLockOn !== newState) { if (root.scrollLockOn !== newState) {
root.scrollLockOn = newState root.scrollLockOn = newState
root.scrollLockChanged(newState) root.scrollLockChanged(newState)
Logger.i("LockKeysService", "Scroll Lock:", scrollLockOn) Logger.i("LockKeysService", "Scroll Lock:", scrollLockOn)
} }
}
} }
}
} }
}
} }
} stderr: StdioCollector {
stderr: StdioCollector { onStreamFinished: {
onStreamFinished: {
if (this.text.trim().length > 0) if (this.text.trim().length > 0)
Logger.i("LockKeysService", "Error running state check:", this.text.trim()) Logger.i("LockKeysService", "Error running state check:", this.text.trim())
} }
}
} }
}
Timer { Timer {
id: pollTimer id: pollTimer
interval: 200 interval: 200
running: true running: true
repeat: true repeat: true
onTriggered: { onTriggered: {
if (!stateCheckProcess.running) { if (!stateCheckProcess.running) {
stateCheckProcess.running = true
}
}
}
Component.onCompleted: {
Logger.i("LockKeysService", "Service started, performing initial state check.")
stateCheckProcess.running = true stateCheckProcess.running = true
}
} }
}
Component.onCompleted: {
Logger.i("LockKeysService", "Service started, performing initial state check.")
stateCheckProcess.running = true
}
} }
+8 -4
View File
@@ -218,7 +218,8 @@ Loader {
// Top-left corner // Top-left corner
topLeftInverted: { topLeftInverted: {
if (!attachedToBar) return false if (!attachedToBar)
return false
// Inverted if panel is anchored to top edge (bar is at top) // Inverted if panel is anchored to top edge (bar is at top)
if (effectivePanelAnchorTop) if (effectivePanelAnchorTop)
@@ -232,7 +233,8 @@ Loader {
// Top-right corner // Top-right corner
topRightInverted: { topRightInverted: {
if (!attachedToBar) return false if (!attachedToBar)
return false
// Inverted if panel is anchored to top edge (bar is at top) // Inverted if panel is anchored to top edge (bar is at top)
if (effectivePanelAnchorTop) if (effectivePanelAnchorTop)
@@ -246,7 +248,8 @@ Loader {
// Bottom-left corner // Bottom-left corner
bottomLeftInverted: { bottomLeftInverted: {
if (!attachedToBar) return false if (!attachedToBar)
return false
// Inverted if panel is anchored to bottom edge (bar is at bottom) // Inverted if panel is anchored to bottom edge (bar is at bottom)
if (effectivePanelAnchorBottom) if (effectivePanelAnchorBottom)
@@ -260,7 +263,8 @@ Loader {
// Bottom-right corner // Bottom-right corner
bottomRightInverted: { bottomRightInverted: {
if (!attachedToBar) return false if (!attachedToBar)
return false
// Inverted if panel is anchored to bottom edge (bar is at bottom) // Inverted if panel is anchored to bottom edge (bar is at bottom)
if (effectivePanelAnchorBottom) if (effectivePanelAnchorBottom)