JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
applied Sanders patches
authorarg@10ksloc.org <unknown>
Tue, 1 Aug 2006 10:32:33 +0000 (12:32 +0200)
committerarg@10ksloc.org <unknown>
Tue, 1 Aug 2006 10:32:33 +0000 (12:32 +0200)
Makefile
README
client.c
config.mk
dwm.1
dwm.h
event.c
tag.c

index da0d71c..77f75e6 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -13,7 +13,6 @@ all: options dwm
 
 options:
        @echo dwm build options:
 
 options:
        @echo dwm build options:
-       @echo "LIBS     = ${LIBS}"
        @echo "CFLAGS   = ${CFLAGS}"
        @echo "LDFLAGS  = ${LDFLAGS}"
        @echo "CC       = ${CC}"
        @echo "CFLAGS   = ${CFLAGS}"
        @echo "LDFLAGS  = ${LDFLAGS}"
        @echo "CC       = ${CC}"
@@ -29,7 +28,7 @@ dwm: ${OBJ}
        @${CC} -o $@ ${OBJ} ${LDFLAGS}
 
 clean:
        @${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}
 
 dist: clean
        mkdir -p dwm-${VERSION}
diff --git a/README b/README
index 89f7dba..f7721cf 100644 (file)
--- a/README
+++ b/README
@@ -1,6 +1,6 @@
 dwm - dynamic window manager
 ----------------------------
 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
 
 
 Requirements
@@ -10,8 +10,8 @@ In order to build dwm you need the Xlib header files.
 
 Installation
 ------------
 
 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):
 
 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
 ----------------------
 
 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'`
 
     while true
     do
         echo `date` `uptime | sed 's/.*://; s/,//g'`
-        sleep 2
+        sleep 1
     done | dwm
 
     done | dwm
 
+
 Configuration
 -------------
 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).
index 45acf2e..646bcc1 100644 (file)
--- a/client.c
+++ b/client.c
@@ -244,11 +244,11 @@ manage(Window w, XWindowAttributes *wa)
        c->next = clients;
        clients = c;
 
        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);
                        GrabModeAsync, GrabModeSync, None, None);
-       XGrabButton(dpy, Button2, MODKEY, c->win, False, ButtonPressMask,
+       XGrabButton(dpy, Button2, MODKEY, c->win, False, ButtonMask,
                        GrabModeAsync, GrabModeSync, None, None);
                        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)
                        GrabModeAsync, GrabModeSync, None, None);
 
        if(!c->isfloat)
index 605f462..d4ae17e 100644 (file)
--- a/config.mk
+++ b/config.mk
@@ -7,24 +7,18 @@ MANPREFIX = ${PREFIX}/share/man
 X11INC = /usr/X11R6/include
 X11LIB = /usr/X11R6/lib
 
 X11INC = /usr/X11R6/include
 X11LIB = /usr/X11R6/lib
 
-VERSION = 0.5
-
 # includes and libs
 # 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}
 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}
 
 #LDFLAGS = -g ${LIBS}
 
-
-# Solaris
-#CFLAGS = -fast -xtarget=ultra ${INCLUDES} -DVERSION=\"${VERSION}\"
-#LIBS += -lnsl -lsocket
-
-AR = ar cr
+# compiler
 CC = cc
 CC = cc
-RANLIB = ranlib
+
+# dwm version
+VERSION = 0.6
diff --git a/dwm.1 b/dwm.1
index a023d4a..3f1f75a 100644 (file)
--- 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
 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.
 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
 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
 .TP
 .B Mod1-Shift-[0..n]
 Apply
@@ -79,14 +77,6 @@ Quit
 Start
 .B terminal
 .TP
 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
 .B Mod1-Control-[0..n]
 Append
 .B nth
diff --git a/dwm.h b/dwm.h
index d18ef20..bcdb4e3 100644 (file)
--- a/dwm.h
+++ b/dwm.h
@@ -25,9 +25,12 @@ enum { Tfnord, Tdev, Tnet, Twork, Tmisc, TLast };
 
 /* END CUSTOMIZE */
 
 
 /* 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 union Arg Arg;
 typedef struct Client Client;
-typedef enum Corner Corner;
 typedef struct DC DC;
 typedef struct Fnt Fnt;
 
 typedef struct DC DC;
 typedef struct Fnt Fnt;
 
@@ -43,7 +46,8 @@ enum { WMProtocols, WMDelete, WMLast };
 /* cursor */
 enum { CurNormal, CurResize, CurMove, CurLast };
 
 /* cursor */
 enum { CurNormal, CurResize, CurMove, CurLast };
 
-enum Corner { TopLeft, TopRight, BotLeft, BotRight };
+/* windowcorners */
+typedef enum { TopLeft, TopRight, BotLeft, BotRight } Corner;
 
 struct Fnt {
        int ascent;
 
 struct Fnt {
        int ascent;
diff --git a/event.c b/event.c
index 285b37e..17be71d 100644 (file)
--- a/event.c
+++ b/event.c
@@ -8,9 +8,6 @@
 #include <X11/keysym.h>
 #include <X11/Xatom.h>
 
 #include <X11/keysym.h>
 #include <X11/Xatom.h>
 
-#define ButtonMask      (ButtonPressMask | ButtonReleaseMask)
-#define MouseMask       (ButtonMask | PointerMotionMask)
-
 /* CUSTOMIZE */
 
 typedef struct {
 /* CUSTOMIZE */
 
 typedef struct {
@@ -20,17 +17,13 @@ typedef struct {
        Arg arg;
 } Key;
 
        Arg arg;
 } Key;
 
-/*
 const char *browse[] = { "firefox", NULL };
 const char *gimp[] = { "gimp", NULL };
 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 };
        "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 */
 
 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_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 } },
        { MODKEY|ShiftMask,     XK_g,           spawn,          { .argv = gimp } },
        { MODKEY|ShiftMask,     XK_l,           spawn,          { .argv = xlock } },
        { MODKEY|ShiftMask,     XK_w,           spawn,          { .argv = browse } },
-       */
 };
 
 /* END CUSTOMIZE */
 };
 
 /* END CUSTOMIZE */
@@ -172,6 +163,7 @@ buttonpress(XEvent *e)
                }
        }
        else if((c = getclient(ev->window))) {
                }
        }
        else if((c = getclient(ev->window))) {
+               focus(c);
                switch(ev->button) {
                default:
                        break;
                switch(ev->button) {
                default:
                        break;
@@ -247,7 +239,7 @@ enternotify(XEvent *e)
        Client *c;
        XCrossingEvent *ev = &e->xcrossing;
 
        Client *c;
        XCrossingEvent *ev = &e->xcrossing;
 
-       if(ev->mode != NotifyNormal || ev->detail == NotifyInferior)
+       if(ev->detail == NotifyInferior)
                return;
 
        if((c = getclient(ev->window)))
                return;
 
        if((c = getclient(ev->window)))
diff --git a/tag.c b/tag.c
index 13e22af..c42a760 100644 (file)
--- a/tag.c
+++ b/tag.c
@@ -67,6 +67,8 @@ dofloat(Arg *arg)
                        higher(sel);
                        focus(sel);
                }
                        higher(sel);
                        focus(sel);
                }
+               else
+                       XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
        }
        drawall();
 }
        }
        drawall();
 }
@@ -130,6 +132,8 @@ dotile(Arg *arg)
                        higher(sel);
                        focus(sel);
                }
                        higher(sel);
                        focus(sel);
                }
+               else
+                       XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
        }
        drawall();
 }
        }
        drawall();
 }