t* dwm + patches
       
   URI git clone git://git.codevoid.de/dwm-sdk
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 95eae7b9d25602cf5fb25ecbc9d92ead8005c1f8
   DIR parent 59107755c8ba155501662f3230b1e5725f282c37
   URI Author: Anselm R Garbe <garbeam@gmail.com>
       Date:   Thu, 13 Mar 2008 10:11:02 +0000
       
       removed all defines of geoms, implemented setgeoms() instead, added config.anselm.h to show how I'd like to see that people edit their geoms
       Diffstat:
         M Makefile                            |       2 +-
         M config.anselm.h                     |      97 +++++++++++++++++++------------
         M config.def.h                        |      34 -------------------------------
         M dwm.c                               |      78 +++++++++++++++++++++----------
       
       4 files changed, 115 insertions(+), 96 deletions(-)
       ---
   DIR diff --git a/Makefile b/Makefile
       t@@ -35,7 +35,7 @@ clean:
        dist: clean
                @echo creating dist tarball
                @mkdir -p dwm-${VERSION}
       -        @cp -R LICENSE Makefile README config.def.h config.mk \
       +        @cp -R LICENSE Makefile README config.*.h config.mk \
                        dwm.1 ${SRC} dwm-${VERSION}
                @tar -cf dwm-${VERSION}.tar dwm-${VERSION}
                @gzip dwm-${VERSION}.tar
   DIR diff --git a/config.anselm.h b/config.anselm.h
       t@@ -10,35 +10,6 @@
        #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" };
        
       t@@ -56,24 +27,78 @@ Rule rules[] = {
        
        Layout layouts[] = {
                /* symbol                function        isfloating */
       -        { "[]|",                tileh,                False }, /* first entry is default */
       -        { "[]=",                tilev,                False },
       +        { "[]=",                tilev,                False }, /* first entry is default */
       +        { "[]|",                tileh,                False },
                { "><>",                floating,        True },
                { "[M]",                monocle,        True },
        };
        
       +void
       +setanselmgeoms(void) {
       +
       +        /* screen dimensions */
       +        sx = 0;
       +        sy = 0;
       +        sw = DisplayWidth(dpy, screen);
       +        sh = DisplayHeight(dpy, screen);
       +
       +        /* bar position */
       +        bx = sx;
       +        by = sy;
       +        bw = 1280;
       +        bh = dc.font.height + 2;
       +
       +        /* window area */
       +        wx = sx;
       +        wy = sy + bh;
       +        ww = sw;
       +        wh = sh - bh;
       +
       +        /* master area */
       +        mx = wx;
       +        my = wy;
       +        mw = 1280;
       +        mh = 800;
       +
       +        /* tile area */
       +        tx = 1280;
       +        ty = 0;
       +        tw = ww - 1280;
       +        th = wh;
       +
       +        /* monocle area */
       +        mox = mx;
       +        moy = my;
       +        mow = mw;
       +        moh = mh;
       +
       +        if(dc.drawable != 0)
       +                XFreePixmap(dpy, dc.drawable);
       +        dc.drawable = XCreatePixmap(dpy, root, bw, bh, DefaultDepth(dpy, screen));
       +        XMoveResizeWindow(dpy, barwin, bx, by, bw, bh);
       +}
       +
       +void
       +anselmgeoms(const char *arg) {
       +        setgeoms = setanselmgeoms;
       +        arrange();
       +}
       +
       +void
       +defgeoms(const char *arg) {
       +        setgeoms = setdefaultgeoms;
       +        arrange();
       +}
       +
        /* 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_a,                anselmgeoms,        NULL },
       +        { MODKEY,                        XK_d,                defgeoms,        NULL },
                { MODKEY,                        XK_j,                focusnext,        NULL },
                { MODKEY,                        XK_k,                focusprev,        NULL },
                { MODKEY,                        XK_r,                reapply,        NULL },
   DIR diff --git a/config.def.h b/config.def.h
       t@@ -10,35 +10,6 @@
        #define SELBGCOLOR                "#0066ff"
        #define SELFGCOLOR                "#ffffff"
        
       -/* bar position */
       -#define BX sx
       -#define BY sy
       -#define BW sw
       -
       -/* window area */
       -#define WX 0
       -#define WY bh
       -#define WW sw
       -#define WH sh - bh
       -
       -/* master area */
       -#define MX WX
       -#define MY WY
       -#define MW ((int)(((float)sw) * 0.6))
       -#define MH WH
       -
       -/* tile area, might be on a different screen */
       -#define TX MX + MW
       -#define TY WY
       -#define TW WW - MW
       -#define TH WH
       -
       -/* monocle area, might be restricted to a specific screen */
       -#define MOX WX
       -#define MOY WY
       -#define MOW WW
       -#define MOH WH
       -
        /* tagging */
        const char tags[][MAXTAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
        
       t@@ -66,13 +37,8 @@ Layout layouts[] = {
        #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 },
   DIR diff --git a/dwm.c b/dwm.c
       t@@ -160,6 +160,7 @@ void restack(void);
        void run(void);
        void scan(void);
        void setclientstate(Client *c, long state);
       +void setdefaultgeoms(void);
        void setlayout(const char *arg);
        void setup(void);
        void spawn(const char *arg);
       t@@ -220,6 +221,7 @@ Display *dpy;
        DC dc = {0};
        Layout *lt = NULL;
        Window root, barwin;
       +void (*setgeoms)(void) = setdefaultgeoms;
        
        /* configuration, allows nested code to access above variables */
        #include "config.h"
       t@@ -404,11 +406,7 @@ configurenotify(XEvent *e) {
                XConfigureEvent *ev = &e->xconfigure;
        
                if(ev->window == root && (ev->width != sw || ev->height != sh)) {
       -                sw = ev->width;
       -                sh = ev->height;
       -                XFreePixmap(dpy, dc.drawable);
       -                dc.drawable = XCreatePixmap(dpy, root, bw, bh, DefaultDepth(dpy, screen));
       -                XMoveResizeWindow(dpy, barwin, bx, by, bw, bh);
       +                setgeoms();
                        arrange();
                }
        }
       t@@ -1379,6 +1377,51 @@ setclientstate(Client *c, long state) {
        }
        
        void
       +setdefaultgeoms(void) {
       +
       +        /* screen dimensions */
       +        sx = 0;
       +        sy = 0;
       +        sw = DisplayWidth(dpy, screen);
       +        sh = DisplayHeight(dpy, screen);
       +
       +        /* bar position */
       +        bx = sx;
       +        by = sy;
       +        bw = sw;
       +        bh = dc.font.height + 2;
       +
       +        /* window area */
       +        wx = sx;
       +        wy = sy + bh;
       +        ww = sw;
       +        wh = sh - bh;
       +
       +        /* master area */
       +        mx = wx;
       +        my = wy;
       +        mw = ((float)sw) * 0.55;
       +        mh = wh;
       +
       +        /* tile area */
       +        tx = wx;
       +        ty = wy;
       +        tw = ww - mw;
       +        th = wh;
       +
       +        /* monocle area */
       +        mox = wx;
       +        moy = wy;
       +        mow = ww;
       +        moh = wh;
       +
       +        if(dc.drawable != 0)
       +                XFreePixmap(dpy, dc.drawable);
       +        dc.drawable = XCreatePixmap(dpy, root, bw, bh, DefaultDepth(dpy, screen));
       +        XMoveResizeWindow(dpy, barwin, bx, by, bw, bh);
       +}
       +
       +void
        setlayout(const char *arg) {
                static Layout *revert = 0;
                unsigned int i;
       t@@ -1410,10 +1453,10 @@ setup(void) {
                /* init screen */
                screen = DefaultScreen(dpy);
                root = RootWindow(dpy, screen);
       -        sx = 0;
       -        sy = 0;
       -        sw = DisplayWidth(dpy, screen);
       -        sh = DisplayHeight(dpy, screen);
       +        initfont(FONT);
       +
       +        /* apply default geometries */
       +        setgeoms();
        
                /* init atoms */
                wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);
       t@@ -1436,7 +1479,7 @@ setup(void) {
                dc.sel[ColBG] = getcolor(SELBGCOLOR);
                dc.sel[ColFG] = getcolor(SELFGCOLOR);
                initfont(FONT);
       -        dc.h = bh = dc.font.height + 2;
       +        dc.h = bh;
                dc.drawable = XCreatePixmap(dpy, root, DisplayWidth(dpy, screen), bh, DefaultDepth(dpy, screen));
                dc.gc = XCreateGC(dpy, root, 0, 0);
                XSetLineAttributes(dpy, dc.gc, 1, LineSolid, CapButt, JoinMiter);
       t@@ -1451,21 +1494,6 @@ setup(void) {
                /* init layouts */
                lt = &layouts[0];
        
       -        /* bar position */
       -        bx = BX; by = BY; bw = BW;
       -
       -        /* window area */
       -        wx = WX; wy = WY; ww = WW; wh = WH;
       -
       -        /* master area */
       -        mx = MX; my = MY; mw = MW; mh = MH;
       -
       -        /* tile area */
       -        tx = TX; ty = TY; tw = TW; th = TH;
       -
       -        /* monocle area */
       -        mox = MOX; moy = MOY; mow = MOW; moh = MOH;
       -
                /* init bar */
                for(blw = i = 0; i < LENGTH(layouts); i++) {
                        i = textw(layouts[i].symbol);