TL;DR: On the login screen my keystrokes sometimes registered twice and the password field lagged one character behind, so my password kept getting rejected. The lock screen worked fine. The greeter’s KWin is started with --inputmethod plasma-keyboard, but plasma-keyboard isn’t even installed on my system. Overriding the service to drop that flag fixed it completely.
Setup
- CachyOS, KDE Plasma 6.8.1 (Wayland), plasma-login-manager 6.8.1-1 (from
extra) - Ryzen 9 7900X, using the integrated Radeon graphics only, two monitors
- Keychron V6 Max, Hungarian layout, on the 2.4 GHz dongle (also tried the cable, same result)
The problem
Logging in became nearly impossible. Say my password is 123456789:
- Extra characters. Some keys randomly registered twice. For example, the
3came out doubled, giving1233456789. - The field lagged one character behind. Press
1then2, and only one dot appears. The second shows up only after a third key press. After typing the full password, the field showed 8 dots instead of 9. - Backspace sometimes seemed to do nothing, probably the same lag at work.
- Several login attempts, only one recorded. I tried to log in several times, but the journal shows only one authentication attempt reaching PAM during that boot (it failed). I’m not sure whether some submits simply didn’t register.
- I had to power off and try again several times to get in.
The keyboard itself is fine. It’s been thoroughly tested, works perfectly in the session, and the lock screen (Meta+L) had no issues at all. Waiting several minutes at the greeter before typing didn’t help either, so it isn’t boot-time load.
What I ruled out
- GPU / software rendering.
amdgpuinitialized fine. The greeter’s KWin used the normal hardware (DRM) path and only about 1.3 s of CPU in 3 minutes. - Mixed Plasma package versions. This was the cause in an older thread here. On my system plasma-login-manager, plasma-workspace and kwin are all on 6.8.1.
- Keyboard repeat settings for the greeter.
/var/lib/plasmalogin/.config/kcminputrconly containsNumLock=0, so default repeat values. - Duplicate keyboard devices. The dongle exposes only one keyboard interface.
The clue
The greeter user’s journal (sudo journalctl -b -1 _UID=957) had this KWin line several times:
Input method is trying to show itself but without a context. Aborting.
The greeter’s KWin unit, /usr/lib/systemd/user/plasma-login-kwin_wayland.service, starts it like this:
ExecStart=/usr/bin/kwin_wayland --no-lockscreen --no-global-shortcuts --no-kactivities --inputmethod plasma-keyboard --locale1
pacman -Q plasma-keyboard says it’s not installed. So keystrokes on the login screen go through an input-method path pointing at something that doesn’t exist. The lock screen runs in my own session’s KWin, which has no input method set. That’s why it worked.
The fix
This is a systemd drop-in that removes only the --inputmethod flag from the greeter’s KWin. The package file stays untouched.
sudo mkdir -p /etc/systemd/user/plasma-login-kwin_wayland.service.d printf '[Service]\nExecStart=\nExecStart=/usr/bin/kwin_wayland --no-lockscreen --no-global-shortcuts --no-kactivities --locale1\n' | sudo tee /etc/systemd/user/plasma-login-kwin_wayland.service.d/no-inputmethod.conf
Result: 5 reboots in a row, password accepted every time, even typing as fast as I can.
To undo:
sudo rm -r /etc/systemd/user/plasma-login-kwin_wayland.service.d
If the greeter ever fails to appear after a change like this, Ctrl+Alt+F3 gives you a text console to log in and remove the override.
Caveats
- I don’t know for sure whether the bug comes from the input method being missing or from the IM path itself. There’s an open KDE bug where keys repeat when Plasma Keyboard is installed and enabled (bug 519186). So installing
plasma-keyboardmight not be a fix either. - The drop-in hardcodes the
ExecStartline. If a future update changes the unit’s name or arguments, check that it still matches. - You lose the on-screen keyboard at the login screen. Irrelevant on a desktop, but it matters on a touchscreen.
If anyone else has seen “my correct password is rejected at the login screen”, it’s worth checking whether this is what’s happening.