On Sat, Mar 27, 2010 at 06:27:52PM -0400, Jeremiah Dow wrote:
> If anyone else is interested in this kind of border handling - this is
> my patch.
>
> Not quite the same behavior as Sean's - I just wanted to set the border
> width to zero anytime there was only one client visible, so only need
> to add two lines to the tile function.
>
> I use this on a laptop, but it should work just as well with multiple
> monitors.
>
> Jeremiah
Hello,
thanks for this patch, i like this behavior,
I took your patch as a base and i just added to it one line
in monocle function because i had a few issue when toggling tile/monocle
(it wasn't working anymore, don't know why)
with this line i don't have the issue anymore
and monocle is handled as well.
Julien
diff -up a/dwm.c b/dwm.c
--- a/dwm.c 2010-04-02 15:44:34.000000000 +0200
+++ b/dwm.c 2010-04-02 15:44:19.000000000 +0200
@@ -1130,7 +1130,7 @@ manage(Window w, XWindowAttributes *wa)
/* only fix client y-offset, if the client center might cover the bar */
c->y = MAX(c->y, ((c->mon->by == 0) && (c->x + (c->w / 2) >= c->mon->wx)
&& (c->x + (c->w / 2) < c->mon->wx + c->mon->ww)) ? bh : c->mon->my);
- c->bw = borderpx;
+ c->bw = 0;
}
wc.border_width = c->bw;
XConfigureWindow(dpy, w, CWBorderWidth, &wc);
@@ -1183,8 +1183,10 @@ monocle(Monitor *m) {
n++;
if(n > 0) /* override layout symbol */
snprintf(m->ltsymbol, sizeof m->ltsymbol, "[%d]", n);
- for(c = nexttiled(m->clients); c; c = nexttiled(c->next))
+ for(c = nexttiled(m->clients); c; c = nexttiled(c->next)) {
+ c->bw = 0;
resize(c, m->wx, m->wy, m->ww - 2 * c->bw, m->wh - 2 * c->bw, False);
+ }
}
void
@@ -1617,6 +1619,7 @@ tile(Monitor *m) {
/* master */
c = nexttiled(m->clients);
mw = m->mfact * m->ww;
+ c->bw = (n > 1 ? borderpx : 0);
resize(c, m->wx, m->wy, (n == 1 ? m->ww : mw) - 2 * c->bw, m->wh - 2 * c->bw, False);
if(--n == 0)
return;
@@ -1628,6 +1631,7 @@ tile(Monitor *m) {
if(h < bh)
h = m->wh;
for(i = 0, c = nexttiled(c->next); c; c = nexttiled(c->next), i++) {
+ c->bw = borderpx;
resize(c, x, y, w - 2 * c->bw, /* remainder */ ((i + 1 == n)
? m->wy + m->wh - y - 2 * c->bw : h - 2 * c->bw), False);
if(h != m->wh)