dwm

Extremely fast, small, and dynamic window manager for X
git clone git://git.janpasierb.com/dwm.git
Log | Files | Refs | README | LICENSE

commit 7b5638f61d5c8b5a76bc3f7a5962cb7490da3b6b
parent 937cabfa0aad7eef6d25e9d142a478163de200c5
Author: arg@10ksloc.org <unknown>
Date:   Tue,  1 Aug 2006 12:32:33 +0200

applied Sanders patches

Diffstat:
MMakefile | 3+--
MREADME | 17+++++++++--------
Mclient.c | 6+++---
Mconfig.mk | 24+++++++++---------------
Mdwm.1 | 24+++++++-----------------
Mdwm.h | 8++++++--
Mevent.c | 14+++-----------
Mtag.c | 4++++
8 files changed, 42 insertions(+), 58 deletions(-)

diff --git a/Makefile b/Makefile @@ -13,7 +13,6 @@ all: options dwm options: @echo dwm build options: - @echo "LIBS = ${LIBS}" @echo "CFLAGS = ${CFLAGS}" @echo "LDFLAGS = ${LDFLAGS}" @echo "CC = ${CC}" @@ -29,7 +28,7 @@ dwm: ${OBJ} @${CC} -o $@ ${OBJ} ${LDFLAGS} clean: - rm -f dwm *.o core dwm-${VERSION}.tar.gz + rm -f dwm *.o dwm-${VERSION}.tar.gz dist: clean mkdir -p dwm-${VERSION} diff --git a/README b/README @@ -1,6 +1,6 @@ dwm - dynamic window manager ---------------------------- -dwm is an extremly fast, small, and dynamic X11 window manager. +dwm is an extremely fast, small, and dynamic X11 window manager. Requirements @@ -10,8 +10,8 @@ In order to build dwm you need the Xlib header files. Installation ------------ -Edit config.mk to match your local setup. dwm is installed into -the /usr/local namespace by default. +Edit config.mk to match your local setup (dwm is installed into +the /usr/local namespace by default). Afterwards enter the following command to build and install dwm (if necessary as root): @@ -35,16 +35,17 @@ This will start dwm on display :1 of the host foo.bar. Displaying status info ---------------------- -In order to display status info in the bar, you can do following -in .xinitrc: +In order to display status info in the bar, you can do something +like this in your .xinitrc: while true do echo `date` `uptime | sed 's/.*://; s/,//g'` - sleep 2 + sleep 1 done | dwm + Configuration ------------- -The configuration of dwm is done by customizing source code, -grep for CUSTOMIZE keyword. +The configuration of dwm is done by customizing its source code +(grep for the CUSTOMIZE keyword). diff --git a/client.c b/client.c @@ -244,11 +244,11 @@ manage(Window w, XWindowAttributes *wa) c->next = clients; clients = c; - XGrabButton(dpy, Button1, MODKEY, c->win, False, ButtonPressMask, + XGrabButton(dpy, Button1, MODKEY, c->win, False, ButtonMask, GrabModeAsync, GrabModeSync, None, None); - XGrabButton(dpy, Button2, MODKEY, c->win, False, ButtonPressMask, + XGrabButton(dpy, Button2, MODKEY, c->win, False, ButtonMask, GrabModeAsync, GrabModeSync, None, None); - XGrabButton(dpy, Button3, MODKEY, c->win, False, ButtonPressMask, + XGrabButton(dpy, Button3, MODKEY, c->win, False, ButtonMask, GrabModeAsync, GrabModeSync, None, None); if(!c->isfloat) diff --git a/config.mk b/config.mk @@ -7,24 +7,18 @@ MANPREFIX = ${PREFIX}/share/man X11INC = /usr/X11R6/include X11LIB = /usr/X11R6/lib -VERSION = 0.5 - # includes and libs -LIBS = -L${PREFIX}/lib -L/usr/lib -lc -L${X11LIB} -lX11 +INCS = -I/usr/lib -I${X11INC} +LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 -# Linux/BSD -CFLAGS = -O3 -I. -I${PREFIX}/include -I/usr/include -I${X11INC} \ - -DVERSION=\"${VERSION}\" +# flags +CFLAGS = -O3 ${INCS} -DVERSION=\"${VERSION}\" LDFLAGS = ${LIBS} -#CFLAGS = -g -Wall -O2 -I. -I${PREFIX}/include -I/usr/include -I${X11INC} \ -# -DVERSION=\"${VERSION}\" +#CFLAGS = -g -Wall -O2 ${INCS} -DVERSION=\"${VERSION}\" #LDFLAGS = -g ${LIBS} - -# Solaris -#CFLAGS = -fast -xtarget=ultra ${INCLUDES} -DVERSION=\"${VERSION}\" -#LIBS += -lnsl -lsocket - -AR = ar cr +# compiler CC = cc -RANLIB = ranlib + +# dwm version +VERSION = 0.6 diff --git a/dwm.1 b/dwm.1 @@ -21,7 +21,7 @@ time. But each window may contain more than one tag, which makes it visible in several views. .P .B dwm -consists of a small status bar which reads the text displayed from standard +has a small status bar which reads the text displayed from standard input, if written. It draws 1-pixel borders around windows to indicate the focus state. Unfocused windows contain a small bar in front of the window displaying the tags and the window title. @@ -56,14 +56,12 @@ Focus tag .TP .B Mod1-space -(Re-)arrange -.B all -windows tiled -.TP -.B Mod1-Shift-space -(Re-)arrange -.B all -windows floating +Toggle between +.B tiled +and +.B floating +mode (affects +.BR "all windows" ) .TP .B Mod1-Shift-[0..n] Apply @@ -79,14 +77,6 @@ Quit Start .B terminal .TP -.B Mod1-Shift-w -Start -.B web browser -.TP -.B Mod1-Shift-l -Lock -.B screen -.TP .B Mod1-Control-[0..n] Append .B nth diff --git a/dwm.h b/dwm.h @@ -25,9 +25,12 @@ enum { Tfnord, Tdev, Tnet, Twork, Tmisc, TLast }; /* END CUSTOMIZE */ +/* mask shorthands, used in event.c and client.c */ +#define ButtonMask (ButtonPressMask | ButtonReleaseMask) +#define MouseMask (ButtonMask | PointerMotionMask) + typedef union Arg Arg; typedef struct Client Client; -typedef enum Corner Corner; typedef struct DC DC; typedef struct Fnt Fnt; @@ -43,7 +46,8 @@ enum { WMProtocols, WMDelete, WMLast }; /* cursor */ enum { CurNormal, CurResize, CurMove, CurLast }; -enum Corner { TopLeft, TopRight, BotLeft, BotRight }; +/* windowcorners */ +typedef enum { TopLeft, TopRight, BotLeft, BotRight } Corner; struct Fnt { int ascent; diff --git a/event.c b/event.c @@ -8,9 +8,6 @@ #include <X11/keysym.h> #include <X11/Xatom.h> -#define ButtonMask (ButtonPressMask | ButtonReleaseMask) -#define MouseMask (ButtonMask | PointerMotionMask) - /* CUSTOMIZE */ typedef struct { @@ -20,17 +17,13 @@ typedef struct { Arg arg; } Key; -/* const char *browse[] = { "firefox", NULL }; const char *gimp[] = { "gimp", NULL }; -*/ -const char *term[] = { "xterm", NULL }; -/* +const char *term[] = { /*"xterm", NULL };*/ "urxvt", "-tr", "+sb", "-bg", "black", "-fg", "white", "-cr", "white", "-fn", "-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*", NULL }; const char *xlock[] = { "xlock", NULL }; -*/ static Key key[] = { /* modifier key function arguments */ @@ -57,11 +50,9 @@ static Key key[] = { { MODKEY|ShiftMask, XK_c, killclient, { 0 } }, { MODKEY|ShiftMask, XK_q, quit, { 0 } }, { MODKEY|ShiftMask, XK_Return, spawn, { .argv = term } }, - /* { MODKEY|ShiftMask, XK_g, spawn, { .argv = gimp } }, { MODKEY|ShiftMask, XK_l, spawn, { .argv = xlock } }, { MODKEY|ShiftMask, XK_w, spawn, { .argv = browse } }, - */ }; /* END CUSTOMIZE */ @@ -172,6 +163,7 @@ buttonpress(XEvent *e) } } else if((c = getclient(ev->window))) { + focus(c); switch(ev->button) { default: break; @@ -247,7 +239,7 @@ enternotify(XEvent *e) Client *c; XCrossingEvent *ev = &e->xcrossing; - if(ev->mode != NotifyNormal || ev->detail == NotifyInferior) + if(ev->detail == NotifyInferior) return; if((c = getclient(ev->window))) diff --git a/tag.c b/tag.c @@ -67,6 +67,8 @@ dofloat(Arg *arg) higher(sel); focus(sel); } + else + XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime); } drawall(); } @@ -130,6 +132,8 @@ dotile(Arg *arg) higher(sel); focus(sel); } + else + XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime); } drawall(); }