commit 9158dc3af01a06a5052dd4355f766de1a8246f2f
Author: cultab <[email protected]>
Date:   Fri May 8 17:41:01 2020 +0300

    added updated patch for dwm's status2d
    
    because the latest patch won't apply as of:
    2020-04-22 14:48 drawbar: Don't shadow sw global

diff --git 
a/dwm.suckless.org/patches/status2d/dwm-status2d-20200508-60bb3df.diff 
b/dwm.suckless.org/patches/status2d/dwm-status2d-20200508-60bb3df.diff
new file mode 100644
index 00000000..6f353fdb
--- /dev/null
+++ b/dwm.suckless.org/patches/status2d/dwm-status2d-20200508-60bb3df.diff
@@ -0,0 +1,180 @@
+From 60bb3dfaf91227eb02e828d74e6f4758b2c56542 Mon Sep 17 00:00:00 2001
+From: cultab <[email protected]>
+Date: Fri, 8 May 2020 13:56:08 +0300
+Subject: [PATCH] fix status2d to work after ed3ab6
+
+ed3ab6 changed the name of the variable sw to tw, now the patch won't apply 
nor work.
+This patch updates the variable name to the new one.
+---
+ dwm.c | 120 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---
+ 1 file changed, 114 insertions(+), 6 deletions(-)
+
+diff --git a/dwm.c b/dwm.c
+index 9fd0286..71e18be 100644
+--- a/dwm.c
++++ b/dwm.c
+@@ -163,6 +163,7 @@ static void detachstack(Client *c);
+ static Monitor *dirtomon(int dir);
+ static void drawbar(Monitor *m);
+ static void drawbars(void);
++static int drawstatusbar(Monitor *m, int bh, char* text);
+ static void enternotify(XEvent *e);
+ static void expose(XEvent *e);
+ static void focus(Client *c);
+@@ -237,7 +238,7 @@ static void zoom(const Arg *arg);
+ 
+ /* variables */
+ static const char broken[] = "broken";
+-static char stext[256];
++static char stext[1024];
+ static int screen;
+ static int sw, sh;           /* X display screen geometry width, height */
+ static int bh, blw = 0;      /* bar geometry */
+@@ -485,7 +486,7 @@ cleanup(void)
+               cleanupmon(mons);
+       for (i = 0; i < CurLast; i++)
+               drw_cur_free(drw, cursor[i]);
+-      for (i = 0; i < LENGTH(colors); i++)
++      for (i = 0; i < LENGTH(colors) + 1; i++)
+               free(scheme[i]);
+       XDestroyWindow(dpy, wmcheckwin);
+       drw_free(drw);
+@@ -693,6 +694,114 @@ dirtomon(int dir)
+       return m;
+ }
+ 
++int
++drawstatusbar(Monitor *m, int bh, char* stext) {
++      int ret, i, w, x, len;
++      short isCode = 0;
++      char *text;
++      char *p;
++
++      len = strlen(stext) + 1 ;
++      if (!(text = (char*) malloc(sizeof(char)*len)))
++              die("malloc");
++      p = text;
++      memcpy(text, stext, len);
++
++      /* compute width of the status text */
++      w = 0;
++      i = -1;
++      while (text[++i]) {
++              if (text[i] == '^') {
++                      if (!isCode) {
++                              isCode = 1;
++                              text[i] = '++                           w += 
TEXTW(text) - lrpad;
++                              text[i] = '^';
++                              if (text[++i] == 'f')
++                                      w += atoi(text + ++i);
++                      } else {
++                              isCode = 0;
++                              text = text + i + 1;
++                              i = -1;
++                      }
++              }
++      }
++      if (!isCode)
++              w += TEXTW(text) - lrpad;
++      else
++              isCode = 0;
++      text = p;
++
++      w += 2; /* 1px padding on both sides */
++      ret = x = m->ww - w;
++
++      drw_setscheme(drw, scheme[LENGTH(colors)]);
++      drw->scheme[ColFg] = scheme[SchemeNorm][ColFg];
++      drw->scheme[ColBg] = scheme[SchemeNorm][ColBg];
++      drw_rect(drw, x, 0, w, bh, 1, 1);
++      x++;
++
++      /* process status text */
++      i = -1;
++      while (text[++i]) {
++              if (text[i] == '^' && !isCode) {
++                      isCode = 1;
++
++                      text[i] = '++                   w = TEXTW(text) - lrpad;
++                      drw_text(drw, x, 0, w, bh, 0, text, 0);
++
++                      x += w;
++
++                      /* process code */
++                      while (text[++i] != '^') {
++                              if (text[i] == 'c') {
++                                      char buf[8];
++                                      memcpy(buf, (char*)text+i+1, 7);
++                                      buf[7] = '++                            
        drw_clr_create(drw, &drw->scheme[ColFg], buf);
++                                      i += 7;
++                              } else if (text[i] == 'b') {
++                                      char buf[8];
++                                      memcpy(buf, (char*)text+i+1, 7);
++                                      buf[7] = '++                            
        drw_clr_create(drw, &drw->scheme[ColBg], buf);
++                                      i += 7;
++                              } else if (text[i] == 'd') {
++                                      drw->scheme[ColFg] = 
scheme[SchemeNorm][ColFg];
++                                      drw->scheme[ColBg] = 
scheme[SchemeNorm][ColBg];
++                              } else if (text[i] == 'r') {
++                                      int rx = atoi(text + ++i);
++                                      while (text[++i] != ',');
++                                      int ry = atoi(text + ++i);
++                                      while (text[++i] != ',');
++                                      int rw = atoi(text + ++i);
++                                      while (text[++i] != ',');
++                                      int rh = atoi(text + ++i);
++
++                                      drw_rect(drw, rx + x, ry, rw, rh, 1, 0);
++                              } else if (text[i] == 'f') {
++                                      x += atoi(text + ++i);
++                              }
++                      }
++
++                      text = text + i + 1;
++                      i=-1;
++                      isCode = 0;
++              }
++      }
++
++      if (!isCode) {
++              w = TEXTW(text) - lrpad;
++              drw_text(drw, x, 0, w, bh, 0, text, 0);
++      }
++
++      drw_setscheme(drw, scheme[SchemeNorm]);
++      free(p);
++
++      return ret;
++}
++
+ void
+ drawbar(Monitor *m)
+ {
+@@ -704,9 +813,7 @@ drawbar(Monitor *m)
+ 
+       /* draw status first so it can be overdrawn by tags later */
+       if (m == selmon) { /* status is only drawn on selected monitor */
+-              drw_setscheme(drw, scheme[SchemeNorm]);
+-              tw = TEXTW(stext) - lrpad + 2; /* 2px right padding */
+-              drw_text(drw, m->ww - tw, 0, tw, bh, 0, stext, 0);
++              tw = m->ww - drawstatusbar(m, bh, stext);
+       }
+ 
+       for (c = m->clients; c; c = c->next) {
+@@ -1568,7 +1675,8 @@ setup(void)
+       cursor[CurResize] = drw_cur_create(drw, XC_sizing);
+       cursor[CurMove] = drw_cur_create(drw, XC_fleur);
+       /* init appearance */
+-      scheme = ecalloc(LENGTH(colors), sizeof(Clr *));
++      scheme = ecalloc(LENGTH(colors) + 1, sizeof(Clr *));
++      scheme[LENGTH(colors)] = drw_scm_create(drw, colors[0], 3);
+       for (i = 0; i < LENGTH(colors); i++)
+               scheme[i] = drw_scm_create(drw, colors[i], 3);
+       /* init bars */
+-- 
+2.26.2
+
diff --git a/dwm.suckless.org/patches/status2d/index.md 
b/dwm.suckless.org/patches/status2d/index.md
index 419d2dfc..e0b8e09b 100644
--- a/dwm.suckless.org/patches/status2d/index.md
+++ b/dwm.suckless.org/patches/status2d/index.md
@@ -12,6 +12,7 @@ Download
 --------
 
 * [dwm-status2d-6.2.diff](dwm-status2d-6.2.diff)
+* [dwm-status2d-20200508-60bb3df.diff](dwm-status2d-20200508-60bb3df.diff)
 
 
 Usage


Reply via email to