Преглед изворни кода

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
 LIBS = -L${PREFIX}/lib -L/usr/lib -lc -L${X11LIB} -lX11
 
 
 # Linux/BSD
 # 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}\"
 #	-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
 # Solaris

+ 6 - 9
dev.c

@@ -27,16 +27,14 @@ static Key key[] = {
 	{ Mod1Mask,				XK_m,		max,		{ 0 } }, 
 	{ Mod1Mask,				XK_m,		max,		{ 0 } }, 
 	{ Mod1Mask,				XK_0,		view,		{ .i = Tscratch } }, 
 	{ Mod1Mask,				XK_0,		view,		{ .i = Tscratch } }, 
 	{ Mod1Mask,				XK_1,		view,		{ .i = Tdev } }, 
 	{ 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,				XK_space,	tiling,		{ 0 } }, 
 	{ Mod1Mask|ShiftMask,	XK_space,	floating,	{ 0 } }, 
 	{ Mod1Mask|ShiftMask,	XK_space,	floating,	{ 0 } }, 
 	{ Mod1Mask|ShiftMask,	XK_0,		ttrunc,		{ .i = Tscratch } }, 
 	{ Mod1Mask|ShiftMask,	XK_0,		ttrunc,		{ .i = Tscratch } }, 
 	{ Mod1Mask|ShiftMask,	XK_1,		ttrunc,		{ .i = Tdev } }, 
 	{ 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_c,		ckill,		{ 0 } }, 
 	{ Mod1Mask|ShiftMask,	XK_q,		quit,		{ 0 } },
 	{ Mod1Mask|ShiftMask,	XK_q,		quit,		{ 0 } },
 	{ Mod1Mask|ShiftMask,	XK_Return,	spawn,		{ .argv = term } },
 	{ Mod1Mask|ShiftMask,	XK_Return,	spawn,		{ .argv = term } },
@@ -44,9 +42,8 @@ static Key key[] = {
 	{ Mod1Mask|ShiftMask,	XK_l,		spawn,		{ .argv = xlock } },
 	{ Mod1Mask|ShiftMask,	XK_l,		spawn,		{ .argv = xlock } },
 	{ ControlMask,			XK_0,		tappend,	{ .i = Tscratch } }, 
 	{ ControlMask,			XK_0,		tappend,	{ .i = Tscratch } }, 
 	{ ControlMask,			XK_1,		tappend,	{ .i = Tdev } }, 
 	{ 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 **********/
 /********** CUSTOMIZE **********/

+ 15 - 1
dwm.1

@@ -81,4 +81,18 @@ Append
 .B nth
 .B nth
 tag to cureent
 tag to cureent
 .B window
 .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 FONT				"-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*"
 #define BGCOLOR				"#666699"
 #define BGCOLOR				"#666699"
-#define FGCOLOR				"#ffffff"
+#define FGCOLOR				"#eeeeee"
 #define BORDERCOLOR			"#9999CC"
 #define BORDERCOLOR			"#9999CC"
 #define MASTERW				52 /* percent */
 #define MASTERW				52 /* percent */
 #define WM_PROTOCOL_DELWIN	1
 #define WM_PROTOCOL_DELWIN	1
 
 
 /* tags */
 /* tags */
-enum { Tscratch, Tdev, Tirc, Twww, Twork, TLast };
+enum { Tscratch, Tdev, Twww, Twork, TLast };
 
 
 /********** CUSTOMIZE **********/
 /********** CUSTOMIZE **********/
 
 

+ 2 - 2
dwm.html

@@ -69,7 +69,7 @@
 			clients.
 			clients.
 			</li>
 			</li>
 			<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,
 			date, load, battery charge). That's much simpler than larsremote,
 			wmiir and what not...
 			wmiir and what not...
 			</li>
 			</li>
@@ -83,7 +83,7 @@
 		</ul>
 		</ul>
 		<h3>Screenshot</h3>
 		<h3>Screenshot</h3>
 		<p>
 		<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>
 		</p>
 		<h3>Development</h3>
 		<h3>Development</h3>
 		<p>
 		<p>

+ 28 - 6
main.c

@@ -3,10 +3,12 @@
  * See LICENSE file for license details.
  * See LICENSE file for license details.
  */
  */
 
 
+#include <errno.h>
 #include <stdarg.h>
 #include <stdarg.h>
 #include <stdio.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdlib.h>
 #include <string.h>
 #include <string.h>
+#include <unistd.h>
 
 
 #include <X11/cursorfont.h>
 #include <X11/cursorfont.h>
 #include <X11/Xatom.h>
 #include <X11/Xatom.h>
@@ -19,7 +21,6 @@
 char *tags[TLast] = {
 char *tags[TLast] = {
 	[Tscratch] = "scratch",
 	[Tscratch] = "scratch",
 	[Tdev] = "dev",
 	[Tdev] = "dev",
-	[Tirc] = "irc",
 	[Twww] = "www",
 	[Twww] = "www",
 	[Twork] = "work",
 	[Twork] = "work",
 };
 };
@@ -185,13 +186,13 @@ quit(Arg *arg)
 int
 int
 main(int argc, char *argv[])
 main(int argc, char *argv[])
 {
 {
-	int i;
+	int i, n;
+	fd_set rd;
 	XSetWindowAttributes wa;
 	XSetWindowAttributes wa;
 	unsigned int mask;
 	unsigned int mask;
 	Window w;
 	Window w;
 	XEvent ev;
 	XEvent ev;
 
 
-	/* command line args */
 	for(i = 1; (i < argc) && (argv[i][0] == '-'); i++) {
 	for(i = 1; (i < argc) && (argv[i][0] == '-'); i++) {
 		switch (argv[i][1]) {
 		switch (argv[i][1]) {
 		case 'v':
 		case 'v':
@@ -278,10 +279,31 @@ main(int argc, char *argv[])
 	scan_wins();
 	scan_wins();
 	draw_bar();
 	draw_bar();
 
 
+	/* main event loop, reads status text from stdin as well */
 	while(running) {
 	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();
 	cleanup();