dwm-meillo

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 diff
     1.1 --- a/Makefile	Sun Feb 11 12:20:54 2007 +0100
     1.2 +++ b/Makefile	Sun Feb 11 17:20:22 2007 +0100
     1.3 @@ -21,8 +21,8 @@
     1.4  ${OBJ}: dwm.h config.h config.mk
     1.5  
     1.6  config.h:
     1.7 -	@echo creating $@ from config.default.h
     1.8 -	@cp config.default.h $@
     1.9 +	@echo creating $@ from config.meillo.h
    1.10 +	@cp config.meillo.h $@
    1.11  
    1.12  dwm: ${OBJ}
    1.13  	@echo CC -o $@
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/config.arg.h	Sun Feb 11 17:20:22 2007 +0100
     2.3 @@ -0,0 +1,94 @@
     2.4 +/* (C)opyright MMVI-MMVII Anselm R. Garbe <garbeam at gmail dot com>
     2.5 + * See LICENSE file for license details.
     2.6 + */
     2.7 +
     2.8 +#define TAGS \
     2.9 +const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", NULL };
    2.10 +
    2.11 +#define BORDERPX		1
    2.12 +#define DEFMODE			dotile		/* dofloat */
    2.13 +#define FLOATSYMBOL		"><>"
    2.14 +#define TILESYMBOL		"[]="
    2.15 +
    2.16 +#define FONT			"-*-terminus-medium-r-*-*-14-*-*-*-*-*-*-*"
    2.17 +#define NORMBORDERCOLOR		"#333"
    2.18 +#define NORMBGCOLOR		"#222"
    2.19 +#define NORMFGCOLOR		"#ccc"
    2.20 +#define SELBORDERCOLOR		"#69c"
    2.21 +#define SELBGCOLOR		"#555"
    2.22 +#define SELFGCOLOR		"#fff"
    2.23 +
    2.24 +#define MASTER			600		/* per thousand */
    2.25 +#define MODKEY			Mod1Mask
    2.26 +#define NMASTER			1		/* clients in master area */
    2.27 +#define SNAP			40		/* pixel */
    2.28 +#define TOPBAR			True		/* False */
    2.29 +
    2.30 +#define KEYS \
    2.31 +static Key key[] = { \
    2.32 +	/* modifier			key		function	argument */ \
    2.33 +	{ MODKEY|ShiftMask,		XK_Return,	spawn, \
    2.34 +		{ .cmd = "exec uxterm -bg '#222' -fg '#eee' -cr '#eee' +sb -fn '"FONT"'" } }, \
    2.35 +	{ MODKEY,			XK_p,		spawn, \
    2.36 +		{ .cmd = "exe=\"$(lsx `echo $PATH | sed 's/:/ /g'` | sort -u " \
    2.37 +			" | dmenu -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGCOLOR"' " \
    2.38 +			"-sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"')\" && exec $exe" } }, \
    2.39 +	{ MODKEY,			XK_j,		focusnext,	{ 0 } }, \
    2.40 +	{ MODKEY,			XK_k,		focusprev,	{ 0 } }, \
    2.41 +	{ MODKEY,			XK_Return,	zoom,		{ 0 } }, \
    2.42 +	{ MODKEY,			XK_g,		resizemaster,	{ .i = 15 } }, \
    2.43 +	{ MODKEY,			XK_s,		resizemaster,	{ .i = -15 } }, \
    2.44 +	{ MODKEY,			XK_i,		incnmaster,	{ .i = 1 } }, \
    2.45 +	{ MODKEY,			XK_d,		incnmaster,	{ .i = -1 } }, \
    2.46 +	{ MODKEY|ShiftMask,		XK_0,		tag,		{ .i = -1 } }, \
    2.47 +	{ MODKEY|ShiftMask,		XK_1,		tag,		{ .i = 0 } }, \
    2.48 +	{ MODKEY|ShiftMask,		XK_2,		tag,		{ .i = 1 } }, \
    2.49 +	{ MODKEY|ShiftMask,		XK_3,		tag,		{ .i = 2 } }, \
    2.50 +	{ MODKEY|ShiftMask,		XK_4,		tag,		{ .i = 3 } }, \
    2.51 +	{ MODKEY|ShiftMask,		XK_5,		tag,		{ .i = 4 } }, \
    2.52 +	{ MODKEY|ShiftMask,		XK_6,		tag,		{ .i = 5 } }, \
    2.53 +	{ MODKEY|ShiftMask,		XK_7,		tag,		{ .i = 6 } }, \
    2.54 +	{ MODKEY|ShiftMask,		XK_8,		tag,		{ .i = 7 } }, \
    2.55 +	{ MODKEY|ShiftMask,		XK_9,		tag,		{ .i = 8 } }, \
    2.56 +	{ MODKEY|ControlMask|ShiftMask,	XK_1,		toggletag,	{ .i = 0 } }, \
    2.57 +	{ MODKEY|ControlMask|ShiftMask,	XK_2,		toggletag,	{ .i = 1 } }, \
    2.58 +	{ MODKEY|ControlMask|ShiftMask,	XK_3,		toggletag,	{ .i = 2 } }, \
    2.59 +	{ MODKEY|ControlMask|ShiftMask,	XK_4,		toggletag,	{ .i = 3 } }, \
    2.60 +	{ MODKEY|ControlMask|ShiftMask,	XK_5,		toggletag,	{ .i = 4 } }, \
    2.61 +	{ MODKEY|ControlMask|ShiftMask,	XK_6,		toggletag,	{ .i = 5 } }, \
    2.62 +	{ MODKEY|ControlMask|ShiftMask,	XK_7,		toggletag,	{ .i = 6 } }, \
    2.63 +	{ MODKEY|ControlMask|ShiftMask,	XK_8,		toggletag,	{ .i = 7 } }, \
    2.64 +	{ MODKEY|ControlMask|ShiftMask,	XK_9,		toggletag,	{ .i = 8 } }, \
    2.65 +	{ MODKEY|ShiftMask,		XK_c,		killclient,	{ 0 } }, \
    2.66 +	{ MODKEY,			XK_space,	togglemode,	{ 0 } }, \
    2.67 +	{ MODKEY|ShiftMask,		XK_space,	togglefloat,	{ 0 } }, \
    2.68 +	{ MODKEY,			XK_0,		view,		{ .i = -1 } }, \
    2.69 +	{ MODKEY,			XK_1,		view,		{ .i = 0 } }, \
    2.70 +	{ MODKEY,			XK_2,		view,		{ .i = 1 } }, \
    2.71 +	{ MODKEY,			XK_3,		view,		{ .i = 2 } }, \
    2.72 +	{ MODKEY,			XK_4,		view,		{ .i = 3 } }, \
    2.73 +	{ MODKEY,			XK_5,		view,		{ .i = 4 } }, \
    2.74 +	{ MODKEY,			XK_6,		view,		{ .i = 5 } }, \
    2.75 +	{ MODKEY,			XK_7,		view,		{ .i = 6 } }, \
    2.76 +	{ MODKEY,			XK_8,		view,		{ .i = 7 } }, \
    2.77 +	{ MODKEY,			XK_9,		view,		{ .i = 8 } }, \
    2.78 +	{ MODKEY|ControlMask,		XK_1,		toggleview,	{ .i = 0 } }, \
    2.79 +	{ MODKEY|ControlMask,		XK_2,		toggleview,	{ .i = 1 } }, \
    2.80 +	{ MODKEY|ControlMask,		XK_3,		toggleview,	{ .i = 2 } }, \
    2.81 +	{ MODKEY|ControlMask,		XK_4,		toggleview,	{ .i = 3 } }, \
    2.82 +	{ MODKEY|ControlMask,		XK_5,		toggleview,	{ .i = 4 } }, \
    2.83 +	{ MODKEY|ControlMask,		XK_6,		toggleview,	{ .i = 5 } }, \
    2.84 +	{ MODKEY|ControlMask,		XK_7,		toggleview,	{ .i = 6 } }, \
    2.85 +	{ MODKEY|ControlMask,		XK_8,		toggleview,	{ .i = 7 } }, \
    2.86 +	{ MODKEY|ControlMask,		XK_9,		toggleview,	{ .i = 8 } }, \
    2.87 +	{ MODKEY|ShiftMask,		XK_q,		quit,		{ 0 } }, \
    2.88 +};
    2.89 +
    2.90 +#define RULES \
    2.91 +static Rule rule[] = { \
    2.92 +	/* class:instance:title regex	tags regex	isfloat */ \
    2.93 +	{ "Firefox.*",			"3",		False }, \
    2.94 +	{ "Gimp.*",			NULL,		True }, \
    2.95 +	{ "MPlayer.*",			NULL,		True }, \
    2.96 +	{ "Acroread.*",			NULL,		True }, \
    2.97 +};
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/config.default.h	Sun Feb 11 17:20:22 2007 +0100
     3.3 @@ -0,0 +1,90 @@
     3.4 +/* (C)opyright MMVI-MMVII Anselm R. Garbe <garbeam at gmail dot com>
     3.5 + * See LICENSE file for license details.
     3.6 + */
     3.7 +
     3.8 +#define TAGS \
     3.9 +const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", NULL };
    3.10 +
    3.11 +#define BORDERPX		1
    3.12 +#define DEFMODE			dotile		/* dofloat */
    3.13 +#define FLOATSYMBOL		"><>"
    3.14 +#define TILESYMBOL		"[]="
    3.15 +
    3.16 +#define FONT			"-*-fixed-medium-r-normal-*-13-*-*-*-*-*-*-*"
    3.17 +#define NORMBORDERCOLOR		"#dddddd"
    3.18 +#define NORMBGCOLOR		"#eeeeee"
    3.19 +#define NORMFGCOLOR		"#222222"
    3.20 +#define SELBORDERCOLOR		"#ff0000"
    3.21 +#define SELBGCOLOR		"#006699"
    3.22 +#define SELFGCOLOR		"#ffffff"
    3.23 +
    3.24 +#define MASTER			600		/* per thousand */
    3.25 +#define MODKEY			Mod1Mask
    3.26 +#define NMASTER			1		/* clients in master area */
    3.27 +#define SNAP			20		/* pixel */
    3.28 +#define TOPBAR			True		/* False */
    3.29 +
    3.30 +#define KEYS \
    3.31 +static Key key[] = { \
    3.32 +	/* modifier			key		function	argument */ \
    3.33 +	{ MODKEY|ShiftMask,		XK_Return,	spawn,		{ .cmd = "exec xterm" } }, \
    3.34 +	{ MODKEY,			XK_Tab,		focusnext,	{ 0 } }, \
    3.35 +	{ MODKEY|ShiftMask,		XK_Tab,		focusprev,	{ 0 } }, \
    3.36 +	{ MODKEY,			XK_Return,	zoom,		{ 0 } }, \
    3.37 +	{ MODKEY,			XK_g,		resizemaster,	{ .i = 15 } }, \
    3.38 +	{ MODKEY,			XK_s,		resizemaster,	{ .i = -15 } }, \
    3.39 +	{ MODKEY,			XK_i,		incnmaster,	{ .i = 1 } }, \
    3.40 +	{ MODKEY,			XK_d,		incnmaster,	{ .i = -1 } }, \
    3.41 +	{ MODKEY|ShiftMask,		XK_0,		tag,		{ .i = -1 } }, \
    3.42 +	{ MODKEY|ShiftMask,		XK_1,		tag,		{ .i = 0 } }, \
    3.43 +	{ MODKEY|ShiftMask,		XK_2,		tag,		{ .i = 1 } }, \
    3.44 +	{ MODKEY|ShiftMask,		XK_3,		tag,		{ .i = 2 } }, \
    3.45 +	{ MODKEY|ShiftMask,		XK_4,		tag,		{ .i = 3 } }, \
    3.46 +	{ MODKEY|ShiftMask,		XK_5,		tag,		{ .i = 4 } }, \
    3.47 +	{ MODKEY|ShiftMask,		XK_6,		tag,		{ .i = 5 } }, \
    3.48 +	{ MODKEY|ShiftMask,		XK_7,		tag,		{ .i = 6 } }, \
    3.49 +	{ MODKEY|ShiftMask,		XK_8,		tag,		{ .i = 7 } }, \
    3.50 +	{ MODKEY|ShiftMask,		XK_9,		tag,		{ .i = 8 } }, \
    3.51 +	{ MODKEY|ControlMask|ShiftMask,	XK_1,		toggletag,	{ .i = 0 } }, \
    3.52 +	{ MODKEY|ControlMask|ShiftMask,	XK_2,		toggletag,	{ .i = 1 } }, \
    3.53 +	{ MODKEY|ControlMask|ShiftMask,	XK_3,		toggletag,	{ .i = 2 } }, \
    3.54 +	{ MODKEY|ControlMask|ShiftMask,	XK_4,		toggletag,	{ .i = 3 } }, \
    3.55 +	{ MODKEY|ControlMask|ShiftMask,	XK_5,		toggletag,	{ .i = 4 } }, \
    3.56 +	{ MODKEY|ControlMask|ShiftMask,	XK_6,		toggletag,	{ .i = 5 } }, \
    3.57 +	{ MODKEY|ControlMask|ShiftMask,	XK_7,		toggletag,	{ .i = 6 } }, \
    3.58 +	{ MODKEY|ControlMask|ShiftMask,	XK_8,		toggletag,	{ .i = 7 } }, \
    3.59 +	{ MODKEY|ControlMask|ShiftMask,	XK_9,		toggletag,	{ .i = 8 } }, \
    3.60 +	{ MODKEY|ShiftMask,		XK_c,		killclient,	{ 0 } }, \
    3.61 +	{ MODKEY,			XK_space,	togglemode,	{ 0 } }, \
    3.62 +	{ MODKEY|ShiftMask,		XK_space,	togglefloat,	{ 0 } }, \
    3.63 +	{ MODKEY,			XK_0,		view,		{ .i = -1 } }, \
    3.64 +	{ MODKEY,			XK_1,		view,		{ .i = 0 } }, \
    3.65 +	{ MODKEY,			XK_2,		view,		{ .i = 1 } }, \
    3.66 +	{ MODKEY,			XK_3,		view,		{ .i = 2 } }, \
    3.67 +	{ MODKEY,			XK_4,		view,		{ .i = 3 } }, \
    3.68 +	{ MODKEY,			XK_5,		view,		{ .i = 4 } }, \
    3.69 +	{ MODKEY,			XK_6,		view,		{ .i = 5 } }, \
    3.70 +	{ MODKEY,			XK_7,		view,		{ .i = 6 } }, \
    3.71 +	{ MODKEY,			XK_8,		view,		{ .i = 7 } }, \
    3.72 +	{ MODKEY,			XK_9,		view,		{ .i = 8 } }, \
    3.73 +	{ MODKEY|ControlMask,		XK_1,		toggleview,	{ .i = 0 } }, \
    3.74 +	{ MODKEY|ControlMask,		XK_2,		toggleview,	{ .i = 1 } }, \
    3.75 +	{ MODKEY|ControlMask,		XK_3,		toggleview,	{ .i = 2 } }, \
    3.76 +	{ MODKEY|ControlMask,		XK_4,		toggleview,	{ .i = 3 } }, \
    3.77 +	{ MODKEY|ControlMask,		XK_5,		toggleview,	{ .i = 4 } }, \
    3.78 +	{ MODKEY|ControlMask,		XK_6,		toggleview,	{ .i = 5 } }, \
    3.79 +	{ MODKEY|ControlMask,		XK_7,		toggleview,	{ .i = 6 } }, \
    3.80 +	{ MODKEY|ControlMask,		XK_8,		toggleview,	{ .i = 7 } }, \
    3.81 +	{ MODKEY|ControlMask,		XK_9,		toggleview,	{ .i = 8 } }, \
    3.82 +	{ MODKEY|ShiftMask,		XK_q,		quit,		{ 0 } }, \
    3.83 +};
    3.84 +
    3.85 +/* Query class:instance:title for regex matching info with following command:
    3.86 + * xprop | awk -F '"' '/^WM_CLASS/ { printf("%s:%s:",$4,$2) }; /^WM_NAME/ { printf("%s\n",$2) }' */
    3.87 +#define RULES \
    3.88 +static Rule rule[] = { \
    3.89 +	/* class:instance:title regex	tags regex	isfloat */ \
    3.90 +	{ "Gimp.*",			NULL,		True }, \
    3.91 +	{ "MPlayer.*",			NULL,		True }, \
    3.92 +	{ "Acroread.*",			NULL,		True }, \
    3.93 +};
     4.1 --- a/config.h	Sun Feb 11 12:20:54 2007 +0100
     4.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.3 @@ -1,60 +0,0 @@
     4.4 -/* (C)opyright MMVI-MMVII Anselm R. Garbe <garbeam at gmail dot com>
     4.5 - * See LICENSE file for license details.
     4.6 - */
     4.7 -
     4.8 -#define TAGS \
     4.9 -const char *tags[] = { "Das Alles", "Das Nichts", NULL };
    4.10 -
    4.11 -#define BORDERPX		1
    4.12 -#define DEFMODE			dotile		/* dofloat */
    4.13 -#define FLOATSYMBOL		""
    4.14 -#define TILESYMBOL		""
    4.15 -
    4.16 -#define FONT			"-*-terminus-medium-*-*-*-12-*-*-*-*-*-*-*"
    4.17 -#define NORMBGCOLOR		"#333333"
    4.18 -#define NORMFGCOLOR		"#bbbbbb"
    4.19 -#define SELBGCOLOR		"#eec900"
    4.20 -#define SELFGCOLOR		"#000000"
    4.21 -#define NORMBORDERCOLOR		NORMBGCOLOR
    4.22 -#define SELBORDERCOLOR		SELBGCOLOR
    4.23 -
    4.24 -#define MASTER			500		/* per thousand */
    4.25 -#define MODKEY			Mod1Mask
    4.26 -#define NMASTER			1		/* clients in master area */
    4.27 -#define SNAP			5		/* pixel */
    4.28 -#define TOPBAR			True		/* False */
    4.29 -
    4.30 -#define KEYS \
    4.31 -static Key key[] = { \
    4.32 -	/* modifier			key		function	argument */ \
    4.33 -	{ MODKEY|ShiftMask,		XK_Return,	spawn,		{ .cmd = "exec urxvt" } }, \
    4.34 -	{ MODKEY,			XK_F1,		viewnext,		{ .i = 0 } }, \
    4.35 -	{ MODKEY,			XK_Tab,		focusnext,	{ 0 } }, \
    4.36 -	{ MODKEY,			XK_asciicircum,		spawn, \
    4.37 -		{ .cmd = "exe=\"$(lsx `echo $PATH | sed 's/:/ /g'` | sort -u " \
    4.38 -			" | dmenu -font '"FONT"' -normbg '"NORMBGCOLOR"' -normfg '"NORMFGCOLOR"' " \
    4.39 -			"-selbg '"SELBGCOLOR"' -selfg '"SELFGCOLOR"')\" && exec $exe" } }, \
    4.40 -	{ MODKEY,			XK_1, 	zoom,		{ 0 } }, \
    4.41 -	{ MODKEY, 		XK_2,		killclient,	{ 0 } }, \
    4.42 -	{ MODKEY|ShiftMask,		XK_q,		quit,		{ 0 } }, \
    4.43 -	{ MODKEY|ShiftMask,			XK_F4,		spawn,		{ .cmd = "exec sudo halt" } }, \
    4.44 -	{ MODKEY,			XK_space,	togglefloat,	{ 0 } }, \
    4.45 -	{ MODKEY|ShiftMask,		XK_space,	togglemode,	{ 0 } }, \
    4.46 -	{ MODKEY,			XK_g,		resizemaster,	{ .i = 15 } }, \
    4.47 -	{ MODKEY,			XK_s,		resizemaster,	{ .i = -15 } }, \
    4.48 -	{ MODKEY,			XK_i,		incnmaster,	{ .i = 1 } }, \
    4.49 -	{ MODKEY,			XK_d,		incnmaster,	{ .i = -1 } }, \
    4.50 -	{ MODKEY|ShiftMask,		XK_1,		tag,		{ .i = 0 } }, \
    4.51 -	{ MODKEY|ShiftMask,		XK_2,		tag,		{ .i = 1 } }, \
    4.52 -};
    4.53 -
    4.54 -/* Query class:instance:title for regex matching info with following command:
    4.55 - * xprop | awk -F '"' '/^WM_CLASS/ { printf("%s:%s:",$4,$2) }; /^WM_NAME/ { printf("%s\n",$2) }' */
    4.56 -#define RULES \
    4.57 -static Rule rule[] = { \
    4.58 -	/* class:instance:title regex	tags regex	isfloat */ \
    4.59 -	{ "URxvt.*",	  	  	"Das Nichts",	    	False }, \
    4.60 -	{ "MPlayer.*",		  	NULL,	    	True }, \
    4.61 -	{ "Gimp.*",	      		"Das Alles",		True }, \
    4.62 -	{ ".*",		          	"Das Alles",	    	False }, \
    4.63 -};
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/config.meillo.h	Sun Feb 11 17:20:22 2007 +0100
     5.3 @@ -0,0 +1,60 @@
     5.4 +/* (C)opyright MMVI-MMVII Anselm R. Garbe <garbeam at gmail dot com>
     5.5 + * See LICENSE file for license details.
     5.6 + */
     5.7 +
     5.8 +#define TAGS \
     5.9 +const char *tags[] = { "Das Alles", "Das Nichts", NULL };
    5.10 +
    5.11 +#define BORDERPX		1
    5.12 +#define DEFMODE			domax		/* dotile */
    5.13 +#define FLOATSYMBOL		""
    5.14 +#define TILESYMBOL		""
    5.15 +
    5.16 +#define FONT			"-*-terminus-medium-*-*-*-12-*-*-*-*-*-*-*"
    5.17 +#define NORMBGCOLOR		"#333333"
    5.18 +#define NORMFGCOLOR		"#bbbbbb"
    5.19 +#define SELBGCOLOR		"#eec900"
    5.20 +#define SELFGCOLOR		"#000000"
    5.21 +#define NORMBORDERCOLOR		NORMBGCOLOR
    5.22 +#define SELBORDERCOLOR		SELBGCOLOR
    5.23 +
    5.24 +#define MASTER			500		/* per thousand */
    5.25 +#define MODKEY			Mod1Mask
    5.26 +#define NMASTER			1		/* clients in master area */
    5.27 +#define SNAP			5		/* pixel */
    5.28 +#define TOPBAR			True		/* False */
    5.29 +
    5.30 +#define KEYS \
    5.31 +static Key key[] = { \
    5.32 +	/* modifier			key		function	argument */ \
    5.33 +	{ MODKEY|ShiftMask,		XK_Return,	spawn,		{ .cmd = "exec urxvt" } }, \
    5.34 +	{ MODKEY,			XK_F1,		viewnext,		{ .i = 0 } }, \
    5.35 +	{ MODKEY,			XK_Tab,		focusnext,	{ 0 } }, \
    5.36 +	{ MODKEY,			XK_asciicircum,		spawn, \
    5.37 +		{ .cmd = "exe=\"$(lsx `echo $PATH | sed 's/:/ /g'` | sort -u " \
    5.38 +			" | dmenu -font '"FONT"' -normbg '"NORMBGCOLOR"' -normfg '"NORMFGCOLOR"' " \
    5.39 +			"-selbg '"SELBGCOLOR"' -selfg '"SELFGCOLOR"')\" && exec $exe" } }, \
    5.40 +	{ MODKEY,			XK_1, 	zoom,		{ 0 } }, \
    5.41 +	{ MODKEY, 		XK_2,		killclient,	{ 0 } }, \
    5.42 +	{ MODKEY|ShiftMask,		XK_q,		quit,		{ 0 } }, \
    5.43 +	{ MODKEY|ShiftMask,			XK_F4,		spawn,		{ .cmd = "exec sudo halt" } }, \
    5.44 +	{ MODKEY,			XK_space,	togglemode,	{ 0 } }, \
    5.45 +	{ MODKEY|ShiftMask,		XK_space,	togglefloat,	{ 0 } }, \
    5.46 +	{ MODKEY,			XK_g,		resizemaster,	{ .i = 15 } }, \
    5.47 +	{ MODKEY,			XK_s,		resizemaster,	{ .i = -15 } }, \
    5.48 +	{ MODKEY,			XK_i,		incnmaster,	{ .i = 1 } }, \
    5.49 +	{ MODKEY,			XK_d,		incnmaster,	{ .i = -1 } }, \
    5.50 +	{ MODKEY|ShiftMask,		XK_1,		tag,		{ .i = 0 } }, \
    5.51 +	{ MODKEY|ShiftMask,		XK_2,		tag,		{ .i = 1 } }, \
    5.52 +};
    5.53 +
    5.54 +/* Query class:instance:title for regex matching info with following command:
    5.55 + * xprop | awk -F '"' '/^WM_CLASS/ { printf("%s:%s:",$4,$2) }; /^WM_NAME/ { printf("%s\n",$2) }' */
    5.56 +#define RULES \
    5.57 +static Rule rule[] = { \
    5.58 +	/* class:instance:title regex	tags regex	isfloat */ \
    5.59 +	{ "URxvt.*",	  	  	"Das Nichts",	    	False }, \
    5.60 +	{ "MPlayer.*",		  	NULL,	    	True }, \
    5.61 +	{ "Gimp.*",	      		"Das Alles",		True }, \
    5.62 +	{ ".*",		          	"Das Alles",	    	False }, \
    5.63 +};
     6.1 --- a/draw.c	Sun Feb 11 12:20:54 2007 +0100
     6.2 +++ b/draw.c	Sun Feb 11 17:20:22 2007 +0100
     6.3 @@ -90,7 +90,7 @@
     6.4  		dc.x += dc.w + 1;
     6.5  	}
     6.6  	dc.w = bmw;
     6.7 -	drawtext(arrange == dofloat ? FLOATSYMBOL : TILESYMBOL, dc.norm, False, False);
     6.8 +	drawtext("", dc.norm, False, False);
     6.9  	x = dc.x + dc.w;
    6.10  	dc.w = textw(stext);
    6.11  	dc.x = sw - dc.w;
     7.1 --- a/dwm.h	Sun Feb 11 12:20:54 2007 +0100
     7.2 +++ b/dwm.h	Sun Feb 11 17:20:22 2007 +0100
     7.3 @@ -132,7 +132,7 @@
     7.4  extern void settags(Client *c, Client *trans);	/* sets tags of c */
     7.5  extern void tag(Arg *arg);			/* tags c with arg's index */
     7.6  extern void toggletag(Arg *arg);		/* toggles c tags with arg's index */
     7.7 -extern void viewnext(Arg *arg);    /* view next tag(s) [code by jukka] */
     7.8 +extern void viewnext(Arg *arg);    /* view next tag(s) */
     7.9  
    7.10  /* util.c */
    7.11  extern void *emallocz(unsigned int size);	/* allocates zero-initialized memory, exits on error */
    7.12 @@ -143,6 +143,7 @@
    7.13  extern void detach(Client *c);			/* detaches c from global client list */
    7.14  extern void dofloat(void);			/* arranges all windows floating */
    7.15  extern void dotile(void);			/* arranges all windows tiled */
    7.16 +extern void domax(void);            /* arranges all windows fullscreen */
    7.17  extern void focusnext(Arg *arg);		/* focuses next visible client, arg is ignored  */
    7.18  extern void focusprev(Arg *arg);		/* focuses previous visible client, arg is ignored */
    7.19  extern void incnmaster(Arg *arg);		/* increments nmaster with arg's index value */
     8.1 --- a/tag.c	Sun Feb 11 12:20:54 2007 +0100
     8.2 +++ b/tag.c	Sun Feb 11 17:20:22 2007 +0100
     8.3 @@ -134,6 +134,7 @@
     8.4  	arrange();
     8.5  }
     8.6  
     8.7 +/* begin code by jukka */
     8.8  void
     8.9  viewnext(Arg *arg) {
    8.10    unsigned int i;
    8.11 @@ -144,3 +145,4 @@
    8.12    seltag[0] = last;
    8.13    arrange();
    8.14  }
    8.15 +/* end code by jukka */
     9.1 --- a/view.c	Sun Feb 11 12:20:54 2007 +0100
     9.2 +++ b/view.c	Sun Feb 11 17:20:22 2007 +0100
     9.3 @@ -117,6 +117,48 @@
     9.4  	restack();
     9.5  }
     9.6  
     9.7 +/* begin code by mitch */
     9.8 +void
     9.9 +arrangemax(Client *c) {
    9.10 +  if(c == sel) {
    9.11 +    c->ismax = True;
    9.12 +    c->x = sx;
    9.13 +    c->y = bh;
    9.14 +    c->w = sw - 2 * BORDERPX;
    9.15 +    c->h = sh - bh - 2 * BORDERPX;
    9.16 +    XRaiseWindow(dpy, c->win);
    9.17 +  } else {
    9.18 +    c->ismax = False;
    9.19 +    XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
    9.20 +    XLowerWindow(dpy, c->win);
    9.21 +  }
    9.22 +}
    9.23 + 
    9.24 +void
    9.25 +domax(void) {
    9.26 +  Client *c;
    9.27 +
    9.28 +  for(c = clients; c; c = c->next) {
    9.29 +    if(isvisible(c)) {
    9.30 +      if(c->isfloat) {
    9.31 +        resize(c, True);
    9.32 +        continue;
    9.33 +      }
    9.34 +      arrangemax(c);
    9.35 +      resize(c, False);
    9.36 +    } else {
    9.37 +      XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
    9.38 +    }
    9.39 +
    9.40 +  }
    9.41 +  if(!sel || !isvisible(sel)) {
    9.42 +    for(c = stack; c && !isvisible(c); c = c->snext);
    9.43 +    focus(c);
    9.44 +  }
    9.45 +  restack();
    9.46 +}
    9.47 +/* end code by mitch */
    9.48 +
    9.49  void
    9.50  focusnext(Arg *arg) {
    9.51  	Client *c;
    9.52 @@ -192,7 +234,17 @@
    9.53  		return;
    9.54  	if(sel->isfloat || arrange == dofloat)
    9.55  		XRaiseWindow(dpy, sel->win);
    9.56 -	if(arrange != dofloat) {
    9.57 +
    9.58 +  /* begin code by mitch */
    9.59 +  if(arrange == domax) {
    9.60 +    for(c = nexttiled(clients); c; c = nexttiled(c->next)) {
    9.61 +      arrangemax(c);
    9.62 +      resize(c, False);
    9.63 +    }
    9.64 +
    9.65 +  } else if (arrange == dotile) {
    9.66 +  /* end code by mitch */
    9.67 +
    9.68  		if(!sel->isfloat)
    9.69  			XLowerWindow(dpy, sel->win);
    9.70  		for(c = nexttiled(clients); c; c = nexttiled(c->next)) {
    9.71 @@ -215,7 +267,8 @@
    9.72  
    9.73  void
    9.74  togglemode(Arg *arg) {
    9.75 -	arrange = (arrange == dofloat) ? dotile : dofloat;
    9.76 +  /* only toggle between tile and max - float is just available through togglefloat */
    9.77 +  arrange = (arrange == dotile) ? domax : dotile;
    9.78  	if(sel)
    9.79  		arrange();
    9.80  	else