Private fork of https://github.com/awesomeWM/awesome
5a07ee4946
This patch sorts keybindings in arrays by keycode or keysym to speed up look up using binary searches. This is a preliminary work to enable more powerful keybindings stuff, where keybindings can be cascaded or why not, attached to specific clients. Interstingly enough, this patch saves 100ko of initial memory (Heap) usage here. The underlying idea is that we should be able to define keybindings_t as trees of keybindings_t which would then define key sequences. The OO approach kind of make sense in fact, since you create a base keybinding (e.g. reacting on Mod4-w) and then you will probably (with appropriate apis) be able to populate new submaps from that point more or less dynamically. And if you have two keybindings on Mod4-w, then adding them will replace the previous one. This means that you can fake per-client bindings with e.g.: k_default = keybindings.new({"Mod4"}, "w", something); k_mplayer = keybindings.new({"Mod4"}, "w", something_else); k_default:add() and in your focus hook: if /* code for testing if it's mplayer */ then k_mplayer:add() else k_default:add() end This would not work before, it does now. It will take way more sense with submaps of course. Signed-off-by: Pierre Habouzit <madcoder@debian.org> |
||
---|---|---|
build-utils | ||
common | ||
icons | ||
layouts | ||
lib | ||
widgets | ||
.gitignore | ||
AUTHORS | ||
BUGS | ||
CMakeLists.txt | ||
LICENSE | ||
README | ||
STYLE | ||
awesome-client.1.txt | ||
awesome-client.c | ||
awesome-version-internal.h.in | ||
awesome.1.txt | ||
awesome.c | ||
awesome.doxygen.in | ||
awesomeConfig.cmake | ||
awesomerc.5.txt | ||
awesomerc.lua.in | ||
client.c | ||
client.h | ||
cnode.c | ||
cnode.h | ||
config.h.in | ||
dbus.c | ||
dbus.h | ||
event.c | ||
event.h | ||
ewmh.c | ||
ewmh.h | ||
focus.c | ||
focus.h | ||
keybinding.c | ||
keybinding.h | ||
keygrabber.c | ||
keygrabber.h | ||
layout.c | ||
layout.h | ||
lua.c | ||
lua.h | ||
mouse.c | ||
mouse.h | ||
placement.c | ||
placement.h | ||
screen.c | ||
screen.h | ||
stack.c | ||
stack.h | ||
statusbar.c | ||
statusbar.h | ||
structs.h | ||
systray.c | ||
systray.h | ||
tag.c | ||
tag.h | ||
titlebar.c | ||
titlebar.h | ||
widget.c | ||
widget.h | ||
window.c | ||
window.h |
README
awesome ======= awesome is an extremely fast, small, and dynamic window manager for X. Requirements ------------ In order to build awesome itself, you need header files and libs of: - Xlib, xcb and xcb-util. - Lua 5.1 - cairo - pango and pangocairo - libev - glib - GdkPixBuf or Imlib2 (use -DWITH_IMLIB2=1 with cmake) - dbus (optional, use -DWITH_DBUS=0 with cmake to disable) - gperf In order to build the awesome man pages and documentation, you need these tools: - asciidoc - xmlto - docbook XSL stylesheets - luadoc In order to build the source code reference, you need these tools: - doxygen - graphviz Building and Installation ------------------------- After extracting the dist tarball, run: cmake . make make install # might need root permissions The source code reference can be built with "make doc". Running awesome ----------- Add the following line to your .xinitrc to start awesome using startx or to .xsession to start awesome using gdm/kdm/xdm...: exec awesome In order to connect awesome to a specific display, make sure that the DISPLAY environment variable is set correctly, e.g.: DISPLAY=foo.bar:1 exec awesome (This will start awesome on display :1 of the host foo.bar.) Configuration ------------- The configuration of awesome is done by creating a ~/.awesomerc.lua file. An example is provided in the sources.