sites

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

dwm-barpadding-20200720-bb2e722.diff (4753B)


      1 From 2f6da65e84288941babde413b9c3f4a619f853a1 Mon Sep 17 00:00:00 2001
      2 From: Pavel Oborin <pavel@oborin.xyz>
      3 Date: Mon, 20 Jul 2020 21:42:43 +0300
      4 Subject: [PATCH] Fixed drawbar
      5 
      6 ---
      7  config.def.h |  2 ++
      8  dwm.c        | 26 ++++++++++++++++----------
      9  2 files changed, 18 insertions(+), 10 deletions(-)
     10 
     11 diff --git a/config.def.h b/config.def.h
     12 index 1c0b587..867312f 100644
     13 --- a/config.def.h
     14 +++ b/config.def.h
     15 @@ -5,6 +5,8 @@ static const unsigned int borderpx  = 1;        /* border pixel of windows */
     16  static const unsigned int snap      = 32;       /* snap pixel */
     17  static const int showbar            = 1;        /* 0 means no bar */
     18  static const int topbar             = 1;        /* 0 means bottom bar */
     19 +static const int vertpad            = 10;       /* vertical padding of bar */
     20 +static const int sidepad            = 10;       /* horizontal padding of bar */
     21  static const char *fonts[]          = { "monospace:size=10" };
     22  static const char dmenufont[]       = "monospace:size=10";
     23  static const char col_gray1[]       = "#222222";
     24 diff --git a/dwm.c b/dwm.c
     25 index 9fd0286..ec9c293 100644
     26 --- a/dwm.c
     27 +++ b/dwm.c
     28 @@ -242,6 +242,8 @@ static int screen;
     29  static int sw, sh;           /* X display screen geometry width, height */
     30  static int bh, blw = 0;      /* bar geometry */
     31  static int lrpad;            /* sum of left and right padding for text */
     32 +static int vp;               /* vertical padding for bar */
     33 +static int sp;               /* side padding for bar */
     34  static int (*xerrorxlib)(Display *, XErrorEvent *);
     35  static unsigned int numlockmask = 0;
     36  static void (*handler[LASTEvent]) (XEvent *) = {
     37 @@ -568,7 +570,7 @@ configurenotify(XEvent *e)
     38  				for (c = m->clients; c; c = c->next)
     39  					if (c->isfullscreen)
     40  						resizeclient(c, m->mx, m->my, m->mw, m->mh);
     41 -				XMoveResizeWindow(dpy, m->barwin, m->wx, m->by, m->ww, bh);
     42 +				XMoveResizeWindow(dpy, m->barwin, m->wx + sp, m->by + vp, m->ww -  2 * sp, bh);
     43  			}
     44  			focus(NULL);
     45  			arrange(NULL);
     46 @@ -706,7 +708,7 @@ drawbar(Monitor *m)
     47  	if (m == selmon) { /* status is only drawn on selected monitor */
     48  		drw_setscheme(drw, scheme[SchemeNorm]);
     49  		tw = TEXTW(stext) - lrpad + 2; /* 2px right padding */
     50 -		drw_text(drw, m->ww - tw, 0, tw, bh, 0, stext, 0);
     51 +		drw_text(drw, m->ww - tw - 2 * sp, 0, tw, bh, 0, stext, 0);
     52  	}
     53  
     54  	for (c = m->clients; c; c = c->next) {
     55 @@ -732,12 +734,12 @@ drawbar(Monitor *m)
     56  	if ((w = m->ww - tw - x) > bh) {
     57  		if (m->sel) {
     58  			drw_setscheme(drw, scheme[m == selmon ? SchemeSel : SchemeNorm]);
     59 -			drw_text(drw, x, 0, w, bh, lrpad / 2, m->sel->name, 0);
     60 +			drw_text(drw, x, 0, w - 2 * sp, bh, lrpad / 2, m->sel->name, 0);
     61  			if (m->sel->isfloating)
     62  				drw_rect(drw, x + boxs, boxs, boxw, boxw, m->sel->isfixed, 0);
     63  		} else {
     64  			drw_setscheme(drw, scheme[SchemeNorm]);
     65 -			drw_rect(drw, x, 0, w, bh, 1, 1);
     66 +			drw_rect(drw, x, 0, w - 2 * sp, bh, 1, 1);
     67  		}
     68  	}
     69  	drw_map(drw, m->barwin, 0, 0, m->ww, bh);
     70 @@ -1548,6 +1550,9 @@ setup(void)
     71  	lrpad = drw->fonts->h;
     72  	bh = drw->fonts->h + 2;
     73  	updategeom();
     74 +	sp = sidepad;
     75 +	vp = (topbar == 1) ? vertpad : - vertpad;
     76 +
     77  	/* init atoms */
     78  	utf8string = XInternAtom(dpy, "UTF8_STRING", False);
     79  	wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);
     80 @@ -1574,6 +1579,7 @@ setup(void)
     81  	/* init bars */
     82  	updatebars();
     83  	updatestatus();
     84 +	updatebarpos(selmon);
     85  	/* supporting window for NetWMCheck */
     86  	wmcheckwin = XCreateSimpleWindow(dpy, root, 0, 0, 1, 1, 0, 0, 0);
     87  	XChangeProperty(dpy, wmcheckwin, netatom[NetWMCheck], XA_WINDOW, 32,
     88 @@ -1704,7 +1710,7 @@ togglebar(const Arg *arg)
     89  {
     90  	selmon->showbar = !selmon->showbar;
     91  	updatebarpos(selmon);
     92 -	XMoveResizeWindow(dpy, selmon->barwin, selmon->wx, selmon->by, selmon->ww, bh);
     93 +	XMoveResizeWindow(dpy, selmon->barwin, selmon->wx + sp, selmon->by + vp, selmon->ww - 2 * sp, bh);
     94  	arrange(selmon);
     95  }
     96  
     97 @@ -1814,7 +1820,7 @@ updatebars(void)
     98  	for (m = mons; m; m = m->next) {
     99  		if (m->barwin)
    100  			continue;
    101 -		m->barwin = XCreateWindow(dpy, root, m->wx, m->by, m->ww, bh, 0, DefaultDepth(dpy, screen),
    102 +		m->barwin = XCreateWindow(dpy, root, m->wx + sp, m->by + vp, m->ww - 2 * sp, bh, 0, DefaultDepth(dpy, screen),
    103  				CopyFromParent, DefaultVisual(dpy, screen),
    104  				CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa);
    105  		XDefineCursor(dpy, m->barwin, cursor[CurNormal]->cursor);
    106 @@ -1829,11 +1835,11 @@ updatebarpos(Monitor *m)
    107  	m->wy = m->my;
    108  	m->wh = m->mh;
    109  	if (m->showbar) {
    110 -		m->wh -= bh;
    111 -		m->by = m->topbar ? m->wy : m->wy + m->wh;
    112 -		m->wy = m->topbar ? m->wy + bh : m->wy;
    113 +		m->wh = m->wh - vertpad - bh;
    114 +		m->by = m->topbar ? m->wy : m->wy + m->wh + vertpad;
    115 +		m->wy = m->topbar ? m->wy + bh + vp : m->wy;
    116  	} else
    117 -		m->by = -bh;
    118 +		m->by = -bh - vp;
    119  }
    120  
    121  void
    122 -- 
    123 2.27.0
    124