dwm

my fork of dwm
Index Commits Files Refs README LICENSE
commit 0e5c8198bc5a69e87b0114b81d6569188828edfa
parent 6458d72572a30d2cc4af3385755033b2cca93057
Author: Anselm R. Garbe <garbeam@wmii.de>
Date:   Fri, 14 Jul 2006 11:57:33 +0200

implemented dwm reading status text from stdin 

Diffstat:
Mconfig.mk | 10+++++-----
Mdev.c | 15++++++---------
Mdwm.1 | 16+++++++++++++++-
Mdwm.h | 4++--
Mdwm.html | 4++--
Mmain.c | 34++++++++++++++++++++++++++++------
6 files changed, 58 insertions(+), 25 deletions(-)
diff --git a/config.mk b/config.mk
@@ -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
diff --git a/dev.c b/dev.c
@@ -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 } },
@@ -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 **********/
diff --git a/dwm.1 b/dwm.1
@@ -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
diff --git a/dwm.h b/dwm.h
@@ -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 **********/
 
diff --git a/dwm.html b/dwm.html
@@ -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>
@@ -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>
diff --git a/main.c b/main.c
@@ -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>
@@ -19,7 +21,6 @@
 char *tags[TLast] = {
     [Tscratch] = "scratch",
     [Tdev] = "dev",
-    [Tirc] = "irc",
     [Twww] = "www",
     [Twork] = "work",
 };
@@ -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':
@@ -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();