commit 44a15ee6543d1b7ee6a96371e2093c19657cc4a6
parent 594d432605b14339bdc25008e867b836ba35d99a
Author: Evan Gates <evan.gates@gmail.com>
Date: Wed, 2 Oct 2013 13:34:10 -0700
add 6.1 nametag patch, update nametag page
Diffstat:
2 files changed, 69 insertions(+), 1 deletion(-)
diff --git a/dwm.suckless.org/patches/dwm-6.1-nametag.diff b/dwm.suckless.org/patches/dwm-6.1-nametag.diff
@@ -0,0 +1,67 @@
+diff --git a/config.def.h b/config.def.h
+index 875885b..aa24cc8 100644
+--- a/config.def.h
++++ b/config.def.h
+@@ -14,7 +14,8 @@ 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_TAGLEN 16
++static char tags[][MAX_TAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
+
+ static const Rule rules[] = {
+ /* xprop(1):
+@@ -79,6 +80,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..4f1f349 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,32 @@ movemouse(const Arg *arg) {
+ }
+ }
+
++void
++nametag(const Arg *arg) {
++ char *p, name[MAX_TAGLEN];
++ 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\n", errno ? ": " : "", errno ? strerror(errno) : "");
++ return;
++ }
++ if (!(p = fgets(name, MAX_TAGLEN, f)) && (i = errno) && ferror(f))
++ fprintf(stderr, "dwm: fgets failed: %s\n", strerror(i));
++ if (pclose(f) < 0)
++ fprintf(stderr, "dwm: pclose failed: %s\n", strerror(errno));
++ if(!p)
++ return;
++ if((p = strchr(name, '\n')))
++ *p = '\0';
++
++ for(i = 0; i < LENGTH(tags); i++)
++ if(selmon->tagset[selmon->seltags] & (1 << i))
++ strcpy(tags[i], name);
++ drawbars();
++}
++
+ Client *
+ nexttiled(Client *c) {
+ for(; c && (c->isfloating || !ISVISIBLE(c)); c = c->next);
diff --git a/dwm.suckless.org/patches/nametag.md b/dwm.suckless.org/patches/nametag.md
@@ -4,11 +4,12 @@ nametag
Description
-----------
-This patch allows you to change the names of dwm's tags while it's running.
+This patch allows you to change the names of dwm's tags while it's running. By default there is a 16 byte limit on tag names, and it uses dmenu to prompt for tag names. The 6.1 patch is for the current tip (cdec9782a1789bd5c3a84772fd59abb9da288597). It works with 6.0 but you should add -D_POSIX_C_SOURCE=2 to CPPFLAGS or you will get implicit delcaration warnings for popen and pclose.
Download
--------
+* [dwm-6.1-nametag.diff](dwm-6.1-nametag.diff) (2.3k) (20131002)
* [dwm-5.7.2-nametag.diff](dwm-5.7.2-nametag.diff) (2.5k) (20091029)
Author