Przeglądaj źródła

implemented dwm reading status text from stdin

Anselm R. Garbe 19 lat temu
rodzic
commit
0e5c8198bc
6 zmienionych plików z 58 dodań i 25 usunięć
  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();