Configuration
One file, ~/.config/atrium/config.kdl, in KDL. It hot-reloads: save and the change applies. Mod+Shift+R reloads by hand. A parse error keeps the previous config running and shows an error overlay.
The installed copy at /usr/share/atrium/default-config.kdl is the annotated reference; it is reproduced in full under Default configuration.
Sections
| Node | What it configures |
|---|---|
input | Keyboard (xkb layout, numlock), touchpad, mouse, trackpoint, focus-follows-mouse, warp-mouse-to-focus |
output "name" | Mode, scale, transform, position per monitor. atrium msg outputs lists names and modes. |
layout | Default algorithm, gaps, focus ring, border, shadow, default window width, preset widths |
workspace "name" | Label, icon, open-on-output, and a per-workspace layout override |
environment | Variables for everything the compositor spawns. See The session. |
spawn-at-startup | Programs to launch with the session (pipewire, the shell, a wallpaper setter) |
cursor | Cursor theme and size |
hotkey-overlay | Whether the keybind overlay shows at startup |
screenshot-path, screenshot-annotator | Where captures go, or which tool receives them on stdin |
iconify-action | What a client minimize request does |
animations | Off, or a slowdown factor |
window-rule | See Window rules |
binds | See Keybindings |
debug | Backend knobs, including render-drm-device for hybrid GPUs |
Atrium inherits most of niri’s option surface; the niri configuration reference applies for anything not covered here, except niri’s scrolling-layout options, which Atrium does not have.
Hybrid GPU
On a laptop with an Intel iGPU and an NVIDIA dGPU driving external outputs, screen sharing needs the compositor to render on the NVIDIA node:
debug {
render-drm-device "/dev/dri/renderD129"
}
Find the right node with ls -l /dev/dri/by-path/. See atrium-portal.
Files next to it
The shell reads its own KDL files from the same directory: theme.kdl, weather.kdl, feeds.kdl. See atrium-shell.