dwm-splitstatus-20201114-61bb8b2.diff - sites - public wiki contents of suckless.org
 (HTM) git clone git://git.suckless.org/sites
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       dwm-splitstatus-20201114-61bb8b2.diff (2783B)
       ---
            1 From d2efb5e19eb466f77f0860f0175b84247799bb93 Mon Sep 17 00:00:00 2001
            2 From: Alex Cole <ajzcole@airmail.cc>
            3 Date: Sat, 14 Nov 2020 21:03:09 +1300
            4 Subject: [PATCH] splitstatus patch
            5 
            6 ---
            7  config.def.h |  2 ++
            8  dwm.c        | 31 +++++++++++++++----------------
            9  2 files changed, 17 insertions(+), 16 deletions(-)
           10 
           11 diff --git a/config.def.h b/config.def.h
           12 index 1c0b587..4161652 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 splitstatus        = 1;        /* 1 for split status items */
           20 +static const char *splitdelim        = ";";       /* Character used for separating status */
           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 664c527..e1a8085 100644
           26 --- a/dwm.c
           27 +++ b/dwm.c
           28 @@ -701,13 +701,9 @@ drawbar(Monitor *m)
           29          int boxw = drw->fonts->h / 6 + 2;
           30          unsigned int i, occ = 0, urg = 0;
           31          Client *c;
           32 -
           33 -        /* draw status first so it can be overdrawn by tags later */
           34 -        if (m == selmon) { /* status is only drawn on selected monitor */
           35 -                drw_setscheme(drw, scheme[SchemeNorm]);
           36 -                tw = TEXTW(stext) - lrpad + 2; /* 2px right padding */
           37 -                drw_text(drw, m->ww - tw, 0, tw, bh, 0, stext, 0);
           38 -        }
           39 +        char *mstext;
           40 +        char *rstext;
           41 +        int msx;
           42  
           43          for (c = m->clients; c; c = c->next) {
           44                  occ |= c->tags;
           45 @@ -729,17 +725,20 @@ drawbar(Monitor *m)
           46          drw_setscheme(drw, scheme[SchemeNorm]);
           47          x = drw_text(drw, x, 0, w, bh, lrpad / 2, m->ltsymbol, 0);
           48  
           49 -        if ((w = m->ww - tw - x) > bh) {
           50 -                if (m->sel) {
           51 -                        drw_setscheme(drw, scheme[m == selmon ? SchemeSel : SchemeNorm]);
           52 -                        drw_text(drw, x, 0, w, bh, lrpad / 2, m->sel->name, 0);
           53 -                        if (m->sel->isfloating)
           54 -                                drw_rect(drw, x + boxs, boxs, boxw, boxw, m->sel->isfixed, 0);
           55 -                } else {
           56 -                        drw_setscheme(drw, scheme[SchemeNorm]);
           57 -                        drw_rect(drw, x, 0, w, bh, 1, 1);
           58 +        drw_setscheme(drw, scheme[SchemeNorm]);
           59 +        drw_rect(drw, x, 0, m->ww - x, bh, 1, 1);
           60 +
           61 +        if (m == selmon) { /* status is only drawn on selected monitor */
           62 +                rstext = strdup(stext);
           63 +                if (splitstatus) {
           64 +                        mstext = strsep(&rstext, splitdelim);
           65 +                        msx = (m->ww - TEXTW(mstext) + lrpad) / 2; /* x position of middle status text */
           66 +                        drw_text(drw, msx, 0, TEXTW(mstext) - lrpad, bh, 0, mstext, 0);
           67                  }
           68 +                tw = TEXTW(rstext) - lrpad + 2; /* 2px right padding */
           69 +                drw_text(drw, m->ww - tw, 0, tw, bh, 0, rstext, 0);
           70          }
           71 +
           72          drw_map(drw, m->barwin, 0, 0, m->ww, bh);
           73  }
           74  
           75 -- 
           76 2.29.2
           77