Releases: prankstr/vibepanel
v0.13.0
0.13.0 (2026-04-01)
Summary
v0.13.0 adds three new bar widgets(GPU, network speed, keyboard layout) and CLI commands to toggle the bar and popovers from scripts and keybinds. There's also a minor memory leak fix for long-running sessions and a bunch of smaller fixes in multiple areas.
Pretty substantial release that touches a lot of areas in the code, hopefully I didn't break anything unintended but please report an issue if you find something.
Breaking Changes
- Layer shell namespace renamed: The Quick Settings popover namespace changed from
vibepanel-quick-settingstovibepanel-quick-settings-popover. If you have compositor layer rules targeting the old name, update them accordingly. - CSS class changes:
.vp-surface-popoverand.widget-menuare deprecated in favor of.popover..osd-windowhas been removed, use.osdinstead.
New widgets
- GPU: shows GPU utilization and/or temperature in the bar. Clicking opens the system popover which now includes a GPU section with usage and VRAM progress bars, clock speed, power draw and temperature. GPU polling is demand-driven, if you don't have the bar widget we only poll while the popover is open.
- Network Speed: bar widget that shows live download and upload speeds. Opens the shared system popover on click.
- Keyboard Layout: shows the current keyboard layout in the bar. Click to cycle between configured layouts.
CLI Bar & Popover Control
Two new cli command let you control the bar and widget popovers from scripts or keybinds:
vibepanel bar show|hide|toggle
vibepanel popover show|hide|toggle <widget>vibepanel bar toggle hides/shows the bar and releases exclusive zone so windows can utilize the full screen.
vibepanel popover toggle quick-settings opens quick settings and so on.
New Config Options
[widgets.gpu]
format = "usage" # "usage" (default), "temperature", or "both"
show_icon = true
device = "auto" # GPU index (0, 1, ...) or "auto" to prefer discrete
[widgets.network_speed]
format = "both" # "both" (default), "download"/"dl", or "upload"/"ul"
show_icon = true
show_arrows = true # show ↓/↑ direction arrows
[widgets.keyboard_layout]
format = "short" # "short" (default) for 2-letter code, "long" for full name
show_icon = true
show_label = true
[widgets]
popover_background_opacity = 0.9 # override popover opacity (default: follows max of bar and widget opacity)
[widgets.media]
art_radius = 20 # default: follows widgets.border_radius
[widgets.custom-example]
image = "/path/to/icon.svg" # load an image from file (PNG, SVG, etc.) instead of a theme iconThe custom widget image field supports absolute paths, file:// URIs and ~/ home-relative paths. It takes precedence over icon if both are set.
Other fixes/improvements
- When using
theme.mode = "gtk", text colors now properly follow the GTK theme instead of using hardcoded values. - When adjacent widgets in a group share the same popover type (currently cpu, memory, gpu and network_speed), they are automatically merged into a single visual button with a shared hover highlight, ripple and popover.
- Fixed a memory leak where popover open/close cycles caused unbounded memory growth in long-running sessions. Popover animations now use a custom clip widget instead of CSS transforms, and popover windows are reused instead of being recreated each time (#84)
- Hyprland's compositor-level animations on popover surfaces are now automatically disabled as they clashed with the panel's own animations (#89)
theme.animations = falsenow also disables revealer slide-down animations in quick settings, notifications and the system popover (#75)- The Wi-Fi password dialog no longer disappears mid-input when already connected to a different network
- Popovers opened via CLI now appear on the correct monitor under Niri
- Media widget
max_chars = 0now correctly allows unlimited space instead of collapsing to zero width (#81) - System tray icons that use an absolute file path instead of a theme name now display correctly
- Bar widget click targets are now full rectangles regardless of border radius
- The keyboard focus ring now uses the configured accent color in every theme mode including GTK accent
- "Shutdown" changed to "Shut down" in the power card (#83) @elcste
Full Changelog
Features
- bar/widgets: toggle bar and popover with the cli (#87) (2c35adb)
- custom: add image field to load images from file (e53cd82)
- media: add override setting for art radius (#85) (ddb84ea)
- widget: release first version of gpu widget for amd and nvidia (#77) (c189ab2)
- widgets: add override setting for popover opacity (16f2ba7)
- widgets: add standalone bar widget to show network_speed (#79) (b5b7b06)
- widgets: keyboard layout widget with layout cycling on click (#91) (e48f6e2)
- widgets: merge button for groups with widgets that share popover (#86) (1572899)
Bug Fixes
- css: move user-facing classes to styled surfaces (#95) (3a59b06)
- media: max_chars 0 now takes up unlimited space (48a05e6), closes #81
- media: remove dead popover padding override and adjust popout icon (c9495e6)
- niri: open popover on correct screen when using cli (622316d)
- quick_settings: prevent password field from disappearing mid input (70d5cc6)
- rework popover animations and lifecycle to avoid gtk memory leak (#84) (e57fe57)
- theme: disable hyprlands own animations as they interfere with ours (#89) (b85a062)
- theme: disable revealer animation when theme.animations is disabled (#75) (3636c3e)
- theme: use GTK theme colors for fonts in gtk mode (#94) (c411790)
- tray: properly show icons that use absolute file path (ce13f36)
- widgets: click targets for bar widget ignore border radius (a62f479)
- widgets: focus ring uses correct accent color in every theme mode (0c8762a)
- widgets: rename quick setting layer shell namespace for consistency (660649d)
v0.12.1
Features
- theme: add config option to toggle shadows (973808d)
Bug Fixes
- set namespace on all layer shelll surfaces (2661815)
- widgets: correct hover background color for widget groups (ea59f78)
- widgets: fix sharp-corner flash on widget-group hover transition (01e8ad1)
- widgets: make popovers follow highest opacity (9d6e5af)
- widgets: restore correct padding for widget groups (dc1dd67), closes #68
Miscellaneous
- ci: auto-update Cargo.lock on release PR (d382609)
v0.12.0
0.12.0 (2026-03-13)
Summary
v0.12.0 focuses on UX and visual polish. Most things are pretty subtle but hopefully the panel feels a bit more interactive. Noteworthy addition are Material Design ripple effects, animated popovers and a CAVA media visualizer.
Ripple Effects & Hover Animations
Buttons and interactive elements now have a Material Design ripple animation that expands from where you click. Hover backgrounds have a short short fade to not be as sharp. The ripple effect can be turned of with theme.ripple
Animated Popovers
Popovers now subtly animate open and close and open on press rather than release for a snappier feel.
Media Visualizer
A CAVA audio visualizer has been added in the media popover and bar widget. Enable or disable it per-widget with the visualizer option.
Calendar Redesign
The calendar popover got a small redesign and now includes a "today" button to quickly navigate back to the current month.
New Config Options
New theme options give to control the new visuals:
[theme]
animations = true # Enable/disable all CSS transitions and animations
ripple = true # Enable/disable Material Design ripple effect on click
[widgets.media]
visualizer = true # Enable/disable cava audio visualizerFull Changelog
Features
- calendar: new look with an additional today button (7ec7a18)
- media: add visualizer to popover and bar widget (c9cc953)
- notifications: add hover background and ripple to action buttons (a3c625e)
- quick-settings: rotate hamburger icon when menu is open (10cef6f)
- theme: adapt accent hover to bright and dark accent colors (6f3b76d)
- widgets: add animations for popover open and close (20eb280)
- widgets: add ripple effect on button press (6c530eb)
- widgets: add ripple effect and hover to workspace indicators (c84047d)
- widgets: subtly fade hover backgrounds in and out (522912b)
- workspaces: animate named workspaces and prevent widget resize (4e95976)
- add config options for animations, ripple and media visualizer (c5fe112)
Bug Fixes
- battery: hide power profile section when power-profiles-daemon is unavailable (08f5f2a)
- buttons: restore label padding on accent and card buttons (9d6b304)
- calendar: prevent nav buttons from jumping when switching months (95ea798)
- media: clear stale album art when player change with no art (a833b45)
- media: gray out prev/next when player doesn't support it (d8441e7)
- media: no scrolling label even when it fits, race condition fix (63c0381)
- notifications: smooth in-place dismiss animation and dynamic popover height (b865557)
- osd: improve proportions for container and icon size (45a5bb2)
- quick_settings: add hover background to power card (597e18c)
- system: adjust hover background and chevron position for core label (6243ede)
- tooltip: improve contrast when rendered over popover surfaces (945ffd8)
- tooltips: cancel and hide non-gtk tooltips when clicking (cec6e48)
- widgets: open popovers on press instead of release (80c3eaf)
- workspaces: no workspace widget jitter on switch with number labels (863611c)
v0.11.0
0.11.0 (2026-03-03)
Summary
v0.11.0 introduces custom widgets for user-defined buttons and script output, conditional widget visibility with show_if, and configurable right-click and middle-click handlers for all widgets.
Custom Widget
A new custom-<name> widget type lets you add arbitrary widgets to the bar. Define a static label/icon for buttons, or use exec to display shell command output with optional polling. Supports on_click, templates, tooltips, and character truncation.
[widgets.custom-weather]
exec = "curl -s 'wttr.in/?format=1'"
interval = 600
on_click = "xdg-open https://wttr.in"
max_chars = 30Conditional Visibility
All widgets now support a show_if option. Run a shell command that controls whether the widget is visible (exit 0 = show, non-zero = hide). Use show_if_interval to re-evaluate periodically.
Right-click & Middle-click Handlers
All widgets now support on_click_right and on_click_middle options to run shell commands on right-click or middle-click.
Bug Fixes
- Material icons no longer revert to text glyphs after system font updates
show_ifevaluation is now fully async with debounced monitor hotplug handling
Other
- Nix flake added for
nix runandnix profile install
Full Changelog
Features
- widgets: add configurable right-click and middle-click handlers (d051846)
- widgets: add custom widget (#58) (1673ac3)
- widgets: add show_if conditional visibility with optional polling (275d895)
Bug Fixes
v0.10.0
Features
- bar: configurable bottom or top(default) position (#55) (2699625)
- compositors: add Sway support for workspaces and window title (#56) (d3e50c2)
- vpn: implement NM SecretAgent for VPN password prompts (#52) (24a1e31)
Bug Fixes
- media: debounce hide and album art to prevent flicker (#54) (ad5b78d)
- media: freeze the scrolling title when music pauses (923c8e3)
- network: prevent permanent WiFi spinner on disconnected startup (8150e0c)
- niri: correct workspace indicator removal animation (a604a57)
- updates: dont attempt to check for updates when offline (93cb430)
- vpn: use logical icon name for auth dialog expand arrow (402926b)
- workspaces: update niri workspace re-order immediately (#53) (acaf6ae)
- workspaces: support custom CSS for animated workspace indicators (f4a6423)
Performance Improvements
- subset Material Symbols font to used icons only (03ff5dd)
v0.9.0
0.9.0 (2026-02-18)
Summary
v0.9.0 brings animated workspace indicators, mobile network support, flatpak update support and other quality of life-improvements.
⚠ Breaking Changes
- IPC inhibitor command changed:
vibepanel inhibit <command>has been removed. Usevibepanel inhibit toggleto toggle the running panel's inhibitor, orsystemd-inhibitfor command-scoped inhibition. - Config rename: The quick settings key
wifihas been renamed tonetwork. Update yourconfig.tomlaccordingly.
Animated Workspace Indicators
Workspace indicators have been redesigned. The active workspace is now wider than inactive ones and indicators animate when workspaces are added or removed and the active-workspace transition is animated as well.
Mobile network support
The wifi card has been generalized into a network card that supports mobile/cellular connections in addition to WiFi and Ethernet. A connecting spinner now shows WiFi connection progress based on the NetworkManager device state.
Flatpak & Update Progress
The updates widget now checks Flatpak alongside system package managers. The quick settings details view shows real-time progress messages during checks ("Refreshing dnf cache...", "Checking AUR...", "Checking flatpak...").
Other Improvements
- Brightness icon: The brightness slider icon in quick settings now changes dynamically based on the current level
- Icon fixes: Corrected icon names in several widgets and fixed broken GTK icon mappings
- VPN: Password prompts now properly receive keyboard focus when triggered from the quick toggle
- Window title: Original delimiters in window titles are now preserved instead of being normalized
Contributors
- @xiaotinglian -- Flatpak support for package updates (#49)
- @Yujonpradhananga -- Dynamic brightness icon (#46)
Full Changelog
Features
- ipc: generalize IPC beyond OSD, migrate inhibitor to logind (f7ac749)
- network: show WiFi connecting spinner from NM device state (8015405)
- quick_settings: add support for mobile networks in network card (#47) (8015405)
- quick_settings: dynamic brightness icon (#46) (2f3178c)
- quick_settings: rename wifi setting to network (8015405)
- updates: add Flatpak support for package updates (#49) (dc358bb)
- updates: show real-time progress during update checks, ui tweaks (5db505d)
- workspaces: animate indicator additions and removals (#48) (f126cce)
- workspaces: animated and proportionally sized workspace indicators (bdef925)
Bug Fixes
v0.8.0
Summary
This release adds iwd as an alternative wifi backend for users who don't use NetworkManager. The backend is auto-detected at startup via D-Bus, with NetworkManager preferred. No configuration changes are needed
Other improvements:
- Volume can be adjusted by scrolling while hovering the speaker icon in quick settings widget
- Tooltips update their text live when content changes
- VPN connections now properly reconnect signal subscriptions after waking from sleep
- Tooltips are dismissed when clicking the widget that triggered them
- Fixed media popover positioning
- Fixed quick settings showing incorrect icons when NetworkManager is unavailable
Features
- quick_settings: support volume adjust with mouse scroll while hovering (#44) (25fca05) @xiaotinglian
- tooltip: update visible tooltip text live when content changes (8e4b246)
- wifi: add iwd backend and wifi service abstraction (#42) (e37db6c)
- widgets: cancel and hide tooltips when clicking widgets (#43) (c0dbff2) @Yujonpradhananga
Bug Fixes
v0.7.0
0.7.0 (2026-02-01)
Popover Overhaul
Popovers have been significantly reworked. Bar widget popovers now use layer-shell surfaces instead of GTK popovers as I had a hard time getting consistent focus/dismiss behaviour across window managers with the gtk popovers.
The bar now stays fully interactive while a popover is open, you can click another widget and it switches popover immediately without needing to dismiss the current popover first. All popovers also have small shadows now to help distinguish them a bit from their backgrounds.
Bar Visual Polish
Clickable widgets now show a hover background. The hover effect handles widget groups and will only "light up" the one you will click.
A new vertical padding option (padding in [bar]) lets you add vertical room around widgets. You might also notice a small horizontal displacement compared to before, adjust with inset if it bothers you.
Fixes & Improvements
- Bluetooth: Adapter is now discovered dynamically instead of assuming
hci0 - VPN: Better support for password-protected connections - authentication dialogs now receive keyboard input properly
- Icons: Better app icon matching using
StartupWMClassfrom desktop files - Niri: Improved per-output window title tracking
- Calendar: Month switching works correctly even when the current day exceeds the target month's day count
- Theme: GTK mode now uses the correct accent color; defaults to system monospace font
- Theming: Fixed border radius on small elements (slider knobs, switches) at high radius values; improved density scaling for smaller bar sizes
- Tooltips: Fixed positioning for right-anchored bar configurations
- Hot reload: Popover offset setting now reloads without restart
Breaking Changes
- CSS variables
--radius-trackand--radius-track-thickhave been removed. If you reference these in custom CSS, usecalc(Npx * var(--radius-factor))instead.
Contributors
Thanks to @xiaotinglian for improving the bluetooth handling even more.