t* dwm + patches
       
   URI git clone git://git.codevoid.de/dwm-sdk
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 0e5c8198bc5a69e87b0114b81d6569188828edfa
   DIR parent 6458d72572a30d2cc4af3385755033b2cca93057
   URI Author: Anselm R. Garbe <garbeam@wmii.de>
       Date:   Fri, 14 Jul 2006 11:57:33 +0200
       
       implemented dwm reading status text from stdin 
       
       Diffstat:
         M config.mk                           |      10 +++++-----
         M dev.c                               |      15 ++++++---------
         M dwm.1                               |      16 +++++++++++++++-
         M dwm.h                               |       4 ++--
         M dwm.html                            |       4 ++--
         M main.c                              |      34 +++++++++++++++++++++++++------
       
       6 files changed, 58 insertions(+), 25 deletions(-)
       ---
   DIR diff --git a/config.mk b/config.mk
       t@@ -14,12 +14,12 @@ VERSION = 0.0
        LIBS = -L${PREFIX}/lib -L/usr/lib -lc -L${X11LIB} -lX11
        
        # Linux/BSD
       -CFLAGS = -Os -I. -I${PREFIX}/include -I/usr/include -I${X11INC} \
       -        -DVERSION=\"${VERSION}\"
       -LDFLAGS = ${LIBS}
       -#CFLAGS = -g -Wall -O2 -I. -I${PREFIX}/include -I/usr/include -I${X11INC} \
       +#CFLAGS = -Os -I. -I${PREFIX}/include -I/usr/include -I${X11INC} \
        #        -DVERSION=\"${VERSION}\"
       -#LDFLAGS = -g ${LIBS}
       +#LDFLAGS = ${LIBS}
       +CFLAGS = -g -Wall -O2 -I. -I${PREFIX}/include -I/usr/include -I${X11INC} \
       +        -DVERSION=\"${VERSION}\"
       +LDFLAGS = -g ${LIBS}
        
        
        # Solaris
   DIR diff --git a/dev.c b/dev.c
       t@@ -27,16 +27,14 @@ static Key key[] = {
                { Mod1Mask,                                XK_m,                max,                { 0 } }, 
                { Mod1Mask,                                XK_0,                view,                { .i = Tscratch } }, 
                { Mod1Mask,                                XK_1,                view,                { .i = Tdev } }, 
       -        { Mod1Mask,                                XK_2,                view,                { .i = Tirc } }, 
       -        { Mod1Mask,                                XK_3,                view,                { .i = Twww } }, 
       -        { Mod1Mask,                                XK_4,                view,                { .i = Twork } }, 
       +        { Mod1Mask,                                XK_2,                view,                { .i = Twww } }, 
       +        { Mod1Mask,                                XK_3,                view,                { .i = Twork } }, 
                { Mod1Mask,                                XK_space,        tiling,                { 0 } }, 
                { Mod1Mask|ShiftMask,        XK_space,        floating,        { 0 } }, 
                { Mod1Mask|ShiftMask,        XK_0,                ttrunc,                { .i = Tscratch } }, 
                { Mod1Mask|ShiftMask,        XK_1,                ttrunc,                { .i = Tdev } }, 
       -        { Mod1Mask|ShiftMask,        XK_2,                ttrunc,                { .i = Tirc } }, 
       -        { Mod1Mask|ShiftMask,        XK_3,                ttrunc,                { .i = Twww } }, 
       -        { Mod1Mask|ShiftMask,        XK_4,                ttrunc,                { .i = Twork } }, 
       +        { Mod1Mask|ShiftMask,        XK_2,                ttrunc,                { .i = Twww } }, 
       +        { Mod1Mask|ShiftMask,        XK_3,                ttrunc,                { .i = Twork } }, 
                { Mod1Mask|ShiftMask,        XK_c,                ckill,                { 0 } }, 
                { Mod1Mask|ShiftMask,        XK_q,                quit,                { 0 } },
                { Mod1Mask|ShiftMask,        XK_Return,        spawn,                { .argv = term } },
       t@@ -44,9 +42,8 @@ static Key key[] = {
                { Mod1Mask|ShiftMask,        XK_l,                spawn,                { .argv = xlock } },
                { ControlMask,                        XK_0,                tappend,        { .i = Tscratch } }, 
                { ControlMask,                        XK_1,                tappend,        { .i = Tdev } }, 
       -        { ControlMask,                        XK_2,                tappend,        { .i = Tirc } }, 
       -        { ControlMask,                        XK_3,                tappend,        { .i = Twww } }, 
       -        { ControlMask,                        XK_4,                tappend,        { .i = Twork } }, 
       +        { ControlMask,                        XK_2,                tappend,        { .i = Twww } }, 
       +        { ControlMask,                        XK_3,                tappend,        { .i = Twork } }, 
        };
        
        /********** CUSTOMIZE **********/
   DIR diff --git a/dwm.1 b/dwm.1
       t@@ -81,4 +81,18 @@ Append
        .B nth
        tag to cureent
        .B window
       -
       +.SS Default Mouse Bindings
       +.TP
       +.B Mod1-Button1
       +Moves current
       +.B window
       +while dragging
       +.TP
       +.B Mod1-Button2
       +Lowers current
       +.B window
       +.TP
       +.B Mod1-Button3
       +Resizes current
       +.B window
       +while dragging
   DIR diff --git a/dwm.h b/dwm.h
       t@@ -9,13 +9,13 @@
        
        #define FONT                                "-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*"
        #define BGCOLOR                                "#666699"
       -#define FGCOLOR                                "#ffffff"
       +#define FGCOLOR                                "#eeeeee"
        #define BORDERCOLOR                        "#9999CC"
        #define MASTERW                                52 /* percent */
        #define WM_PROTOCOL_DELWIN        1
        
        /* tags */
       -enum { Tscratch, Tdev, Tirc, Twww, Twork, TLast };
       +enum { Tscratch, Tdev, Twww, Twork, TLast };
        
        /********** CUSTOMIZE **********/
        
   DIR diff --git a/dwm.html b/dwm.html
       t@@ -69,7 +69,7 @@
                                clients.
                                </li>
                                <li>
       -                        dwm reads from <b>stdin</b> to print arbirary status text (like the
       +                        dwm reads from <b>stdin</b> to print arbitrary status text (like the
                                date, load, battery charge). That's much simpler than larsremote,
                                wmiir and what not...
                                </li>
       t@@ -83,7 +83,7 @@
                        </ul>
                        <h3>Screenshot</h3>
                        <p>
       -                <a href="http://wmii.de/shots/dwm-20060713.png">Click here for a screenshot</a> (20060713)
       +                <a href="http://wmii.de/shots/dwm-20060714.png">Click here for a screenshot</a> (20060714)
                        </p>
                        <h3>Development</h3>
                        <p>
   DIR diff --git a/main.c b/main.c
       t@@ -3,10 +3,12 @@
         * See LICENSE file for license details.
         */
        
       +#include <errno.h>
        #include <stdarg.h>
        #include <stdio.h>
        #include <stdlib.h>
        #include <string.h>
       +#include <unistd.h>
        
        #include <X11/cursorfont.h>
        #include <X11/Xatom.h>
       t@@ -19,7 +21,6 @@
        char *tags[TLast] = {
                [Tscratch] = "scratch",
                [Tdev] = "dev",
       -        [Tirc] = "irc",
                [Twww] = "www",
                [Twork] = "work",
        };
       t@@ -185,13 +186,13 @@ quit(Arg *arg)
        int
        main(int argc, char *argv[])
        {
       -        int i;
       +        int i, n;
       +        fd_set rd;
                XSetWindowAttributes wa;
                unsigned int mask;
                Window w;
                XEvent ev;
        
       -        /* command line args */
                for(i = 1; (i < argc) && (argv[i][0] == '-'); i++) {
                        switch (argv[i][1]) {
                        case 'v':
       t@@ -278,10 +279,31 @@ main(int argc, char *argv[])
                scan_wins();
                draw_bar();
        
       +        /* main event loop, reads status text from stdin as well */
                while(running) {
       -                XNextEvent(dpy, &ev);
       -                if(handler[ev.type])
       -                        (handler[ev.type])(&ev); /* call handler */
       +                FD_ZERO(&rd);
       +                FD_SET(0, &rd);
       +                FD_SET(ConnectionNumber(dpy), &rd);
       +
       +                i = select(ConnectionNumber(dpy) + 1, &rd, 0, 0, 0);
       +                if(i == -1 && errno == EINTR)
       +                        continue;
       +                if(i < 0)
       +                        error("select failed\n");
       +                else if(i > 0) {
       +                        if(FD_ISSET(ConnectionNumber(dpy), &rd) && XPending(dpy) > 0) {
       +                                XNextEvent(dpy, &ev);
       +                                if(handler[ev.type])
       +                                        (handler[ev.type])(&ev); /* call handler */
       +                        }
       +                        if(FD_ISSET(0, &rd)) {
       +                                i = n = 0;
       +                                while((i = getchar()) != '\n' && n < sizeof(stext) - 1)
       +                                        stext[n++] = i;
       +                                stext[n] = 0;
       +                                draw_bar();
       +                        }
       +                }
                }
        
                cleanup();