From the very beginning, awesome was conceived as a
dwm fork with an external configuration file. First versions of awesome (1.x) were simple modification of
dwm with
flat file configuration which used libconfig. In 2.x branch, Danjou changed the configuration
library from libconfig to libconfuse, a different flat file configuration library, somewhat resembling libconfig. During the development of 2.x releases, many customization features were added to awesome, such as titlebars and icon drawing. that a new format for the configuration file will be used in 3.0 release. The new format was placed in a file ~/.awesomerc.lua, and was later moved to ~/.config/awesome/rc.lua. As the extension suggests, the configuration file is written in the
Lua language. Danjou argued that the new format and Lua integration would enable awesome users to customize awesome in ways he previously considered impossible: using a programming language for configuration made it possible to dynamically specify configuration options. and a tutorial-style article about configuring awesome is posted on the awesome Wiki.
Themes and widgets It is possible to
theme (or
skin) awesome by using the window manager's Beautiful library. In line with rc.lua configuration file, theming is also done in
Lua, allowing dynamic themes to be created. Although the default awesome configuration as of 3.2.1 release does not have any status indicators (like wireless network status, battery indicators, etc.), users can add these items using widgets. Data for the widgets is supplied using arbitrary
Lua code since widgets are defined in the main configuration file. ==Migration to XCB==