Bug 511258 - Moving focus away from the modal logout screen breaks keyboard accessibility (unrecoverably with keyboard inputs)
Summary: Moving focus away from the modal logout screen breaks keyboard accessibility ...
Status: RESOLVED FIXED
Alias: None
Product: plasmashell
Classification: Plasma
Component: Theme - Breeze (other bugs)
Version First Reported In: 6.5.80
Platform: Other Linux
: HI normal
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords: accessibility
Depends on:
Blocks:
 
Reported: 2025-10-28 10:15 UTC by cwo
Modified: 2026-01-29 16:16 UTC (History)
6 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In: 6.6.0
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description cwo 2025-10-28 10:15:47 UTC
SUMMARY

The logout screen (e.g. through Ctrl+Alt+Delete or Kickoff > Logout) takes over the full screen and is always on top. The user, however can still Alt-tab to another existing window, or launch an app with a keyboard shortcut. When another window receives focus, the logout screen is still on top (covering the window that actually has focus), but now cannot be operated with the keyboard anymore (as all input now goes to the newly focused window). The logout screen itself is not focusable with Alt-tab, and even trying to re-open it with Ctrl+Alt+Delete does not work (I presume because it's already open). This makes it impossible to exit the screen through keyboard inputs, the user needs to use the mouse to click the screen to give it focus. 

STEPS TO REPRODUCE
1. Open the logout screen with Ctrl+Alt+Delete
2. Press Alt-Tab to switch to another open window, or launch a new window (e.g. Ctrl+Alt+T)

OBSERVED RESULT

The logout screen (and the currently button) lose focus, but are still on top covering all other windows. There does not seem to be a way to make it regain focus or close it using the keyboard; users without a mouse are locked on this screen. The window that is being switched to / opened receives all keyboard inputs, possibly altering data with no visual feedback.

EXPECTED RESULT

For this not to happen.

I could see some different ways this could work, but none of them seem optimal.

a) close the window if it doesn't have focus - would need to make sure that it doesn't break if the logout screen is prevented from gaining focus somehow, but would probably feel best for the alt-tab case.
b) prevent other windows from gaining focus while the logout screen is open - might be the most robust way?
c) prevent keyboard shortcuts while the screen is open - might not catch everything?

SOFTWARE/OS VERSIONS
Operating System: Fedora Linux 42
KDE Plasma Version: 6.5.80
KDE Frameworks Version: 6.20.0
Qt Version: 6.9.2
Kernel Version: 6.17.4-200.fc42.x86_64 (64-bit)
Graphics Platform: Wayland

ADDITIONAL INFORMATION
Comment 1 Nate Graham 2025-10-29 21:10:59 UTC
Can reproduce. This is very bad if you're only using keyboard navigation. If you have a pointing device, it's easy to click the Cancel button, at least.
Comment 2 Marco Martin 2026-01-16 09:50:10 UTC
Even worse, for me seems make the logout screen go away and there is no way to trigger it again, except manually killing the greeter process
Comment 3 Marco Martin 2026-01-16 15:05:03 UTC
to me it seems to happen very rarely, perhaps one time every 20 i move the panel between screens
Comment 4 equeim 2026-01-16 22:56:24 UTC
It looks like this should be handled by wlr-layer-shell's exclusive keyboard interactivity property (https://wayland.app/protocols/wlr-layer-shell-unstable-v1#zwlr_layer_surface_v1:enum:keyboard_interactivity) but it looks like KWin doesn't support it. exclusive and on_demand are treated the same way.

Screenlocker is treated differently, there is special handling for it that disables stuff including global shortcuts when it's active. Not sure if doing the same for logout screen is a good idea.

> a) close the window if it doesn't have focus - would need to make sure that it doesn't break if the logout screen is prevented from gaining focus somehow, but would probably feel best for the alt-tab case.

