A Wayland status bar for mangowm, built on wlr-layer-shell.
The system tray (StatusNotifierItem / DBusMenu) is inspired by
swaybar and waybar.
The full user documentation lives in the mangobar wiki:
- Installation — dependencies, build, Nix, Home Manager
- Configuration —
bar options, module placement,
max-length, scrolling, module actions - Module pages — one page per module (tags, window, cpu, memory, brightness, volume, clock, network, battery, tray, ...)
- Styling —
CSS subset,
@define-color, gradients andmix() - Custom modules
Build tools: meson, ninja, wayland-scanner (part of wayland),
pkg-config.
Libraries:
cjsonwaylandwayland-protocolsfcfttllistpixmancairopangolibpulsesystemd-libsgdk-pixbuf2alsa-lib
Arch:
sudo pacman -S --needed meson ninja cjson wayland wayland-protocols \
fcft tllist pixman cairo pango libpulse systemd-libs gdk-pixbuf2 alsa-libDebian/Ubuntu:
sudo apt install meson ninja-build libcjson-dev libwayland-dev \
wayland-protocols libfcft-dev libpixman-1-dev libcairo2-dev \
libpango1.0-dev libpulse-dev libtllist-dev libsystemd-dev libgdk-pixbuf-2.0-dev \
libasound2-dev pkg-configgit clone https://github.com/mangowm/mangobar.git
cd mangobar
meson setup build -Dprefix=/usr
ninja -C build
sudo ninja -C build installIf meson.build changes after a git pull, ninja re-runs meson
automatically; install any newly added dependencies first.
Runtime note: pamixer / brightnessctl are only needed if your
config's click/scroll actions call them.
Build the package locally with:
nix build .#mangobar
./result/bin/mangobarThe flake exports a Home Manager module. Add it to your flake inputs and enable the user service:
{
imports = [ inputs.mangobar.homeManagerModules.default ];
services.mangobar = {
enable = true;
systemdTarget = "mango.target";
};
}The service starts with graphical-session.target by default. Set
systemdTarget to your compositor's user target, such as mango.target.
Override services.mangobar.package to use a different mangobar derivation.
Set services.mangobar.settings to generate
~/.config/mangobar/config.jsonc from a Nix attribute set, or use
services.mangobar.configFile for an existing JSONC file. These options are
mutually exclusive. Changing either configuration restarts the service during
Home Manager activation; rebuilding the mangobar package does as well.
services.mangobar.settings = {
modules-left = [ "workspaces" "layout" "window" ];
modules-right = [ "cpu" "memory" "clock#time" ];
};See config.jsonc and
style.css.example for complete examples.