SkillAgentSearch skills...

Vibepanel

GTK4 panel for Wayland with notifications, OSD, and quick settings – between a status bar and a desktop shell.

Install / Use

/learn @prankstr/Vibepanel

README

VibePanel

<p align="center"> <img src="assets/screenshots/islands_bar_light.png" alt="VibePanel bar preview" width="830"> </p>

A GTK4 panel for Wayland with built-in notifications, OSD, and quick settings in a single binary. Supports Hyprland, Niri, Sway, MangoWC and more.

Why VibePanel?

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.

Demo

These examples use roughly ~10–35 lines of TOML to get completely different vibes, no CSS required.

https://github.com/user-attachments/assets/d7ed9674-1c32-436e-af1a-5ece72096816

A few example configurations

<table align="center"> <tr> <td><a href="assets/screenshots/gruvbox_desktop.png"><img src="assets/screenshots/gruvbox_desktop.png" width="270"></a></td> <td><a href="assets/screenshots/frosted_minimal_desktop.png"><img src="assets/screenshots/frosted_minimal_desktop.png" width="270"></a></td> <td><a href="assets/screenshots/sonoma_desktop.png"><img src="assets/screenshots/sonoma_desktop.png" width="270"></a></td> </tr> </table>

Widgets

  • 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

Quickstart

  1. Install VibePanel:

    Arch Linux (AUR):

    yay -S vibepanel-bin
    

    Fedora (COPR):

    sudo dnf copr enable prankstr/vibepanel
    sudo dnf install vibepanel
    

    Nix:

    # 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
    

    Or build from source.

  2. Run it:

    vibepanel
    

See the Installation wiki for more information.

Configuration

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.toml

Here'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.

Status

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!

Compatibility

Documentation

Full documentation lives in the wiki:

Contributing

Contributions are welcome! Feel free to open issues or submit pull requests.

License

MIT

Related Skills

View on GitHub
GitHub Stars67
CategoryDevelopment
Updated14h ago
Forks3

Languages

Rust

Security Score

100/100

Audited on Mar 26, 2026

No findings