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
pgpbMqDwOp20G.pgp
Description: PGP signature
_______________________________________________ [email protected] mailing list http://wmii.de/cgi-bin/mailman/listinfo/wmii
