sites

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

dwm-focusurgent-20221004-6.3.diff (2066B)


      1 Author: Jan Christoph Ebersbach <jceb@e-jc.de>
      2 URL: http://dwm.suckless.org/patches/focusurgent
      3 focusurgent selects the next window having the urgent flag regardless of the tag
      4 it is on.  The urgent flag can be artificially set with the following xdotool
      5 command on any window: xdotool selectwindow -- set_window --urgency 1
      6 ---
      7 Author: Zhen Xu <xuzhen165@gmail.com>
      8 Update: adapt to multiple monitors. The original patch was not aware of multiple
      9 monitors. I tested with two monitors but I don't have access to more monitors.
     10 
     11 Index: clean/dwm/config.def.h
     12 ===================================================================
     13 --- a/config.def.h
     14 +++ b/config.def.h
     15 @@ -60,6 +60,7 @@ static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn()
     16  static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL };
     17  static const char *termcmd[]  = { "st", NULL };
     18  
     19 +#include "focusurgent.c"
     20  static Key keys[] = {
     21  	/* modifier                     key        function        argument */
     22  	{ MODKEY,                       XK_p,      spawn,          {.v = dmenucmd } },
     23 @@ -95,6 +96,7 @@ static Key keys[] = {
     24  	TAGKEYS(                        XK_8,                      7)
     25  	TAGKEYS(                        XK_9,                      8)
     26  	{ MODKEY|ShiftMask,             XK_q,      quit,           {0} },
     27 +	{ MODKEY,                       XK_u,      focusurgent,    {0} },
     28  };
     29  
     30  /* button definitions */
     31 Index: clean/dwm/focusurgent.c
     32 ===================================================================
     33 --- /dev/null
     34 +++ b/focusurgent.c
     35 @@ -0,0 +1,20 @@
     36 +static void
     37 +focusurgent(const Arg *arg) {
     38 +	Monitor *m;
     39 +	Client *c;
     40 +	int i;
     41 +	for(m=mons; m; m=m->next){
     42 +		for(c=m->clients; c && !c->isurgent; c=c->next);
     43 +		if(c) {
     44 +			unfocus(selmon->sel, 0);
     45 +			selmon = m;
     46 +			for(i=0; i < LENGTH(tags) && !((1 << i) & c->tags); i++);
     47 +			if(i < LENGTH(tags)) {
     48 +				const Arg a = {.ui = 1 << i};
     49 +				view(&a);
     50 +				focus(c);
     51 +				warp(c);
     52 +			}
     53 +		}
     54 +	}
     55 +}