How-to guides
Each guide solves one task on a configuration that already works. It gives the steps and what you should see, and assumes the tutorials or an existing rc.lua.
Bar and widgets
| Guide | Task |
|---|---|
| Create or port a custom widget | A reusable widget with its own methods, or an old draw widget on 2.1 |
| Update widgets from timers and commands | Timers, shell commands and signals as sources of change |
| Put a PNG texture on your wibar | A background image at the bar's size |
| Configure notifications | Position, timeout, look and rules for naughty |
| Animate clients, popups and widgets | Entrance, exit and property animations |
Windows and layouts
| Guide | Task |
|---|---|
| Write client rules | Where windows open and how they behave |
| Control where focus goes | Recent windows, fallback on close, utility windows |
| React to client lifecycle | Code on open, focus, state change and close |
| Round client corners | A radius by rule, without the square border |
| Add shadows | Compositor shadows on windows and wiboxes |
| Write a client layout | Your own tiling layout |
| Carousel: set column widths | Resize and cycle column widths |
| Carousel: center the viewport | What the viewport follows |
| Carousel: scroll with gestures | Touchpad scrolling |
| Carousel: stack windows in a column | Stack, split and rearrange |
Input
| Guide | Task |
|---|---|
| Organize keybindings | Media keys, tag groups, mouse bindings, modules |
| Switch keyboard layouts | Several layouts and a switch key |
| Configure input devices | Pointer and keyboard settings at runtime |
Displays
| Guide | Task |
|---|---|
| Set up multiple monitors | Screens, outputs and what goes where |
| Scale a HiDPI display | Fractional output scale |
| Keep tags across monitor hotplug | Save and restore tags when a monitor reconnects |
Session
| Guide | Task |
|---|---|
| Start applications at login | Programs that start with SomeWM |
| Set up the lock screen | Locking, idle timeouts and DPMS |
| Take screenshots | Desktop, screen, client and region captures |
Config and debugging
| Guide | Task |
|---|---|
| Replace a default handler | Your own behavior on a request::* signal |
| Defer startup with request::rules | Startup rules from modules, in order |
| Control SomeWM from the command line | somewm-client from scripts and the shell |
| Debug your config | Find and fix Lua errors |
| Test in a nested compositor | Try changes without touching your session |