Attached is my config.h.
(Use a fixed-width font for a neater DEFGEOM table.)
This is for your curiosity only because:

I AM NOT A PROGRAMMER. 
ALSO, IT IS PROBABLY FOR SINGLE-MONITOR ONLY.

Here are the highlights:
1. alt-space cycles through ...rightstack/bottomstack/monocle...
(This was one feature from xmonad that I strongly favored,
and it is possible now that monocle is working.)
2. "togglebar" works right with the above.
3. "setmwfact" works with the above, persistently through
geometry changes.
    
If these things could be done better or more simply, I won't mind
being corrected. 

(I've only made one small change to dwm.c, unrelated to the above,
that displays monocle borderless.) 

It is perfect for me.
Thank you, to the dwm developers!
_________________________________________________________________
Windows Live Hotmail is giving away Zunes.
http://www.windowslive-hotmail.com/ZuneADay/?locale=en-US&ocid=TXT_TAGLM_Mobile_Zune_V3
int geomnum = 0;
double mwf = 0.5;
#define FONT			"-xos4-terminus-*-*-*-*-24-*-*-*-*-*-*-*"

#define BORDERPX		1
#define NORMBORDERCOLOR		"#333333"
#define SELBORDERCOLOR		"#00ff00"

#define NORMBGCOLOR		"#bbccbb"
#define NORMFGCOLOR		"#000000"
#define SELBGCOLOR		"#002200"
#define SELFGCOLOR		"#eeffee"

#define RESIZEHINTS		False
#define SNAP			32

