What Are the Main Features and Non-Features of the awesome Window Manager?

Updated

awesome is a highly configurable, next-generation framework window manager for X, licensed under GNU GPLv2 and targeted primarily at power users, developers, and anyone who wants fine-grained control over their graphical environment. Its defining traits are speed, extensibility through the Lua programming language, and a documented API for configuring window manager behavior. The "non-features" matter just as much as the features: awesome deliberately does not distinguish between floating and tiled layers, and it uses tags instead of workspaces. If you want a traditional floating/tiling split or classic workspaces, that is a design mismatch, not a missing setting.

Main features

Performance and codebase

  • Very stable, fast, and small codebase and footprint.
  • First window manager using the asynchronous XCB library instead of the old, synchronous Xlib, which makes awesome less subject to latency compared to other window managers.

Extensibility and configuration

  • Designed as a framework window manager: extremely fast, small, dynamic, and heavily extensible using the Lua programming language.
  • A documented API is provided to configure and define the behavior of your window manager.
  • Documented source code and API.
  • A lot of Lua extensions to add features: dynamic tagging, widget feeding, tabs, layouts, and more.

Input and multi-monitor

  • No mouse needed: everything can be performed with the keyboard.
  • Real multihead support (XRandR) with per-screen desktops (tags).

Standards and integration

  • Implements many Freedesktop standards: EWMH, XDG Base Directory, XEmbed, Desktop Notification, System Tray.
  • D-Bus support.

Non-features (deliberate design choices)

  • No floating or tiled layer distinction. awesome does not distinguish between layers; there is no floating or tiled layer. Windows are not sorted into separate floating and tiling modes as a structural concept.
  • Tags instead of workspaces. awesome uses tags rather than workspaces. This allows clients to be placed on several tags, and several tags to be displayed at the same time.

How to read these choices

Aspect awesome's approach What it means for you
Layout model No floating/tiled layer distinction You manage placement through tags and layouts rather than switching between two layer types
Desktop model Tags, not workspaces A client can appear on multiple tags; multiple tags can be visible at once
Configuration Lua + documented API Expect to write configuration rather than only click through settings
Input Keyboard-driven Everything can be performed with the keyboard; a mouse is not required
Multi-monitor XRandR with per-screen tags Each screen gets its own tags
Rendering path Asynchronous XCB instead of synchronous Xlib Reduced exposure to latency compared to Xlib-based window managers

Who this fits

The project states it is primarily targeted at power users, developers, and people dealing with everyday computing tasks who want fine-grained control on their graphical environment. The tag model and Lua configuration reward users who want to define behavior programmatically; they are less convenient if you expect a fixed floating/tiling toggle or conventional workspace switching.

For configuration details and the current API, see the awesome 4.3 documentation (stable) or the docs for the latest git version on awesomewm.org.