dwm-horizgrid-6.1.diff - sites - public wiki contents of suckless.org
 (HTM) git clone git://git.suckless.org/sites
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       dwm-horizgrid-6.1.diff (2228B)
       ---
            1 From 064e1d48631cd9b03f32b42d7be79677197ee42f Mon Sep 17 00:00:00 2001
            2 From: Marshall Mason <marshallmason3@gmail.com>
            3 Date: Mon, 9 Nov 2015 12:38:28 -0800
            4 Subject: [PATCH] Added horizgrid function
            5 
            6 ---
            7  config.def.h |  2 ++
            8  horizgrid.c  | 32 ++++++++++++++++++++++++++++++++
            9  2 files changed, 34 insertions(+)
           10  create mode 100644 horizgrid.c
           11 
           12 diff --git a/config.def.h b/config.def.h
           13 index eaae8f3..c2ad519 100644
           14 --- a/config.def.h
           15 +++ b/config.def.h
           16 @@ -36,11 +36,13 @@ static const float mfact      = 0.55; /* factor of master area size [0.05..0.95]
           17  static const int nmaster      = 1;    /* number of clients in master area */
           18  static const Bool resizehints = True; /* True means respect size hints in tiled resizals */
           19  
           20 +#include "horizgrid.c"
           21  static const Layout layouts[] = {
           22          /* symbol     arrange function */
           23          { "[]=",      tile },    /* first entry is default */
           24          { "><>",      NULL },    /* no layout function means floating behavior */
           25          { "[M]",      monocle },
           26 +        { "###",      horizgrid },
           27  };
           28  
           29  /* key definitions */
           30 diff --git a/horizgrid.c b/horizgrid.c
           31 new file mode 100644
           32 index 0000000..51ce0f8
           33 --- /dev/null
           34 +++ b/horizgrid.c
           35 @@ -0,0 +1,32 @@
           36 +void
           37 +horizgrid(Monitor *m) {
           38 +        Client *c;
           39 +        unsigned int n, i;
           40 +        int w = 0;
           41 +        int ntop, nbottom = 0;
           42 +
           43 +        /* Count windows */
           44 +        for(n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++);
           45 +
           46 +        if(n == 0)
           47 +                return;
           48 +        else if(n == 1) { /* Just fill the whole screen */
           49 +                c = nexttiled(m->clients);
           50 +                resize(c, m->wx, m->wy, m->ww - (2*c->bw), m->wh - (2*c->bw), False);
           51 +        } else if(n == 2) { /* Split vertically */
           52 +                w = m->ww / 2;
           53 +                c = nexttiled(m->clients);
           54 +                resize(c, m->wx, m->wy, w - (2*c->bw), m->wh - (2*c->bw), False);
           55 +                c = nexttiled(c->next);
           56 +                resize(c, m->wx + w, m->wy, w - (2*c->bw), m->wh - (2*c->bw), False);
           57 +        } else {
           58 +                ntop = n / 2;
           59 +                nbottom = n - ntop;
           60 +                for(i = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) {
           61 +                        if(i < ntop)
           62 +                                resize(c, m->wx + i * m->ww / ntop, m->wy, m->ww / ntop - (2*c->bw), m->wh / 2 - (2*c->bw), False);
           63 +                        else
           64 +                                resize(c, m->wx + (i - ntop) * m->ww / nbottom, m->wy + m->wh / 2, m->ww / nbottom - (2*c->bw), m->wh / 2 - (2*c->bw), False);
           65 +                }
           66 +        }
           67 +}
           68 -- 
           69 2.1.4
           70