diff options
| -rw-r--r-- | Makefile | 3 | ||||
| -rw-r--r-- | README | 17 | ||||
| -rw-r--r-- | client.c | 6 | ||||
| -rw-r--r-- | config.mk | 24 | ||||
| -rw-r--r-- | dwm.1 | 24 | ||||
| -rw-r--r-- | dwm.h | 8 | ||||
| -rw-r--r-- | event.c | 14 | ||||
| -rw-r--r-- | tag.c | 4 | 
8 files changed, 42 insertions, 58 deletions
| @@ -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} @@ -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). @@ -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) @@ -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 @@ -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 @@ -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; @@ -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))) @@ -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();  } | 
