On Thu, Feb 12, 2026 at 10:28:02PM +0000, NRK wrote:
> currently clients that set the input field of WM_HINTS to true
> (c->neverfocus) will never be updated as _NET_ACTIVE_WINDOW even
> when they are focused. according to the ICCCM [0] the input
> field of WM_HINTS tells the WM to either use or not use
> XSetInputFocus(), it shouldn't have any relation to
> _NET_ACTIVE_WINDOW. EWMH spec [1] also does not mention any
> relationship between the two.
> 
> this issue was noticed when launching games via steam/proton and
> noticing that _NET_ACTIVE_WINDOW was always wrong/stale (i.e not
> updated to the game window).
> 
> for reference I've looked at bspwm [2] and it also seems to set
> _NET_ACTIVE_WINDOW regardless of whether the client has WM_HINTS
> input true or not.
> 
> [0]: 
> https://x.org/releases/X11R7.6/doc/xorg-docs/specs/ICCCM/icccm.html#input_focus
> [1]: https://specifications.freedesktop.org/wm/1.5/ar01s03.html#id-1.4.10
> [2]: 
> https://github.com/baskerville/bspwm/blob/c5cf7d3943f9a34a5cb2bab36bf473fd77e7d4f6/src/tree.c#L659-L662
> ---
>  dwm.c | 8 +++-----
>  1 file changed, 3 insertions(+), 5 deletions(-)
> 
> diff --git a/dwm.c b/dwm.c
> index 53b393e..fc4232e 100644
> --- a/dwm.c
> +++ b/dwm.c
> @@ -1470,12 +1470,10 @@ sendevent(Client *c, Atom proto)
>  void
>  setfocus(Client *c)
>  {
> -     if (!c->neverfocus) {
> +     if (!c->neverfocus)
>               XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime);
> -             XChangeProperty(dpy, root, netatom[NetActiveWindow],
> -                     XA_WINDOW, 32, PropModeReplace,
> -                     (unsigned char *) &(c->win), 1);
> -     }
> +     XChangeProperty(dpy, root, netatom[NetActiveWindow], XA_WINDOW, 32,
> +             PropModeReplace, (unsigned char *)&c->win, 1);
>       sendevent(c, wmatom[WMTakeFocus]);
>  }
>  
> -- 
> 2.52.0
> 
> 

Thank you, I have committed the patch.

@all, please test and report if this breaks some application.

-- 
Kind regards,
Hiltjo

Reply via email to