dwm-barpadding-20200720-bb2e722.diff - sites - public wiki contents of suckless.org
 (HTM) git clone git://git.suckless.org/sites
 (DIR) Log
 (DIR) Files
 (DIR) 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