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
Singleton {
id: root
id: root
property bool capsLockOn: false
property bool numLockOn: false
property bool scrollLockOn: false
property bool capsLockOn: false
property bool numLockOn: false
property bool scrollLockOn: false
signal capsLockChanged(bool active)
signal numLockChanged(bool active)
signal scrollLockChanged(bool active)
signal capsLockChanged(bool active)
signal numLockChanged(bool active)
signal scrollLockChanged(bool active)
Process {
id: stateCheckProcess
Process {
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}\"; \
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}\"; \
"
command: ["sh", "-c", stateCheckProcess.checkCommand]
command: ["sh", "-c", stateCheckProcess.checkCommand]
stdout: StdioCollector {
onStreamFinished: {
stdout: StdioCollector {
onStreamFinished: {
var lines = this.text.trim().split('\n')
for (var i = 0; i < lines.length; i++) {
var parts = lines[i].split(':')
if (parts.length === 2) {
var key = parts[0]
var newState = (parts[1] === '1')
var parts = lines[i].split(':')
if (parts.length === 2) {
var key = parts[0]
var newState = (parts[1] === '1')
if (key === "caps") {
if (root.capsLockOn !== newState) {
root.capsLockOn = newState
root.capsLockChanged(newState)
Logger.i("LockKeysService", "Caps Lock:", capsLockOn)
}
} else if (key === "num") {
if (root.numLockOn !== newState) {
root.numLockOn = newState
root.numLockChanged(newState)
Logger.i("LockKeysService", "Num Lock:", numLockOn)
}
} else if (key === "scroll") {
if (root.scrollLockOn !== newState) {
root.scrollLockOn = newState
root.scrollLockChanged(newState)
Logger.i("LockKeysService", "Scroll Lock:", scrollLockOn)
}
}
if (key === "caps") {
if (root.capsLockOn !== newState) {
root.capsLockOn = newState
root.capsLockChanged(newState)
Logger.i("LockKeysService", "Caps Lock:", capsLockOn)
}
} else if (key === "num") {
if (root.numLockOn !== newState) {
root.numLockOn = newState
root.numLockChanged(newState)
Logger.i("LockKeysService", "Num Lock:", numLockOn)
}
} else if (key === "scroll") {
if (root.scrollLockOn !== newState) {
root.scrollLockOn = newState
root.scrollLockChanged(newState)
Logger.i("LockKeysService", "Scroll Lock:", scrollLockOn)
}
}
}
}
}
}
}
stderr: StdioCollector {
onStreamFinished: {
stderr: StdioCollector {
onStreamFinished: {
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 {
id: pollTimer
interval: 200
running: true
repeat: true
onTriggered: {
if (!stateCheckProcess.running) {
stateCheckProcess.running = true
}
}
}
Component.onCompleted: {
Logger.i("LockKeysService", "Service started, performing initial state check.")
Timer {
id: pollTimer
interval: 200
running: true
repeat: true
onTriggered: {
if (!stateCheckProcess.running) {
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
topLeftInverted: {
if (!attachedToBar) return false
if (!attachedToBar)
return false
// Inverted if panel is anchored to top edge (bar is at top)
if (effectivePanelAnchorTop)
@@ -232,7 +233,8 @@ Loader {
// Top-right corner
topRightInverted: {
if (!attachedToBar) return false
if (!attachedToBar)
return false
// Inverted if panel is anchored to top edge (bar is at top)
if (effectivePanelAnchorTop)
@@ -246,7 +248,8 @@ Loader {
// Bottom-left corner
bottomLeftInverted: {
if (!attachedToBar) return false
if (!attachedToBar)
return false
// Inverted if panel is anchored to bottom edge (bar is at bottom)
if (effectivePanelAnchorBottom)
@@ -260,7 +263,8 @@ Loader {
// Bottom-right corner
bottomRightInverted: {
if (!attachedToBar) return false
if (!attachedToBar)
return false
// Inverted if panel is anchored to bottom edge (bar is at bottom)
if (effectivePanelAnchorBottom)