implemented dwm reading status text from stdin

This commit is contained in:
Anselm R. Garbe 2006-07-14 11:57:33 +02:00
parent 6458d72572
commit 0e5c8198bc
6 changed files with 58 additions and 25 deletions

View file

@ -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} \ #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} \
# -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

15
dev.c
View file

@ -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_2, view, { .i = Twww } },
{ Mod1Mask, XK_3, view, { .i = Twww } }, { Mod1Mask, XK_3, view, { .i = Twork } },
{ Mod1Mask, XK_4, 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_2, ttrunc, { .i = Twww } },
{ Mod1Mask|ShiftMask, XK_3, ttrunc, { .i = Twww } }, { Mod1Mask|ShiftMask, XK_3, ttrunc, { .i = Twork } },
{ Mod1Mask|ShiftMask, XK_4, 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_2, tappend, { .i = Twww } },
{ ControlMask, XK_3, tappend, { .i = Twww } }, { ControlMask, XK_3, tappend, { .i = Twork } },
{ ControlMask, XK_4, tappend, { .i = Twork } },
}; };
/********** CUSTOMIZE **********/ /********** CUSTOMIZE **********/

16
dwm.1
View file

@ -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

4
dwm.h
View file

@ -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 **********/

View file

@ -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>

34
main.c
View file

@ -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); FD_ZERO(&rd);
if(handler[ev.type]) FD_SET(0, &rd);
(handler[ev.type])(&ev); /* call handler */ 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();