t* dwm + patches
       
   URI git clone git://git.codevoid.de/dwm-sdk
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 9833610356f7ce033589680fddf87000e5788774
   DIR parent de7fc0011eccb546db1278fad41b684b3abaca18
   URI Author: Anselm R. Garbe <arg@10kloc.org>
       Date:   Fri, 25 Aug 2006 07:54:49 +0200
       
       back to 3 colors
       Diffstat:
         M config.arg.h                        |       7 +++----
         M config.default.h                    |       7 +++----
         M draw.c                              |      47 +++++++++++++++----------------
         M dwm.h                               |       5 +++--
         M main.c                              |       7 +++----
       
       5 files changed, 35 insertions(+), 38 deletions(-)
       ---
   DIR diff --git a/config.arg.h b/config.arg.h
       t@@ -8,10 +8,9 @@ const char *tags[] = { "work", "net", "fnord", NULL };
        
        #define DEFMODE                        dotile /* dofloat */
        #define FONT                        "-*-terminus-medium-*-*-*-12-*-*-*-*-*-iso10646-*"
       -#define NORMBGCOLOR                "#666699"
       -#define NORMFGCOLOR                "#eeeeee"
       -#define SELBGCOLOR                "#eeeeee"
       -#define SELFGCOLOR                "#000088"
       +#define BGCOLOR                        "#666699"
       +#define FGCOLOR                        "#eeeeee"
       +#define BORDERCOLOR                "#9999CC"
        #define MODKEY                        Mod1Mask
        #define MASTERW                        60 /* percent */
        
   DIR diff --git a/config.default.h b/config.default.h
       t@@ -8,10 +8,9 @@ const char *tags[] = { "1", "2", "3", "4", "5", NULL };
        
        #define DEFMODE                        dotile /* dofloat */
        #define FONT                        "fixed"
       -#define NORMBGCOLOR                "#666699"
       -#define NORMFGCOLOR                "#eeeeee"
       -#define SELBGCOLOR                "#eeeeee"
       -#define SELFGCOLOR                "#666699"
       +#define BGCOLOR                        "#666699"
       +#define FGCOLOR                        "#eeeeee"
       +#define BORDERCOLOR                "#9999CC"
        #define MODKEY                        Mod1Mask
        #define MASTERW                        60 /* percent */
        
   DIR diff --git a/draw.c b/draw.c
       t@@ -22,15 +22,16 @@ textnw(const char *text, unsigned int len)
        }
        
        static void
       -drawtext(const char *text, unsigned int colidx, Bool highlight)
       +drawtext(const char *text, Bool invert, Bool highlight)
        {
                int x, y, w, h;
                static char buf[256];
                unsigned int len, olen;
       +        XGCValues gcv;
                XPoint points[5];
                XRectangle r = { dc.x, dc.y, dc.w, dc.h };
        
       -        XSetForeground(dpy, dc.gc, dc.bg[colidx]);
       +        XSetForeground(dpy, dc.gc, invert ? dc.fg : dc.bg);
                XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1);
                points[0].x = dc.x;
                points[0].y = dc.y;
       t@@ -42,7 +43,7 @@ drawtext(const char *text, unsigned int colidx, Bool highlight)
                points[3].y = 0;
                points[4].x = 0;
                points[4].y = -(dc.h - 1);
       -        XSetForeground(dpy, dc.gc, dc.fg[colidx]);
       +        XSetForeground(dpy, dc.gc, dc.border);
                XDrawLines(dpy, dc.drawable, dc.gc, points, 5, CoordModePrevious);
        
                if(!text)
       t@@ -73,24 +74,22 @@ drawtext(const char *text, unsigned int colidx, Bool highlight)
        
                if(w > dc.w)
                        return; /* too long */
       -        if(dc.font.set)
       +        gcv.foreground = invert ? dc.bg : dc.fg;
       +        gcv.background = invert ? dc.fg : dc.bg;
       +        if(dc.font.set) {
       +                XChangeGC(dpy, dc.gc, GCForeground | GCBackground, &gcv);
                        XmbDrawString(dpy, dc.drawable, dc.font.set, dc.gc, x, y, buf, len);
       +        }
                else {
       -                XSetFont(dpy, dc.gc, dc.font.xfont->fid);
       +                gcv.font = dc.font.xfont->fid;
       +                XChangeGC(dpy, dc.gc, GCForeground | GCBackground | GCFont, &gcv);
                        XDrawString(dpy, dc.drawable, dc.gc, x, y, buf, len);
                }
                if(highlight) {
       -                points[0].x = dc.x + 1;
       -                points[0].y = dc.y + 1;
       -                points[1].x = dc.w - 3;
       -                points[1].y = 0;
       -                points[2].x = 0;
       -                points[2].y = dc.h - 3;
       -                points[3].x = -(dc.w - 3);
       -                points[3].y = 0;
       -                points[4].x = 0;
       -                points[4].y = -(dc.h - 3);
       -                XDrawLines(dpy, dc.drawable, dc.gc, points, 5, CoordModePrevious);
       +                r.x = dc.x + 2;
       +                r.y = dc.y + 2;
       +                r.width = r.height = 3;
       +                XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1);
                }
        }
        
       t@@ -114,16 +113,16 @@ drawstatus()
        
                dc.x = dc.y = 0;
                dc.w = bw;
       -        drawtext(NULL, istile ? 1 : 0, False);
       +        drawtext(NULL, !istile, False);
        
                dc.w = 0;
                for(i = 0; i < ntags; i++) {
                        dc.x += dc.w;
                        dc.w = textw(tags[i]);
                        if(istile)
       -                        drawtext(tags[i], seltag[i] ? 0 : 1, sel && sel->tags[i]);
       +                        drawtext(tags[i], seltag[i], sel && sel->tags[i]);
                        else
       -                        drawtext(tags[i], seltag[i] ? 1 : 0, sel && sel->tags[i]);
       +                        drawtext(tags[i], !seltag[i], sel && sel->tags[i]);
                }
                x = dc.x + dc.w;
                dc.w = textw(stext);
       t@@ -132,11 +131,11 @@ drawstatus()
                        dc.x = x;
                        dc.w = bw - x;
                }
       -        drawtext(stext, istile ? 1 : 0, False);
       +        drawtext(stext, !istile, False);
        
                if(sel && ((dc.w = dc.x - x) > bh)) {
                        dc.x = x;
       -                drawtext(sel->name, istile ? 0 : 1, False);
       +                drawtext(sel->name, istile, False);
                }
                XCopyArea(dpy, dc.drawable, barwin, dc.gc, 0, 0, bw, bh, 0, 0);
                XSync(dpy, False);
       t@@ -151,15 +150,15 @@ drawtitle(Client *c)
                if(c == sel && issel) {
                        drawstatus();
                        XUnmapWindow(dpy, c->twin);
       -                XSetWindowBorder(dpy, c->win, dc.fg[1]);
       +                XSetWindowBorder(dpy, c->win, dc.fg);
                        return;
                }
        
       -        XSetWindowBorder(dpy, c->win, dc.bg[0]);
       +        XSetWindowBorder(dpy, c->win, dc.bg);
                XMapWindow(dpy, c->twin);
                dc.x = dc.y = 0;
                dc.w = c->tw;
       -        drawtext(c->name, istile ? 1 : 0, False);
       +        drawtext(c->name, !istile, False);
                XCopyArea(dpy, dc.drawable, c->twin, dc.gc, 0, 0, c->tw, c->th, 0, 0);
                XSync(dpy, False);
        }
   DIR diff --git a/dwm.h b/dwm.h
       t@@ -36,8 +36,9 @@ typedef struct {
        
        typedef struct { /* draw context */
                int x, y, w, h;
       -        unsigned long bg[2];
       -        unsigned long fg[2];
       +        unsigned long bg;
       +        unsigned long fg;
       +        unsigned long border;
                Drawable drawable;
                Fnt font;
                GC gc;
   DIR diff --git a/main.c b/main.c
       t@@ -121,10 +121,9 @@ setup()
                seltag[0] = True;
        
                /* style */
       -        dc.bg[0] = getcolor(NORMBGCOLOR);
       -        dc.fg[0] = getcolor(NORMFGCOLOR);
       -        dc.bg[1] = getcolor(SELBGCOLOR);
       -        dc.fg[1] = getcolor(SELFGCOLOR);
       +        dc.bg = getcolor(BGCOLOR);
       +        dc.fg = getcolor(FGCOLOR);
       +        dc.border = getcolor(BORDERCOLOR);
                setfont(FONT);
        
                sx = sy = 0;