浏览代码

geom indicator and layout indicator is only displayed if there are several geoms/layouts

Anselm R Garbe 17 年之前
父节点
当前提交
a6a216f28c
共有 2 个文件被更改,包括 15 次插入12 次删除
  1. 1 4
      config.def.h
  2. 14 8
      dwm.c

+ 1 - 4
config.def.h

@@ -15,10 +15,7 @@ const char tags[][MAXTAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
 
 Rule rules[] = {
 	/* class	instance	title		tags ref	isfloating */
-	{ NULL,		NULL,		"Firefox",	tags[8],	False },
-	{ NULL,		NULL,		"Gimp",		NULL,		True },
-	{ NULL,		NULL,		"MPlayer",	NULL,		True },
-	{ NULL,		NULL,		"Acroread",	NULL,		True },
+	{ "Gimp",	NULL,		NULL,		NULL,		True },
 };
 
 /* geometries, s{x,y,w,h} and bh are already initualized here */

+ 14 - 8
dwm.c

@@ -517,9 +517,11 @@ drawbar(void) {
 	Client *c;
 
 	dc.x = 0;
-	dc.w = bgw;
-	drawtext(geom->symbol, dc.norm, False);
-	dc.x += bgw;
+	if(bgw > 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]);
@@ -533,9 +535,13 @@ drawbar(void) {
 		}
 		dc.x += dc.w;
 	}
-	dc.w = blw;
-	drawtext(lt->symbol, dc.norm, False);
-	x = dc.x + dc.w;
+	if(blw > 0) {
+		dc.w = blw;
+		drawtext(lt->symbol, dc.norm, False);
+		x = dc.x + dc.w;
+	}
+	else
+		x = dc.x;
 	dc.w = textw(stext);
 	dc.x = bw - dc.w;
 	if(dc.x < x) {
@@ -1502,12 +1508,12 @@ setup(void) {
 	lt = &layouts[0];
 
 	/* init bar */
-	for(blw = i = 0; i < LENGTH(layouts); i++) {
+	for(blw = i = 0; LENGTH(layouts) > 1 && i < LENGTH(layouts); i++) {
 		w = textw(layouts[i].symbol);
 		if(w > blw)
 			blw = w;
 	}
-	for(bgw = i = 0; i < LENGTH(geoms); i++) {
+	for(bgw = i = 0; LENGTH(geoms) > 1 && i < LENGTH(geoms); i++) {
 		w = textw(geoms[i].symbol);
 		if(w > bgw)
 			bgw = w;