# HG changeset patch # User meillo@marmaro.de # Date 1190322751 -7200 # Node ID 303286112f0a3fafa0ec318a489895d8a60db753 # Parent 19d4ccea9745e8c04e5a4a9278efcb73a22cf248 Meillos mods: toggletags, maxlayout, match only first rule, no squares, personalized config.h (rem: code of maxlayout is from the monocle-patch, via mailinglist) diff -r 19d4ccea9745 -r 303286112f0a config.h --- a/config.h Wed Sep 19 17:32:28 2007 +0200 +++ b/config.h Thu Sep 20 23:12:31 2007 +0200 @@ -3,32 +3,34 @@ /* appearance */ #define BARPOS BarTop /* BarBot, BarOff */ #define BORDERPX 1 -#define FONT "-*-terminus-medium-r-*-*-12-*-*-*-*-*-iso10646-*" +#define FONT "-*-terminus-medium-r-*-*-12-*-*-*-*-*-*-*" #define NORMBORDERCOLOR "#333" -#define NORMBGCOLOR "#000" -#define NORMFGCOLOR "#ccc" -#define SELBORDERCOLOR "#f00" -#define SELBGCOLOR "#00f" -#define SELFGCOLOR "#fff" +#define NORMBGCOLOR "#333" +#define NORMFGCOLOR "#bbb" +#define SELBORDERCOLOR "#eec900" +#define SELBGCOLOR "#eec900" +#define SELFGCOLOR "#000" /* tagging */ -const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", NULL }; +const char *tags[] = { "Das Alles", "Das Nichts", NULL }; Rule rules[] = { /* class:instance:title regex tags regex isfloating */ - { "Firefox", "3", False }, - { "Gimp", NULL, True }, - { "MPlayer", NULL, True }, - { "Acroread", NULL, True }, + { "URxvt.*", "Das Nichts", False }, + { "MPlayer", NULL, True }, + { "qiv.*", NULL, True }, + { "Gimp.*", "Das Alles", True }, + { ".*", "Das Alles", False }, }; /* layout(s) */ Layout layouts[] = { /* symbol function */ - { "[]=", tile }, /* first entry is default */ - { "><>", floating }, + { " ", maxlayout }, /* first entry is default */ + { " ", tile }, + /*{ "><>", floating },*/ }; -#define RESIZEHINTS True /* False - respect size hints in tiled resizals */ -#define MWFACT 0.6 /* master width factor [0.1 .. 0.9] */ +#define RESIZEHINTS False /* False - respect size hints in tiled resizals */ +#define MWFACT 0.5 /* master width factor [0.1 .. 0.9] */ #define SNAP 32 /* snap pixel */ /* key definitions */ @@ -36,58 +38,22 @@ Layout layouts[] = { #define KEYS \ Key keys[] = { \ /* modifier key function argument */ \ - { MODKEY, XK_p, spawn, \ + /*{ MODKEY, XK_p, spawn, \ "exe=`dmenu_path | dmenu -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGCOLOR"'" \ - " -sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"'` && exec $exe" }, \ - { MODKEY|ShiftMask, XK_Return, spawn, \ - "exec xterm -bg '"NORMBGCOLOR"' -fg '"NORMFGCOLOR"' -cr '"NORMFGCOLOR"' +sb -fn '"FONT"'" }, \ + " -sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"'` && exec $exe" }, \*/ \ + { MODKEY, XK_asciicircum, spawn, \ + "exe=\"$(lsx `echo $PATH | sed 's/:/ /g'` | sort -u " \ + " | dmenu -font '"FONT"' -normbg '"NORMBGCOLOR"' -normfg '"NORMFGCOLOR"' " \ + "-selbg '"SELBGCOLOR"' -selfg '"SELFGCOLOR"')\" && exec $exe" }, \ + { MODKEY|ShiftMask, XK_Return, spawn, "exec urxvt" }, \ { MODKEY, XK_space, setlayout, NULL }, \ - { MODKEY, XK_b, togglebar, NULL }, \ - { MODKEY, XK_j, focusnext, NULL }, \ - { MODKEY, XK_k, focusprev, NULL }, \ - { MODKEY, XK_h, setmwfact, "-0.05" }, \ - { MODKEY, XK_l, setmwfact, "+0.05" }, \ - { MODKEY, XK_m, togglemax, NULL }, \ - { MODKEY, XK_Return, zoom, NULL }, \ + { MODKEY, XK_Tab, focusnext, NULL }, \ + { MODKEY, XK_1, zoom, NULL }, \ { MODKEY|ShiftMask, XK_space, togglefloating, 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, XK_2, killclient, NULL }, \ + { MODKEY, XK_F1, toggleview, tags[0] }, \ + { MODKEY, XK_F1, toggleview, tags[1] }, \ + { MODKEY, XK_F1, toggleview, tags[0] }, \ { MODKEY|ShiftMask, XK_q, quit, NULL }, \ + { MODKEY|ShiftMask, XK_F4, spawn, "exec sudo /sbin/halt" }, \ }; diff -r 19d4ccea9745 -r 303286112f0a dwm.c --- a/dwm.c Wed Sep 19 17:32:28 2007 +0200 +++ b/dwm.c Thu Sep 20 23:12:31 2007 +0200 @@ -154,6 +154,7 @@ void manage(Window w, XWindowAttributes void manage(Window w, XWindowAttributes *wa); void mappingnotify(XEvent *e); void maprequest(XEvent *e); +void maxlayout(void); void movemouse(Client *c); Client *nexttiled(Client *c); void propertynotify(XEvent *e); @@ -245,9 +246,14 @@ applyrules(Client *c) { snprintf(buf, sizeof buf, "%s:%s:%s", ch.res_class ? ch.res_class : "", ch.res_name ? ch.res_name : "", c->name); - for(i = 0; i < nrules; i++) + /* perform only the first rule matching */ + for(i = 0; i < nrules && !matched; i++) if(regs[i].propregex && !regexec(regs[i].propregex, buf, 1, &tmp, 0)) { c->isfloating = rules[i].isfloating; + /* use fallback match */ + if (regs[i].tagregex == NULL) { + break; + } for(j = 0; regs[i].tagregex && j < ntags; j++) { if(!regexec(regs[i].tagregex, tags[j], 1, &tmp, 0)) { matched = True; @@ -259,6 +265,7 @@ applyrules(Client *c) { XFree(ch.res_class); if(ch.res_name) XFree(ch.res_name); + /* fallback match: all current viewed tags */ if(!matched) for(i = 0; i < ntags; i++) c->tags[i] = seltags[i]; @@ -537,11 +544,9 @@ drawbar(void) { dc.w = textw(tags[i]); if(seltags[i]) { drawtext(tags[i], dc.sel); - drawsquare(sel && sel->tags[i], isoccupied(i), dc.sel); } else { drawtext(tags[i], dc.norm); - drawsquare(sel && sel->tags[i], isoccupied(i), dc.norm); } dc.x += dc.w; } @@ -558,8 +563,7 @@ drawbar(void) { if((dc.w = dc.x - x) > bh) { dc.x = x; if(sel) { - drawtext(sel->name, dc.sel); - drawsquare(sel->ismax, sel->isfloating, dc.sel); + drawtext(sel->name, dc.norm); } else drawtext(NULL, dc.norm); @@ -1076,6 +1080,16 @@ maprequest(XEvent *e) { manage(ev->window, &wa); } +void +maxlayout(void) { + Client *c; + + for(c = nexttiled(clients); c; c = nexttiled(c->next)) + resize(c, wax, way, waw - 2*c->border, wah -2*c->border, RESIZEHINTS); +} + + + void movemouse(Client *c) { int x1, y1, ocx, ocy, di, nx, ny; @@ -1673,7 +1687,7 @@ toggleview(const char *arg) { seltags[i] = !seltags[i]; for(j = 0; j < ntags && !seltags[j]; j++); if(j == ntags) - seltags[i] = True; /* cannot toggle last view */ + seltags[i] = True; /* at least one tag must be viewed */ arrange(); }