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

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 Pipewire service.
  • Network: atrium-network bar glyph, hover status, click launches the atrium-network window.
  • Bandwidth: up and down from /proc/net/dev; the popup lists top processes via bandwhich.
  • 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 through mpc 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. AtriumIpc is the compositor spine (runs atrium 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).