tcleaned up code - dwm - [fork] customized build of dwm, the dynamic window manager
 (HTM) git clone git://src.adamsgaard.dk/dwm
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit dc5d967ee61046f899b3b49daeb9268c8161844a
 (DIR) parent fe3756c8e17f64d9b2aba93db28cb780f303f606
 (HTM) Author: arg@10ksloc.org <unknown>
       Date:   Thu, 20 Jul 2006 12:18:06 +0200
       
       cleaned up code
       
       Diffstat:
         M client.c                            |      16 ++++++++++------
         M config.mk                           |       2 +-
         M draw.c                              |       6 ++++--
         M dwm.1                               |       2 +-
         M event.c                             |      82 ++++++++++++++-----------------
         M main.c                              |      43 ++++++++++++-------------------
         M tag.c                               |       9 +++++----
         M util.c                              |       3 +++
       
       8 files changed, 78 insertions(+), 85 deletions(-)
       ---
 (DIR) diff --git a/client.c b/client.c
       t@@ -97,6 +97,7 @@ Client *
        getclient(Window w)
        {
                Client *c;
       +
                for(c = clients; c; c = c->next)
                        if(c->win == w)
                                return c;
       t@@ -107,6 +108,7 @@ Client *
        getctitle(Window w)
        {
                Client *c;
       +
                for(c = clients; c; c = c->next)
                        if(c->title == w)
                                return c;
       t@@ -198,8 +200,8 @@ manage(Window w, XWindowAttributes *wa)
        {
                int diff;
                Client *c;
       -        XSetWindowAttributes twa;
                Window trans;
       +        XSetWindowAttributes twa;
        
                c = emallocz(sizeof(Client));
                c->win = w;
       t@@ -278,6 +280,7 @@ void
        pop(Client *c)
        {
                Client **l;
       +
                for(l = &clients; *l && *l != c; l = &(*l)->next);
                *l = c->next;
        
       t@@ -289,9 +292,9 @@ pop(Client *c)
        void
        resize(Client *c, Bool inc, Corner sticky)
        {
       -        XConfigureEvent e;
       -        int right = c->x + c->w;
                int bottom = c->y + c->h;
       +        int right = c->x + c->w;
       +        XConfigureEvent e;
        
                if(inc) {
                        if(c->incw)
       t@@ -337,8 +340,9 @@ resize(Client *c, Bool inc, Corner sticky)
        void
        setsize(Client *c)
        {
       -        XSizeHints size;
                long msize;
       +        XSizeHints size;
       +
                if(!XGetWMNormalHints(dpy, c->win, &size, &msize) || !size.flags)
                        size.flags = PSize;
                c->flags = size.flags;
       t@@ -375,9 +379,9 @@ setsize(Client *c)
        void
        settitle(Client *c)
        {
       -        XTextProperty name;
       -        int n;
                char **list = NULL;
       +        int n;
       +        XTextProperty name;
        
                name.nitems = 0;
                c->name[0] = 0;
 (DIR) diff --git a/config.mk b/config.mk
       t@@ -7,7 +7,7 @@ MANPREFIX = ${PREFIX}/share/man
        X11INC = /usr/X11R6/include
        X11LIB = /usr/X11R6/lib
        
       -VERSION = 0.4
       +VERSION = 0.5
        
        # includes and libs
        LIBS = -L${PREFIX}/lib -L/usr/lib -lc -L${X11LIB} -lX11
 (DIR) diff --git a/draw.c b/draw.c
       t@@ -14,6 +14,7 @@ static void
        drawborder(void)
        {
                XPoint points[5];
       +
                XSetLineAttributes(dpy, dc.gc, 1, LineSolid, CapButt, JoinMiter);
                XSetForeground(dpy, dc.gc, dc.border);
                points[0].x = dc.x;
       t@@ -33,6 +34,7 @@ static unsigned int
        textnw(char *text, unsigned int len)
        {
                XRectangle r;
       +
                if(dc.font.set) {
                        XmbTextExtents(dc.font.set, text, len, NULL, &r);
                        return r.width;
       t@@ -44,8 +46,8 @@ static void
        drawtext(const char *text, Bool invert, Bool border)
        {
                int x, y, w, h;
       -        unsigned int len;
                static char buf[256];
       +        unsigned int len;
                XGCValues gcv;
                XRectangle r = { dc.x, dc.y, dc.w, dc.h };
        
       t@@ -170,8 +172,8 @@ drawtitle(Client *c)
        unsigned long
        getcolor(const char *colstr)
        {
       -        XColor color;
                Colormap cmap = DefaultColormap(dpy, screen);
       +        XColor color;
        
                XAllocNamedColor(dpy, cmap, colstr, &color, &color);
                return color.pixel;
 (DIR) diff --git a/dwm.1 b/dwm.1
       t@@ -1,4 +1,4 @@
       -.TH DWM 1 dwm-0.4
       +.TH DWM 1 dwm-0.5
        .SH NAME
        dwm \- dynamic window manager
        .SH SYNOPSIS
 (DIR) diff --git a/event.c b/event.c
       t@@ -20,50 +20,44 @@ typedef struct {
                Arg arg;
        } Key;
        
       -/*
        const char *browse[] = { "firefox", NULL };
        const char *gimp[] = { "gimp", NULL };
       -*/
       -const char *term[] = { "xterm", NULL };
       -/*
       +const char *term[] = { 
                "urxvtc", "-tr", "+sb", "-bg", "black", "-fg", "white", "-cr", "white",
                "-fn", "-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*", NULL
        };
       -coonst char *xlock[] = { "xlock", NULL };
       -*/
       +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_1,                view,                { .i = Tdev } }, 
       -        { MODKEY,                                XK_2,                view,                { .i = Twww } }, 
       -        { MODKEY,                                XK_3,                view,                { .i = Twork } }, 
       -        { MODKEY,                                XK_j,                focusnext,                { 0 } }, 
       -        { MODKEY,                                XK_k,                focusprev,                { 0 } },
       -        { MODKEY,                                XK_m,                maximize,                { 0 } }, 
       -        { MODKEY,                                XK_space,        dotile,                { 0 } }, 
       -        { MODKEY,                                XK_Return,        zoom,                { 0 } },
       +        /* 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_1,                view,                { .i = Tdev } }, 
       +        { MODKEY,                XK_2,                view,                { .i = Twww } }, 
       +        { MODKEY,                XK_3,                view,                { .i = Twork } }, 
       +        { MODKEY,                XK_j,                focusnext,        { 0 } }, 
       +        { MODKEY,                XK_k,                focusprev,        { 0 } },
       +        { MODKEY,                XK_m,                maximize,        { 0 } }, 
       +        { MODKEY,                XK_space,        dotile,                { 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|ShiftMask,                XK_1,                replacetag,                { .i = Tdev } }, 
       -        { MODKEY|ShiftMask,                XK_2,                replacetag,                { .i = Twww } }, 
       -        { MODKEY|ShiftMask,                XK_3,                replacetag,                { .i = Twork } }, 
       -        { MODKEY|ShiftMask,                XK_c,                killclient,                { 0 } }, 
       -        /*
       -        { MODKEY|ShiftMask,                XK_g,                spawn,                { .argv = gimp } },
       -        { MODKEY|ShiftMask,                XK_l,                spawn,                { .argv = xlock } },
       -        */
       -        { MODKEY|ShiftMask,                XK_q,                quit,                { 0 } },
       -        { MODKEY|ShiftMask,                XK_space,        dofloat,        { 0 } }, 
       -        /*{ MODKEY|ShiftMask,                XK_w,                spawn,                { .argv = browse } },*/
       -        { MODKEY|ShiftMask,                XK_Return,        spawn,                { .argv = term } },
       +        { MODKEY|ShiftMask,        XK_0,                replacetag,        { .i = Tscratch } }, 
       +        { MODKEY|ShiftMask,        XK_1,                replacetag,        { .i = Tdev } }, 
       +        { MODKEY|ShiftMask,        XK_2,                replacetag,        { .i = Twww } }, 
       +        { MODKEY|ShiftMask,        XK_3,                replacetag,        { .i = Twork } }, 
       +        { MODKEY|ShiftMask,        XK_c,                killclient,        { 0 } }, 
       +        { MODKEY|ShiftMask,        XK_g,                spawn,                { .argv = gimp } },
       +        { MODKEY|ShiftMask,        XK_l,                spawn,                { .argv = xlock } },
       +        { MODKEY|ShiftMask,        XK_q,                quit,                { 0 } },
       +        { MODKEY|ShiftMask,        XK_space,        dofloat,        { 0 } }, 
       +        { MODKEY|ShiftMask,        XK_w,                spawn,                { .argv = browse } },
       +        { MODKEY|ShiftMask,        XK_Return,        spawn,                { .argv = term } },
        };
        
        /* static */
       t@@ -71,15 +65,15 @@ static Key key[] = {
        static void
        movemouse(Client *c)
        {
       -        XEvent ev;
                int x1, y1, ocx, ocy, di;
                unsigned int dui;
                Window dummy;
       +        XEvent ev;
        
                ocx = c->x;
                ocy = c->y;
                if(XGrabPointer(dpy, root, False, MouseMask, GrabModeAsync, GrabModeAsync,
       -                                None, cursor[CurMove], CurrentTime) != GrabSuccess)
       +                        None, cursor[CurMove], CurrentTime) != GrabSuccess)
                        return;
                XQueryPointer(dpy, root, &dummy, &dummy, &x1, &y1, &di, &di, &dui);
                for(;;) {
       t@@ -105,9 +99,9 @@ movemouse(Client *c)
        static void
        resizemouse(Client *c)
        {
       -        XEvent ev;
                int ocx, ocy;
                Corner sticky;
       +        XEvent ev;
        
                ocx = c->x;
                ocy = c->y;
       t@@ -146,8 +140,8 @@ buttonpress(XEvent *e)
        {
                int x;
                Arg a;
       -        XButtonPressedEvent *ev = &e->xbutton;
                Client *c;
       +        XButtonPressedEvent *ev = &e->xbutton;
        
                if(barwin == ev->window) {
                        switch(ev->button) {
       t@@ -201,9 +195,9 @@ buttonpress(XEvent *e)
        static void
        configurerequest(XEvent *e)
        {
       +        Client *c;
                XConfigureRequestEvent *ev = &e->xconfigurerequest;
                XWindowChanges wc;
       -        Client *c;
        
                ev->value_mask &= ~CWSibling;
                if((c = getclient(ev->window))) {
       t@@ -248,8 +242,8 @@ destroynotify(XEvent *e)
        static void
        enternotify(XEvent *e)
        {
       -        XCrossingEvent *ev = &e->xcrossing;
                Client *c;
       +        XCrossingEvent *ev = &e->xcrossing;
        
                if(ev->mode != NotifyNormal || ev->detail == NotifyInferior)
                        return;
       t@@ -263,8 +257,8 @@ enternotify(XEvent *e)
        static void
        expose(XEvent *e)
        {
       -        XExposeEvent *ev = &e->xexpose;
                Client *c;
       +        XExposeEvent *ev = &e->xexpose;
        
                if(ev->count == 0) {
                        if(barwin == ev->window)
       t@@ -277,10 +271,10 @@ expose(XEvent *e)
        static void
        keypress(XEvent *e)
        {
       -        XKeyEvent *ev = &e->xkey;
                static unsigned int len = key ? sizeof(key) / sizeof(key[0]) : 0;
                unsigned int i;
                KeySym keysym;
       +        XKeyEvent *ev = &e->xkey;
        
                keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0);
                for(i = 0; i < len; i++)
       t@@ -303,8 +297,8 @@ leavenotify(XEvent *e)
        static void
        maprequest(XEvent *e)
        {
       -        XMapRequestEvent *ev = &e->xmaprequest;
                static XWindowAttributes wa;
       +        XMapRequestEvent *ev = &e->xmaprequest;
        
                if(!XGetWindowAttributes(dpy, ev->window, &wa))
                        return;
       t@@ -322,9 +316,9 @@ maprequest(XEvent *e)
        static void
        propertynotify(XEvent *e)
        {
       -        XPropertyEvent *ev = &e->xproperty;
       -        Window trans;
                Client *c;
       +        Window trans;
       +        XPropertyEvent *ev = &e->xproperty;
        
                if(ev->state == PropertyDelete)
                        return; /* ignore */
 (DIR) diff --git a/main.c b/main.c
       t@@ -17,8 +17,8 @@
        
        /* static */
        
       -static Bool otherwm;
        static int (*xerrorxlib)(Display *, XErrorEvent *);
       +static Bool otherwm;
        
        static void
        cleanup()
       t@@ -34,9 +34,8 @@ static void
        scan()
        {
                unsigned int i, num;
       -        Window *wins;
       +        Window *wins, d1, d2;
                XWindowAttributes wa;
       -        Window d1, d2;
        
                if(XQueryTree(dpy, root, &d1, &d2, &wins, &num)) {
                        for(i = 0; i < num; i++) {
       t@@ -55,10 +54,9 @@ scan()
        static int
        win_property(Window w, Atom a, Atom t, long l, unsigned char **prop)
        {
       -        Atom real;
       -        int format;
       +        int status, format;
                unsigned long res, extra;
       -        int status;
       +        Atom real;
        
                status = XGetWindowProperty(dpy, w, a, 0L, l, False, t, &real, &format,
                                &res, &extra, prop);
       t@@ -101,10 +99,10 @@ Window root, barwin;
        int
        getproto(Window w)
        {
       -        unsigned char *protocols;
       -        long res;
                int protos = 0;
                int i;
       +        long res;
       +        unsigned char *protocols;
        
                res = win_property(w, wmatom[WMProtocols], XA_ATOM, 20L, &protocols);
                if(res <= 0) {
       t@@ -148,21 +146,15 @@ int
        xerror(Display *dpy, XErrorEvent *ee)
        {
                if(ee->error_code == BadWindow
       -                        || (ee->request_code == X_SetInputFocus
       -                                && ee->error_code == BadMatch)
       -                        || (ee->request_code == X_PolyText8
       -                                && ee->error_code == BadDrawable)
       -                        || (ee->request_code == X_PolyFillRectangle
       -                                && ee->error_code == BadDrawable)
       -                        || (ee->request_code == X_PolySegment
       -                                && ee->error_code == BadDrawable)
       -                        || (ee->request_code == X_ConfigureWindow
       -                                && ee->error_code == BadMatch)
       -                        || (ee->request_code == X_GrabKey
       -                                && ee->error_code == BadAccess))
       +        || (ee->request_code == X_SetInputFocus && ee->error_code == BadMatch)
       +        || (ee->request_code == X_PolyText8 && ee->error_code == BadDrawable)
       +        || (ee->request_code == X_PolyFillRectangle && ee->error_code == BadDrawable)
       +        || (ee->request_code == X_PolySegment && ee->error_code == BadDrawable)
       +        || (ee->request_code == X_ConfigureWindow && ee->error_code == BadMatch)
       +        || (ee->request_code == X_GrabKey && ee->error_code == BadAccess))
                        return 0;
                fprintf(stderr, "dwm: fatal error: request code=%d, error code=%d\n",
       -                        ee->request_code, ee->error_code);
       +                ee->request_code, ee->error_code);
                return xerrorxlib(dpy, ee); /* may call exit() */
        }
        
       t@@ -170,12 +162,12 @@ int
        main(int argc, char *argv[])
        {
                int i, n;
       -        fd_set rd;
       -        XSetWindowAttributes wa;
                unsigned int mask;
       +        fd_set rd;
                Bool readstdin = True;
                Window w;
                XEvent ev;
       +        XSetWindowAttributes wa;
        
                for(i = 1; (i < argc) && (argv[i][0] == '-'); i++) {
                        switch (argv[i][1]) {
       t@@ -254,14 +246,11 @@ main(int argc, char *argv[])
        
                issel = XQueryPointer(dpy, root, &w, &w, &i, &i, &i, &i, &mask);
        
       -        wa.event_mask = SubstructureRedirectMask | EnterWindowMask \
       -                                        | LeaveWindowMask;
       +        wa.event_mask = SubstructureRedirectMask | EnterWindowMask | LeaveWindowMask;
                wa.cursor = cursor[CurNormal];
       -
                XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa);
        
                strcpy(stext, "dwm-"VERSION);
       -
                scan();
        
                /* main event loop, reads status text from stdin as well */
 (DIR) diff --git a/tag.c b/tag.c
       t@@ -20,9 +20,9 @@ typedef struct {
        
        /* CUSTOMIZE */ 
        static Rule rule[] = {
       -        /* class                        instance        tags                isfloat */
       -        { "Firefox.*",        { [Twww] = "www" },                        False },
       -        { "Gimp.*",                { 0 },                                                True},
       +        /* class:instance        tags                                isfloat */
       +        { "Firefox.*",                { [Twww] = "www" },                False },
       +        { "Gimp.*",                { 0 },                                True},
        };
        
        /* extern */
       t@@ -71,8 +71,8 @@ dofloat(Arg *arg)
        void
        dotile(Arg *arg)
        {
       -        Client *c;
                int n, i, w, h;
       +        Client *c;
        
                w = sw - mw;
                arrange = dotile;
       t@@ -161,6 +161,7 @@ void
        replacetag(Arg *arg)
        {
                int i;
       +
                if(!sel)
                        return;
        
 (DIR) diff --git a/util.c b/util.c
       t@@ -26,6 +26,7 @@ void *
        emallocz(unsigned int size)
        {
                void *res = calloc(1, size);
       +
                if(!res)
                        bad_malloc(size);
                return res;
       t@@ -34,6 +35,7 @@ emallocz(unsigned int size)
        void
        eprint(const char *errstr, ...) {
                va_list ap;
       +
                va_start(ap, errstr);
                vfprintf(stderr, errstr, ap);
                va_end(ap);
       t@@ -44,6 +46,7 @@ void
        spawn(Arg *arg)
        {
                char **argv = (char **)arg->argv;
       +
                if(!argv || !argv[0])
                        return;
                if(fork() == 0) {