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>
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.