If logout screen failed to gain focus, then showing it wouldn't be right either. In that case maybe some timeout so that it closes itself if it's not focused? Sounds hacky but I have no other ideas.
Comment 5 equeim 2026-01-17 23:00:08 UTC
(In reply to Marco Martin from comment #2)
> Even worse, for me seems make the logout screen go away and there is no way
> to trigger it again, except manually killing the greeter process

Do you mean that it doesn't show again after you close it? Can you get it to reproduce and describe the steps? Probably in a new bug report since I don't think it's directly related to this issue.
Comment 6 Bug Janitor Service 2026-01-17 23:38:35 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/6200
Comment 7 Bug Janitor Service 2026-01-17 23:38:37 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/6200
Comment 8 Bug Janitor Service 2026-01-22 10:29:22 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/8694
Comment 9 Vlad Zahorodnii 2026-01-26 14:54:29 UTC
Git commit dac404549b5fe47b32722bfae9e49b5d24d45a36 by Vlad Zahorodnii.
Committed on 26/01/2026 at 14:13.
Pushed by vladz into branch 'master'.

Allow activation fullscreen overlays without tokens

If a fullscreen overlay layer surface is shown, allow activation
requests from it even without an activation token because it will be
painted above normal windows anyway.

If layer surfaces were cancelable, then we may not need such a special
case.

The coverage checks can be more sophisticated, but for the time being, I
think it is worth going with a simple anchor check.
Related: bug 514204

M  +120  -1    autotests/integration/activation_test.cpp
M  +23   -0    src/activation.cpp

https://invent.kde.org/plasma/kwin/-/commit/dac404549b5fe47b32722bfae9e49b5d24d45a36
Comment 10 Bug Janitor Service 2026-01-27 07:27:15 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/8710
Comment 11 Vlad Zahorodnii 2026-01-27 12:02:57 UTC
Git commit 598a28f50a9ca26bb40a3fb7c2194aec5469ebfc by Vlad Zahorodnii.
Committed on 27/01/2026 at 07:26.
Pushed by vladz into branch 'Plasma/6.6'.

Allow activation fullscreen overlays without tokens

If a fullscreen overlay layer surface is shown, allow activation
requests from it even without an activation token because it will be
painted above normal windows anyway.

If layer surfaces were cancelable, then we may not need such a special
case.

The coverage checks can be more sophisticated, but for the time being, I
think it is worth going with a simple anchor check.
Related: bug 514204


(cherry picked from commit dac404549b5fe47b32722bfae9e49b5d24d45a36)

Co-authored-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org>

M  +120  -1    autotests/integration/activation_test.cpp
M  +23   -0    src/activation.cpp

https://invent.kde.org/plasma/kwin/-/commit/598a28f50a9ca26bb40a3fb7c2194aec5469ebfc
Comment 12 equeim 2026-01-28 22:15:53 UTC
Git commit 3c50cd3763ab3538e40ecd1f12383db80dc84e47 by Alexey Rochev.
Committed on 28/01/2026 at 20:08.
Pushed by ngraham into branch 'master'.

Close logout greeter if it lost or failed to gain focus

It is shown on top of everything so switching focus to some other window underneath it doesn't make sense,
and it makes it non-functional with keyboard navigation since in some situation it's not possible to return focus to it
(it doesn't show in window switcher so you can't alt-tab back to it).

Ideally it shouldn't be possible to switch focus from it but that would require changes to KWin.

M  +32   -2    logout-greeter/greeter.cpp

https://invent.kde.org/plasma/plasma-workspace/-/commit/3c50cd3763ab3538e40ecd1f12383db80dc84e47
Comment 13 Nate Graham 2026-01-29 16:16:59 UTC
Git commit 793525cc1f03960d75d497bf81af2e0572f4a06e by Nate Graham, on behalf of Alexey Rochev.
Committed on 29/01/2026 at 15:35.
Pushed by ngraham into branch 'Plasma/6.6'.

Close logout greeter if it lost or failed to gain focus

It is shown on top of everything so switching focus to some other window underneath it doesn't make sense,
and it makes it non-functional with keyboard navigation since in some situation it's not possible to return focus to it
(it doesn't show in window switcher so you can't alt-tab back to it).

Ideally it shouldn't be possible to switch focus from it but that would require changes to KWin.

M  +32   -2    logout-greeter/greeter.cpp

https://invent.kde.org/plasma/plasma-workspace/-/commit/793525cc1f03960d75d497bf81af2e0572f4a06e