This recent patch changeset: 1519:72272822ddf2 user: Anselm R Garbe <ans...@garbe.us> date: Sun May 30 10:02:56 2010 +0100 summary: implemented better fullscreen handling, please test
gives me troubles because the border around the window is not painted for all clients. (One particular example is emacs from recent bzr repository.) The reason seems to be that some clients toggle out of fullscreen, before they have actually toggled into it. This confuses dwm apparently because in this case c->oldbw is sometimes not correctly initialised. The following patch fixes this for me: --------------------- diff --git a/dwm.c b/dwm.c --- a/dwm.c +++ b/dwm.c @@ -1124,7 +1124,6 @@ c->y = c->oldy = wa->y + c->mon->wy; c->w = c->oldw = wa->width; c->h = c->oldh = wa->height; - c->oldbw = wa->border_width; if(c->w == c->mon->mw && c->h == c->mon->mh) { c->isfloating = 1; c->x = c->mon->mx; @@ -1142,7 +1141,7 @@ && (c->x + (c->w / 2) < c->mon->wx + c->mon->ww)) ? bh : c->mon->my); c->bw = borderpx; } - wc.border_width = c->bw; + wc.border_width = c->oldbw = c->bw; XConfigureWindow(dpy, w, CWBorderWidth, &wc); XSetWindowBorder(dpy, w, dc.norm[ColBorder]); configure(c); /* propagates border_width, if size doesn't change */ --------------------- While this seems to work, a proper way of handling fullscreen is probably by introducing a simple c->fullscreen flag, which could replace the c->old{x,y,w,h,bw} stuff? Andreas