Re: [dwm] fibonacci layout patch [update for dwm-5.0.1]

From: Donald Chai <donald.chai_AT_gmail.com>
Date: Mon, 28 Jul 2008 23:50:56 -0700

> Attached is a slightly different implementation of the fibonacci()
> function that respects `mfact' for the master window [and lets you
> resize your master window with M-j M-k] This worked under hg tip

--snip--

Here's one that uses 'mfact' throughout. (I was annoyed that the
original code used a divisor of 2 rather than the golden ratio.)

void
fibonacci(int shape) {
unsigned int i, n, nx, ny, nw, nh;
Client *c;

nx = wx;
ny = wy;
nw = ww;
nh = wh;
for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next))
n++;
for(i = 0, c = nexttiled(clients); c; c = nexttiled(c->next)) {
unsigned thish=nh, thisw=nw;
if((i % 2 && nh * mfact > 2 * c->bw)
|| (!(i % 2) && nw * mfact > 2 * c->bw))
{
if(i < n - 1) {
if(i % 2)
thish *= mfact, nh -= thish;
else
thisw *= mfact, nw -= thisw;
if((i % 4) == 2 && !shape)
nx += nw;
else if((i % 4) == 3 && !shape)
ny += nh;
}
i++;
}
resize(c, nx, ny, thisw - 2 * c->bw, thish - 2 * c-
>bw, False);
if((i % 4) == 0) {
if (shape)
ny += thish;
else
ny -= nh;
}
else if((i % 4) == 1)
nx += thisw;
else if((i % 4) == 2)
ny += thish;
else if((i % 4) == 3) {
if (shape)
nx += thisw;
else
nx -= nw;
}
}
focus(NULL);
restack();
}
Received on Tue Jul 29 2008 - 06:50:56 UTC

This archive was generated by hypermail 2.2.0 : Tue Jul 29 2008 - 08:00:08 UTC