[wiki] [sites] added updated patch for dwm's status2d || cultab

From: <git_AT_suckless.org>
Date: Fri, 08 May 2020 16:43:21 +0200

commit 9158dc3af01a06a5052dd4355f766de1a8246f2f
Author: cultab <rroarck_AT_gmail.com>
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
_AT_@ -0,0 +1,180 @@
+From 60bb3dfaf91227eb02e828d74e6f4758b2c56542 Mon Sep 17 00:00:00 2001
+From: cultab <rroarck_AT_gmail.com>
+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
+_AT_@ -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);
+_AT_@ -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 */
+_AT_@ -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);
+_AT_@ -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)
+ {
+_AT_@ -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) {
+_AT_@ -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
_AT_@ -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
Received on Fri May 08 2020 - 16:43:21 CEST

This archive was generated by hypermail 2.3.0 : Fri May 08 2020 - 16:48:50 CEST