# HG changeset patch # User meillo@marmaro.de # Date 1171210822 -3600 # Node ID 6692d7e7e15642d9818dc4e10c4ffcd31d2a6a2a # Parent 61821891835c9977898abd99ddbf35b44ca5e8e5 added maxlayout by mitch, moved config.h to config.meillo.h, some smaller modifications diff -r 61821891835c -r 6692d7e7e156 Makefile --- 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 $@ diff -r 61821891835c -r 6692d7e7e156 config.arg.h --- /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 + * 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 }, \ +}; diff -r 61821891835c -r 6692d7e7e156 config.default.h --- /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 + * 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 }, \ +}; diff -r 61821891835c -r 6692d7e7e156 config.h --- 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 - * 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 }, \ -}; diff -r 61821891835c -r 6692d7e7e156 config.meillo.h --- /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 + * 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 }, \ +}; diff -r 61821891835c -r 6692d7e7e156 draw.c --- 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; diff -r 61821891835c -r 6692d7e7e156 dwm.h --- 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 */ diff -r 61821891835c -r 6692d7e7e156 tag.c --- 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 */ diff -r 61821891835c -r 6692d7e7e156 view.c --- 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