changeset 749:6692d7e7e156

added maxlayout by mitch, moved config.h to config.meillo.h, some smaller modifications
author meillo@marmaro.de
date Sun, 11 Feb 2007 17:20:22 +0100
parents 61821891835c
children 3d957a703ce2
files Makefile config.arg.h config.default.h config.h config.meillo.h draw.c dwm.h tag.c view.c
diffstat 9 files changed, 306 insertions(+), 66 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile	Sun Feb 11 12:20:54 2007 +0100
+++ b/Makefile	Sun Feb 11 17:20:22 2007 +0100
@@ -21,8 +21,8 @@
 ${OBJ}: dwm.h config.h config.mk
 
 config.h:
-	@echo creating $@ from config.default.h
-	@cp config.default.h $@
+	@echo creating $@ from config.meillo.h
+	@cp config.meillo.h $@
 
 dwm: ${OBJ}
 	@echo CC -o $@
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/config.arg.h	Sun Feb 11 17:20:22 2007 +0100
@@ -0,0 +1,94 @@
+/* (C)opyright MMVI-MMVII Anselm R. Garbe <garbeam at gmail dot com>
+ * See LICENSE file for license details.
+ */
+
+#define TAGS \
+const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", NULL };
+
+#define BORDERPX		1
+#define DEFMODE			dotile		/* dofloat */
+#define FLOATSYMBOL		"><>"
+#define TILESYMBOL		"[]="
+
+#define FONT			"-*-terminus-medium-r-*-*-14-*-*-*-*-*-*-*"
+#define NORMBORDERCOLOR		"#333"
+#define NORMBGCOLOR		"#222"
+#define NORMFGCOLOR		"#ccc"
+#define SELBORDERCOLOR		"#69c"
+#define SELBGCOLOR		"#555"
+#define SELFGCOLOR		"#fff"
+
+#define MASTER			600		/* per thousand */
+#define MODKEY			Mod1Mask
+#define NMASTER			1		/* clients in master area */
+#define SNAP			40		/* pixel */
+#define TOPBAR			True		/* False */
+
+#define KEYS \
+static Key key[] = { \
+	/* modifier			key		function	argument */ \
+	{ MODKEY|ShiftMask,		XK_Return,	spawn, \
+		{ .cmd = "exec uxterm -bg '#222' -fg '#eee' -cr '#eee' +sb -fn '"FONT"'" } }, \
+	{ MODKEY,			XK_p,		spawn, \
+		{ .cmd = "exe=\"$(lsx `echo $PATH | sed 's/:/ /g'` | sort -u " \
+			" | dmenu -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGCOLOR"' " \
+			"-sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"')\" && exec $exe" } }, \
+	{ MODKEY,			XK_j,		focusnext,	{ 0 } }, \
+	{ MODKEY,			XK_k,		focusprev,	{ 0 } }, \
+	{ MODKEY,			XK_Return,	zoom,		{ 0 } }, \
+	{ MODKEY,			XK_g,		resizemaster,	{ .i = 15 } }, \
+	{ MODKEY,			XK_s,		resizemaster,	{ .i = -15 } }, \
+	{ MODKEY,			XK_i,		incnmaster,	{ .i = 1 } }, \
+	{ MODKEY,			XK_d,		incnmaster,	{ .i = -1 } }, \
+	{ MODKEY|ShiftMask,		XK_0,		tag,		{ .i = -1 } }, \
+	{ MODKEY|ShiftMask,		XK_1,		tag,		{ .i = 0 } }, \
+	{ MODKEY|ShiftMask,		XK_2,		tag,		{ .i = 1 } }, \
+	{ MODKEY|ShiftMask,		XK_3,		tag,		{ .i = 2 } }, \
+	{ MODKEY|ShiftMask,		XK_4,		tag,		{ .i = 3 } }, \
+	{ MODKEY|ShiftMask,		XK_5,		tag,		{ .i = 4 } }, \
+	{ MODKEY|ShiftMask,		XK_6,		tag,		{ .i = 5 } }, \
+	{ MODKEY|ShiftMask,		XK_7,		tag,		{ .i = 6 } }, \
+	{ MODKEY|ShiftMask,		XK_8,		tag,		{ .i = 7 } }, \
+	{ MODKEY|ShiftMask,		XK_9,		tag,		{ .i = 8 } }, \
+	{ MODKEY|ControlMask|ShiftMask,	XK_1,		toggletag,	{ .i = 0 } }, \
+	{ MODKEY|ControlMask|ShiftMask,	XK_2,		toggletag,	{ .i = 1 } }, \
+	{ MODKEY|ControlMask|ShiftMask,	XK_3,		toggletag,	{ .i = 2 } }, \
+	{ MODKEY|ControlMask|ShiftMask,	XK_4,		toggletag,	{ .i = 3 } }, \
+	{ MODKEY|ControlMask|ShiftMask,	XK_5,		toggletag,	{ .i = 4 } }, \
+	{ MODKEY|ControlMask|ShiftMask,	XK_6,		toggletag,	{ .i = 5 } }, \
+	{ MODKEY|ControlMask|ShiftMask,	XK_7,		toggletag,	{ .i = 6 } }, \
+	{ MODKEY|ControlMask|ShiftMask,	XK_8,		toggletag,	{ .i = 7 } }, \
+	{ MODKEY|ControlMask|ShiftMask,	XK_9,		toggletag,	{ .i = 8 } }, \
+	{ MODKEY|ShiftMask,		XK_c,		killclient,	{ 0 } }, \
+	{ MODKEY,			XK_space,	togglemode,	{ 0 } }, \
+	{ MODKEY|ShiftMask,		XK_space,	togglefloat,	{ 0 } }, \
+	{ MODKEY,			XK_0,		view,		{ .i = -1 } }, \
+	{ MODKEY,			XK_1,		view,		{ .i = 0 } }, \
+	{ MODKEY,			XK_2,		view,		{ .i = 1 } }, \
+	{ MODKEY,			XK_3,		view,		{ .i = 2 } }, \
+	{ MODKEY,			XK_4,		view,		{ .i = 3 } }, \
+	{ MODKEY,			XK_5,		view,		{ .i = 4 } }, \
+	{ MODKEY,			XK_6,		view,		{ .i = 5 } }, \
+	{ MODKEY,			XK_7,		view,		{ .i = 6 } }, \
+	{ MODKEY,			XK_8,		view,		{ .i = 7 } }, \
+	{ MODKEY,			XK_9,		view,		{ .i = 8 } }, \
+	{ MODKEY|ControlMask,		XK_1,		toggleview,	{ .i = 0 } }, \
+	{ MODKEY|ControlMask,		XK_2,		toggleview,	{ .i = 1 } }, \
+	{ MODKEY|ControlMask,		XK_3,		toggleview,	{ .i = 2 } }, \
+	{ MODKEY|ControlMask,		XK_4,		toggleview,	{ .i = 3 } }, \
+	{ MODKEY|ControlMask,		XK_5,		toggleview,	{ .i = 4 } }, \
+	{ MODKEY|ControlMask,		XK_6,		toggleview,	{ .i = 5 } }, \
+	{ MODKEY|ControlMask,		XK_7,		toggleview,	{ .i = 6 } }, \
+	{ MODKEY|ControlMask,		XK_8,		toggleview,	{ .i = 7 } }, \
+	{ MODKEY|ControlMask,		XK_9,		toggleview,	{ .i = 8 } }, \
+	{ MODKEY|ShiftMask,		XK_q,		quit,		{ 0 } }, \
+};
+
+#define RULES \
+static Rule rule[] = { \
+	/* class:instance:title regex	tags regex	isfloat */ \
+	{ "Firefox.*",			"3",		False }, \
+	{ "Gimp.*",			NULL,		True }, \
+	{ "MPlayer.*",			NULL,		True }, \
+	{ "Acroread.*",			NULL,		True }, \
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/config.default.h	Sun Feb 11 17:20:22 2007 +0100
@@ -0,0 +1,90 @@
+/* (C)opyright MMVI-MMVII Anselm R. Garbe <garbeam at gmail dot com>
+ * See LICENSE file for license details.
+ */
+
+#define TAGS \
+const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", NULL };
+
+#define BORDERPX		1
+#define DEFMODE			dotile		/* dofloat */
+#define FLOATSYMBOL		"><>"
+#define TILESYMBOL		"[]="
+
+#define FONT			"-*-fixed-medium-r-normal-*-13-*-*-*-*-*-*-*"
+#define NORMBORDERCOLOR		"#dddddd"
+#define NORMBGCOLOR		"#eeeeee"
+#define NORMFGCOLOR		"#222222"
+#define SELBORDERCOLOR		"#ff0000"
+#define SELBGCOLOR		"#006699"
+#define SELFGCOLOR		"#ffffff"
+
+#define MASTER			600		/* per thousand */
+#define MODKEY			Mod1Mask
+#define NMASTER			1		/* clients in master area */
+#define SNAP			20		/* pixel */
+#define TOPBAR			True		/* False */
+
+#define KEYS \
+static Key key[] = { \
+	/* modifier			key		function	argument */ \
+	{ MODKEY|ShiftMask,		XK_Return,	spawn,		{ .cmd = "exec xterm" } }, \
+	{ MODKEY,			XK_Tab,		focusnext,	{ 0 } }, \
+	{ MODKEY|ShiftMask,		XK_Tab,		focusprev,	{ 0 } }, \
+	{ MODKEY,			XK_Return,	zoom,		{ 0 } }, \
+	{ MODKEY,			XK_g,		resizemaster,	{ .i = 15 } }, \
+	{ MODKEY,			XK_s,		resizemaster,	{ .i = -15 } }, \
+	{ MODKEY,			XK_i,		incnmaster,	{ .i = 1 } }, \
+	{ MODKEY,			XK_d,		incnmaster,	{ .i = -1 } }, \
+	{ MODKEY|ShiftMask,		XK_0,		tag,		{ .i = -1 } }, \
+	{ MODKEY|ShiftMask,		XK_1,		tag,		{ .i = 0 } }, \
+	{ MODKEY|ShiftMask,		XK_2,		tag,		{ .i = 1 } }, \
+	{ MODKEY|ShiftMask,		XK_3,		tag,		{ .i = 2 } }, \
+	{ MODKEY|ShiftMask,		XK_4,		tag,		{ .i = 3 } }, \
+	{ MODKEY|ShiftMask,		XK_5,		tag,		{ .i = 4 } }, \
+	{ MODKEY|ShiftMask,		XK_6,		tag,		{ .i = 5 } }, \
+	{ MODKEY|ShiftMask,		XK_7,		tag,		{ .i = 6 } }, \
+	{ MODKEY|ShiftMask,		XK_8,		tag,		{ .i = 7 } }, \
+	{ MODKEY|ShiftMask,		XK_9,		tag,		{ .i = 8 } }, \
+	{ MODKEY|ControlMask|ShiftMask,	XK_1,		toggletag,	{ .i = 0 } }, \
+	{ MODKEY|ControlMask|ShiftMask,	XK_2,		toggletag,	{ .i = 1 } }, \
+	{ MODKEY|ControlMask|ShiftMask,	XK_3,		toggletag,	{ .i = 2 } }, \
+	{ MODKEY|ControlMask|ShiftMask,	XK_4,		toggletag,	{ .i = 3 } }, \
+	{ MODKEY|ControlMask|ShiftMask,	XK_5,		toggletag,	{ .i = 4 } }, \
+	{ MODKEY|ControlMask|ShiftMask,	XK_6,		toggletag,	{ .i = 5 } }, \
+	{ MODKEY|ControlMask|ShiftMask,	XK_7,		toggletag,	{ .i = 6 } }, \
+	{ MODKEY|ControlMask|ShiftMask,	XK_8,		toggletag,	{ .i = 7 } }, \
+	{ MODKEY|ControlMask|ShiftMask,	XK_9,		toggletag,	{ .i = 8 } }, \
+	{ MODKEY|ShiftMask,		XK_c,		killclient,	{ 0 } }, \
+	{ MODKEY,			XK_space,	togglemode,	{ 0 } }, \
+	{ MODKEY|ShiftMask,		XK_space,	togglefloat,	{ 0 } }, \
+	{ MODKEY,			XK_0,		view,		{ .i = -1 } }, \
+	{ MODKEY,			XK_1,		view,		{ .i = 0 } }, \
+	{ MODKEY,			XK_2,		view,		{ .i = 1 } }, \
+	{ MODKEY,			XK_3,		view,		{ .i = 2 } }, \
+	{ MODKEY,			XK_4,		view,		{ .i = 3 } }, \
+	{ MODKEY,			XK_5,		view,		{ .i = 4 } }, \
+	{ MODKEY,			XK_6,		view,		{ .i = 5 } }, \
+	{ MODKEY,			XK_7,		view,		{ .i = 6 } }, \
+	{ MODKEY,			XK_8,		view,		{ .i = 7 } }, \
+	{ MODKEY,			XK_9,		view,		{ .i = 8 } }, \
+	{ MODKEY|ControlMask,		XK_1,		toggleview,	{ .i = 0 } }, \
+	{ MODKEY|ControlMask,		XK_2,		toggleview,	{ .i = 1 } }, \
+	{ MODKEY|ControlMask,		XK_3,		toggleview,	{ .i = 2 } }, \
+	{ MODKEY|ControlMask,		XK_4,		toggleview,	{ .i = 3 } }, \
+	{ MODKEY|ControlMask,		XK_5,		toggleview,	{ .i = 4 } }, \
+	{ MODKEY|ControlMask,		XK_6,		toggleview,	{ .i = 5 } }, \
+	{ MODKEY|ControlMask,		XK_7,		toggleview,	{ .i = 6 } }, \
+	{ MODKEY|ControlMask,		XK_8,		toggleview,	{ .i = 7 } }, \
+	{ MODKEY|ControlMask,		XK_9,		toggleview,	{ .i = 8 } }, \
+	{ MODKEY|ShiftMask,		XK_q,		quit,		{ 0 } }, \
+};
+
+/* Query class:instance:title for regex matching info with following command:
+ * xprop | awk -F '"' '/^WM_CLASS/ { printf("%s:%s:",$4,$2) }; /^WM_NAME/ { printf("%s\n",$2) }' */
+#define RULES \
+static Rule rule[] = { \
+	/* class:instance:title regex	tags regex	isfloat */ \
+	{ "Gimp.*",			NULL,		True }, \
+	{ "MPlayer.*",			NULL,		True }, \
+	{ "Acroread.*",			NULL,		True }, \
+};
--- a/config.h	Sun Feb 11 12:20:54 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/* (C)opyright MMVI-MMVII Anselm R. Garbe <garbeam at gmail dot com>
- * See LICENSE file for license details.
- */
-
-#define TAGS \
-const char *tags[] = { "Das Alles", "Das Nichts", NULL };
-
-#define BORDERPX		1
-#define DEFMODE			dotile		/* dofloat */
-#define FLOATSYMBOL		""
-#define TILESYMBOL		""
-
-#define FONT			"-*-terminus-medium-*-*-*-12-*-*-*-*-*-*-*"
-#define NORMBGCOLOR		"#333333"
-#define NORMFGCOLOR		"#bbbbbb"
-#define SELBGCOLOR		"#eec900"
-#define SELFGCOLOR		"#000000"
-#define NORMBORDERCOLOR		NORMBGCOLOR
-#define SELBORDERCOLOR		SELBGCOLOR
-
-#define MASTER			500		/* per thousand */
-#define MODKEY			Mod1Mask
-#define NMASTER			1		/* clients in master area */
-#define SNAP			5		/* pixel */
-#define TOPBAR			True		/* False */
-
-#define KEYS \
-static Key key[] = { \
-	/* modifier			key		function	argument */ \
-	{ MODKEY|ShiftMask,		XK_Return,	spawn,		{ .cmd = "exec urxvt" } }, \
-	{ MODKEY,			XK_F1,		viewnext,		{ .i = 0 } }, \
-	{ MODKEY,			XK_Tab,		focusnext,	{ 0 } }, \
-	{ MODKEY,			XK_asciicircum,		spawn, \
-		{ .cmd = "exe=\"$(lsx `echo $PATH | sed 's/:/ /g'` | sort -u " \
-			" | dmenu -font '"FONT"' -normbg '"NORMBGCOLOR"' -normfg '"NORMFGCOLOR"' " \
-			"-selbg '"SELBGCOLOR"' -selfg '"SELFGCOLOR"')\" && exec $exe" } }, \
-	{ MODKEY,			XK_1, 	zoom,		{ 0 } }, \
-	{ MODKEY, 		XK_2,		killclient,	{ 0 } }, \
-	{ MODKEY|ShiftMask,		XK_q,		quit,		{ 0 } }, \
-	{ MODKEY|ShiftMask,			XK_F4,		spawn,		{ .cmd = "exec sudo halt" } }, \
-	{ MODKEY,			XK_space,	togglefloat,	{ 0 } }, \
-	{ MODKEY|ShiftMask,		XK_space,	togglemode,	{ 0 } }, \
-	{ MODKEY,			XK_g,		resizemaster,	{ .i = 15 } }, \
-	{ MODKEY,			XK_s,		resizemaster,	{ .i = -15 } }, \
-	{ MODKEY,			XK_i,		incnmaster,	{ .i = 1 } }, \
-	{ MODKEY,			XK_d,		incnmaster,	{ .i = -1 } }, \
-	{ MODKEY|ShiftMask,		XK_1,		tag,		{ .i = 0 } }, \
-	{ MODKEY|ShiftMask,		XK_2,		tag,		{ .i = 1 } }, \
-};
-
-/* Query class:instance:title for regex matching info with following command:
- * xprop | awk -F '"' '/^WM_CLASS/ { printf("%s:%s:",$4,$2) }; /^WM_NAME/ { printf("%s\n",$2) }' */
-#define RULES \
-static Rule rule[] = { \
-	/* class:instance:title regex	tags regex	isfloat */ \
-	{ "URxvt.*",	  	  	"Das Nichts",	    	False }, \
-	{ "MPlayer.*",		  	NULL,	    	True }, \
-	{ "Gimp.*",	      		"Das Alles",		True }, \
-	{ ".*",		          	"Das Alles",	    	False }, \
-};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/config.meillo.h	Sun Feb 11 17:20:22 2007 +0100
@@ -0,0 +1,60 @@
+/* (C)opyright MMVI-MMVII Anselm R. Garbe <garbeam at gmail dot com>
+ * See LICENSE file for license details.
+ */
+
+#define TAGS \
+const char *tags[] = { "Das Alles", "Das Nichts", NULL };
+
+#define BORDERPX		1
+#define DEFMODE			domax		/* dotile */
+#define FLOATSYMBOL		""
+#define TILESYMBOL		""
+
+#define FONT			"-*-terminus-medium-*-*-*-12-*-*-*-*-*-*-*"
+#define NORMBGCOLOR		"#333333"
+#define NORMFGCOLOR		"#bbbbbb"
+#define SELBGCOLOR		"#eec900"
+#define SELFGCOLOR		"#000000"
+#define NORMBORDERCOLOR		NORMBGCOLOR
+#define SELBORDERCOLOR		SELBGCOLOR
+
+#define MASTER			500		/* per thousand */
+#define MODKEY			Mod1Mask
+#define NMASTER			1		/* clients in master area */
+#define SNAP			5		/* pixel */
+#define TOPBAR			True		/* False */
+
+#define KEYS \
+static Key key[] = { \
+	/* modifier			key		function	argument */ \
+	{ MODKEY|ShiftMask,		XK_Return,	spawn,		{ .cmd = "exec urxvt" } }, \
+	{ MODKEY,			XK_F1,		viewnext,		{ .i = 0 } }, \
+	{ MODKEY,			XK_Tab,		focusnext,	{ 0 } }, \
+	{ MODKEY,			XK_asciicircum,		spawn, \
+		{ .cmd = "exe=\"$(lsx `echo $PATH | sed 's/:/ /g'` | sort -u " \
+			" | dmenu -font '"FONT"' -normbg '"NORMBGCOLOR"' -normfg '"NORMFGCOLOR"' " \
+			"-selbg '"SELBGCOLOR"' -selfg '"SELFGCOLOR"')\" && exec $exe" } }, \
+	{ MODKEY,			XK_1, 	zoom,		{ 0 } }, \
+	{ MODKEY, 		XK_2,		killclient,	{ 0 } }, \
+	{ MODKEY|ShiftMask,		XK_q,		quit,		{ 0 } }, \
+	{ MODKEY|ShiftMask,			XK_F4,		spawn,		{ .cmd = "exec sudo halt" } }, \
+	{ MODKEY,			XK_space,	togglemode,	{ 0 } }, \
+	{ MODKEY|ShiftMask,		XK_space,	togglefloat,	{ 0 } }, \
+	{ MODKEY,			XK_g,		resizemaster,	{ .i = 15 } }, \
+	{ MODKEY,			XK_s,		resizemaster,	{ .i = -15 } }, \
+	{ MODKEY,			XK_i,		incnmaster,	{ .i = 1 } }, \
+	{ MODKEY,			XK_d,		incnmaster,	{ .i = -1 } }, \
+	{ MODKEY|ShiftMask,		XK_1,		tag,		{ .i = 0 } }, \
+	{ MODKEY|ShiftMask,		XK_2,		tag,		{ .i = 1 } }, \
+};
+
+/* Query class:instance:title for regex matching info with following command:
+ * xprop | awk -F '"' '/^WM_CLASS/ { printf("%s:%s:",$4,$2) }; /^WM_NAME/ { printf("%s\n",$2) }' */
+#define RULES \
+static Rule rule[] = { \
+	/* class:instance:title regex	tags regex	isfloat */ \
+	{ "URxvt.*",	  	  	"Das Nichts",	    	False }, \
+	{ "MPlayer.*",		  	NULL,	    	True }, \
+	{ "Gimp.*",	      		"Das Alles",		True }, \
+	{ ".*",		          	"Das Alles",	    	False }, \
+};
--- a/draw.c	Sun Feb 11 12:20:54 2007 +0100
+++ b/draw.c	Sun Feb 11 17:20:22 2007 +0100
@@ -90,7 +90,7 @@
 		dc.x += dc.w + 1;
 	}
 	dc.w = bmw;