/* TAGS */
const char tags[][MAXTAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
Rule rules[] = {
	/* class	instance	title		tags ref	isfloating */
	{ NULL,		NULL,		"Firefox",	tags[8],	False },
	{ NULL,		NULL,		"Wenlin",	tags[6],	False },
	{ NULL,		NULL,		"Brush Tool",	tags[6],	True },
	{ NULL,		NULL,		"Gimp",		NULL,		True },
	{ NULL,		NULL,		"MPlayer",	NULL,		True },
	{ NULL,		NULL,		"Acroread",	NULL,		True },
};
/* Comment: I shortened the names of these geometries to fit this table on one screen.
 *  r = rightstack
 *  b = bottomstack
 *  m = monocle
 * br = rightstack with bar
 * bb = bottomstack with bar
 * bm = monocle with bar
 */
/* GEOMETRIES */ 
/*     NAME    BAR          WINDOW              MASTER                TILING              MONOCLE   */
/*            x y w     x  y  w     h    x  y      w      h     x     y     w     h    x  y  w    h */
DEFGEOM( r, -sw,0,sw,   0, 0,sw,   sh,   0, 0,mwf*sw,    sh,   mw,   wy,ww-mw,   wh,   0, 0,sw,   sh )
DEFGEOM( b, -sw,0,sw,   0, 0,sw,   sh,   0, 0,    sw,mwf*sh,    0,   mh,   sw,wh-mh,   0, 0,sw,   sh )
DEFGEOM( m, -sw,0,sw,   0, 0,sw,   sh,   0, 0,mwf*sw,    sh,   mw,   wy,ww-mw,   wh,   0, 0,sw,   sh )
DEFGEOM(br,   0,0,sw,   0,bh,sw,sh-bh,   0,bh,mwf*sw,    wh,   mw,   bh,sw-mw,sh-bh,   0,bh,sw,sh-bh )
DEFGEOM(bb,   0,0,sw,   0,bh,sw,sh-bh,   0,bh,    sw,mwf*wh,    0,mh+bh,   sw,wh-mh,   0,bh,sw,sh-bh )
DEFGEOM(bm,   0,0,sw,   0,bh,sw,sh-bh,   0,bh,    sw,    wh,    0,   bh,   sw,sh-bh,   0,bh,sw,sh-bh ) 

Geom geoms[] = {{"RR", r}, {"BB", b}, {"MM", m}, {"Br", br}, {"Bb", bb}, {"Bm", bm}};

/* LAYOUTS */
Layout layouts[] = {
	{ "[]=",	tilev,		False }, 
	{ "[]|",	tileh,		False },
	{ "><>",	floating,	True },
	{ "[M]",	monocle,	True }
};

/* MY EXTRAS */
void mytogglebar() {
	if(geomnum < 3) {
	geomnum += 3;
	} else {
		geomnum -= 3;
		}
	geom = &geoms[geomnum];
	geom->apply();
	updatebarpos();
	arrange();
}
/* Comment: These two are = "setmwfact". */
void mygrowm() {
        if(geomnum == 2 || geomnum == 5 || mwf > 0.9) {
		return;
	}
	mwf += 0.05;
	geom = &geoms[geomnum];
	geom->apply();
	arrange();
}

void myshrinkm() {
        if(geomnum == 2 || geomnum == 5 || mwf < 0.1) {
		return;
	}
    	mwf -= 0.05;
	geom = &geoms[geomnum];
	geom->apply();
	arrange();
}
/* Comment: This steps through the geometries exactly as I desire. 
 * Simple. */
void
mycyclegeoms() {
	if(geomnum == 0 || geomnum == 3) {
		geomnum += 1;
		geom = &geoms[geomnum];
		geom->apply();
		updatebarpos();
		arrange();
		setlayout("[]|");
	} else {
	if(geomnum == 1 || geomnum == 4) {
		geomnum += 1;
		geom = &geoms[geomnum];
		geom->apply();
		updatebarpos();
		arrange();
		setlayout("[M]");
	} else {
	if(geomnum == 2) {
		geomnum -= 2;
		geom = &geoms[geomnum];
		geom->apply();
		updatebarpos();
		arrange();
		setlayout("[]=");
	} else { 
	if(geomnum == 5) {
		geomnum -= 2;
		geom = &geoms[geomnum];
		geom->apply();
		setlayout("[]=");
	}}}}
}

#define MODKEY			Mod1Mask
Key keys[] = {
	{ MODKEY|ShiftMask,		XK_Return,	spawn, "exec urxvtc" },
	{ MODKEY,			XK_p,		spawn,
		"exec dmenu_run -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGCOLOR"' -sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"'" },

	{ MODKEY,			XK_space,	mycyclegeoms,	NULL },
	{ MODKEY,			XK_b,		mytogglebar,	NULL },

	{ MODKEY,			XK_h,		myshrinkm,	NULL },
	{ MODKEY,			XK_l,		mygrowm,	NULL },

	{ MODKEY,			XK_m,		setlayout,	"[M]" },
	{ MODKEY,			XK_f,		setlayout,	"><>" },
	{ MODKEY,			XK_t,		togglefloating,	NULL },

	{ MODKEY,			XK_j,		focusnext,	NULL },
	{ MODKEY,			XK_k,		focusprev,	NULL },
	{ MODKEY,			XK_r,		reapply,	NULL },
	{ MODKEY,			XK_Return,	zoom,		NULL },
	{ MODKEY,			XK_Tab,		viewprevtag,	NULL },
	{ MODKEY|ShiftMask,		XK_c,		killclient,	NULL },

	{ MODKEY,			XK_0,		view,		NULL },
	{ MODKEY,			XK_1,		view,		tags[0] },
	{ MODKEY,			XK_2,		view,		tags[1] },
	{ MODKEY,			XK_3,		view,		tags[2] },
	{ MODKEY,			XK_4,		view,		tags[3] },
	{ MODKEY,			XK_5,		view,		tags[4] },
	{ MODKEY,			XK_6,		view,		tags[5] },
	{ MODKEY,			XK_7,		view,		tags[6] },
	{ MODKEY,			XK_8,		view,		tags[7] },
	{ MODKEY,			XK_9,		view,		tags[8] },
	{ MODKEY|ControlMask,		XK_1,		toggleview,	tags[0] },
	{ MODKEY|ControlMask,		XK_2,		toggleview,	tags[1] },
	{ MODKEY|ControlMask,		XK_3,		toggleview,	tags[2] },
	{ MODKEY|ControlMask,		XK_4,		toggleview,	tags[3] },
	{ MODKEY|ControlMask,		XK_5,		toggleview,	tags[4] },
	{ MODKEY|ControlMask,		XK_6,		toggleview,	tags[5] },
	{ MODKEY|ControlMask,		XK_7,		toggleview,	tags[6] },
	{ MODKEY|ControlMask,		XK_8,		toggleview,	tags[7] },
	{ MODKEY|ControlMask,		XK_9,		toggleview,	tags[8] },
	{ MODKEY|ShiftMask,		XK_0,		tag,		NULL },
	{ MODKEY|ShiftMask,		XK_1,		tag,		tags[0] },
	{ MODKEY|ShiftMask,		XK_2,		tag,		tags[1] },
	{ MODKEY|ShiftMask,		XK_3,		tag,		tags[2] },
	{ MODKEY|ShiftMask,		XK_4,		tag,		tags[3] },
	{ MODKEY|ShiftMask,		XK_5,		tag,		tags[4] },
	{ MODKEY|ShiftMask,		XK_6,		tag,		tags[5] },
	{ MODKEY|ShiftMask,		XK_7,		tag,		tags[6] },
	{ MODKEY|ShiftMask,		XK_8,		tag,		tags[7] },
	{ MODKEY|ShiftMask,		XK_9,		tag,		tags[8] },
	{ MODKEY|ControlMask|ShiftMask,	XK_1,		toggletag,	tags[0] },
	{ MODKEY|ControlMask|ShiftMask,	XK_2,		toggletag,	tags[1] },
	{ MODKEY|ControlMask|ShiftMask,	XK_3,		toggletag,	tags[2] },
	{ MODKEY|ControlMask|ShiftMask,	XK_4,		toggletag,	tags[3] },
	{ MODKEY|ControlMask|ShiftMask,	XK_5,		toggletag,	tags[4] },
	{ MODKEY|ControlMask|ShiftMask,	XK_6,		toggletag,	tags[5] },
	{ MODKEY|ControlMask|ShiftMask,	XK_7,		toggletag,	tags[6] },
	{ MODKEY|ControlMask|ShiftMask,	XK_8,		toggletag,	tags[7] },
	{ MODKEY|ControlMask|ShiftMask,	XK_9,		toggletag,	tags[8] },
	{ MODKEY|ShiftMask,		XK_q,		quit,		NULL },
};

Reply via email to