The mshell bar is a row of widgets ("pills"). Some are indicators
(render-only — a clock, a CPU chip, a Wi-Fi glyph); others are openers that
toggle a layer-shell menu (the dashboard, the network panel, the VPN controls);
a few are actions (lock, screenshot, dark-mode toggle).
Every bar has three slots — start / center / end — and each holds an ordered
list of widgets. You almost never edit these by hand:
Settings → Bar → Top / Bottom bar is the visual editor: add, remove, and
reorder widgets per slot, and toggle the bar itself.
Settings → Bar pill tunes per-pill placement and behaviour for the
passive pills.
Under the hood each slot is a list in the shell profile
(bars.widgets.{top,bottom}.{start,center,end}). In that list a widget is its
token — the unit name (Clock, Network, Vpn, …). Three widgets take a
parameter and use YAML tag syntax:
-!Custommy_button# a user-defined pill (see Custom, below)-!Spacer8# an 8 px gap-!HiddenBarNamedmedia# a named drawer
Live reload
Bar changes from Settings apply immediately. There is no compositor
re-login needed — widgets are a shell concern.
Date/time pill. Cycles through a list of strftime formats ([tempo]) on right-click; left-click opens the clock/calendar menu.
Mdash
Mdash
The dashboard opener — same clock label as Clock, but a click opens mdash: greeting hero + calendar + weather + media player + a quick-settings tile stack + a menu-shortcut grid.
ControlCenter
Control Center
System-preferences glyph that opens the Control Center menu (header + sliders + a grid of quick toggles).
One chip showing live CPU load + package temperature with calm/warn/danger colour states. Click opens the dashboard (per-core bars, RAM, load averages); right-click toggles RAM% in the chip.
AudioDashboard
Audio Dashboard
Default output and input volume in one cluster (🔊 42% · 🎙 5%). Right-click cycles which side shows; click opens the mixer menu (sliders, mute, per-app streams, device + port pickers).
AudioVisualizer
Audio Visualizer
Live audio spectrum — a strip of bars driven by the cava CLI. Pulses with whatever is playing; flat strip on silence. Needs cava installed.
Catwalk
Catwalk
A CPU-reactive animated cat (noctalia / RunCat sprites). Idles below a CPU threshold, walks faster as load climbs. Click opens the CPU dashboard.
Weather
Weather
Current condition icon + temperature for the configured location. Click opens the Current / Hourly / Daily weather menu. Location is set in Settings → General.
SystemUpdate
System Updates
Count of pending updates across official repo / AUR / Flatpak. Click opens the package list; right-click re-probes. Sources + interval in Settings → System Updates.
Podman
Podman
Running containers / pods / images summary from podman ps. Click opens the Podman menu.
SshSessions
SSH Sessions
Live count of active ssh clients. Click opens a searchable host list from ~/.ssh/config (click a host to connect in a new terminal); right-click re-polls.
Power
Power Profile
Active power profile (performance / balanced / power-saver) + battery / power source, from power-profiles-daemon + UPower. Click opens the profile switcher panel.
Wi-Fi / wired link state + live throughput, from NetworkManager (no nmcli polling). Click opens the network menu (Wi-Fi list, connect/disconnect, rescan, radio toggle); right-click flips between speed and icon display.
Vpn
VPN (Mullvad)
Native Mullvad pill driving the mvpn binary. Shield tints when the tunnel is up (relay + location in the tooltip). Click opens the VPN menu — connect / random / fastest, lockdown, auto-connect, quantum, plus a collapsible DNS section.
VpnIndicator
VPN Indicator
Lights up while a generic VPN tunnel is up — OpenVPN (tun*) or WireGuard (wg*: wg-quick, NetworkManager). Reads /sys/class/net (polled); the whole pill hides while disconnected, and the active interface name shows in the tooltip. Mullvad (wg0-mullvad) is excluded — the dedicated Vpn pill covers it. No menu.
Dns
DNS
Standalone DNS / Blocky panel (separate from the combined VPN pill). Polls DNS/VPN/Blocky state; click opens the DNS menu.
Ip
Public IP
Public IP from ipinfo.io (polled). Click opens a detail panel (city, ASN, …).
Bluetooth
Bluetooth
Adapter state icon; tints when a paired device is connected (a "hooked up to my headphones" cue). Opens the Bluetooth panel.
Mirrors whichever MPRIS player is currently playing (Spotify, mpd, browsers, mpv, …) with transport controls.
Mtune
Tune
Dedicated pill for the built-in mtune music player: cover, title, queue position, and elapsed / total. Left-click opens the Tune menu (seek bar, transport, shuffle / repeat, speed, folder + playlist controls); the menu also shows the live queue with a filter box, and can play or remove any entry directly; right-click toggles play / pause; when mtune isn't running, a click launches it.
Lyrics
Lyrics
Current synced lyric line of the now-playing track, scrolling in the bar. Prefers the track's own embedded lyrics (if the file has any — mtune only) over a lrclib.net lookup. Click opens the full scrolling lyrics panel (lrclib.net, disk-cached).
One-click flip between Light and Dark matugen modes; the icon previews the mode you'd switch to.
Twilight
Twilight
margo's built-in blue-light filter. Click opens the panel (toggle + temperature + mode + schedule); right-click flips it on/off; the icon shows the live colour temperature while filtering.
KeepAwake
Keep Awake
Timed idle inhibitor. Left-click opens the duration grid + countdown; right-click ends a running session. Shows a live countdown while active.
Keyboard
On-Screen Keyboard
Toggles mkeys, margo's GTK on-screen keyboard.
ColorPicker
ColorPicker
Picks a colour from the screen and copies hex/rgb to the clipboard.
Opens the wallpaper picker / rotates the wallpaper.
Clipboard
Clipboard
Clipboard history (wl-clipboard); click opens the searchable history menu.
Notes
Notes Hub
Scratchpad + notes + todos with counts; click opens the Notes menu.
AlarmClock
Alarm Clock
Alarm-bell pill that opens the Alarm Clock menu (alarms + stopwatch). Shows a running stopwatch inline and pulses while a tone rings.
Countdown
Countdown
Shows the soonest enabled Alarm Clock countdown (hourglass glyph + remaining time). Click opens the Alarm Clock menu on its Countdown tab. Hidden when no enabled, parseable target remains.
Ai
AI
Opens the native streaming-chat menu. Provider / model / key live in Settings → AI.
Keybinds
Keyboard Shortcuts
Opens a searchable cheatsheet of every shortcut, parsed live from config.conf.
Ufw
UFW Firewall
UFW status (privilege-free poll); click opens the firewall panel.
A blank gap of the given pixel width, to push widgets apart.
Separator
Separator
A thin vertical divider line between widgets.
HiddenBar
Hidden Bar
A collapsible "drawer" pill that renders this bar's hidden_widgets behind a trigger — hover (auto-expand) or click to reveal, right-click to pin, auto-collapse on leave.
!HiddenBarNamed <name>
Hidden Bar (named)
An independently-addressable drawer with its own widget list + behaviour (entry under bars.widgets.hidden_bars). Target it with mshellctl hidden-bar <verb> <name>.
!Custom <name>
Custom Widget
A user-defined pill: icon/image + optional label, left/right click commands, and an optional exec poller whose stdout fills the label via {output}. Defined under bars.widgets.custom_widgets.