From 5f79dac0f25f5ba683172bd684d8cec987f642fe Mon Sep 17 00:00:00 2001 From: Corey Woodworth Date: Thu, 30 Oct 2025 14:37:06 -0400 Subject: [PATCH 1/6] Add LockKeys to BarWidgetRegistry --- Services/BarWidgetRegistry.qml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Services/BarWidgetRegistry.qml b/Services/BarWidgetRegistry.qml index e8b2b993..7114f912 100644 --- a/Services/BarWidgetRegistry.qml +++ b/Services/BarWidgetRegistry.qml @@ -21,6 +21,7 @@ Singleton { "DarkMode": darkMode, "KeepAwake": keepAwakeComponent, "KeyboardLayout": keyboardLayoutComponent, + "LockKeys:": lockKeysComponent, "MediaMini": mediaMiniComponent, "Microphone": microphoneComponent, "NightLight": nightLightComponent, @@ -193,6 +194,9 @@ Singleton { property Component keepAwakeComponent: Component { KeepAwake {} } + property Component lockKeysComponent: Component { + LockKeys {} + } property Component mediaMiniComponent: Component { MediaMini {} } From 928b64e64a36073ef3fbe5b9ad8d2b0c90abea3a Mon Sep 17 00:00:00 2001 From: Corey Woodworth Date: Thu, 30 Oct 2025 15:54:09 -0400 Subject: [PATCH 2/6] Add LockKeysService. It unfortunetly requires polling. I've not been able to find an event driven way to accomplish this. --- Services/LockKeysService.qml | 85 ++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 Services/LockKeysService.qml diff --git a/Services/LockKeysService.qml b/Services/LockKeysService.qml new file mode 100644 index 00000000..c8ee00bc --- /dev/null +++ b/Services/LockKeysService.qml @@ -0,0 +1,85 @@ +pragma Singleton + +import QtQuick +import Quickshell +import Quickshell.Io +import qs.Commons + +Singleton { + id: root + + property bool capsLockOn: false + property bool numLockOn: false + property bool scrollLockOn: false + + signal capsLockChanged(bool active) + signal numLockChanged(bool active) + signal scrollLockChanged(bool active) + + Process { + id: stateCheckProcess + + 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] + +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') + + 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: { + if (this.text.trim().length > 0) + Logger.i("LockKeysService", "Error running state check:", this.text.trim()) + } +} + } + + Timer { + id: pollTimer + interval: 125 + 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 + } +} From c955db20b7f2eb16d6b064974708fe0e9c52ea54 Mon Sep 17 00:00:00 2001 From: Corey Woodworth Date: Thu, 30 Oct 2025 17:33:08 -0400 Subject: [PATCH 3/6] Add settings to toggle which LockKeys to watch. Doesn't work yet. My settings are coming back undefined --- Modules/Bar/Widgets/LockKeys.qml | 108 ++++++++++++++++++ .../Settings/Bar/BarWidgetSettingsDialog.qml | 1 + .../Bar/WidgetSettings/LockKeysSettings.qml | 49 ++++++++ Services/BarWidgetRegistry.qml | 5 + a.out | 0 5 files changed, 163 insertions(+) create mode 100644 Modules/Bar/Widgets/LockKeys.qml create mode 100644 Modules/Settings/Bar/WidgetSettings/LockKeysSettings.qml create mode 100644 a.out diff --git a/Modules/Bar/Widgets/LockKeys.qml b/Modules/Bar/Widgets/LockKeys.qml new file mode 100644 index 00000000..91f86e67 --- /dev/null +++ b/Modules/Bar/Widgets/LockKeys.qml @@ -0,0 +1,108 @@ +import QtQuick +import QtQuick.Layouts +import Quickshell +import Quickshell.Io +import qs.Commons +import qs.Services +import qs.Widgets +import qs.Modules.Settings +// import qs.Modules.Bar.Extras + +Rectangle { + id: root + + property string widgetId: "" + property string section: "" + property int sectionWidgetIndex: -1 + property int sectionWidgetsCount: 0 + + property var widgetMetadata: BarWidgetRegistry.widgetMetadata[widgetId] + property var widgetSettings: { + if (section && sectionWidgetIndex >= 0) { + var widgets = Settings.data.bar.widgets[section] + if (widgets && sectionWidgetIndex < widgets.length) { + return widgets[sectionWidgetIndex] + } + } + return {} + } + + readonly property string barPosition: Settings.data.bar.position + readonly property bool isVertical: barPosition === "left" || barPosition === "right" + + readonly property bool showCaps: (widgetSettings.showCapsLock !== undefined) ? widgetSettings.showCapsLock : widgetMetadata.showCapsLock + readonly property bool showNum: (widgetSettings.showNumLock !== undefined) ? widgetSettings.showNumLock : widgetMetadata.showNumLock + readonly property bool showScroll: (widgetSettings.showScrollLock !== undefined) ? widgetSettings.showScrollLock : widgetMetadata.showScrollLock + + property bool capsLockOn: LockKeysService.capsLockOn + property bool numLockOn: LockKeysService.numLockOn + property bool scrollLockOn: LockKeysService.scrollLockOn + + Connections { + target: LockKeysService + function onCapsLockChanged(active) { root.capsLockOn = active } + function onNumLockChanged(active) { root.numLockOn = active } + function onScrollLockChanged(active) { root.scrollLockOn = active } + } + + implicitWidth: isVertical ? Style.capsuleHeight : Math.round(layout.implicitWidth + Style.marginM * 2) + implicitHeight: isVertical ? Math.round(layout.implicitHeight + Style.marginM * 2) : Style.capsuleHeight + + Layout.alignment: Qt.AlignVCenter + + radius: Style.radiusM + color: Settings.data.bar.showCapsule ? Color.mSurfaceVariant : Color.transparent + + Item { + id: layout + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + + implicitWidth: rowLayout.visible ? rowLayout.implicitWidth : colLayout.implicitWidth + implicitHeight: rowLayout.visible ? rowLayout.implicitHeight : colLayout.implicitHeight + + RowLayout { + id: rowLayout + visible: !root.isVertical + spacing: 0 + + NIcon { + visible: showCaps + icon: "letter-c" + color: root.capsLockOn ? Color.mTertiary : Qt.alpha(Color.mOnSurfaceVariant, 0.3) + } + NIcon { + visible: showNum + icon: "letter-n" + color: root.numLockOn ? Color.mTertiary : Qt.alpha(Color.mOnSurfaceVariant, 0.3) + } + NIcon { + visible: showScroll + icon: "letter-s" + color: root.scrollLockOn ? Color.mTertiary : Qt.alpha(Color.mOnSurfaceVariant, 0.3) + } + } + + ColumnLayout { + id: colLayout + visible: root.isVertical + spacing: 0 + + NIcon { + visible: showCaps + icon: "letter-c" + color: root.capsLockOn ? Color.mTertiary : Qt.alpha(Color.mOnSurfaceVariant, 0.3) + } + NIcon { + visible: showNum + icon: "letter-n" + color: root.numLockOn ? Color.mTertiary : Qt.alpha(Color.mOnSurfaceVariant, 0.3) + } + NIcon { + visible: showScroll + icon: "letter-s" + color: root.scrollLockOn ? Color.mTertiary : Qt.alpha(Color.mOnSurfaceVariant, 0.3) + } + } + } +} diff --git a/Modules/Settings/Bar/BarWidgetSettingsDialog.qml b/Modules/Settings/Bar/BarWidgetSettingsDialog.qml index d43facb8..b6169eee 100644 --- a/Modules/Settings/Bar/BarWidgetSettingsDialog.qml +++ b/Modules/Settings/Bar/BarWidgetSettingsDialog.qml @@ -128,6 +128,7 @@ Popup { "ControlCenter": "WidgetSettings/ControlCenterSettings.qml", "CustomButton": "WidgetSettings/CustomButtonSettings.qml", "KeyboardLayout": "WidgetSettings/KeyboardLayoutSettings.qml", + "LockKeys": "WidgetSettings/LockKeysSettings.qml", "MediaMini": "WidgetSettings/MediaMiniSettings.qml", "Microphone": "WidgetSettings/MicrophoneSettings.qml", "NotificationHistory": "WidgetSettings/NotificationHistorySettings.qml", diff --git a/Modules/Settings/Bar/WidgetSettings/LockKeysSettings.qml b/Modules/Settings/Bar/WidgetSettings/LockKeysSettings.qml new file mode 100644 index 00000000..e0af0e69 --- /dev/null +++ b/Modules/Settings/Bar/WidgetSettings/LockKeysSettings.qml @@ -0,0 +1,49 @@ +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import qs.Commons +import qs.Widgets +import qs.Services + +ColumnLayout { + id: root + spacing: Style.marginM + + // Properties to receive data from parent + property var widgetData: null + property var widgetMetadata: null + + // Local state + property bool valueShowCapsLock: widgetData.showCapsLock !== undefined ? widgetData.showCapsLock : widgetMetadata.showCapsLock + property bool valueShowNumLock: widgetData.showNumLock !== undefined ? widgetData.showNumLock : widgetMetadata.showNumLock + property bool valueShowScrollLock: widgetData.showScrollLock !== undefined ? widgetData.showScrollLock : widgetMetadata.showScrollLock + + function saveSettings() { + var settings = Object.assign({}, widgetData || {}) + settings.showCapsLock = valueShowCapsLock + settings.showNumLock = valueShowNumLock + settings.showScrollLock = valueShowScrollLock + return settings + } + + NToggle { + label: "Caps Lock" + description: "Display caps lock status" + checked: valueShowCapsLock + onToggled: checked => valueShowCapsLock = checked + } + + NToggle { + label: "Num Lock" + description: "Display num lock status" + checked: valueShowNumLock + onToggled: checked => valueShowNumLock = checked + } + + NToggle { + label: "Scroll Lock" + description: "Display scroll lock status" + checked: valueShowScrollLock + onToggled: checked => valueShowScrollLock = checked + } +} diff --git a/Services/BarWidgetRegistry.qml b/Services/BarWidgetRegistry.qml index 7114f912..d74baea5 100644 --- a/Services/BarWidgetRegistry.qml +++ b/Services/BarWidgetRegistry.qml @@ -99,6 +99,11 @@ Singleton { "allowUserSettings": true, "displayMode": "onhover" }, + "LockKeys": { + "showCapsLock": true, + "showNumLock": true, + "showScrollLock": true + }, "MediaMini": { "allowUserSettings": true, "hideMode": "hidden", diff --git a/a.out b/a.out new file mode 100644 index 00000000..e69de29b From 6a74924e045cebb995cf04528540e769b9ec6efa Mon Sep 17 00:00:00 2001 From: Corey Woodworth Date: Thu, 30 Oct 2025 19:24:48 -0400 Subject: [PATCH 4/6] Resolved broken settings. Utilized Singleton more effectively --- Modules/Bar/Widgets/LockKeys.qml | 39 ++++++++++++-------------------- Services/BarWidgetRegistry.qml | 3 ++- a.out | 0 3 files changed, 16 insertions(+), 26 deletions(-) delete mode 100644 a.out diff --git a/Modules/Bar/Widgets/LockKeys.qml b/Modules/Bar/Widgets/LockKeys.qml index 91f86e67..952b310a 100644 --- a/Modules/Bar/Widgets/LockKeys.qml +++ b/Modules/Bar/Widgets/LockKeys.qml @@ -3,10 +3,10 @@ import QtQuick.Layouts import Quickshell import Quickshell.Io import qs.Commons +import qs.Modules.Settings import qs.Services import qs.Widgets -import qs.Modules.Settings -// import qs.Modules.Bar.Extras +//import qs.Modules.Bar.Extras Rectangle { id: root @@ -34,17 +34,6 @@ Rectangle { readonly property bool showNum: (widgetSettings.showNumLock !== undefined) ? widgetSettings.showNumLock : widgetMetadata.showNumLock readonly property bool showScroll: (widgetSettings.showScrollLock !== undefined) ? widgetSettings.showScrollLock : widgetMetadata.showScrollLock - property bool capsLockOn: LockKeysService.capsLockOn - property bool numLockOn: LockKeysService.numLockOn - property bool scrollLockOn: LockKeysService.scrollLockOn - - Connections { - target: LockKeysService - function onCapsLockChanged(active) { root.capsLockOn = active } - function onNumLockChanged(active) { root.numLockOn = active } - function onScrollLockChanged(active) { root.scrollLockOn = active } - } - implicitWidth: isVertical ? Style.capsuleHeight : Math.round(layout.implicitWidth + Style.marginM * 2) implicitHeight: isVertical ? Math.round(layout.implicitHeight + Style.marginM * 2) : Style.capsuleHeight @@ -67,19 +56,19 @@ Rectangle { spacing: 0 NIcon { - visible: showCaps + visible: root.showCaps icon: "letter-c" - color: root.capsLockOn ? Color.mTertiary : Qt.alpha(Color.mOnSurfaceVariant, 0.3) + color: LockKeysService.capsLockOn ? Color.mTertiary : Qt.alpha(Color.mOnSurfaceVariant, 0.3) } NIcon { - visible: showNum + visible: root.showNum icon: "letter-n" - color: root.numLockOn ? Color.mTertiary : Qt.alpha(Color.mOnSurfaceVariant, 0.3) + color: LockKeysService.numLockOn ? Color.mTertiary : Qt.alpha(Color.mOnSurfaceVariant, 0.3) } NIcon { - visible: showScroll + visible: root.showScroll icon: "letter-s" - color: root.scrollLockOn ? Color.mTertiary : Qt.alpha(Color.mOnSurfaceVariant, 0.3) + color: LockKeysService.scrollLockOn ? Color.mTertiary : Qt.alpha(Color.mOnSurfaceVariant, 0.3) } } @@ -89,19 +78,19 @@ Rectangle { spacing: 0 NIcon { - visible: showCaps + visible: root.showCaps icon: "letter-c" - color: root.capsLockOn ? Color.mTertiary : Qt.alpha(Color.mOnSurfaceVariant, 0.3) + color: LockKeysService.capsLockOn ? Color.mTertiary : Qt.alpha(Color.mOnSurfaceVariant, 0.3) } NIcon { - visible: showNum + visible: root.showNum icon: "letter-n" - color: root.numLockOn ? Color.mTertiary : Qt.alpha(Color.mOnSurfaceVariant, 0.3) + color: LockKeysService.numLockOn ? Color.mTertiary : Qt.alpha(Color.mOnSurfaceVariant, 0.3) } NIcon { - visible: showScroll + visible: root.showScroll icon: "letter-s" - color: root.scrollLockOn ? Color.mTertiary : Qt.alpha(Color.mOnSurfaceVariant, 0.3) + color: LockKeysService.scrollLockOn ? Color.mTertiary : Qt.alpha(Color.mOnSurfaceVariant, 0.3) } } } diff --git a/Services/BarWidgetRegistry.qml b/Services/BarWidgetRegistry.qml index d74baea5..dce92880 100644 --- a/Services/BarWidgetRegistry.qml +++ b/Services/BarWidgetRegistry.qml @@ -21,7 +21,7 @@ Singleton { "DarkMode": darkMode, "KeepAwake": keepAwakeComponent, "KeyboardLayout": keyboardLayoutComponent, - "LockKeys:": lockKeysComponent, + "LockKeys": lockKeysComponent, "MediaMini": mediaMiniComponent, "Microphone": microphoneComponent, "NightLight": nightLightComponent, @@ -100,6 +100,7 @@ Singleton { "displayMode": "onhover" }, "LockKeys": { + "allowUserSettings": true, "showCapsLock": true, "showNumLock": true, "showScrollLock": true diff --git a/a.out b/a.out deleted file mode 100644 index e69de29b..00000000 From a6d7d077f16676d37eb058d66af732205ead50d7 Mon Sep 17 00:00:00 2001 From: Corey Woodworth Date: Thu, 30 Oct 2025 20:41:56 -0400 Subject: [PATCH 5/6] I18n and translations done. Increased Timer to 200, removed unneeded import (i think) --- Assets/Translations/de.json | 14 ++++++++++++++ Assets/Translations/en.json | 14 ++++++++++++++ Assets/Translations/es.json | 14 ++++++++++++++ Assets/Translations/fr.json | 14 ++++++++++++++ Assets/Translations/pt.json | 14 ++++++++++++++ Assets/Translations/zh-CN.json | 14 ++++++++++++++ .../Bar/WidgetSettings/LockKeysSettings.qml | 12 ++++++------ 7 files changed, 90 insertions(+), 6 deletions(-) diff --git a/Assets/Translations/de.json b/Assets/Translations/de.json index 12e903aa..cb437dfd 100644 --- a/Assets/Translations/de.json +++ b/Assets/Translations/de.json @@ -1273,6 +1273,20 @@ "label": "Ausblenden, wenn keine Medien wiedergegeben werden", "description": "Wenn aktiviert, wird der Visualizer ausgeblendet, sofern keine Wiedergabe läuft." } + }, + "lock-keys": { + "show-caps-lock": { + "description": "Caps Lock Status anzeigen.", + "label": "Feststelltaste" + }, + "show-num-lock": { + "description": "Num-Lock-Status anzeigen.", + "label": "Num-Taste" + }, + "show-scroll-lock": { + "description": "Scroll-Lock-Status anzeigen.", + "label": "Rollenfeststelltaste" + } } } }, diff --git a/Assets/Translations/en.json b/Assets/Translations/en.json index f439976b..74b2f2ec 100644 --- a/Assets/Translations/en.json +++ b/Assets/Translations/en.json @@ -1256,6 +1256,20 @@ "label": "Hide when no media is playing", "description": "When enabled, the visualizer is hidden unless a player is actively playing." } + }, + "lock-keys": { + "show-caps-lock": { + "label": "Caps Lock", + "description": "Display caps lock status." + }, + "show-num-lock": { + "label": "Num Lock", + "description": "Display num lock status." + }, + "show-scroll-lock": { + "label": "Scroll Lock", + "description": "Display scroll lock status." + } } } }, diff --git a/Assets/Translations/es.json b/Assets/Translations/es.json index 9831032a..07f3541b 100644 --- a/Assets/Translations/es.json +++ b/Assets/Translations/es.json @@ -1256,6 +1256,20 @@ "label": "Ocultar cuando no se reproduce", "description": "Si está activado, el visualizador se oculta salvo que haya reproducción activa." } + }, + "lock-keys": { + "show-caps-lock": { + "description": "Mostrar el estado de Bloq Mayús.", + "label": "Bloq Mayús" + }, + "show-num-lock": { + "description": "Mostrar el estado de bloqueo numérico.", + "label": "Bloq Num" + }, + "show-scroll-lock": { + "description": "Mostrar el estado de Bloq Despl.", + "label": "Bloq Despl" + } } } }, diff --git a/Assets/Translations/fr.json b/Assets/Translations/fr.json index ac3c1a63..286b567b 100644 --- a/Assets/Translations/fr.json +++ b/Assets/Translations/fr.json @@ -1256,6 +1256,20 @@ "label": "Masquer lorsqu'aucun média n'est en lecture", "description": "Si activé, le visualiseur est masqué sauf lorsqu'un lecteur est en lecture." } + }, + "lock-keys": { + "show-caps-lock": { + "description": "Afficher l'état du verrouillage majuscule.", + "label": "Verr Maj" + }, + "show-num-lock": { + "description": "Afficher l'état du verrouillage numérique.", + "label": "Verr Num" + }, + "show-scroll-lock": { + "description": "Afficher l'état du verrouillage du défilement.", + "label": "Verr Maj" + } } } }, diff --git a/Assets/Translations/pt.json b/Assets/Translations/pt.json index 09937559..fb4eda66 100644 --- a/Assets/Translations/pt.json +++ b/Assets/Translations/pt.json @@ -1256,6 +1256,20 @@ "label": "Ocultar quando não houver reprodução", "description": "Quando ativado, o visualizador fica oculto a menos que haja reprodução ativa." } + }, + "lock-keys": { + "show-caps-lock": { + "description": "Exibir o status do Caps Lock.", + "label": "Caps Lock" + }, + "show-num-lock": { + "description": "Exibir o status do Num Lock.", + "label": "Bloq Num" + }, + "show-scroll-lock": { + "description": "Exibir o status do Scroll Lock.", + "label": "Scroll Lock" + } } } }, diff --git a/Assets/Translations/zh-CN.json b/Assets/Translations/zh-CN.json index f9ecddbe..42586efd 100644 --- a/Assets/Translations/zh-CN.json +++ b/Assets/Translations/zh-CN.json @@ -1256,6 +1256,20 @@ "label": "无媒体播放时隐藏", "description": "启用后,除非正在播放媒体,否则隐藏可视化显示。" } + }, + "lock-keys": { + "show-caps-lock": { + "description": "显示大写锁定状态。", + "label": "大写锁定" + }, + "show-num-lock": { + "description": "显示数字锁定键状态。", + "label": "数字锁定" + }, + "show-scroll-lock": { + "description": "显示滚动锁定状态。", + "label": "滚动锁定" + } } } }, diff --git a/Modules/Settings/Bar/WidgetSettings/LockKeysSettings.qml b/Modules/Settings/Bar/WidgetSettings/LockKeysSettings.qml index e0af0e69..fb32205b 100644 --- a/Modules/Settings/Bar/WidgetSettings/LockKeysSettings.qml +++ b/Modules/Settings/Bar/WidgetSettings/LockKeysSettings.qml @@ -27,22 +27,22 @@ ColumnLayout { } NToggle { - label: "Caps Lock" - description: "Display caps lock status" + label: I18n.tr("bar.widget-settings.lock-keys.show-caps-lock.label") + description: I18n.tr("bar.widget-settings.lock-keys.show-caps-lock.description") checked: valueShowCapsLock onToggled: checked => valueShowCapsLock = checked } NToggle { - label: "Num Lock" - description: "Display num lock status" + label: I18n.tr("bar.widget-settings.lock-keys.show-num-lock.label") + description: I18n.tr("bar.widget-settings.lock-keys.show-num-lock.description") checked: valueShowNumLock onToggled: checked => valueShowNumLock = checked } NToggle { - label: "Scroll Lock" - description: "Display scroll lock status" + label: I18n.tr("bar.widget-settings.lock-keys.show-scroll-lock.label") + description: I18n.tr("bar.widget-settings.lock-keys.show-scroll-lock.description") checked: valueShowScrollLock onToggled: checked => valueShowScrollLock = checked } From 75acc2fd82c700afb4b709907923404e2ad940b4 Mon Sep 17 00:00:00 2001 From: MrDowntempo Date: Thu, 30 Oct 2025 21:04:44 -0400 Subject: [PATCH 6/6] Increase poll timer interval from 125 to 200 ms I had THOUGHT I had increased this. Now I have. --- Services/LockKeysService.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Services/LockKeysService.qml b/Services/LockKeysService.qml index c8ee00bc..2a8c6150 100644 --- a/Services/LockKeysService.qml +++ b/Services/LockKeysService.qml @@ -68,7 +68,7 @@ stderr: StdioCollector { Timer { id: pollTimer - interval: 125 + interval: 200 running: true repeat: true onTriggered: {