dwm-fibonacci-5.8.2.diff - sites - public wiki contents of suckless.org
 (HTM) git clone git://git.suckless.org/sites
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       dwm-fibonacci-5.8.2.diff (1587B)
       ---
            1 diff --git a/config.def.h b/config.def.h
            2 index cca37df..91b91aa 100644
            3 --- a/config.def.h
            4 +++ b/config.def.h
            5 @@ -29,1 +29,2 @@
            6 +#include "fibonacci.c"
            7  static const Layout layouts[] = {
            8 @@ -34,3 +35,5 @@
            9 +         { "[@]",      spiral },
           10 +         { "[\\]",      dwindle },
           11  };
           12  
           13  /* key definitions */
           14 diff --git a/fibonacci.c b/fibonacci.c
           15 new file mode 100644
           16 index 0000000..fce0a57
           17 --- /dev/null
           18 +++ b/fibonacci.c
           19 @@ -0,0 +1,66 @@
           20 +void
           21 +fibonacci(Monitor *mon, int s) {
           22 +        unsigned int i, n, nx, ny, nw, nh;
           23 +        Client *c;
           24 +
           25 +        for(n = 0, c = nexttiled(mon->clients); c; c = nexttiled(c->next), n++);
           26 +        if(n == 0)
           27 +                return;
           28 +        
           29 +        nx = mon->wx;
           30 +        ny = 0;
           31 +        nw = mon->ww;
           32 +        nh = mon->wh;
           33 +        
           34 +        for(i = 0, c = nexttiled(mon->clients); c; c = nexttiled(c->next)) {
           35 +                if((i % 2 && nh / 2 > 2 * c->bw)
           36 +                   || (!(i % 2) && nw / 2 > 2 * c->bw)) {
           37 +                        if(i < n - 1) {
           38 +                                if(i % 2)
           39 +                                        nh /= 2;
           40 +                                else
           41 +                                        nw /= 2;
           42 +                                if((i % 4) == 2 && !s)
           43 +                                        nx += nw;
           44 +                                else if((i % 4) == 3 && !s)
           45 +                                        ny += nh;
           46 +                        }
           47 +                        if((i % 4) == 0) {
           48 +                                if(s)
           49 +                                        ny += nh;
           50 +                                else
           51 +                                        ny -= nh;
           52 +                        }
           53 +                        else if((i % 4) == 1)
           54 +                                nx += nw;
           55 +                        else if((i % 4) == 2)
           56 +                                ny += nh;
           57 +                        else if((i % 4) == 3) {
           58 +                                if(s)
           59 +                                        nx += nw;
           60 +                                else
           61 +                                        nx -= nw;
           62 +                        }
           63 +                        if(i == 0)
           64 +                        {
           65 +                                if(n != 1)
           66 +                                        nw = mon->ww * mon->mfact;
           67 +                                ny = mon->wy;
           68 +                        }
           69 +                        else if(i == 1)
           70 +                                nw = mon->ww - nw;
           71 +                        i++;
           72 +                }
           73 +                resize(c, nx, ny, nw - 2 * c->bw, nh - 2 * c->bw, False);
           74 +        }
           75 +}
           76 +
           77 +void
           78 +dwindle(Monitor *mon) {
           79 +        fibonacci(mon, 1);
           80 +}
           81 +
           82 +void
           83 +spiral(Monitor *mon) {
           84 +        fibonacci(mon, 0);
           85 +}