atrium-shell
The bar and panels, as one quickshell configuration. One process, one QML tree, no polkit, no GTK or Qt theme engine. It reads the compositor’s IPC event stream and shells out to ordinary CLIs for everything else.
Install and run
make install # ~/.local/share/atrium-shell + ~/.local/bin/atrium-shell
make PREFIX=/usr/local install # system-wide, with doas
atrium-shell # start
atrium-shell restart # kill a running instance and start again
make run # run from the repo; hot-reloads on save
Autostart from config.kdl: spawn-at-startup "~/.local/bin/atrium-shell". A bind such as Mod+Y { spawn "~/.local/bin/atrium-shell" "restart"; } is handy.
Adding a new QML file (a service singleton in particular) does not hot-reload reliably; restart after adding files.
What is on the bar
Per monitor, resolved by connector name in Modules/Bar/Bar.qml, so each monitor can carry a different set.
- Workspaces: one slot per workspace with its heroicon, colored by state, click to focus. Reads the compositor’s IPC.
- Clock, Timezones (a world-clock strip with a popup and calendar).
- Audio and Microphone with a shared mixer popup: output and input selection, per-app streams. Scroll on the icon adjusts volume. PipeWire, via quickshell’s
Pipewireservice. - Network:
atrium-network barglyph, hover status, click launches the atrium-network window. - Bandwidth: up and down from
/proc/net/dev; the popup lists top processes viabandwhich. - MPD: glyph and now-playing; a mini popup with album art, seek, and transport; and a full panel with queue, playlists, and playback modes. Driven by
mpc, event-driven throughmpc idle. - Weather (OpenWeatherMap), Btc (CoinGecko), Feed (RSS/Atom headlines with a popup that opens links).
- Tray: status-notifier icons with activate and menu.
Configuration files
All in ~/.config/atrium/, KDL, one key "value" per line:
theme.kdl: colors and metrics. Keys:bg,fg,accent,muted,urgent,occupied,green,red,bar-height,font-size,icon-size,font-family,icon-font. Defaults are Arc-Dark.weather.kdl:api-key,city,units.feeds.kdl:feed "Label" "https://…"per line.
The bar font is Hack Nerd Font Mono; icon glyphs are nerd-font codepoints, workspace icons are SVG.
Structure
shell.qml: entry point.Commons/Theme.qml: the one source of colors and metrics; widgets never hardcode.Services/: state singletons.AtriumIpcis the compositor spine (runsatrium msg -j event-stream, restarts it if it dies, and re-pulls the full workspace list on any event); the others wrap PipeWire,mpc,/proc/net/dev, and HTTP.Widgets/: the reusable pieces listed above.Modules/Bar/: the per-monitor panel windows.
Next
Power menu, launcher, on-screen display, and lock screen are the modules still to build; notifications stay with an external daemon (mako).