t* dwm + patches
       
   URI git clone git://git.codevoid.de/dwm-sdk
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit cd8d8e120857329800e93e22572e35560d1b0e80
   DIR parent 04eb016e782743ec88f150ec6f5389703bed3ce2
   URI Author: arg@10ksloc.org <unknown>
       Date:   Fri, 21 Jul 2006 07:37:52 +0200
       
       sanitization of several clunky stuff, removed heretag (rarely of use), simplified pop(), changed shortcuts to always contain MODKEY
       
       Diffstat:
         M client.c                            |      17 +++++++++++++++--
         M dwm.h                               |      22 ++++++++++------------
         M event.c                             |      23 +++++++++++------------
         M tag.c                               |      26 ++++----------------------
       
       4 files changed, 40 insertions(+), 48 deletions(-)
       ---
   DIR diff --git a/client.c b/client.c
       t@@ -476,7 +476,7 @@ unmanage(Client *c)
        void
        zoom(Arg *arg)
        {
       -        Client *c;
       +        Client *c, **l;
        
                if(!sel)
                        return;
       t@@ -486,6 +486,19 @@ zoom(Arg *arg)
                                sel = c;
                }
        
       -        pop(sel);
       +        /* pop */
       +        for(l = &clients; *l && *l != sel; l = &(*l)->next);
       +        if(sel->prev)
       +                sel->prev->next = sel->next;
       +        if(sel->next)
       +                sel->next->prev = sel->prev;
       +        *l = sel->next;
       +
       +        sel->prev = NULL;
       +        if(clients)
       +                clients->prev = sel;
       +        sel->next = clients;
       +        clients = sel;
       +        arrange(NULL);
                focus(sel);
        }
   DIR diff --git a/dwm.h b/dwm.h
       t@@ -7,21 +7,21 @@
        
        /* CUSTOMIZE */
        
       -#define FONT                                "-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*"
       -#define BGCOLOR                                "#0a2c2d"
       -#define FGCOLOR                                "#ddeeee"
       -#define BORDERCOLOR                        "#176164"
       -#define MODKEY                                 Mod1Mask /* Mod4Mask */
       +#define FONT                        "-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*"
       +#define BGCOLOR                        "#0a2c2d"
       +#define FGCOLOR                        "#ddeeee"
       +#define BORDERCOLOR                "#176164"
       +#define MODKEY                        Mod1Mask /* Mod4Mask */
        /*
       -#define BGCOLOR                                "#666699"
       -#define FGCOLOR                                "#eeeeee"
       -#define BORDERCOLOR                        "#9999CC"
       +#define BGCOLOR                        "#666699"
       +#define FGCOLOR                        "#eeeeee"
       +#define BORDERCOLOR                "#9999CC"
        */
       -#define MASTERW                                52 /* percent */
       +#define MASTERW                        52 /* percent */
        #define WM_PROTOCOL_DELWIN        1
        
        /* tags */
       -enum { Tscratch, Tdev, Twww, Twork, TLast };
       +enum { Tfnord, Tdev, Tnet, Twork, Tmisc, TLast };
        
        /* END CUSTOMIZE */
        
       t@@ -105,7 +105,6 @@ extern void higher(Client *c);
        extern void killclient(Arg *arg);
        extern void lower(Client *c);
        extern void manage(Window w, XWindowAttributes *wa);
       -extern void pop(Client *c);
        extern void resize(Client *c, Bool sizehints, Corner sticky);
        extern void setsize(Client *c);
        extern void settitle(Client *c);
       t@@ -136,7 +135,6 @@ extern void dofloat(Arg *arg);
        extern void dotile(Arg *arg);
        extern Client *getnext(Client *c, unsigned int t);
        extern Client *getprev(Client *c);
       -extern void heretag(Arg *arg);
        extern void replacetag(Arg *arg);
        extern void settags(Client *c);
        extern void togglemode(Arg *arg);
   DIR diff --git a/event.c b/event.c
       t@@ -30,27 +30,26 @@ const char *xlock[] = { "xlock", NULL };
        
        static Key key[] = {
                /* modifier                key                function        arguments */
       -        { ControlMask,                XK_0,                appendtag,        { .i = Tscratch } }, 
       -        { ControlMask,                XK_1,                appendtag,        { .i = Tdev } }, 
       -        { ControlMask,                XK_2,                appendtag,        { .i = Twww } }, 
       -        { ControlMask,                XK_3,                appendtag,        { .i = Twork } }, 
       -        { MODKEY,                XK_0,                view,                { .i = Tscratch } }, 
       +        { MODKEY,                XK_0,                view,                { .i = Tfnord } }, 
                { MODKEY,                XK_1,                view,                { .i = Tdev } }, 
       -        { MODKEY,                XK_2,                view,                { .i = Twww } }, 
       +        { MODKEY,                XK_2,                view,                { .i = Tnet } }, 
                { MODKEY,                XK_3,                view,                { .i = Twork } }, 
       +        { MODKEY,                XK_4,                view,                { .i = Tmisc} }, 
                { MODKEY,                XK_j,                focusnext,        { 0 } }, 
                { MODKEY,                XK_k,                focusprev,        { 0 } },
                { MODKEY,                XK_m,                togglemax,        { 0 } }, 
                { MODKEY,                XK_space,        togglemode,        { 0 } }, 
                { MODKEY,                XK_Return,        zoom,                { 0 } },
       -        { ControlMask|ShiftMask,XK_0,                heretag,        { .i = Tscratch } }, 
       -        { ControlMask|ShiftMask,XK_1,                heretag,        { .i = Tdev } }, 
       -        { ControlMask|ShiftMask,XK_2,                heretag,        { .i = Twww } }, 
       -        { ControlMask|ShiftMask,XK_3,                heretag,        { .i = Twork } }, 
       -        { MODKEY|ShiftMask,        XK_0,                replacetag,        { .i = Tscratch } }, 
       +        { MODKEY|ControlMask,        XK_0,                appendtag,        { .i = Tfnord } }, 
       +        { MODKEY|ControlMask,        XK_1,                appendtag,        { .i = Tdev } }, 
       +        { MODKEY|ControlMask,        XK_2,                appendtag,        { .i = Tnet } }, 
       +        { MODKEY|ControlMask,        XK_3,                appendtag,        { .i = Twork } }, 
       +        { MODKEY|ControlMask,        XK_4,                appendtag,        { .i = Tmisc } }, 
       +        { MODKEY|ShiftMask,        XK_0,                replacetag,        { .i = Tfnord } }, 
                { MODKEY|ShiftMask,        XK_1,                replacetag,        { .i = Tdev } }, 
       -        { MODKEY|ShiftMask,        XK_2,                replacetag,        { .i = Twww } }, 
       +        { MODKEY|ShiftMask,        XK_2,                replacetag,        { .i = Tnet } }, 
                { MODKEY|ShiftMask,        XK_3,                replacetag,        { .i = Twork } }, 
       +        { MODKEY|ShiftMask,        XK_4,                replacetag,        { .i = Tmisc } }, 
                { MODKEY|ShiftMask,        XK_c,                killclient,        { 0 } }, 
                { MODKEY|ShiftMask,        XK_g,                spawn,                { .argv = gimp } },
                { MODKEY|ShiftMask,        XK_l,                spawn,                { .argv = xlock } },
   DIR diff --git a/tag.c b/tag.c
       t@@ -21,15 +21,16 @@ typedef struct {
        /* CUSTOMIZE */ 
        static Rule rule[] = {
                /* class:instance        tags                                isfloat */
       -        { "Firefox.*",                { [Twww] = "www" },                False },
       +        { "Firefox.*",                { [Tnet] = "net" },                False },
                { "Gimp.*",                { 0 },                                True},
        };
        
        char *tags[TLast] = {
       -        [Tscratch] = "scratch",
       +        [Tfnord] = "fnord",
                [Tdev] = "dev",
       -        [Twww] = "www",
       +        [Tnet] = "net",
                [Twork] = "work",
       +        [Tmisc] = "misc",
        };
        
        void (*arrange)(Arg *) = dotile;
       t@@ -148,25 +149,6 @@ getprev(Client *c)
        }
        
        void
       -heretag(Arg *arg)
       -{
       -        int i;
       -        Client *c;
       -
       -        if(arg->i == tsel)
       -                return;
       -
       -        if(!(c = getnext(clients, arg->i)))
       -                return;
       -
       -        for(i = 0; i < TLast; i++)
       -                c->tags[i] = NULL;
       -        c->tags[tsel] = tags[tsel];
       -        pop(c);
       -        focus(c);
       -}
       -
       -void
        replacetag(Arg *arg)
        {
                int i;