-	drawtext(arrange == dofloat ? FLOATSYMBOL : TILESYMBOL, dc.norm, False, False);
+	drawtext("", dc.norm, False, False);
 	x = dc.x + dc.w;
 	dc.w = textw(stext);
 	dc.x = sw - dc.w;
--- a/dwm.h	Sun Feb 11 12:20:54 2007 +0100
+++ b/dwm.h	Sun Feb 11 17:20:22 2007 +0100
@@ -132,7 +132,7 @@
 extern void settags(Client *c, Client *trans);	/* sets tags of c */
 extern void tag(Arg *arg);			/* tags c with arg's index */
 extern void toggletag(Arg *arg);		/* toggles c tags with arg's index */
-extern void viewnext(Arg *arg);    /* view next tag(s) [code by jukka] */
+extern void viewnext(Arg *arg);    /* view next tag(s) */
 
 /* util.c */
 extern void *emallocz(unsigned int size);	/* allocates zero-initialized memory, exits on error */
@@ -143,6 +143,7 @@
 extern void detach(Client *c);			/* detaches c from global client list */
 extern void dofloat(void);			/* arranges all windows floating */
 extern void dotile(void);			/* arranges all windows tiled */
+extern void domax(void);            /* arranges all windows fullscreen */
 extern void focusnext(Arg *arg);		/* focuses next visible client, arg is ignored  */
 extern void focusprev(Arg *arg);		/* focuses previous visible client, arg is ignored */
 extern void incnmaster(Arg *arg);		/* increments nmaster with arg's index value */
