A GTK4 panel for Wayland with built-in notifications, OSD, and quick settings in a single binary. Supports Hyprland, Niri, Sway, MangoWC and more.
VibePanel is something between a simple status bar and a full desktop shell:
- Minimal config – Sensible defaults out of the box; customize with TOML, CSS only if needed.
- 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
- Modern aesthetics – Defaults to a floating "island" style with instant hot‑reloading for layouts and themes.
- Integrated CLI – Small CLI for controlling volume, brightness, media controls and idle inhibition.
- Center anchoring – Custom GTK4 layout keeps center widgets centered even when left/right sections grow.
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
- 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 - system resource monitors
- Media - MPRIS media player controls with album art
- 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:
touch ~/.config/vibepanel/config.toml
# or generate an example config
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 in early 0.x development but should be stable enough for daily use. Config options and defaults may change between minor releases, check the changelog when upgrading.
The idea and architecture behind the panel is something I first built in Python. For performance, portability and curiosity reasons I wanted to migrate to Rust. I started doing it myself but realized it would take far too long in a language I'm still learning. So this codebase is largely written by AI but a lot of effort has gone into making sure it's not slop and I use VibePanel daily on multiple computers.
If you find a bug or if you're missing a feature, please open an issue!
- 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
- Widgets - Widget reference and per-widget options
- Theming - Custom CSS styling
- CSS Variables - Full CSS variable reference
Contributions are welcome! Feel free to open issues or submit pull requests.
MIT



