I must admit that the "no complicated configuration file" was an advantage for most users of awesome, but well, it was not possible to continue on this path.

As I explain in a mail on the awesome mailing-list, integrating a high level language for handling configuration was becoming necessary.

So I did it, I wrote a 10K lines patch (about +3K/-6K SLOC) that just drop all the libconfuse configuration handling and now export a Lua API. It took me about two weeks to complete this task, so it was not really hard. And I am so fucking happy that the code base is now even lighter (3K SLOC less for doing more!).

The Lua API is sometimes a PITA to understand, because there seems to be a lot of functions more or less connected or doing the same thing, and the separation between the core and the aux library is not always clear to beginners. But in the end, it's a language really easy to integrate, and very easy to learn. Lovely.

Now it's possible to do almost everything possible in awesome, since you can now have conditional configuration and hooks to do stuff on events (i.e. change window border size on focus, toggle title bars when switching to floating layout, …). The configuration file format and syntax is I guess still clear.

You can also execute Lua code on the fly and manipulate objects, like I did in this small video demonstration recorded a few days ago.