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 Sun Jul 30 16:53:21 2006 +0200 @@ -81,6 +81,7 @@ update_client_name(Client *c) if(ch.res_name) XFree(ch.res_name); } + write_event("ClientName %d\n", idx_of_client(c)); } Client * @@ -89,7 +90,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 +119,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 +314,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 +439,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)) { @@ -526,7 +533,10 @@ resize_client(Client *c, XRectangle *r, 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); + if(def.framebars || (f->area->mode == Colstack && f->area->sel != f)) + f->rect.y = -blitz_labelh(&def.font); + else + f->rect.y = -def.border; }else{ if(f->rect.height > max_height) f->rect.height = max_height; @@ -551,10 +561,16 @@ resize_client(Client *c, XRectangle *r, } c->rect.x = def.border; - c->rect.y = blitz_labelh(&def.font); + if(def.framebars || (f->area->mode == Colstack && f->area->sel != f)) + c->rect.y = blitz_labelh(&def.font); + else + c->rect.y = 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 Sun Jul 30 16:53:21 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,9 @@ expose(XEvent *e) static Frame *f; if(ev->count == 0) { - if(ev->window == screen->barwin) + if(ev->window == screen->barwin) { 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 Sun Jul 30 16:53:21 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; @@ -101,29 +104,33 @@ void void draw_frame(Frame *f) { - if(def.border) { - f->tile.rect = f->rect; - f->tile.rect.x = f->tile.rect.y = 0; + f->tile.rect = f->rect; + f->tile.rect.x = f->tile.rect.y = 0; + if(def.border) + blitz_draw_tile(&f->tile); + + if(def.framebars || + (f->area->mode == Colstack && f->area->sel != f)) { + if (f->area->mode == Colstack) + printf("colstack\n"); + 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->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->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 Sun Jul 30 16:53:21 2006 +0200 @@ -298,6 +298,13 @@ 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; + update_views(); }else return Ebadcmd; @@ -315,6 +322,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; } 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 Sun Jul 30 16:53:21 2006 +0200 @@ -324,6 +324,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); 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 Sun Jul 30 16:53:21 2006 +0200 @@ -159,6 +159,7 @@ struct { char grabmod[5]; unsigned long mod; int colmode; + int framebars; } def; struct WMScreen {