Screens never turn off on Plasma Wayland greeter and afte r first lock — workaround
Danilo Falcão <[email protected]> Sat, 11 Apr 2026 20:15:14 -0300
| Newsgroups | gmane.comp.kde.devel.general |
|---|---|
| Message-ID | <[email protected]> |
Hi everyone, I'm running Plasma 6 on Wayland across several machines and encountered two related issues where screens never turn off, which is particularly damaging for OLED displays. Issue 1: No DPMS at the plasmalogin greeter When the machine boots to the plasmalogin login screen, there is no idle timeout at all. The display stays on indefinitely at the greeter, waiting for the user to log in. For machines that sit at the login screen for long periods, this means permanent burn-in risk on OLEDs. Issue 2: DPMS and screen lock broken after first lock Once a user session is active, after the first screen lock, DPMS stops working entirely. The locker activates but the display never turns off. Subsequent locks also fail to trigger any screen-off. Additionally, the lock timeout itself breaks — the screen stays on forever instead of locking after the configured idle period. Root causes I found: - org.freedesktop.ScreenSaver.GetSessionIdleTime always returns 0 on Wayland - org.freedesktop.login1.Session IdleHint is never set by Plasma - The KWin ScreenSaver DBus interface (/ScreenSaver) is not available on the greeter session, so there's no way to detect or trigger lock/DPMS at the login screen - After the first lock, PowerDevil's DPMS pipeline stops functioning entirely Workaround: I wrote a small system daemon called kidle that works around both issues: - Monitors /dev/input devices directly for idle activity (no dependency on broken Plasma idle APIs) - On the greeter screen: uses loginctl lock-sessions for locking and kscreen-doctor --dpms off for screen-off, with env vars (DBUS_SESSION_BUS_ADDRESS, WAYLAND_DISPLAY, XDG_RUNTIME_DIR, QT_QPA_PLATFORM=wayland) pointing at the greeter's session - On user sessions: listens to KWin's ActiveChanged signal to detect when the locker activates, then forces kscreen-doctor --dpms off - Falls back to loginctl lock-sessions when KWin ScreenSaver isn't reachable - Runs as a system service, auto-discovers the active session, and steps back when PowerDevil should handle screen-on Source: https://github.com/danilofalcao/kidle Happy to help test any patches. Best regards, Danilo