Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Build and install

Atrium is built from source on Void Linux. These steps produce the compositor, the session wrapper, and the greeter entry. The shell and the other components each have their own short section afterwards.

Build dependencies

doas xbps-install -S rust cargo pkg-config \
    libdrm-devel libinput-devel libseat-devel libxkbcommon-devel \
    mesa-devel MesaLib-devel wayland-devel wayland-protocols \
    pango-devel cairo-devel pipewire-devel libdisplay-info-devel

Rust stable, MSRV 1.85.

Runtime dependencies

doas xbps-install -S libdrm libinput libseat libxkbcommon mesa wayland \
    pango cairo pipewire libdisplay-info \
    seatd dbus xdg-desktop-portal xdg-desktop-portal-gtk \
    xwayland-satellite

Seat management is seatd: enable the service (ln -s /etc/sv/seatd /var/service/) and put your user in the _seatd group. libseat auto-detects it. Atrium does not use elogind; The system underneath covers the rest of the base.

Build

git clone https://git.efpsoftware.org/atrium/atrium.git
cd atrium
make build

make build runs cargo build --release --no-default-features --features dbus,screencast: no systemd feature, D-Bus kept for portals, screencasting on.

make test runs the same gate the pre-commit hook enforces: cargo fmt --check, clippy with -D warnings across the workspace, and the tests.

Try it nested

cargo run

Opens a compositor window inside your current Wayland session through the winit backend, reading your real config. Do not pass --session here; that forces the TTY/DRM backend.

Install

doas make install

Installs to /usr/local/bin (atrium, atrium-session, atrium-session-debug), the wayland-session entries for greetd or any display manager (atrium.desktop, atrium-debug.desktop), the portal configuration, the default config, and the bundled Heroicons. The install target does not rebuild; run make build first.

First-time setup

mkdir -p ~/.config/atrium
cp /usr/share/atrium/default-config.kdl ~/.config/atrium/config.kdl

Then edit ~/.config/atrium/config.kdl. The two bindings to set first are the terminal and launcher under binds (Mod+Return, Mod+R). The file hot-reloads on save. See Configuration.

The shell

git clone https://git.efpsoftware.org/atrium/atrium-shell.git
cd atrium-shell
make install          # to ~/.local

Requires quickshell (Atrium builds its own lean package without polkit; see The system underneath). Add spawn-at-startup "~/.local/bin/atrium-shell" to config.kdl. atrium-shell restart restarts a running instance.

Network app and portal

cd atrium-network && make build && doas make install
cd atrium-portal  && make build && doas make install

atrium-network needs gtk4, gtk4-layer-shell, and a running wpa_supplicant with its D-Bus interface enabled (-u). atrium-portal is D-Bus activated by xdg-desktop-portal when an app asks to share the screen; see atrium-portal for the portals.conf entry.