Hello, What do you think about this issue/patch? Can you reproduce it?
Regards! On Sat, Mar 14, 2026 at 3:53 AM Ruben Gonzalez <[email protected]> wrote: > > When a new window is managed (spawned), it becomes the focused client. > But, If the previously focused window was in fullscreen mode, it > remains fullscreen and completely covers the new window, leading to > "invisible focus" where the user types into an invisible terminal. > > Steps to reproduce: > 1. Open a terminal (terminal A) and make the terminal fullscreen. > 2. Open a new terminal B (Mod+Shift+Enter) > 3. You can see that visually nothing happens; terminal A is still fullscreen. > 4. Try tying the command touch /tmp/foo.txt (you will see nothing in terminal > A) > 5. Exit fullscreen on the current terminal A. > 6. You will see that the command "touch" was received and executed by > the new terminal B. > > This fix ensures that the fullscreen state is removed from the > previously focused window when a new client is managed on the same > monitor, keeping the new window visible. > > From 38de8cc3233ffaae88f2e6c3071978c728bd5d7b Mon Sep 17 00:00:00 2001 > From: Ruben Gonzalez <[email protected]> > Date: Sat, 14 Mar 2026 03:12:04 +0200 > Subject: [PATCH] manage: disable fullscreen on the old window when a new > window is opened > > --- > dwm.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/dwm.c b/dwm.c > index ab3a84c..54812dc 100644 > --- a/dwm.c > +++ b/dwm.c > @@ -1080,8 +1080,11 @@ manage(Window w, XWindowAttributes *wa) > (unsigned char *) &(c->win), 1); > XMoveResizeWindow(dpy, c->win, c->x + 2 * sw, c->y, c->w, c->h); > /* some windows require this */ > setclientstate(c, NormalState); > - if (c->mon == selmon) > + if (c->mon == selmon) { > + if (selmon->sel && selmon->sel->isfullscreen) > + setfullscreen(selmon->sel, 0); > unfocus(selmon->sel, 0); > + } > c->mon->sel = c; > arrange(c->mon); > XMapWindow(dpy, c->win); > -- > 2.43.0
