From 45eb101f40ce471a369ba03c2c420037400e30e1 Mon Sep 17 00:00:00 2001 From: Nachum Barcohen <38861757+nabaco@users.noreply.github.com> Date: Thu, 4 Jun 2026 17:05:59 +0300 Subject: [PATCH] fix(lock): wake monitors on input when powered off by lock (#2572) The "power off monitors on lock" path relies on wake handlers (MouseArea/Keys) at Lock.qml's root Scope, which sit outside the WlSessionLock surface and never receive input while locked. The feature only appeared to work on compositors that auto-restore output power on input; compositors that fully tear down the output (e.g. MangoWC disable_monitor) leave the screen off until blind-unlock. Add a seat-level IdleMonitor (wlr idle-notify, surface-independent) in IdleService that restores monitor power on any keyboard/pointer activity. Gated on isShellLocked + monitorsOff + the setting, so it is inert unless that path actually powered the monitors off. Co-authored-by: Claude Opus 4.8 (1M context) --- quickshell/Services/IdleService.qml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/quickshell/Services/IdleService.qml b/quickshell/Services/IdleService.qml index abadc151..46d9d2a6 100644 --- a/quickshell/Services/IdleService.qml +++ b/quickshell/Services/IdleService.qml @@ -138,6 +138,20 @@ Singleton { } } + // Wakes monitors powered off by the "power off monitors on lock" path. + // Lock.qml's own wake handlers sit outside the session-lock surface and + // never receive input, so wake on input via seat-level idle-notify instead. + IdleMonitor { + id: lockWakeMonitor + timeout: 1 + respectInhibitors: false + enabled: root.enabled && root.isShellLocked && root.monitorsOff && SettingsData.lockScreenPowerOffMonitorsOnLock + onIsIdleChanged: { + if (!isIdle && root.monitorsOff) + root.requestMonitorOn(); + } + } + Connections { target: root function onRequestMonitorOff() {