When comparing XMonad vs awesome WM, the Slant community recommends XMonad for most people. In the question“What are the best window managers for Linux?” XMonad is ranked 3rd while awesome WM is ranked 4th. The most important reason people chose XMonad is:
XMonad is written, configured, and fully extensible in Haskell. This means that users aren't limited to a small set of pre-programmed layouts and actions: anything can be programmed into the configuration. It's simple to modify basic settings, and the example config has lots of comments to get you started. Haskell keeps this code clean, concise, and readable, and its type system keeps you safe from any serious mistakes. This makes it fast and light, even on very small and slow systems.
Ranked in these QuestionsQuestion Ranking
Pro Fully extensible with Haskell
XMonad is written, configured, and fully extensible in Haskell. This means that users aren't limited to a small set of pre-programmed layouts and actions: anything can be programmed into the configuration.
It's simple to modify basic settings, and the example config has lots of comments to get you started. Haskell keeps this code clean, concise, and readable, and its type system keeps you safe from any serious mistakes. This makes it fast and light, even on very small and slow systems.
Pro Absolutely minimal
The entire window manager is extremely small, and includes nothing beyond basic window manipulation and tiling. Out of the box, there are no window decorations, status bar nor icon dock; just clean lines and efficiency.
Pro Efficient to use
XMonad is a very minimal and efficient window manager, especially if the user is familiar with Haskell.
Pro Very stable
Use of Haskell, in conjunction with smart programming practices, guarantees a crash-free experience.
Pro Handles multiple monitors well
XMonad can handle multi-monitor setups by default.
Pro Edit configuration and reload on-the-fly
Configuration is compiled into the WM, and it can be changed/updated on-the-fly, without requiring a full reload.
Pro Great availability of libraries
The use of Haskell as an extension language means that popular pieces of functionality are easily shared and widely available as Haskell Libraries. Many default layouts, and tools for quickly and easily building your own, are available through XMonad-contrib, and highly re-usable configurations are commonly shared through blog articles and the Xmonad Wiki.
Pro Highly configurable
If you enjoy programming, you can even add features to XMonad to make it your perfect desktop environment, and the Contrib modules give you most of what you need to do exactly that.
Pro Xinerama support
XMonad has full support for Xinerama: windows can be tiled and managed across multiple physical screens.
Pro Dynamic Tiling
XMonad uses dynamic tiling which means that it automatically handles arranging your windows into various layouts which the user can cycle through.
Pro Low latency
Awesome was the first window manager to be ported to use the asynchronous XCB library instead of XLib, making it much more responsive than most other window managers.
Pro Highly configurable
Awesome is highly configurable, allowing the user to change anything they see fit in order to make the WM work for them and their workflow.
Pro Fully extensible with Lua
Pro Tags instead of workspaces
With awesome, clients are organized with tags: one client can be on more than one tag, and multiple tags can be displayed at the same time.
Pro Some mouse tiling support
You can rearrange and re-size [some] panels via the mouse.
Pro Good default configuration
By default, you'll have a status bar (hidden in some modes), an application launcher, automatic fullscreen, manual fullscreen shortcut, etc.
Pro Single window, multi-workspace support
The user can have each window visible on one, multiple, or no workspace. You can also temporarily include another workspace in the current one.
Awesome always works as it should: it is very stable and reliable.
Pro Xinerama support
Awesome has real multi-head support via XRandR/Xinerama, with per-screen desktops.
Pro Keyboard friendly
Awesome is really keyboard friendly and you can do almost anything with keyboard shortcuts.
Pro Any window can be full screen
Select the window. Hold ALT+SHIFT and press SPACE until the window takes up the entire screen.
Pro Easy module for useless gaps
Lain module makes useless gaps easy.
Con Steep learning curve for uninitiated users
Like a lot of tiling window managers, the learning curve for XMonad is quite steep.
Con Requires knowledge of Haskell for configuration
Understanding of Haskell is required in order to configure XMonad.
Con Requires a lot of Haskell dependencies
XMonad depends on GHC (the Glasgow Haskell Compiler) which can take up about 700 MB or disk space.
Con You should have some skills to configure it
Awesome, like most window managers, is targeted at advanced users. Though is has sane defaults and easy to read documentation, it is still a far jump from the more common graphical UIs found in computing.
Con Difficult to google for solutions to problems
Awesome is a very common word, making searches for solutions to problems using Google very time-consuming as a lot of chaff has to be sifted through.
Con Doesn't have tabbed containers
There is no option to have tabbed containers in awesome window manager.
Con Some programs don't cooperate well with tiling window managers
The user can usually work around this, but it can be quite annoying at the same time.
Con Regular API breakage
Results in many of the scripts for awesome to be found online end up being outdated.
Con Configuration uses Lua (Programming Language)
It is time-consuming to make changes to configuration. Though Lua is a good language, a plain text file to configure things would seem to be a better approach.