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) <[email protected]>
This commit is contained in:
Nachum BarcohenandClaude Opus 4.8 authored and GitHub committed 2026-06-04 10:05:59 -04:00
1 parent 59431869dc
commit 45eb101f40
1 file changed
+14
+14
View File
@@ -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() {