Преглед на файлове

implemented dwm reading status text from stdin

Anselm R. Garbe преди 19 години
родител
ревизия
0e5c8198bc
променени са 6 файла, в които са добавени 58 реда и са изтрити 25 реда
  1. 5 5
      config.mk
  2. 6 9
      dev.c
  3. 15 1
      dwm.1
  4. 2 2
      dwm.h
  5. 2 2
      dwm.html
  6. 28 6
      main.c

+ 5 - 5
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

+ 6 - 9
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 **********/

+ 15 - 1
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

+ 2 - 2
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 **********/
 

+ 2 - 2
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>

+ 28 - 6
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();