Hello there!

People seemed to be interested in a no-bars patch, so I hacked
something up. You can disable framebars via /ctl (framebars 0|1), and
disable the bar with the -b option given to wmiiwm. At least the bar
part is implemented pretty crappily, and wmii would need some more
refactoring and added features to have this feature in somewhat clean
code. (I suppose more EWMH.) Whatever. Enjoy it!

Denis
diff -r 0be0474bce7a cmd/wm/area.c
--- a/cmd/wm/area.c	Sun Jul 16 15:35:40 2006 +0200
+++ b/cmd/wm/area.c	Fri Jul 28 13:29:57 2006 +0200
@@ -45,7 +45,10 @@ create_area(View *v, Area *pos, unsigned
 	a->view = v;
 	a->id = id++;
 	a->rect = screen->rect;
-	a->rect.height = screen->rect.height - screen->brect.height;
+	if(def.bar)
+		a->rect.height = screen->rect.height - screen->brect.height;
+	else
+		a->rect.height = screen->rect.height;
 	a->mode = def.colmode;
 	a->rect.width = w;
 	a->frame = nil;
diff -r 0be0474bce7a cmd/wm/bar.c
--- a/cmd/wm/bar.c	Sun Jul 16 15:35:40 2006 +0200
+++ b/cmd/wm/bar.c	Fri Jul 28 13:29:57 2006 +0200
@@ -62,7 +62,8 @@ resize_bar(WMScreen *s)
 	s->brect.y = s->rect.height - s->brect.height;
 	XMoveResizeWindow(blz.dpy, s->barwin, s->brect.x, s->brect.y, s->brect.width, s->brect.height);
 	XSync(blz.dpy, False);
-	draw_bar(s);
+	if(def.bar)
+		draw_bar(s);
 
 	for(v=view; v; v=v->next)
 		arrange_view(v);
diff -r 0be0474bce7a cmd/wm/client.c
--- a/cmd/wm/client.c	Sun Jul 16 15:35:40 2006 +0200
+++ b/cmd/wm/client.c	Fri Jul 28 13:29:57 2006 +0200
@@ -89,7 +89,7 @@ create_client(Window w, XWindowAttribute
 	Client **t, *c = (Client *) cext_emallocz(sizeof(Client));
 	XSetWindowAttributes fwa;
 	long msize;
-	unsigned int i;
+	unsigned int i, barh;
 	static unsigned int id = 1;
 
 	c->id = id++;
@@ -118,9 +118,10 @@ create_client(Window w, XWindowAttribute
 		SubstructureRedirectMask | SubstructureNotifyMask | ExposureMask
 		| ButtonPressMask | PointerMotionMask | ButtonReleaseMask | KeyPressMask;
 
+	barh = def.framebars ? blitz_labelh(&def.font) : 0;
 	c->framewin = XCreateWindow(blz.dpy, blz.root, c->rect.x, c->rect.y,
 			c->rect.width + 2 * def.border,
-			c->rect.height + def.border + blitz_labelh(&def.font), 0,
+			c->rect.height + def.border + barh, 0,
 			DefaultDepth(blz.dpy, blz.screen), CopyFromParent,
 			DefaultVisual(blz.dpy, blz.screen),
 			CWOverrideRedirect | CWBackPixmap | CWEventMask, &fwa);
@@ -312,12 +313,13 @@ gravitate_client(Client *c, Bool invert)
 	case NorthWestGravity:
 	case NorthGravity:
 	case NorthEastGravity:
-		dy = blitz_labelh(&def.font);
+		if(def.framebars)
+			dy = blitz_labelh(&def.font);
 		break;
 	case EastGravity:
 	case CenterGravity:
 	case WestGravity:
-		dy = -(c->rect.height / 2) + blitz_labelh(&def.font);
+		dy = -(c->rect.height / 2) + def.framebars ? blitz_labelh(&def.font) : 0;
 		break;
 	case SouthEastGravity:
 	case SouthGravity:
@@ -436,7 +438,11 @@ match_sizehints(Client *c, XRectangle *r
 {
 	XSizeHints *s = &c->size;
 	unsigned int dx = 2 * def.border;
-	unsigned int dy = def.border + blitz_labelh(&def.font);
+	unsigned int dy;
+	if(def.framebars)
+		dy = def.border + blitz_labelh(&def.font);
+	else
+		dy = 2 * def.border;
 	unsigned int hdiff, wdiff;
 
 	if(floating && (s->flags & PMinSize)) {
@@ -520,13 +526,15 @@ resize_client(Client *c, XRectangle *r, 
 	if((f->area->mode != Colstack) || (f->area->sel == f))
 		match_sizehints(c, &c->sel->rect, floating, stickycorner);
 
-	max_height = screen->rect.height - blitz_labelh(&def.font);
+	max_height = screen->rect.height;
+	if(def.framebars)
+		max_height -= blitz_labelh(&def.font);
 	if(!ignore_xcall) {
 		if(floating) {
 			if((c->rect.width == screen->rect.width) &&
 			   (c->rect.height == screen->rect.height)) {
 				f->rect.x = -def.border;
-				f->rect.y = -blitz_labelh(&def.font);
+				f->rect.y = def.framebars ? -blitz_labelh(&def.font) : -def.border;
 			}else{
 				if(f->rect.height > max_height)
 					f->rect.height = max_height;
@@ -551,10 +559,13 @@ resize_client(Client *c, XRectangle *r, 
 	}
 
 	c->rect.x = def.border;
-	c->rect.y = blitz_labelh(&def.font);
+	c->rect.y = def.framebars ? blitz_labelh(&def.font) : def.border;
 	if((f->area->sel == f) || (f->area->mode != Colstack)) {
 		c->rect.width = f->rect.width - 2 * def.border;
-		c->rect.height = f->rect.height - def.border - blitz_labelh(&def.font);
+		if(def.framebars)
+			c->rect.height = f->rect.height - def.border - blitz_labelh(&def.font);
+		else
+			c->rect.height = f->rect.height - 2 * def.border;
 	}
 	if(!ignore_xcall) {
 		XMoveResizeWindow(blz.dpy, c->win, c->rect.x, c->rect.y,
diff -r 0be0474bce7a cmd/wm/event.c
--- a/cmd/wm/event.c	Sun Jul 16 15:35:40 2006 +0200
+++ b/cmd/wm/event.c	Fri Jul 28 13:29:57 2006 +0200
@@ -151,17 +151,19 @@ configurerequest(XEvent *e)
 				frect=&c->sel->revert;
 
 			if(c->rect.width >= screen->rect.width && c->rect.height >= screen->rect.height) {
-				frect->y = wc.y = -blitz_labelh(&def.font);
+				frect->y = wc.y = def.framebars ? -blitz_labelh(&def.font) : -def.border;
 				frect->x = wc.x = -def.border;
 			}
 			else {
-				frect->y = wc.y = c->rect.y - blitz_labelh(&def.font);
+				frect->y = wc.y = c->rect.y - def.framebars ? blitz_labelh(&def.font): def.border;
 				frect->x = wc.x = c->rect.x - def.border;
 			}
 			frect->width = wc.width = c->rect.width + 2 * def.border;
-			frect->height = wc.height = c->rect.height + def.border
-				+ blitz_labelh(&def.font);
-			wc.border_width = 1;
+			if(def.framebars)
+				frect->height = wc.height = c->rect.height + def.border
+					+ blitz_labelh(&def.font);
+			else
+				frect->height = wc.height = c->rect.height + 2 * def.border;
 			wc.sibling = None;
 			wc.stack_mode = ev->detail;
 			if(c->sel->area->view != screen->sel)
@@ -180,9 +182,15 @@ configurerequest(XEvent *e)
 
 	if(c && c->frame) {
 		wc.x = def.border;
-		wc.y = blitz_labelh(&def.font);
 		wc.width = c->sel->rect.width - 2 * def.border;
-		wc.height = c->sel->rect.height - def.border - blitz_labelh(&def.font);
+		if(def.framebars) {
+			wc.y = blitz_labelh(&def.font);
+			wc.height = c->sel->rect.height - def.border - blitz_labelh(&def.font);
+		}
+		else {
+			wc.y = def.border;
+			wc.height = c->sel->rect.height - 2 * def.border;
+		}
 	}
 
 	wc.border_width = 0;
@@ -245,8 +253,10 @@ expose(XEvent *e)
 	static Frame *f;
 
 	if(ev->count == 0) {
-		if(ev->window == screen->barwin)
-			draw_bar(screen);
+		if(ev->window == screen->barwin) {
+			if(def.bar)
+				draw_bar(screen);
+		}
 		else if((f = frame_of_win(ev->window)) && f->view == screen->sel)
 			draw_frame(f);
 	}
diff -r 0be0474bce7a cmd/wm/frame.c
--- a/cmd/wm/frame.c	Sun Jul 16 15:35:40 2006 +0200
+++ b/cmd/wm/frame.c	Fri Jul 28 13:29:57 2006 +0200
@@ -25,7 +25,10 @@ create_frame(Client *c, View *v)
 	else{
 		f->revert = f->rect = c->rect;
 		f->revert.width = f->rect.width += 2 * def.border;
-		f->revert.height = f->rect.height += def.border + blitz_labelh(&def.font);
+		if(def.framebars)
+			f->revert.height = f->rect.height += def.border + blitz_labelh(&def.font);
+		else
+			f->revert.height = f->rect.height += 2 * def.border;
 	}
 	f->collapsed = False;
 
@@ -104,26 +107,28 @@ draw_frame(Frame *f)
 	if(def.border) {
 		f->tile.rect = f->rect;
 		f->tile.rect.x = f->tile.rect.y = 0;
+		blitz_draw_tile(&f->tile);
 	}
 
-	f->grabbox.rect = f->tile.rect;
-	f->grabbox.rect.height = blitz_labelh(&def.font);
-	f->grabbox.rect.width = def.font.height;
+	if(def.framebars) {
+		f->grabbox.rect = f->tile.rect;
+		f->grabbox.rect.height = blitz_labelh(&def.font);
+		f->grabbox.rect.width = def.font.height;
+	
+		f->titlebar.rect = f->grabbox.rect;
+		f->titlebar.rect.x = f->grabbox.rect.x + f->grabbox.rect.width;
+		f->titlebar.rect.width = f->rect.width / 2;
+	
+		/* tag bar */
+		f->tagbar.rect = f->grabbox.rect;
+		f->tagbar.rect.x = f->titlebar.rect.x + f->titlebar.rect.width;
+		f->tagbar.rect.width =
+			f->rect.width - (f->grabbox.rect.width + f->titlebar.rect.width);
+		blitz_draw_tile(&f->grabbox);
+		blitz_draw_input(&f->tagbar);
+		blitz_draw_label(&f->titlebar, f->client->name);
+	}
 
-	f->titlebar.rect = f->grabbox.rect;
-	f->titlebar.rect.x = f->grabbox.rect.x + f->grabbox.rect.width;
-	f->titlebar.rect.width = f->rect.width / 2;
-
-	/* tag bar */
-	f->tagbar.rect = f->grabbox.rect;
-	f->tagbar.rect.x = f->titlebar.rect.x + f->titlebar.rect.width;
-	f->tagbar.rect.width =
-		f->rect.width - (f->grabbox.rect.width + f->titlebar.rect.width);
-
-	blitz_draw_tile(&f->tile);
-	blitz_draw_tile(&f->grabbox);
-	blitz_draw_input(&f->tagbar);
-	blitz_draw_label(&f->titlebar, f->client->name);
 	XCopyArea(blz.dpy, pmap, f->client->framewin, f->client->gc,
 			0, 0, f->rect.width, f->rect.height, 0, 0);
 	XSync(blz.dpy, False);
diff -r 0be0474bce7a cmd/wm/fs.c
--- a/cmd/wm/fs.c	Sun Jul 16 15:35:40 2006 +0200
+++ b/cmd/wm/fs.c	Fri Jul 28 13:29:57 2006 +0200
@@ -298,6 +298,12 @@ message_root(char *message)
 		def.mod = mod;
 		if(view)
 			restack_view(screen->sel);
+	}else if(!strncmp(message, "framebars ", 10)) {
+		message += 10;
+		if(*message == '0')
+			def.framebars = 0;
+		else
+			def.framebars = 1;
 	}else
 		return Ebadcmd;
 
@@ -315,6 +321,7 @@ read_root_ctl()
 	i += snprintf(&buffer[i], (BUFFER_SIZE - i), "font %s\n", def.font.fontstr);
 	i += snprintf(&buffer[i], (BUFFER_SIZE - i), "grabmod %s\n", def.grabmod);
 	i += snprintf(&buffer[i], (BUFFER_SIZE - i), "border %d\n", def.border);
+	i += snprintf(&buffer[i], (BUFFER_SIZE - i), "framebars %d\n", def.framebars);
 	return buffer;
 }
 
@@ -826,7 +833,8 @@ fs_remove(P9Req *r) {
 		return respond(r, Enoperm);
 	case FsFBar:
 		destroy_bar(f->next->bar_p, f->bar);
-		draw_bar(screen);
+		if(def.bar)
+			draw_bar(screen);
 		respond(r, nil);
 		break;
 	}
@@ -865,7 +873,8 @@ fs_clunk(P9Req *r) {
 		while(i > 0 && buf[i - 1] == '\n')
 			buf[--i] = '\0';
 		cext_strlcpy(f->bar->text, buf, sizeof(f->bar->text));
-		draw_bar(screen);
+		if(def.bar)
+			draw_bar(screen);
 		break;
 	case FsFEvent:
 		for(fl=&pending_event_fids; *fl; fl=&(*fl)->next)
diff -r 0be0474bce7a cmd/wm/view.c
--- a/cmd/wm/view.c	Sun Jul 16 15:35:40 2006 +0200
+++ b/cmd/wm/view.c	Fri Jul 28 13:29:57 2006 +0200
@@ -263,7 +263,10 @@ arrange_view(View *v)
 	for(a=v->area->next; a; a=a->next) {
 		a->rect.x = xoff;
 		a->rect.y = 0;
-		a->rect.height = screen->rect.height - screen->brect.height;
+		if(def.bar)
+			a->rect.height = screen->rect.height - screen->brect.height;
+		else
+			a->rect.height = screen->rect.height;
 		xoff += a->rect.width;
 		arrange_column(a, False);
 	}
diff -r 0be0474bce7a cmd/wm/wm.c
--- a/cmd/wm/wm.c	Sun Jul 16 15:35:40 2006 +0200
+++ b/cmd/wm/wm.c	Fri Jul 28 13:29:57 2006 +0200
@@ -27,7 +27,9 @@ static void
 static void
 usage()
 {
-	fputs("usage: wmiiwm -a <address> [-r <wmiirc>] [-v]\n", stderr);
+	fputs("usage: wmiiwm -a <address> [-r <wmiirc>] [-v] [-b]\n", stderr);
+	fputs("	-v:	display version\n", stderr);
+	fputs("	-b:	disable bar\n", stderr);
 	exit(1);
 }
 
@@ -209,6 +211,7 @@ main(int argc, char *argv[])
 	struct passwd *passwd;
 	XSetWindowAttributes wa;
 
+	def.bar = 1;
 	/* command line args */
 	for(i = 1; (i < argc) && (argv[i][0] == '-'); i++) {
 		switch (argv[i][1]) {
@@ -221,6 +224,9 @@ main(int argc, char *argv[])
 				address = argv[++i];
 			else
 				usage();
+			break;
+		case 'b':
+			def.bar = 0;
 			break;
 		case 'r':
 			if(i + 1 < argc)
@@ -324,6 +330,7 @@ main(int argc, char *argv[])
 	def.keyssz = 0;
 	def.font.fontstr = cext_estrdup(BLITZ_FONT);
 	def.border = 2;
+	def.framebars = 1;
 	def.colmode = Coldefault;
 	cext_strlcpy(def.selcolor.colstr, BLITZ_SELCOLORS, sizeof(def.selcolor.colstr));
 	blitz_loadcolor(&blz, &def.selcolor);
@@ -387,8 +394,10 @@ main(int argc, char *argv[])
 		s->bbrush.font = &def.font;
 		s->bbrush.border = True;
 
-		draw_bar(s);
-		XMapRaised(blz.dpy, s->barwin);
+		if(def.bar) {
+			draw_bar(s);
+			XMapRaised(blz.dpy, s->barwin);
+		}
 	}
 
 	screen = &screens[0];
diff -r 0be0474bce7a cmd/wm/wm.h
--- a/cmd/wm/wm.h	Sun Jul 16 15:35:40 2006 +0200
+++ b/cmd/wm/wm.h	Fri Jul 28 13:29:57 2006 +0200
@@ -159,6 +159,8 @@ struct {
 	char grabmod[5];
 	unsigned long mod;
 	int colmode;
+	int framebars;
+	int bar;
 } def;
 
 struct WMScreen {
diff -r 0be0474bce7a cmd/wm/wmiiwm.1
--- a/cmd/wm/wmiiwm.1	Sun Jul 16 15:35:40 2006 +0200
+++ b/cmd/wm/wmiiwm.1	Fri Jul 28 13:29:57 2006 +0200
@@ -6,6 +6,7 @@ wmiiwm \- window manager improved 2 (cor
 .B \-a
 .I <address>
 .RB [ \-c ]
+.RB [ \-b ]
 .RB [ \-v ]
 .SH DESCRIPTION
 
@@ -70,6 +71,9 @@ 0.
 .TP
 .B \-v
 Prints version information to stdout, then exits.
+.TP
+.B \-b
+Disables bar.
 .SS Terminology
 .TP 2
 Display

Attachment: pgpbMqDwOp20G.pgp
Description: PGP signature

_______________________________________________
[email protected] mailing list
http://wmii.de/cgi-bin/mailman/listinfo/wmii

Reply via email to