sites

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

dwm-float_border_color2-20160731-56a31dc.diff (3649B)


      1 URL: http://dwm.suckless.org/patches/historical/float_border_color
      2 float_border_color2 allows you to specify a different border color for floating
      3 windows.
      4 
      5 Index: dwm/config.def.h
      6 ===================================================================
      7 --- dwm/config.def.h.orig
      8 +++ dwm/config.def.h
      9 @@ -12,10 +12,10 @@ static const char col_gray2[]       = "#
     10  static const char col_gray3[]       = "#bbbbbb";
     11  static const char col_gray4[]       = "#eeeeee";
     12  static const char col_cyan[]        = "#005577";
     13 -static const char *colors[SchemeLast][3]      = {
     14 -	/*               fg         bg         border   */
     15 -	[SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
     16 -	[SchemeSel] =  { col_gray4, col_cyan,  col_cyan  },
     17 +static const char *colors[SchemeLast][4]      = {
     18 +	/*               fg         bg         border     float */
     19 +	[SchemeNorm] = { col_gray3, col_gray1, col_gray2, col_gray2 },
     20 +	[SchemeSel] =  { col_gray4, col_cyan,  col_gray2, col_cyan },
     21  };
     22  
     23  /* tagging */
     24 Index: dwm/dwm.c
     25 ===================================================================
     26 --- dwm/dwm.c.orig
     27 +++ dwm/dwm.c
     28 @@ -57,6 +57,7 @@
     29  #define TAGMASK                 ((1 << LENGTH(tags)) - 1)
     30  #define TEXTW(X)                (drw_fontset_getwidth(drw, (X)) + lrpad)
     31  #define ColBorder               2
     32 +#define ColFloat                3
     33  
     34  /* enums */
     35  enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */
     36 @@ -809,7 +810,10 @@ focus(Client *c)
     37  		detachstack(c);
     38  		attachstack(c);
     39  		grabbuttons(c, 1);
     40 -		XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColBorder].pixel);
     41 +		if(c->isfloating)
     42 +			XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColFloat].pixel);
     43 +		else
     44 +			XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColBorder].pixel);
     45  		setfocus(c);
     46  	} else {
     47  		XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
     48 @@ -1068,7 +1072,10 @@ manage(Window w, XWindowAttributes *wa)
     49  
     50  	wc.border_width = c->bw;
     51  	XConfigureWindow(dpy, w, CWBorderWidth, &wc);
     52 -	XSetWindowBorder(dpy, w, scheme[SchemeNorm][ColBorder].pixel);
     53 +	if(c->isfloating)
     54 +		XSetWindowBorder(dpy, w, scheme[SchemeNorm][ColFloat].pixel);
     55 +	else
     56 +		XSetWindowBorder(dpy, w, scheme[SchemeNorm][ColBorder].pixel);
     57  	configure(c); /* propagates border_width, if size doesn't change */
     58  	updatewindowtype(c);
     59  	updatesizehints(c);
     60 @@ -1079,6 +1086,8 @@ manage(Window w, XWindowAttributes *wa)
     61  		c->isfloating = c->oldstate = trans != None || c->isfixed;
     62  	if (c->isfloating)
     63  		XRaiseWindow(dpy, c->win);
     64 +	if(c->isfloating)
     65 +		XSetWindowBorder(dpy, w, scheme[SchemeNorm][ColFloat].pixel);
     66  	attach(c);
     67  	attachstack(c);
     68  	XChangeProperty(dpy, root, netatom[NetClientList], XA_WINDOW, 32, PropModeAppend,
     69 @@ -1583,8 +1592,8 @@ setup(void)
     70  	cursor[CurResize] = drw_cur_create(drw, XC_sizing);
     71  	cursor[CurMove] = drw_cur_create(drw, XC_fleur);
     72  	/* init appearance */
     73 -	scheme[SchemeNorm] = drw_scm_create(drw, colors[SchemeNorm], 3);
     74 -	scheme[SchemeSel] = drw_scm_create(drw, colors[SchemeSel], 3);
     75 +	scheme[SchemeNorm] = drw_scm_create(drw, colors[SchemeNorm], 4);
     76 +	scheme[SchemeSel] = drw_scm_create(drw, colors[SchemeSel], 4);
     77  	/* init bars */
     78  	updatebars();
     79  	updatestatus();
     80 @@ -1706,6 +1715,10 @@ togglefloating(const Arg *arg)
     81  		return;
     82  	selmon->sel->isfloating = !selmon->sel->isfloating || selmon->sel->isfixed;
     83  	if (selmon->sel->isfloating)
     84 +		XSetWindowBorder(dpy, selmon->sel->win, scheme[SchemeSel][ColFloat].pixel);
     85 +	else
     86 +		XSetWindowBorder(dpy, selmon->sel->win, scheme[SchemeSel][ColBorder].pixel);
     87 +	if(selmon->sel->isfloating)
     88  		resize(selmon->sel, selmon->sel->x, selmon->sel->y,
     89  		       selmon->sel->w, selmon->sel->h, 0);
     90  	arrange(selmon);