diff --git a/dwm.1 b/dwm.1 index ddc8321..bc2574c 100644 --- a/dwm.1 +++ b/dwm.1 @@ -140,6 +140,16 @@ View all windows with any tag. .B Mod1\-Control\-[1..n] Add/remove all windows with nth tag to/from the view. .TP +.B Mod1\-g +Decrease the gaps around windows. +.TP +.B Mod1\-Shift-g +Increase the gaps around windows. +.TP +.B Mod1\-Control-g +Reset the gaps around windows to +.BR 0 . +.TP .B Mod1\-Shift\-q Quit dwm. .SS Mouse commands diff --git a/dwm.desktop b/dwm.desktop new file mode 100644 index 0000000..1873158 --- /dev/null +++ b/dwm.desktop @@ -0,0 +1,7 @@ +[Desktop Entry] +Encoding=UTF-8 +Name=Dwm +Comment=Dynamic window manager +Exec=/usr/local/bin/dwm +Icon=dwm +Type=XSession diff --git a/fibonacci.c b/fibonacci.c new file mode 100644 index 0000000..8ea99e7 --- /dev/null +++ b/fibonacci.c @@ -0,0 +1,67 @@ +void +fibonacci(Monitor *mon, int s) { + unsigned int i, n, nx, ny, nw, nh, ng; + Client *c; + + for(n = 0, c = nexttiled(mon->clients); c; c = nexttiled(c->next), n++); + if(n == 0) + return; + + ng = mon->gappx; + nx = mon->wx + ng; + ny = ng; + nw = mon->ww - 2*ng; + nh = mon->wh - 2*ng; + + 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 - 2*ng, nh - 2 * c->bw - 2*ng, False); + } +} + +void +dwindle(Monitor *mon) { + fibonacci(mon, 1); +} + +void +spiral(Monitor *mon) { + fibonacci(mon, 0); +}