https://github.com/prankstr/vibepanel
GTK4 panel for Wayland with notifications, OSD, and quick settings – between a status bar and a desktop shell.
https://github.com/prankstr/vibepanel
bar dwl gtk gtk4 hyprland mangowc niri panel rust statusbar sway tiling-window-manager wayland wlroots
Last synced: about 1 month ago
JSON representation
GTK4 panel for Wayland with notifications, OSD, and quick settings – between a status bar and a desktop shell.
- Host: GitHub
- URL: https://github.com/prankstr/vibepanel
- Owner: prankstr
- License: mit
- Created: 2025-12-22T16:33:51.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2026-04-28T15:27:06.000Z (about 1 month ago)
- Last Synced: 2026-04-28T17:23:42.275Z (about 1 month ago)
- Topics: bar, dwl, gtk, gtk4, hyprland, mangowc, niri, panel, rust, statusbar, sway, tiling-window-manager, wayland, wlroots
- Language: Rust
- Homepage: https://github.com/prankstr/vibepanel/wiki
- Size: 16.3 MB
- Stars: 91
- Watchers: 2
- Forks: 5
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-niri - vibepanel - A GTK4 panel for Wayland with integrated notifications, OSD, and quick settings. (Bars and Widgets / Miscellaneous)
README
# VibePanel
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](https://github.com/hyprwm/Hyprland), [Niri](https://github.com/niri-wm/niri), [Sway](https://github.com/swaywm/sway), [MangoWC](https://github.com/mangowm/mango) and other compositors.
## Why VibePanel?
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" design with instant hot‑reloading and features wallpaper adaptive theming that auto‑switches between light and dark.
- **Integrated CLI** – Control volume, brightness, media playback, bar visibility, popovers and idle inhibition.
## Demo
These examples use roughly ~10–35 lines of TOML to get completely different vibes, no CSS required.
*A few example configurations*
## Widgets
- **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
- **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)
- **Taskbar** - open windows as clickable buttons
## Quickstart
1. Install VibePanel:
**Arch Linux (AUR):**
```sh
yay -S vibepanel-bin
```
**Fedora (COPR):**
```sh
sudo dnf copr enable prankstr/vibepanel
sudo dnf install vibepanel
```
**Nix:**
```sh
# Try it
nix run github:prankstr/vibepanel
# Install
nix profile install github:prankstr/vibepanel
```
**Other distros:** Install [runtime dependencies](https://github.com/prankstr/vibepanel/wiki/Installation#runtime-dependencies), then:
```sh
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](https://github.com/prankstr/vibepanel/wiki/Installation#from-source).
2. Run it:
```sh
vibepanel
```
See the [Installation wiki](https://github.com/prankstr/vibepanel/wiki/Installation) 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`:
```sh
mkdir -p ~/.config/vibepanel
vibepanel --print-example-config > ~/.config/vibepanel/config.toml
```
Here's a minimal example:
```toml
[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](https://github.com/prankstr/vibepanel/wiki/Configuration) for all options.
## Status
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.
### Compatibility
- **Compositors:** [Hyprland](https://github.com/hyprwm/Hyprland), [Niri](https://github.com/niri-wm/niri), [Sway](https://github.com/swaywm/sway), [Miracle WM](https://github.com/miracle-wm-org/miracle-wm), [Scroll](https://github.com/dawsers/scroll) and other i3-IPC compatible compositors. [MangoWC](https://github.com/mangowm/mango)/[DWL](https://codeberg.org/dwl/dwl) via dwl-ipc.
- **Updates widget:** dnf, pacman/paru and flatpak.
## Documentation
Full documentation lives in the [wiki](https://github.com/prankstr/vibepanel/wiki):
- [Installation](https://github.com/prankstr/vibepanel/wiki/Installation) - Dependencies, building, auto-start
- [Configuration](https://github.com/prankstr/vibepanel/wiki/Configuration) - All config options
- [CLI](https://github.com/prankstr/vibepanel/wiki/CLI) - Command reference
- [Widgets](https://github.com/prankstr/vibepanel/wiki/Widgets) - Widget reference and per-widget options
- [Theming](https://github.com/prankstr/vibepanel/wiki/Theming) - Custom CSS styling
- [CSS Variables](https://github.com/prankstr/vibepanel/wiki/CSS-Variables) - Full CSS variable reference
## Contributing
- Found a bug? [Open an issue](https://github.com/prankstr/vibepanel/issues)
- Want a feature? [Request it](https://github.com/prankstr/vibepanel/issues)
- Pull requests welcome
If you find VibePanel useful, consider giving it a star. It helps others discover the project.
## License
MIT


