Updated README.md, mwm.c.
This commit is contained in:
parent
5e4007b9d1
commit
b699198154
2 changed files with 7 additions and 8 deletions
11
README.md
11
README.md
|
|
@ -2,19 +2,18 @@
|
|||
|
||||
For the true minimalist:
|
||||
|
||||
- ~20 LOC.
|
||||
- No default keybindings.
|
||||
- ~40 LOC.
|
||||
- No default keybindings (just edit the source).
|
||||
- No title bars, no status bars, no buttons, no borders, no menus, etc.
|
||||
- No mouse control.
|
||||
- No virtual desktops.
|
||||
- No configuration files.
|
||||
- Absolutely adabptable to your needs.
|
||||
- Includes just what is strictly needed.
|
||||
- Not standards compliant (because, honestly, who gives a fuck?).
|
||||
|
||||
`mwm` just loops through X key press events and lets you bind
|
||||
actions to key presses. It provides two macros: `grab` and `on`.
|
||||
You first `grab` the key (e.g.: `grab("Return", Mod4Mask)`), then you bind
|
||||
an action to it (e.g.: `on("Return", system("xterm &"))`). More than
|
||||
one action can be provided (e.g.: `on("Tab", XCirculateSubwindowsUp(d, r); XSetInputFocus(d, e.xkey.window, 0, 0)))`).
|
||||
actions to key presses. It provides two macros: `grab` and `K`.
|
||||
Read the source for an example on how to use it (my own setup).
|
||||
|
||||
Dead simple.
|
||||
|
|
|
|||
4
mwm.c
4
mwm.c
|
|
@ -4,7 +4,7 @@
|
|||
#define stk(s) XKeysymToKeycode(d, XStringToKeysym(s))
|
||||
#define K(k, x) if (e.xkey.keycode == stk(k)) { x; }
|
||||
#define E(_, x) if (e.type == _) { x; }
|
||||
#define gks(...) const char *l[] = { __VA_ARGS__ }; \
|
||||
#define grab(...) const char *l[] = { __VA_ARGS__ }; \
|
||||
for (size_t i = 0; i < sizeof(l) / sizeof(*l); ++i) \
|
||||
XGrabKey (d, stk(l[i]), Mod4Mask, r, 1, 1, 1);
|
||||
|
||||
|
|
@ -12,7 +12,7 @@ int main () {
|
|||
Display *d = XOpenDisplay(0); Window r = DefaultRootWindow(d); XEvent e;
|
||||
XSelectInput (d, r, SubstructureRedirectMask);
|
||||
|
||||
gks ("q", "n", "l", "space", "Return", "Right", "Left", "Up", "Down");
|
||||
grab ("q", "n", "l", "space", "Return", "Right", "Left", "Up", "Down");
|
||||
|
||||
while (!XNextEvent (d, &e)) {
|
||||
E (KeyPress,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue