implemented dwm reading status text from stdin

keyboard
Anselm R. Garbe 19 years ago
parent 6458d72572
commit 0e5c8198bc
  1. 10
      config.mk
  2. 15
      dev.c
  3. 16
      dwm.1
  4. 4
      dwm.h
  5. 4
      dwm.html
  6. 28
      main.c

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

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

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

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

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

@ -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,11 +279,32 @@ 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) {
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); XNextEvent(dpy, &ev);
if(handler[ev.type]) if(handler[ev.type])
(handler[ev.type])(&ev); /* call handler */ (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();
XCloseDisplay(dpy); XCloseDisplay(dpy);

Loading…
Cancel
Save