mirror of git://git.suckless.org/dwm
Using a new tags definition (const char [][MAXTAGLEN] - thanks go to Szabolcs!
This commit is contained in:
parent
198502f41d
commit
e9a0733506
115
config.def.h
115
config.def.h
|
@ -12,7 +12,7 @@
|
||||||
#define SELFGCOLOR "#ffffff"
|
#define SELFGCOLOR "#ffffff"
|
||||||
|
|
||||||
/* tagging */
|
/* 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};
|
Bool seltags[LENGTH(tags)] = {[0] = True};
|
||||||
Rule rules[] = {
|
Rule rules[] = {
|
||||||
/* class:instance:title regex tags regex isfloating */
|
/* class:instance:title regex tags regex isfloating */
|
||||||
|
@ -34,61 +34,60 @@ Layout layouts[] = {
|
||||||
|
|
||||||
/* key definitions */
|
/* key definitions */
|
||||||
#define MODKEY Mod1Mask
|
#define MODKEY Mod1Mask
|
||||||
#define KEYS \
|
Key keys[] = {
|
||||||
Key keys[] = { \
|
/* modifier key function argument */
|
||||||
/* modifier key function argument */ \
|
{ MODKEY, XK_p, spawn,
|
||||||
{ MODKEY, XK_p, spawn, \
|
"exe=`dmenu_path | dmenu -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGCOLOR"'"
|
||||||
"exe=`dmenu_path | dmenu -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGCOLOR"'" \
|
" -sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"'` && exec $exe" },
|
||||||
" -sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"'` && exec $exe" }, \
|
{ MODKEY|ShiftMask, XK_Return, spawn, "exec uxterm" },
|
||||||
{ MODKEY|ShiftMask, XK_Return, spawn, "exec uxterm" }, \
|
{ MODKEY, XK_space, setlayout, NULL },
|
||||||
{ MODKEY, XK_space, setlayout, NULL }, \
|
{ MODKEY, XK_b, togglebar, NULL },
|
||||||
{ MODKEY, XK_b, togglebar, NULL }, \
|
{ MODKEY, XK_j, focusnext, NULL },
|
||||||
{ MODKEY, XK_j, focusnext, NULL }, \
|
{ MODKEY, XK_k, focusprev, NULL },
|
||||||
{ MODKEY, XK_k, focusprev, NULL }, \
|
{ MODKEY, XK_h, setmwfact, "-0.05" },
|
||||||
{ MODKEY, XK_h, setmwfact, "-0.05" }, \
|
{ MODKEY, XK_l, setmwfact, "+0.05" },
|
||||||
{ MODKEY, XK_l, setmwfact, "+0.05" }, \
|
{ MODKEY, XK_m, togglemax, NULL },
|
||||||
{ MODKEY, XK_m, togglemax, NULL }, \
|
{ MODKEY, XK_Return, zoom, NULL },
|
||||||
{ MODKEY, XK_Return, zoom, NULL }, \
|
{ MODKEY, XK_Tab, viewprevtag, NULL },
|
||||||
{ MODKEY, XK_Tab, viewprevtag, NULL }, \
|
{ MODKEY|ShiftMask, XK_space, togglefloating, NULL },
|
||||||
{ MODKEY|ShiftMask, XK_space, togglefloating, NULL }, \
|
{ MODKEY|ShiftMask, XK_c, killclient, NULL },
|
||||||
{ MODKEY|ShiftMask, XK_c, killclient, NULL }, \
|
{ MODKEY, XK_0, view, NULL },
|
||||||
{ MODKEY, XK_0, view, NULL }, \
|
{ MODKEY, XK_1, view, tags[0] },
|
||||||
{ MODKEY, XK_1, view, tags[0] }, \
|
{ MODKEY, XK_2, view, tags[1] },
|
||||||
{ MODKEY, XK_2, view, tags[1] }, \
|
{ MODKEY, XK_3, view, tags[2] },
|
||||||
{ MODKEY, XK_3, view, tags[2] }, \
|
{ MODKEY, XK_4, view, tags[3] },
|
||||||
{ MODKEY, XK_4, view, tags[3] }, \
|
{ MODKEY, XK_5, view, tags[4] },
|
||||||
{ MODKEY, XK_5, view, tags[4] }, \
|
{ MODKEY, XK_6, view, tags[5] },
|
||||||
{ MODKEY, XK_6, view, tags[5] }, \
|
{ MODKEY, XK_7, view, tags[6] },
|
||||||
{ MODKEY, XK_7, view, tags[6] }, \
|
{ MODKEY, XK_8, view, tags[7] },
|
||||||
{ MODKEY, XK_8, view, tags[7] }, \
|
{ MODKEY, XK_9, view, tags[8] },
|
||||||
{ MODKEY, XK_9, view, tags[8] }, \
|
{ MODKEY|ControlMask, XK_1, toggleview, tags[0] },
|
||||||
{ MODKEY|ControlMask, XK_1, toggleview, tags[0] }, \
|
{ MODKEY|ControlMask, XK_2, toggleview, tags[1] },
|
||||||
{ MODKEY|ControlMask, XK_2, toggleview, tags[1] }, \
|
{ MODKEY|ControlMask, XK_3, toggleview, tags[2] },
|
||||||
{ MODKEY|ControlMask, XK_3, toggleview, tags[2] }, \
|
{ MODKEY|ControlMask, XK_4, toggleview, tags[3] },
|
||||||
{ MODKEY|ControlMask, XK_4, toggleview, tags[3] }, \
|
{ MODKEY|ControlMask, XK_5, toggleview, tags[4] },
|
||||||
{ MODKEY|ControlMask, XK_5, toggleview, tags[4] }, \
|
{ MODKEY|ControlMask, XK_6, toggleview, tags[5] },
|
||||||
{ MODKEY|ControlMask, XK_6, toggleview, tags[5] }, \
|
{ MODKEY|ControlMask, XK_7, toggleview, tags[6] },
|
||||||
{ MODKEY|ControlMask, XK_7, toggleview, tags[6] }, \
|
{ MODKEY|ControlMask, XK_8, toggleview, tags[7] },
|
||||||
{ MODKEY|ControlMask, XK_8, toggleview, tags[7] }, \
|
{ MODKEY|ControlMask, XK_9, toggleview, tags[8] },
|
||||||
{ MODKEY|ControlMask, XK_9, toggleview, tags[8] }, \
|
{ MODKEY|ShiftMask, XK_0, tag, NULL },
|
||||||
{ MODKEY|ShiftMask, XK_0, tag, NULL }, \
|
{ MODKEY|ShiftMask, XK_1, tag, tags[0] },
|
||||||
{ MODKEY|ShiftMask, XK_1, tag, tags[0] }, \
|
{ MODKEY|ShiftMask, XK_2, tag, tags[1] },
|
||||||
{ MODKEY|ShiftMask, XK_2, tag, tags[1] }, \
|
{ MODKEY|ShiftMask, XK_3, tag, tags[2] },
|
||||||
{ MODKEY|ShiftMask, XK_3, tag, tags[2] }, \
|
{ MODKEY|ShiftMask, XK_4, tag, tags[3] },
|
||||||
{ MODKEY|ShiftMask, XK_4, tag, tags[3] }, \
|
{ MODKEY|ShiftMask, XK_5, tag, tags[4] },
|
||||||
{ MODKEY|ShiftMask, XK_5, tag, tags[4] }, \
|
{ MODKEY|ShiftMask, XK_6, tag, tags[5] },
|
||||||
{ MODKEY|ShiftMask, XK_6, tag, tags[5] }, \
|
{ MODKEY|ShiftMask, XK_7, tag, tags[6] },
|
||||||
{ MODKEY|ShiftMask, XK_7, tag, tags[6] }, \
|
{ MODKEY|ShiftMask, XK_8, tag, tags[7] },
|
||||||
{ MODKEY|ShiftMask, XK_8, tag, tags[7] }, \
|
{ MODKEY|ShiftMask, XK_9, tag, tags[8] },
|
||||||
{ MODKEY|ShiftMask, XK_9, tag, tags[8] }, \
|
{ MODKEY|ControlMask|ShiftMask, XK_1, toggletag, tags[0] },
|
||||||
{ MODKEY|ControlMask|ShiftMask, XK_1, toggletag, tags[0] }, \
|
{ MODKEY|ControlMask|ShiftMask, XK_2, toggletag, tags[1] },
|
||||||
{ MODKEY|ControlMask|ShiftMask, XK_2, toggletag, tags[1] }, \
|
{ MODKEY|ControlMask|ShiftMask, XK_3, toggletag, tags[2] },
|
||||||
{ MODKEY|ControlMask|ShiftMask, XK_3, toggletag, tags[2] }, \
|
{ MODKEY|ControlMask|ShiftMask, XK_4, toggletag, tags[3] },
|
||||||
{ MODKEY|ControlMask|ShiftMask, XK_4, toggletag, tags[3] }, \
|
{ MODKEY|ControlMask|ShiftMask, XK_5, toggletag, tags[4] },
|
||||||
{ MODKEY|ControlMask|ShiftMask, XK_5, toggletag, tags[4] }, \
|
{ MODKEY|ControlMask|ShiftMask, XK_6, toggletag, tags[5] },
|
||||||
{ MODKEY|ControlMask|ShiftMask, XK_6, toggletag, tags[5] }, \
|
{ MODKEY|ControlMask|ShiftMask, XK_7, toggletag, tags[6] },
|
||||||
{ MODKEY|ControlMask|ShiftMask, XK_7, toggletag, tags[6] }, \
|
{ MODKEY|ControlMask|ShiftMask, XK_8, toggletag, tags[7] },
|
||||||
{ MODKEY|ControlMask|ShiftMask, XK_8, toggletag, tags[7] }, \
|
{ MODKEY|ControlMask|ShiftMask, XK_9, toggletag, tags[8] },
|
||||||
{ MODKEY|ControlMask|ShiftMask, XK_9, toggletag, tags[8] }, \
|
{ MODKEY|ShiftMask, XK_q, quit, NULL },
|
||||||
{ MODKEY|ShiftMask, XK_q, quit, NULL }, \
|
|
||||||
};
|
};
|
||||||
|
|
44
dwm.c
44
dwm.c
|
@ -44,8 +44,9 @@
|
||||||
/* macros */
|
/* macros */
|
||||||
#define BUTTONMASK (ButtonPressMask | ButtonReleaseMask)
|
#define BUTTONMASK (ButtonPressMask | ButtonReleaseMask)
|
||||||
#define CLEANMASK(mask) (mask & ~(numlockmask | LockMask))
|
#define CLEANMASK(mask) (mask & ~(numlockmask | LockMask))
|
||||||
#define MOUSEMASK (BUTTONMASK | PointerMotionMask)
|
|
||||||
#define LENGTH(x) (sizeof x / sizeof x[0])
|
#define LENGTH(x) (sizeof x / sizeof x[0])
|
||||||
|
#define MAXTAGLEN 16
|
||||||
|
#define MOUSEMASK (BUTTONMASK | PointerMotionMask)
|
||||||
|
|
||||||
|
|
||||||
/* enums */
|
/* enums */
|
||||||
|
@ -143,6 +144,7 @@ unsigned long getcolor(const char *colstr);
|
||||||
long getstate(Window w);
|
long getstate(Window w);
|
||||||
Bool gettextprop(Window w, Atom atom, char *text, unsigned int size);
|
Bool gettextprop(Window w, Atom atom, char *text, unsigned int size);
|
||||||
void grabbuttons(Client *c, Bool focused);
|
void grabbuttons(Client *c, Bool focused);
|
||||||
|
void grabkeys(void);
|
||||||
unsigned int idxoftag(const char *tag);
|
unsigned int idxoftag(const char *tag);
|
||||||
void initfont(const char *fontstr);
|
void initfont(const char *fontstr);
|
||||||
Bool isoccupied(unsigned int t);
|
Bool isoccupied(unsigned int t);
|
||||||
|
@ -838,6 +840,25 @@ grabbuttons(Client *c, Bool focused) {
|
||||||
GrabModeAsync, GrabModeSync, None, None);
|
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
|
unsigned int
|
||||||
idxoftag(const char *tag) {
|
idxoftag(const char *tag) {
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
@ -925,27 +946,10 @@ isvisible(Client *c) {
|
||||||
|
|
||||||
void
|
void
|
||||||
keypress(XEvent *e) {
|
keypress(XEvent *e) {
|
||||||
KEYS
|
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
KeyCode code;
|
|
||||||
KeySym keysym;
|
KeySym keysym;
|
||||||
XKeyEvent *ev;
|
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;
|
ev = &e->xkey;
|
||||||
keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0);
|
keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0);
|
||||||
for(i = 0; i < LENGTH(keys); i++)
|
for(i = 0; i < LENGTH(keys); i++)
|
||||||
|
@ -1048,7 +1052,7 @@ mappingnotify(XEvent *e) {
|
||||||
|
|
||||||
XRefreshKeyboardMapping(ev);
|
XRefreshKeyboardMapping(ev);
|
||||||
if(ev->request == MappingKeyboard)
|
if(ev->request == MappingKeyboard)
|
||||||
keypress(NULL);
|
grabkeys();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1460,7 +1464,7 @@ setup(void) {
|
||||||
XSelectInput(dpy, root, wa.event_mask);
|
XSelectInput(dpy, root, wa.event_mask);
|
||||||
|
|
||||||
/* grab keys */
|
/* grab keys */
|
||||||
keypress(NULL);
|
grabkeys();
|
||||||
|
|
||||||
/* init tags */
|
/* init tags */
|
||||||
compileregs();
|
compileregs();
|
||||||
|
|
Loading…
Reference in New Issue