URI: 
       new stuff - dwm - dynamic window manager
  HTML git clone https://git.parazyd.org/dwm
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit d7b074fcce4877ed404f6a92671689fcdee9133b
   DIR parent c9170189bf0d0234f8d97fd7b717f859b7242674
  HTML Author: Anselm R Garbe <garbeam@gmail.com>
       Date:   Thu,  6 Mar 2008 19:20:14 +0000
       
       new stuff
       Diffstat:
         A config.anselm.h                     |     127 +++++++++++++++++++++++++++++++
         M config.def.h                        |      10 ++++++----
         M dwm.1                               |       7 +++++--
         M dwm.c                               |      49 ++++++++++++++++++++++++-------
       
       4 files changed, 177 insertions(+), 16 deletions(-)
       ---
   DIR diff --git a/config.anselm.h b/config.anselm.h
       @@ -0,0 +1,127 @@
       +/* See LICENSE file for copyright and license details. */
       +
       +/* appearance */
       +#define BORDERPX                1
       +#define FONT                        "-*-terminus-medium-r-normal-*-14-*-*-*-*-*-*-*"
       +#define NORMBORDERCOLOR                "#cccccc"
       +#define NORMBGCOLOR                "#cccccc"
       +#define NORMFGCOLOR                "#000000"
       +#define SELBORDERCOLOR                "#0066ff"
       +#define SELBGCOLOR                "#0066ff"
       +#define SELFGCOLOR                "#ffffff"
       +
       +/* bar position */
       +#define BX 0
       +#define BY 0
       +#define BW 1280
       +
       +/* window area, including floating windows */
       +#define WX 0
       +#define WY bh
       +#define WW sw
       +#define WH sh - bh
       +
       +/* master area */
       +#define MX WX
       +#define MY bh
       +#define MW 1280
       +#define MH 800 - bh
       +
       +/* tile area, might be on a different screen */
       +#define TX 1280
       +#define TY 0
       +#define TW 1680
       +#define TH 1050
       +
       +/* monocle area, might be restricted to a specific screen */
       +#define MOX MX
       +#define MOY MY
       +#define MOW MW
       +#define MOH MH
       +
       +/* tagging */
       +const char tags[][MAXTAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
       +
       +Rule rules[] = {
       +        /* class:instance:title substr        tags ref        isfloating */
       +        { "Firefox",                        tags[8],        False },
       +        { "Gimp",                        NULL,                True },
       +        { "MPlayer",                        NULL,                True },
       +        { "Acroread",                        NULL,                True },
       +};
       +
       +/* layout(s) */
       +#define RESIZEHINTS                True        /* False - respect size hints in tiled resizals */
       +#define SNAP                        32        /* snap pixel */
       +
       +Layout layouts[] = {
       +        /* symbol                function        isfloating */
       +        { "[]|",                tileh,                False }, /* first entry is default */
       +        { "[]=",                tilev,                False },
       +        { "><>",                floating,        True },
       +        { "[M]",                monocle,        True },
       +};
       +
       +/* key definitions */
       +#define MODKEY                        Mod1Mask
       +Key keys[] = {
       +        /* modifier                        key                function        argument */
       +#if ANSELM_OFFICE
       +        { MODKEY,                        XK_p,                spawn,
       +                "exec dmenu_run -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGCOLOR"' -sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"' -x 0 -y 0 -w 1280" },
       +#else
       +        { MODKEY,                        XK_p,                spawn,
       +                "exec dmenu_run -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGCOLOR"' -sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"'" },
       +#endif
       +        { MODKEY|ShiftMask,                XK_Return,        spawn, "exec uxterm" },
       +        { MODKEY,                        XK_j,                focusnext,        NULL },
       +        { MODKEY,                        XK_k,                focusprev,        NULL },
       +        { MODKEY,                        XK_r,                reapply,        NULL },
       +        { MODKEY,                        XK_Return,        zoom,                NULL },
       +        { MODKEY,                        XK_Tab,                viewprevtag,        NULL },
       +        { MODKEY,                        XK_m,                setlayout,        "[M]" },
       +        { MODKEY,                        XK_f,                setlayout,        "><>" },
       +        { MODKEY,                        XK_v,                setlayout,        "[]=" },
       +        { MODKEY,                        XK_h,                setlayout,        "[]|" },
       +        { MODKEY|ShiftMask,                XK_space,        togglefloating,        NULL },
       +        { MODKEY|ShiftMask,                XK_c,                killclient,        NULL },
       +        { MODKEY,                        XK_0,                view,                NULL },
       +        { MODKEY,                        XK_1,                view,                tags[0] },
       +        { MODKEY,                        XK_2,                view,                tags[1] },
       +        { MODKEY,                        XK_3,                view,                tags[2] },
       +        { MODKEY,                        XK_4,                view,                tags[3] },
       +        { MODKEY,                        XK_5,                view,                tags[4] },
       +        { MODKEY,                        XK_6,                view,                tags[5] },
       +        { MODKEY,                        XK_7,                view,                tags[6] },
       +        { MODKEY,                        XK_8,                view,                tags[7] },
       +        { MODKEY,                        XK_9,                view,                tags[8] },
       +        { MODKEY|ControlMask,                XK_1,                toggleview,        tags[0] },
       +        { MODKEY|ControlMask,                XK_2,                toggleview,        tags[1] },
       +        { MODKEY|ControlMask,                XK_3,                toggleview,        tags[2] },
       +        { MODKEY|ControlMask,                XK_4,                toggleview,        tags[3] },
       +        { MODKEY|ControlMask,                XK_5,                toggleview,        tags[4] },
       +        { MODKEY|ControlMask,                XK_6,                toggleview,        tags[5] },
       +        { MODKEY|ControlMask,                XK_7,                toggleview,        tags[6] },
       +        { MODKEY|ControlMask,                XK_8,                toggleview,        tags[7] },
       +        { MODKEY|ControlMask,                XK_9,                toggleview,        tags[8] },
       +        { MODKEY|ShiftMask,                XK_0,                tag,                NULL },
       +        { MODKEY|ShiftMask,                XK_1,                tag,                tags[0] },
       +        { MODKEY|ShiftMask,                XK_2,                tag,                tags[1] },
       +        { MODKEY|ShiftMask,                XK_3,                tag,                tags[2] },
       +        { MODKEY|ShiftMask,                XK_4,                tag,                tags[3] },
       +        { MODKEY|ShiftMask,                XK_5,                tag,                tags[4] },
       +        { MODKEY|ShiftMask,                XK_6,                tag,                tags[5] },
       +        { MODKEY|ShiftMask,                XK_7,                tag,                tags[6] },
       +        { MODKEY|ShiftMask,                XK_8,                tag,                tags[7] },
       +        { MODKEY|ShiftMask,                XK_9,                tag,                tags[8] },
       +        { MODKEY|ControlMask|ShiftMask,        XK_1,                toggletag,        tags[0] },
       +        { MODKEY|ControlMask|ShiftMask,        XK_2,                toggletag,        tags[1] },
       +        { MODKEY|ControlMask|ShiftMask,        XK_3,                toggletag,        tags[2] },
       +        { MODKEY|ControlMask|ShiftMask,        XK_4,                toggletag,        tags[3] },
       +        { MODKEY|ControlMask|ShiftMask,        XK_5,                toggletag,        tags[4] },
       +        { MODKEY|ControlMask|ShiftMask,        XK_6,                toggletag,        tags[5] },
       +        { MODKEY|ControlMask|ShiftMask,        XK_7,                toggletag,        tags[6] },
       +        { MODKEY|ControlMask|ShiftMask,        XK_8,                toggletag,        tags[7] },
       +        { MODKEY|ControlMask|ShiftMask,        XK_9,                toggletag,        tags[8] },
       +        { MODKEY|ShiftMask,                XK_q,                quit,                NULL },
       +};
   DIR diff --git a/config.def.h b/config.def.h
       @@ -56,9 +56,10 @@ Rule rules[] = {
        
        Layout layouts[] = {
                /* symbol                function        isfloating */
       -        { "[]=",                tile,                False }, /* first entry is default */
       -        { "><>",                floating        True },
       -        { "[M]",                monocle                True },
       +        { "[]|",                tileh,                False }, /* first entry is default */
       +        { "[]=",                tilev,                False },
       +        { "><>",                floating,        True },
       +        { "[M]",                monocle,        True },
        };
        
        /* key definitions */
       @@ -80,7 +81,8 @@ Key keys[] = {
                { MODKEY,                        XK_Tab,                viewprevtag,        NULL },
                { MODKEY,                        XK_m,                setlayout,        "[M]" },
                { MODKEY,                        XK_f,                setlayout,        "><>" },
       -        { MODKEY,                        XK_t,                setlayout,        "[]=" },
       +        { MODKEY,                        XK_v,                setlayout,        "[]=" },
       +        { MODKEY,                        XK_h,                setlayout,        "[]|" },
                { MODKEY|ShiftMask,                XK_space,        togglefloating,        NULL },
                { MODKEY|ShiftMask,                XK_c,                killclient,        NULL },
                { MODKEY,                        XK_0,                view,                NULL },
   DIR diff --git a/dwm.1 b/dwm.1
       @@ -69,8 +69,11 @@ Apply floating layout.
        .B Mod1\-m
        Apply monocle layout.
        .TP
       -.B Mod1\-t
       -Apply tiled layout.
       +.B Mod1\-v
       +Apply vertical tiled layout.
       +.TP
       +.B Mod1\-h
       +Apply horizontal tiled layout.
        .TP
        .B Mod1\-j
        Focus next window.
   DIR diff --git a/dwm.c b/dwm.c
       @@ -1,6 +1,3 @@
       -/**
       - * - allow for vstack
       - */
        /* See LICENSE file for copyright and license details.
         *
         * dynamic window manager is designed like any other X client as well. It is
       @@ -36,7 +33,6 @@
        #include <sys/select.h>
        #include <sys/types.h>
        #include <sys/wait.h>
       -#include <regex.h>
        #include <X11/cursorfont.h>
        #include <X11/keysym.h>
        #include <X11/Xatom.h>
       @@ -170,8 +166,10 @@ void spawn(const char *arg);
        void tag(const char *arg);
        unsigned int textnw(const char *text, unsigned int len);
        unsigned int textw(const char *text);
       -void tile(void);
       +void tileh(void);
       +void tilehstack(unsigned int n);
        unsigned int tilemaster(void);
       +void tilev(void);
        void tilevstack(unsigned int n);
        void togglefloating(const char *arg);
        void toggletag(const char *arg);
       @@ -1547,6 +1545,37 @@ tileresize(Client *c, int x, int y, int w, int h) {
                        resize(c, x, y, w, h, False);
        }
        
       +void
       +tileh(void) {
       +        tilehstack(tilemaster());
       +}
       +
       +void
       +tilehstack(unsigned int n) {
       +        int i, x, w;
       +        Client *c;
       +
       +        if(n == 0)
       +                return;
       +
       +        x = TX;
       +        w = (TW) / n;
       +        if(w < bh)
       +                w = TW;
       +
       +        for(i = 0, c = nexttiled(clients); c; c = nexttiled(c->next), i++)
       +                if(i > 0) {
       +                        if(i > 1 && i == n) /* remainder */
       +                                tileresize(c, x, TY, ((TX) + (TW)) - x - 2 * c->border,
       +                                              TH - 2 * c->border);
       +                        else
       +                                tileresize(c, x, TY, w - 2 * c->border,
       +                                              TH - 2 * c->border);
       +                        if(w != TW)
       +                                x = c->x + c->w + 2 * c->border;
       +                }
       +}
       +
        unsigned int
        tilemaster(void) {
                unsigned int n;
       @@ -1564,6 +1593,11 @@ tilemaster(void) {
        }
        
        void
       +tilev(void) {
       +        tilevstack(tilemaster());
       +}
       +
       +void
        tilevstack(unsigned int n) {
                int i, y, h;
                Client *c;
       @@ -1590,11 +1624,6 @@ tilevstack(unsigned int n) {
        }
        
        void
       -tile(void) {
       -        tilevstack(tilemaster());
       -}
       -
       -void
        togglefloating(const char *arg) {
                if(!sel)
                        return;