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