--- a/tag.c	Sun Feb 11 12:20:54 2007 +0100
+++ b/tag.c	Sun Feb 11 17:20:22 2007 +0100
@@ -134,6 +134,7 @@
 	arrange();
 }
 
+/* begin code by jukka */
 void
 viewnext(Arg *arg) {
   unsigned int i;
@@ -144,3 +145,4 @@
   seltag[0] = last;
   arrange();
 }
+/* end code by jukka */
--- a/view.c	Sun Feb 11 12:20:54 2007 +0100
+++ b/view.c	Sun Feb 11 17:20:22 2007 +0100
@@ -117,6 +117,48 @@
 	restack();
 }
 
+/* begin code by mitch */
+void
+arrangemax(Client *c) {
+  if(c == sel) {
+    c->ismax = True;
+    c->x = sx;
+    c->y = bh;
+    c->w = sw - 2 * BORDERPX;
+    c->h = sh - bh - 2 * BORDERPX;
+    XRaiseWindow(dpy, c->win);
+  } else {
+    c->ismax = False;
+    XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
+    XLowerWindow(dpy, c->win);
+  }
+}
+ 
+void
+domax(void) {
+  Client *c;
+
+  for(c = clients; c; c = c->next) {
+    if(isvisible(c)) {
+      if(c->isfloat) {
+        resize(c, True);
+        continue;
+      }
+      arrangemax(c);
+      resize(c, False);
+    } else {
+      XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
+    }
+
+  }
+  if(!sel || !isvisible(sel)) {
+    for(c = stack; c && !isvisible(c); c = c->snext);
+    focus(c);
+  }
+  restack();
+}
+/* end code by mitch */
+
 void
 focusnext(Arg *arg) {
 	Client *c;
@@ -192,7 +234,17 @@
 		return;
 	if(sel->isfloat || arrange == dofloat)
 		XRaiseWindow(dpy, sel->win);
-	if(arrange != dofloat) {
+
+  /* begin code by mitch */
+  if(arrange == domax) {
+    for(c = nexttiled(clients); c; c = nexttiled(c->next)) {
+      arrangemax(c);
+      resize(c, False);
+    }
+
+  } else if (arrange == dotile) {
+  /* end code by mitch */
+
 		if(!sel->isfloat)
 			XLowerWindow(dpy, sel->win);
 		for(c = nexttiled(clients); c; c = nexttiled(c->next)) {
@@ -215,7 +267,8 @@
 
 void
 togglemode(Arg *arg) {
-	arrange = (arrange == dofloat) ? dotile : dofloat;
+  /* only toggle between tile and max - float is just available through togglefloat */
+  arrange = (arrange == dotile) ? domax : dotile;
 	if(sel)
 		arrange();
 	else