sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

dwm-nametag-prepend-6.2.diff (1608B)


      1 --- a/config.def.h
      2 +++ b/config.def.h
      3 @@ -19,7 +19,10 @@
      4  };
      5  
      6  /* tagging */
      7 -static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
      8 +#define MAX_TAGNAME_LEN 14		/* excludes TAG_PREPEND */
      9 +#define TAG_PREPEND "%1i:"		/* formatted as 2 chars */
     10 +#define MAX_TAGLEN 16			/* altogether */
     11 +static char tags[][MAX_TAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
     12  
     13  static const Rule rules[] = {
     14  	/* xprop(1):
     15 --- a/dwm.c
     16 +++ b/dwm.c
     17 @@ -183,6 +183,7 @@
     18  static void monocle(Monitor *m);
     19  static void motionnotify(XEvent *e);
     20  static void movemouse(const Arg *arg);
     21 +static void nametag(const Arg *arg);
     22  static Client *nexttiled(Client *c);
     23  static void pop(Client *);
     24  static void propertynotify(XEvent *e);
     25 @@ -1190,6 +1191,34 @@
     26  		selmon = m;
     27  		focus(NULL);
     28  	}
     29 +}
     30 +
     31 +void
     32 +nametag(const Arg *arg) {
     33 +	char *p, name[MAX_TAGNAME_LEN];
     34 +	FILE *f;
     35 +	int i;
     36 +
     37 +	errno = 0; // popen(3p) says on failure it "may" set errno
     38 +	if(!(f = popen("dmenu < /dev/null", "r"))) {
     39 +		fprintf(stderr, "dwm: popen 'dmenu < /dev/null' failed%s%s\n", errno ? ": " : "", errno ? strerror(errno) : "");
     40 +		return;
     41 +	}
     42 +	if (!(p = fgets(name, MAX_TAGNAME_LEN, f)) && (i = errno) && ferror(f))
     43 +		fprintf(stderr, "dwm: fgets failed: %s\n", strerror(i));
     44 +	if (pclose(f) < 0)
     45 +		fprintf(stderr, "dwm: pclose failed: %s\n", strerror(errno));
     46 +	if(!p)
     47 +		return;
     48 +	if((p = strchr(name, '\n')))
     49 +		*p = '\0';
     50 +
     51 +	for(i = 0; i < LENGTH(tags); i++)
     52 +		if(selmon->tagset[selmon->seltags] & (1 << i)) {
     53 +			sprintf(tags[i], TAG_PREPEND, i+1);
     54 +			strcat(tags[i], name);
     55 +		}
     56 +	drawbars();
     57  }
     58  
     59  Client *