Browse Source

implemented dwm reading status text from stdin

main
Anselm R. Garbe 18 years ago
parent
commit
0e5c8198bc
6 changed files with 58 additions and 25 deletions
  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 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} \
-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 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_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 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

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


+ 2
- 2
dwm.html 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>


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


Loading…
Cancel
Save