commit
71b5f7ce6a
7 changed files with 471 additions and 83 deletions
@ -0,0 +1,66 @@ |
|||||||
|
void |
||||||
|
fibonacci(Monitor *mon, int s) { |
||||||
|
unsigned int i, n, nx, ny, nw, nh; |
||||||
|
Client *c; |
||||||
|
|
||||||
|
for(n = 0, c = nexttiled(mon->clients); c; c = nexttiled(c->next), n++); |
||||||
|
if(n == 0) |
||||||
|
return; |
||||||
|
|
||||||
|
nx = mon->wx; |
||||||
|
ny = 0; |
||||||
|
nw = mon->ww; |
||||||
|
nh = mon->wh; |
||||||
|
|
||||||
|
for(i = 0, c = nexttiled(mon->clients); c; c = nexttiled(c->next)) { |
||||||
|
if((i % 2 && nh / 2 > 2 * c->bw) |
||||||
|
|| (!(i % 2) && nw / 2 > 2 * c->bw)) { |
||||||
|
if(i < n - 1) { |
||||||
|
if(i % 2) |
||||||
|
nh /= 2; |
||||||
|
else |
||||||
|
nw /= 2; |
||||||
|
if((i % 4) == 2 && !s) |
||||||
|
nx += nw; |
||||||
|
else if((i % 4) == 3 && !s) |
||||||
|
ny += nh; |
||||||
|
} |
||||||
|
if((i % 4) == 0) { |
||||||
|
if(s) |
||||||
|
ny += nh; |
||||||
|
else |
||||||
|
ny -= nh; |
||||||
|
} |
||||||
|
else if((i % 4) == 1) |
||||||
|
nx += nw; |
||||||
|
else if((i % 4) == 2) |
||||||
|
ny += nh; |
||||||
|
else if((i % 4) == 3) { |
||||||
|
if(s) |
||||||
|
nx += nw; |
||||||
|
else |
||||||
|
nx -= nw; |
||||||
|
} |
||||||
|
if(i == 0) |
||||||
|
{ |
||||||
|
if(n != 1) |
||||||
|
nw = mon->ww * mon->mfact; |
||||||
|
ny = mon->wy; |
||||||
|
} |
||||||
|
else if(i == 1) |
||||||
|
nw = mon->ww - nw; |
||||||
|
i++; |
||||||
|
} |
||||||
|
resize(c, nx, ny, nw - 2 * c->bw, nh - 2 * c->bw, False); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void |
||||||
|
dwindle(Monitor *mon) { |
||||||
|
fibonacci(mon, 1); |
||||||
|
} |
||||||
|
|
||||||
|
void |
||||||
|
spiral(Monitor *mon) { |
||||||
|
fibonacci(mon, 0); |
||||||
|
} |
@ -0,0 +1,49 @@ |
|||||||
|
void |
||||||
|
movestack(const Arg *arg) { |
||||||
|
Client *c = NULL, *p = NULL, *pc = NULL, *i; |
||||||
|
|
||||||
|
if(arg->i > 0) { |
||||||
|
/* find the client after selmon->sel */ |
||||||
|
for(c = selmon->sel->next; c && (!ISVISIBLE(c) || c->isfloating); c = c->next); |
||||||
|
if(!c) |
||||||
|
for(c = selmon->clients; c && (!ISVISIBLE(c) || c->isfloating); c = c->next); |
||||||
|
|
||||||
|
} |
||||||
|
else { |
||||||
|
/* find the client before selmon->sel */ |
||||||
|
for(i = selmon->clients; i != selmon->sel; i = i->next) |
||||||
|
if(ISVISIBLE(i) && !i->isfloating) |
||||||
|
c = i; |
||||||
|
if(!c) |
||||||
|
for(; i; i = i->next) |
||||||
|
if(ISVISIBLE(i) && !i->isfloating) |
||||||
|
c = i; |
||||||
|
} |
||||||
|
/* find the client before selmon->sel and c */ |
||||||
|
for(i = selmon->clients; i && (!p || !pc); i = i->next) { |
||||||
|
if(i->next == selmon->sel) |
||||||
|
p = i; |
||||||
|
if(i->next == c) |
||||||
|
pc = i; |
||||||
|
} |
||||||
|
|
||||||
|
/* swap c and selmon->sel selmon->clients in the selmon->clients list */ |
||||||
|
if(c && c != selmon->sel) { |
||||||
|
Client *temp = selmon->sel->next==c?selmon->sel:selmon->sel->next; |
||||||
|
selmon->sel->next = c->next==selmon->sel?c:c->next; |
||||||
|
c->next = temp; |
||||||
|
|
||||||
|
if(p && p != c) |
||||||
|
p->next = c; |
||||||
|
if(pc && pc != selmon->sel) |
||||||
|
pc->next = selmon->sel; |
||||||
|
|
||||||
|
if(selmon->sel == selmon->clients) |
||||||
|
selmon->clients = c; |
||||||
|
else if(c == selmon->clients) |
||||||
|
selmon->clients = selmon->sel; |
||||||
|
|
||||||
|
arrange(selmon); |
||||||
|
} |
||||||
|
} |
||||||
|
|
@ -0,0 +1,74 @@ |
|||||||
|
void |
||||||
|
tcl(Monitor * m) |
||||||
|
{ |
||||||
|
int x, y, h, w, mw, sw, bdw; |
||||||
|
unsigned int i, n; |
||||||
|
Client * c; |
||||||
|
|
||||||
|
for (n = 0, c = nexttiled(m->clients); c; |
||||||
|
c = nexttiled(c->next), n++); |
||||||
|
|
||||||
|
if (n == 0) |
||||||
|
return; |
||||||
|
|
||||||
|
c = nexttiled(m->clients); |
||||||
|
|
||||||
|
mw = m->mfact * m->ww; |
||||||
|
sw = (m->ww - mw) / 2; |
||||||
|
bdw = (2 * c->bw); |
||||||
|
resize(c, |
||||||
|
n < 3 ? m->wx : m->wx + sw, |
||||||
|
m->wy, |
||||||
|
n == 1 ? m->ww - bdw : mw - bdw, |
||||||
|
m->wh - bdw, |
||||||
|
False); |
||||||
|
|
||||||
|
if (--n == 0) |
||||||
|
return; |
||||||
|
|
||||||
|
w = (m->ww - mw) / ((n > 1) + 1); |
||||||
|
c = nexttiled(c->next); |
||||||
|
|
||||||
|
if (n > 1) |
||||||
|
{ |
||||||
|
x = m->wx + ((n > 1) ? mw + sw : mw); |
||||||
|
y = m->wy; |
||||||
|
h = m->wh / (n / 2); |
||||||
|
|
||||||
|
if (h < bh) |
||||||
|
h = m->wh; |
||||||
|
|
||||||
|
for (i = 0; c && i < n / 2; c = nexttiled(c->next), i++) |
||||||
|
{ |
||||||
|
resize(c, |
||||||
|
x, |
||||||
|
y, |
||||||
|
w - bdw, |
||||||
|
(i + 1 == n / 2) ? m->wy + m->wh - y - bdw : h - bdw, |
||||||
|
False); |
||||||
|
|
||||||
|
if (h != m->wh) |
||||||
|
y = c->y + HEIGHT(c); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
x = (n + 1 / 2) == 1 ? mw : m->wx; |
||||||
|
y = m->wy; |
||||||
|
h = m->wh / ((n + 1) / 2); |
||||||
|
|
||||||
|
if (h < bh) |
||||||
|
h = m->wh; |
||||||
|
|
||||||
|
for (i = 0; c; c = nexttiled(c->next), i++) |
||||||
|
{ |
||||||
|
resize(c, |
||||||
|
x, |
||||||
|
y, |
||||||
|
(i + 1 == (n + 1) / 2) ? w - bdw : w - bdw, |
||||||
|
(i + 1 == (n + 1) / 2) ? m->wy + m->wh - y - bdw : h - bdw, |
||||||
|
False); |
||||||
|
|
||||||
|
if (h != m->wh) |
||||||
|
y = c->y + HEIGHT(c); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue