all repos — dwm @ e9a07335060337222c94260797582aae2c74d455

my dwm build

Using a new tags definition (const char [][MAXTAGLEN] - thanks go to Szabolcs!
Anselm R. Garbe garbeam@gmail.com
Sat, 10 Nov 2007 19:16:11 +0100
commit

e9a07335060337222c94260797582aae2c74d455

parent

198502f41dc3c436b73215f5e2a6b58b050ecfce

2 files changed, 81 insertions(+), 78 deletions(-)

jump to
M config.def.hconfig.def.h

@@ -12,7 +12,7 @@ #define SELBGCOLOR "#0066ff"

#define SELFGCOLOR "#ffffff" /* tagging */ -const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "www" }; +const char tags[][MAXTAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8", "www" }; Bool seltags[LENGTH(tags)] = {[0] = True}; Rule rules[] = { /* class:instance:title regex tags regex isfloating */

@@ -34,61 +34,60 @@ };

/* key definitions */ #define MODKEY Mod1Mask -#define KEYS \ -Key keys[] = { \ - /* modifier key function argument */ \ - { 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 uxterm" }, \ - { 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, viewprevtag, 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|ShiftMask, XK_q, quit, NULL }, \ +Key keys[] = { + /* modifier key function argument */ + { 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 uxterm" }, + { 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, viewprevtag, 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|ShiftMask, XK_q, quit, NULL }, };
M dwm.cdwm.c

@@ -44,8 +44,9 @@

/* macros */ #define BUTTONMASK (ButtonPressMask | ButtonReleaseMask) #define CLEANMASK(mask) (mask & ~(numlockmask | LockMask)) +#define LENGTH(x) (sizeof x / sizeof x[0]) +#define MAXTAGLEN 16 #define MOUSEMASK (BUTTONMASK | PointerMotionMask) -#define LENGTH(x) (sizeof x / sizeof x[0]) /* enums */

@@ -143,6 +144,7 @@ unsigned long getcolor(const char *colstr);

long getstate(Window w); Bool gettextprop(Window w, Atom atom, char *text, unsigned int size); void grabbuttons(Client *c, Bool focused); +void grabkeys(void); unsigned int idxoftag(const char *tag); void initfont(const char *fontstr); Bool isoccupied(unsigned int t);

@@ -838,6 +840,25 @@ XGrabButton(dpy, AnyButton, AnyModifier, c->win, False, BUTTONMASK,

GrabModeAsync, GrabModeSync, None, None); } +void +grabkeys(void) { + unsigned int i; + KeyCode code; + + XUngrabKey(dpy, AnyKey, AnyModifier, root); + for(i = 0; i < LENGTH(keys); i++) { + code = XKeysymToKeycode(dpy, keys[i].keysym); + XGrabKey(dpy, code, keys[i].mod, root, True, + GrabModeAsync, GrabModeAsync); + XGrabKey(dpy, code, keys[i].mod | LockMask, root, True, + GrabModeAsync, GrabModeAsync); + XGrabKey(dpy, code, keys[i].mod | numlockmask, root, True, + GrabModeAsync, GrabModeAsync); + XGrabKey(dpy, code, keys[i].mod | numlockmask | LockMask, root, True, + GrabModeAsync, GrabModeAsync); + } +} + unsigned int idxoftag(const char *tag) { unsigned int i;

@@ -925,27 +946,10 @@ }

void keypress(XEvent *e) { - KEYS unsigned int i; - KeyCode code; KeySym keysym; XKeyEvent *ev; - if(!e) { /* grabkeys */ - XUngrabKey(dpy, AnyKey, AnyModifier, root); - for(i = 0; i < LENGTH(keys); i++) { - code = XKeysymToKeycode(dpy, keys[i].keysym); - XGrabKey(dpy, code, keys[i].mod, root, True, - GrabModeAsync, GrabModeAsync); - XGrabKey(dpy, code, keys[i].mod | LockMask, root, True, - GrabModeAsync, GrabModeAsync); - XGrabKey(dpy, code, keys[i].mod | numlockmask, root, True, - GrabModeAsync, GrabModeAsync); - XGrabKey(dpy, code, keys[i].mod | numlockmask | LockMask, root, True, - GrabModeAsync, GrabModeAsync); - } - return; - } ev = &e->xkey; keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0); for(i = 0; i < LENGTH(keys); i++)

@@ -1048,7 +1052,7 @@ XMappingEvent *ev = &e->xmapping;

XRefreshKeyboardMapping(ev); if(ev->request == MappingKeyboard) - keypress(NULL); + grabkeys(); } void

@@ -1460,7 +1464,7 @@ XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa);

XSelectInput(dpy, root, wa.event_mask); /* grab keys */ - keypress(NULL); + grabkeys(); /* init tags */ compileregs();