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 }, };