diff -r f8f6841b3c1c config.def.h
--- a/config.def.h	Mon Aug 09 11:59:13 2010 +0100
+++ b/config.def.h	Thu Nov 25 17:12:24 2010 +0100
@@ -7,6 +7,7 @@
 static const char *after       = ">";
 static const int tabwidth      = 200;
 static const Bool foreground   = False;
+static const Bool topbar       = False;
 
 #define MODKEY ControlMask
 static Key keys[] = { \
diff -r f8f6841b3c1c tabbed.c
--- a/tabbed.c	Mon Aug 09 11:59:13 2010 +0100
+++ b/tabbed.c	Thu Nov 25 17:12:24 2010 +0100
@@ -217,6 +217,7 @@
 void
 configurenotify(const XEvent *e) {
 	const XConfigureEvent *ev = &e->xconfigure;
+	Client *c;
 
 	if(ev->window == win && (ev->width != ww || ev->height != wh)) {
 		ww = ev->width;
@@ -225,6 +226,13 @@
 		dc.drawable = XCreatePixmap(dpy, root, ww, wh, DefaultDepth(dpy, screen));
 		if(sel)
 			resize(sel, ww, wh - bh);
+
+		/* move windows out of the way */
+		for(c = clients; c; c = c->next) {
+			if(c != sel)
+				XMoveWindow(dpy, c->win, 0, wh);
+		}
+
 		XSync(dpy, False);
 	}
 }
@@ -237,7 +245,7 @@
 
 	if((c = getclient(ev->window))) {
 		wc.x = 0;
-		wc.y = bh;
+		wc.y = topbar ? bh : 0;
 		wc.width = ww;
 		wc.height = wh - bh;
 		wc.border_width = 0;
@@ -286,7 +294,7 @@
 		dc.w = ww;
 		XFetchName(dpy, win, &name);
 		drawtext(name ? name : "", dc.norm);
-		XCopyArea(dpy, dc.drawable, win, dc.gc, 0, 0, ww, bh, 0, 0);
+		XCopyArea(dpy, dc.drawable, win, dc.gc, 0, 0, ww, bh, 0, topbar ? 0 : wh - bh);
 		XSync(dpy, False);
 		return;
 	}
@@ -323,7 +331,7 @@
 		dc.x += dc.w;
 		c->tabx = dc.x;
 	}
-	XCopyArea(dpy, dc.drawable, win, dc.gc, 0, 0, ww, bh, 0, 0);
+	XCopyArea(dpy, dc.drawable, win, dc.gc, 0, 0, ww, bh, 0, topbar ? 0 : wh - bh);
 	XSync(dpy, False);
 }
 
@@ -387,6 +395,7 @@
 	}
 	resize(c, ww, wh - bh);
 	XRaiseWindow(dpy, c->win);
+	XMoveWindow(dpy, c->win, 0, topbar ? bh : 0);
 	sendxembed(c, XEMBED_FOCUS_IN, XEMBED_FOCUS_CURRENT, 0, 0);
 	sendxembed(c, XEMBED_WINDOW_ACTIVATE, 0, 0, 0);
 	XStoreName(dpy, win, c->name);
@@ -569,7 +578,7 @@
 		XEvent e;
 
 		XWithdrawWindow(dpy, w, 0);
-		XReparentWindow(dpy, w, win, 0, bh);
+		XReparentWindow(dpy, w, win, 0, topbar ? bh : 0);
 		XSelectInput(dpy, w, PropertyChangeMask|StructureNotifyMask|EnterWindowMask);
 		XSync(dpy, False);
 		for(i = 0; i < LENGTH(keys); i++) {
@@ -639,7 +648,7 @@
 	XWindowChanges wc;
 
 	ce.x = 0;
-	ce.y = bh;
+	ce.y = topbar ? bh : 0;
 	ce.width = wc.width = w;
 	ce.height = wc.height = h;
 	ce.type = ConfigureNotify;
