A batteries-included Wayland panel that replaces your status bar, notification daemon and OSD with a single binary. Works out of the box with Hyprland, Niri, Sway, MangoWC and other compositors.
VibePanel is something between a simple status bar and a full desktop shell:
- Fast & native – Single Rust binary with GTK4. Direct system integration, low resource usage.
- Batteries included – VibePanel replaces several common components with a single binary:
- Notifications – Integrated notification center
- OSD – Built-in on-screen display for volume and brightness
- Quick settings – Native panel for Wi‑Fi, Bluetooth, audio, power profiles and more
- Minimal config – Sensible defaults out of the box; customize with TOML, CSS only if needed.
- Modern aesthetics – Defaults to a floating "island" style with instant hot‑reloading for layouts and themes.
- Integrated CLI – Control volume, brightness, media playback, bar visibility, popovers and idle inhibition.
These examples use roughly ~10–35 lines of TOML to get completely different vibes, no CSS required.
vibepanel.mp4
A few example configurations
![]() |
![]() |
![]() |
- Workspaces - clickable indicators with tooltips
- Window title - active window with app icon
- Keyboard layout - layout indicator with click to cycle
- Clock - configurable format with calendar popover
- Battery - status with detailed popover and power profiles
- System tray - XDG tray support
- Notifications - notification center with Do Not Disturb
- Updates - package update indicator (dnf, pacman/paru and flatpak support)
- CPU, Memory, GPU & Network Speed - system resource monitors (AMD and NVIDIA GPU support)
- Media - MPRIS media player controls with album art
- Custom - user-defined widgets (scripts, buttons, indicators)
- Quick settings:
- Audio - Control volume and outputs
- Brightness - Adjust screen brightness
- Bluetooth - Manage and pair devices
- Wi-Fi - Connect to and manage networks
- VPN - Connect to NetworkManager-managed VPN connections
- Idle Inhibitor - Toggle idle inhibitor to prevent sleep
-
Install VibePanel:
Arch Linux (AUR):
yay -S vibepanel-bin
Fedora (COPR):
sudo dnf copr enable prankstr/vibepanel sudo dnf install vibepanelNix:
# Try it nix run github:prankstr/vibepanel # Install nix profile install github:prankstr/vibepanel
Other distros: Install runtime dependencies, then:
curl -LO https://github.com/prankstr/vibepanel/releases/latest/download/vibepanel-x86_64-unknown-linux-gnu install -Dm755 vibepanel-x86_64-unknown-linux-gnu ~/.local/bin/vibepanel -
Run it:
vibepanel
See the Installation wiki for more information.
VibePanel doesn't require a config file to run, but if you want to customize anything, create a config at ~/.config/vibepanel/config.toml:
mkdir -p ~/.config/vibepanel
vibepanel --print-example-config > ~/.config/vibepanel/config.tomlHere's a minimal example:
[bar]
size = 32
[widgets]
left = ["workspaces", "window_title"]
center = ["media"]
right = ["quick_settings", "battery", "clock", "notifications"]
[theme]
mode = "dark"
accent = "#adabe0"Changes hot-reload instantly. See the Configuration wiki for all options.
VibePanel is pre-1.0 and under active development. Config options and defaults may change between minor releases, check the changelog when upgrading.
I built the first version in Python but wanted to migrate to Rust for performance, portability and simply to learn Rust. The porting took waay too long in a language I was still learning so I've written the code with a lot of AI assistance. I review all code and use VibePanel daily on multiple computers.
- Compositors: Hyprland, Niri, Sway, Miracle WM, Scroll and other i3-IPC compatible compositors. MangoWC/DWL via dwl-ipc.
- Updates widget: dnf, pacman/paru and flatpak.
Full documentation lives in the wiki:
- Installation - Dependencies, building, auto-start
- Configuration - All config options
- CLI - Command reference
- Widgets - Widget reference and per-widget options
- Theming - Custom CSS styling
- CSS Variables - Full CSS variable reference
- Found a bug? Open an issue
- Want a feature? Request it
- Pull requests welcome
If you find VibePanel useful, consider giving it a star. It helps others discover the project.
MIT



