geoms are now drawed in the status bar
authorAnselm R Garbe <garbeam@gmail.com>
Mon, 17 Mar 2008 16:26:06 +0000
changeset 1151 8b2bff54fd0f
parent 1150 40b2b183073b
child 1152 960659820908
geoms are now drawed in the status bar
config.def.h
dwm.c
--- a/config.def.h	Mon Mar 17 14:56:11 2008 +0000
+++ b/config.def.h	Mon Mar 17 16:26:06 2008 +0000
@@ -28,8 +28,8 @@
 
 Geom geoms[] = {
 	/* symbol	function */
-	{ "[]",		single },	/* first entry is default */
-	{ "[][]",	dual },
+	{ "<>",		single },	/* first entry is default */
+	{ ")(",		dual },
 };
 
 /* layout(s) */
@@ -48,8 +48,8 @@
 #define MODKEY			Mod1Mask
 Key keys[] = {
 	/* modifier			key		function	argument */
-	{ MODKEY,			XK_a,		setgeom,	"[][]" },
-	{ MODKEY,			XK_d,		setgeom,	"[]" },
+	{ MODKEY,			XK_a,		setgeom,	")(" },
+	{ MODKEY,			XK_d,		setgeom,	"<>" },
 	{ MODKEY,			XK_p,		spawn,
 		"exec dmenu_run -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGCOLOR"' -sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"'" },
 	{ MODKEY|ShiftMask,		XK_Return,	spawn, "exec uxterm" },
--- a/dwm.c	Mon Mar 17 14:56:11 2008 +0000
+++ b/dwm.c	Mon Mar 17 16:26:06 2008 +0000
@@ -210,7 +210,7 @@
 char stext[256], buf[256];
 int screen, sx, sy, sw, sh;
 int (*xerrorxlib)(Display *, XErrorEvent *);
-int bx, by, bw, bh, blw, mx, my, mw, mh, mox, moy, mow, moh, tx, ty, tw, th, wx, wy, ww, wh;
+int bx, by, bw, bh, blw, bgw, mx, my, mw, mh, mox, moy, mow, moh, tx, ty, tw, th, wx, wy, ww, wh;
 unsigned int numlockmask = 0;
 void (*handler[LASTEvent]) (XEvent *) = {
 	[ButtonPress] = buttonpress,
@@ -322,10 +322,10 @@
 	XButtonPressedEvent *ev = &e->xbutton;
 
 	if(ev->window == barwin) {
-		x = 0;
+		x = bgw;
 		for(i = 0; i < LENGTH(tags); i++) {
 			x += textw(tags[i]);
-			if(ev->x < x) {
+			if(ev->x > bgw && ev->x < x) {
 				if(ev->button == Button1) {
 					if(ev->state & MODKEY)
 						tag(tags[i]);
@@ -514,6 +514,9 @@
 	Client *c;
 
 	dc.x = 0;
+	dc.w = bgw;
+	drawtext(geom->symbol, dc.norm, False);
+	dc.x += bgw;
 	for(c = stack; c && !isvisible(c); c = c->snext);
 	for(i = 0; i < LENGTH(tags); i++) {
 		dc.w = textw(tags[i]);
@@ -854,7 +857,7 @@
 idxoftag(const char *t) {
 	unsigned int i;
 
-	for(i = 0; (i < LENGTH(tags)) && (tags[i] != t); i++);
+	for(i = 0; (i < LENGTH(tags)) && strcmp(tags[i], t); i++);
 	return (i < LENGTH(tags)) ? i : 0;
 }
 
@@ -1501,6 +1504,11 @@
 		if(i > blw)
 			blw = i;
 	}
+	for(bgw = i = 0; i < LENGTH(geoms); i++) {
+		i = textw(geoms[i].symbol);
+		if(i > bgw)
+			bgw = i;
+	}
 
 	wa.override_redirect = 1;
 	wa.background_pixmap = ParentRelative;