sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

dwm-killfocusnext-20211208-33a4918.diff (1518B)


      1 From 33a4918578a7c19ce358a0233d6731933999f105 Mon Sep 17 00:00:00 2001
      2 From: Hai Nguyen <hhai2105@gmail.com>
      3 Date: Wed, 8 Dec 2021 00:30:24 -0500
      4 Subject: [PATCH] update focus to not change focus stack, change unmanage to
      5  always move to the next visible client
      6 
      7 ---
      8  dwm.c | 13 +++++++++----
      9  1 file changed, 9 insertions(+), 4 deletions(-)
     10 
     11 diff --git a/dwm.c b/dwm.c
     12 index 5e4d494..a2aabb4 100644
     13 --- a/dwm.c
     14 +++ b/dwm.c
     15 @@ -793,8 +793,6 @@ focus(Client *c)
     16  			selmon = c->mon;
     17  		if (c->isurgent)
     18  			seturgent(c, 0);
     19 -		detachstack(c);
     20 -		attachstack(c);
     21  		grabbuttons(c, 1);
     22  		XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColBorder].pixel);
     23  		setfocus(c);
     24 @@ -803,6 +801,8 @@ focus(Client *c)
     25  		XDeleteProperty(dpy, root, netatom[NetActiveWindow]);
     26  	}
     27  	selmon->sel = c;
     28 +	if(c && selmon->lt[selmon->sellt]->arrange == monocle)
     29 +		XRaiseWindow(dpy, c->win);
     30  	drawbars();
     31  }
     32  
     33 @@ -851,8 +851,8 @@ focusstack(const Arg *arg)
     34  					c = i;
     35  	}
     36  	if (c) {
     37 -		focus(c);
     38  		restack(selmon);
     39 +		focus(c);
     40  	}
     41  }
     42  
     43 @@ -1767,6 +1767,9 @@ unmanage(Client *c, int destroyed)
     44  {
     45  	Monitor *m = c->mon;
     46  	XWindowChanges wc;
     47 +	int fullscreen = (selmon->sel == c && selmon->sel->isfullscreen)?1:0;
     48 +	Client *nc;
     49 +	for (nc = c->next; nc && !ISVISIBLE(nc); nc = nc->next);
     50  
     51  	detach(c);
     52  	detachstack(c);
     53 @@ -1782,7 +1785,9 @@ unmanage(Client *c, int destroyed)
     54  		XUngrabServer(dpy);
     55  	}
     56  	free(c);
     57 -	focus(NULL);
     58 +	focus(nc);
     59 +	if(fullscreen)
     60 +		togglefullscreen();
     61  	updateclientlist();
     62  	arrange(m);
     63  }
     64 -- 
     65 2.34.1
     66