commit c1443a028a857b3ed07f6f3cf1e522fc468e15e7
Author: Ondrej Grover <[email protected]>
Date:   Sat Jun 7 12:40:44 2014 +0200

    new dwm sub-patch: nametag-prepend
    
    makes name "foo" given to tag 5 automatically "5:foo"

diff --git a/dwm.suckless.org/patches/dwm-6.1-nametag-prepend.diff 
b/dwm.suckless.org/patches/dwm-6.1-nametag-prepend.diff
new file mode 100644
index 0000000..574083f
--- /dev/null
+++ b/dwm.suckless.org/patches/dwm-6.1-nametag-prepend.diff
@@ -0,0 +1,71 @@
+diff --git a/config.def.h b/config.def.h
+index 875885b..222745d 100644
+--- a/config.def.h
++++ b/config.def.h
+@@ -14,7 +14,10 @@ static const Bool showbar           = True;     /* False 
means no bar */
+ static const Bool topbar            = True;     /* False means bottom bar */
+ 
+ /* tagging */
+-static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
++#define MAX_TAGNAME_LEN 14            /* excludes TAG_PREPEND */
++#define TAG_PREPEND "%1i:"            /* formatted as 2 chars */
++#define MAX_TAGLEN 16                 /* altogether */
++static char tags[][MAX_TAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8", 
"9" };
+ 
+ static const Rule rules[] = {
+       /* xprop(1):
+@@ -79,6 +82,7 @@ static Key keys[] = {
+       { MODKEY,                       XK_period, focusmon,       {.i = +1 } },
+       { MODKEY|ShiftMask,             XK_comma,  tagmon,         {.i = -1 } },
+       { MODKEY|ShiftMask,             XK_period, tagmon,         {.i = +1 } },
++      { MODKEY,                       XK_n,      nametag,        {0} },
+       TAGKEYS(                        XK_1,                      0)
+       TAGKEYS(                        XK_2,                      1)
+       TAGKEYS(                        XK_3,                      2)
+diff --git a/dwm.c b/dwm.c
+index 1bbb4b3..fefdd69 100644
+--- a/dwm.c
++++ b/dwm.c
+@@ -183,6 +183,7 @@ static void maprequest(XEvent *e);
+ static void monocle(Monitor *m);
+ static void motionnotify(XEvent *e);
+ static void movemouse(const Arg *arg);
++static void nametag(const Arg *arg);
+ static Client *nexttiled(Client *c);
+ static void pop(Client *);
+ static void propertynotify(XEvent *e);
+@@ -1174,6 +1175,34 @@ movemouse(const Arg *arg) {
+       }
+ }
+ 
++void
++nametag(const Arg *arg) {
++      char *p, name[MAX_TAGNAME_LEN];
++      FILE *f;
++      int i;
++
++      errno = 0; // popen(3p) says on failure it "may" set errno
++      if(!(f = popen("dmenu < /dev/null", "r"))) {
++              fprintf(stderr, "dwm: popen 'dmenu < /dev/null' failed%s%s
", errno ? ": " : "", errno ? strerror(errno) : "");
++              return;
++      }
++      if (!(p = fgets(name, MAX_TAGNAME_LEN, f)) && (i = errno) && ferror(f))
++              fprintf(stderr, "dwm: fgets failed: %s
", strerror(i));
++      if (pclose(f) < 0)
++              fprintf(stderr, "dwm: pclose failed: %s
", strerror(errno));
++      if(!p)
++              return;
++      if((p = strchr(name, '
')))
++              *p = '

Reply via email to