Concepts
Concept pages explain how a part of SomeWM works and the reasons behind it. None is needed to follow a tutorial or a guide. Read one when you want to know why something behaves the way it does.
Start here
| Page | Explains |
|---|---|
| Why SomeWM | What SomeWM is for and what it is built from |
| The object model | Outputs, screens, tags, clients, wiboxes and widgets, and how they relate |
| Signals | How events reach Lua and when handlers run |
| Architecture | The C core, the Lua libraries, the config and Clay |
Layout and rendering
In order; each builds on the one before.
| Page | Explains |
|---|---|
| How SomeWM draws | From a property change to pixels |
| How widgets are laid out | What a widget declares, and why an old draw widget disappears |
| Clients and layouts in the same tree | Window frames and titlebars as part of the layout |
| Reading the tree | Finding which rule gave a widget its size |
| Scene graph | Drawing order: bands and client stacking |
Windows and tags
| Page | Explains |
|---|---|
| Client stacking | Visual order versus focus and tiling order |
| Focus history | Which window gets focus back |
| Master and stack | How tile places clients |
| Scrollable tiling | How the carousel sizes and scrolls columns |
| Why tags persist | What the default config restores after a monitor reconnects |
Platform
| Page | Explains |
|---|---|
| AwesomeWM compatibility | The policy on keeping an rc.lua working |
| Wayland vs X11 | Display-server differences that reach a config |
| Display scaling | Output scale, logical geometry and DPI |
| Session locking | Built-in and external locks, and what happens on failure |
| Screenshots | What a capture contains and in which coordinates |
| Test mode | What nested and headless instances isolate |