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-network

A small Rust program for wifi, wired, and VPN management. It talks D-Bus to wpa_supplicant (fi.w1.wpa_supplicant1), reads addresses from dhcpcd, and drives openvpn as a child process. No NetworkManager, no libnm.

Modes

InvocationWhat
atrium-network barPrint the bar glyph and exit
atrium-network bar --watchPrint the glyph on every state change
atrium-network statusMulti-line status text for a tooltip
atrium-networkThe GTK4 window, centered and floating
atrium-network --bar-edge top --bar-margin 22The window anchored to a bar edge via layer-shell

The window shows wifi, address, wired, and connectivity status; scans and connects with password entry; lists and forgets saved networks; starts and stops VPN profiles.

Requirements

  • wpa_supplicant running with -u (D-Bus interface). Void’s runit service reads OPTS from /etc/sv/wpa_supplicant/conf.
  • Your user in wheel, and the wheel-group D-Bus policy present as a drop-in at /etc/dbus-1/system.d/wpa_supplicant-wheel.conf. Without it wifi works but the app sees only “no interface”: an access-denied error swallowed by D-Bus.
  • The wifi interface is discovered through /sys/class/net/*/wireless/; nothing is hardcoded.
  • VPN profiles are ~/.config/openvpn/*.ovpn, started as doas openvpn --config <file>, so /etc/doas.conf needs permit nopass <user> cmd openvpn.

In the bar

atrium-shell’s Network widget runs bar and status together every few seconds and launches the anchored window on click. The shell stays a thin launcher on purpose: connection management belongs in a real program.

Emergency path

Without any of this, from a TTY:

wpa_cli scan && wpa_cli scan_results
wpa_cli add_network                 # returns an id, say 0
wpa_cli set_network 0 ssid '"Name"'
wpa_cli set_network 0 psk '"password"'
wpa_cli enable_network 0
wpa_cli save_config

dhcpcd assigns an address as soon as the link is up.