Screens never turn off on Plasma Wayland greeter and after first lock — workaround
Danilo Falcão
danilo at falcao.org
Sun Apr 12 00:15:14 BST 2026
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
More information about the kde-devel
mailing list