Skip to content

x11: Skip announcing WM_TAKE_FOCUS in WM_PROTOCOLS - #16150

Open
zzag wants to merge 1 commit into
libsdl-org:mainfrom
zzag:drop-wm-take-focus
Open

x11: Skip announcing WM_TAKE_FOCUS in WM_PROTOCOLS#16150
zzag wants to merge 1 commit into
libsdl-org:mainfrom
zzag:drop-wm-take-focus

Conversation

@zzag

@zzag zzag commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

By putting the WM_TAKE_FOCUS atom in the WM_PROTOCOLS property, SDL chooses either the "Locally Active" or "Globally Active" input model depending on the input flag in WM_HINTS.

In order to assist the window manager with making the right decision, for example, skip this window when choosing what window to activate next, it will be better if the WM knows right away that the window accepts or doesn't accept focus (in other words, have either both the input flag set in WM_HINTS + WM_TAKE_FOCUS or none).

Since the WM_TAKE_FOCUS atom is placed in the WM_PROTOCOLS property, the WM wanting to adhere to the spec has no choice but send a client message asking to activate the window and hope for the better.

At quick glance, it appears that the WM_TAKE_FOCUS atom is leftover from SDL_WINDOWEVENT_TAKE_FOCUS, which was dropped a while ago, and is not used anymore. So this change removes the WM_TAKE_FOCUS atom to help window managers such as kwin work better.

  • I confirm that I am the author of this code and release it to the SDL project under the Zlib license. This contribution does not contain code from other sources, including code generated by a Large Language Model ("AI").

By putting the WM_TAKE_FOCUS atom in the WM_PROTOCOLS property, SDL
chooses either the "Locally Active" or "Globally Active" input model
depending on the input flag in WM_HINTS.

In order to assist the window manager with making the right decision,
for example, skip this window when choosing what window to activate
next, it will be better if the WM knows right away that the window
accepts or doesn't accept focus (in other words, have either both
the input flag set in WM_HINTS + WM_TAKE_FOCUS or none).

Since the WM_TAKE_FOCUS atom is placed in the WM_PROTOCOLS property, the
WM wanting to adhere to the spec has no choice but send a client message
asking to activate the window and hope for the better.

At quick glance, it appears that the WM_TAKE_FOCUS atom is leftover from
SDL_WINDOWEVENT_TAKE_FOCUS, which was dropped a while ago, and is not
used anymore. So this change removes the WM_TAKE_FOCUS atom to help
window managers such as kwin work better.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant