github glzr-io/zebar v3.1.0

latest release: v3.1.1
3 months ago

Zebar v3 - Production Release 🎉

We're excited to announce the first official, production-ready release of Zebar v3!

The following is a summary of the changes introduced in v3.0.0 through to the hotfix releases afterwards.

🌟 Major new features

Widget marketplace

Discover and share widgets with the community through our new integrated marketplace. Browse widget packs, install them with one click, and publish your own creations for others to try out.

📖 Publishing guide

2025-03-27_15-35-07.mp4

Demo of live previewing marketplace widgets.

System tray provider (Windows)

Display and interact with your system tray icons directly within your widgets using the new systray provider. This feature required extensive reverse engineering and wouldn't have been possible without the incredible work by @HolbyFPV.

📖 System tray docs

Widget packs architecture

The config system has been redesigned around "widget packs" - collections of related widgets that can be easily shared and managed together. This replaces the previous individual <name>.zebar.json file approach and enables the marketplace functionality.

Automatic migration: Your existing v2 configurations will be automatically upgraded to the new widget pack format when you launch v3. Note that downgrading to v2 is not supported after migration.

✨ Additional Features

  • Configurable logging verbosity with --quiet and --verbose CLI flags.
  • Support for fractional units in widget width, length, and offset (e.g. 90.5%).
  • New tauriWindow getter and close function on currentWidget for interacting with the underlying window.
    // Example: Auto-close widgets when they lose focus (perfect for calendar/volume popups).
    // Best used with "Focus on launch" option enabled for widgets.
    
    zebar.currentWidget().tauriWindow.listen("tauri://blur", () => {
      zebar.currentWidget().close();
    });
  • Added isMuted state and setMute to audio provider (#212).
  • Automatically switch between a light/dark mode theme based on system settings in glzr-io.starter config (#213).
  • Added error logging to a dedicated file at ~/.glzr/zebar/errors.log.

🐛 Bug fixes

  • Fixed memory buildup from debug logs (#226).
  • Fixed z-order handling for always-on-top/bottom positioning.
  • Added missing isPaused to type definition of GlazeWmOutput (#222).
  • Fixed wm-toggle-pause command in glzr-io.starter config (#190).
  • Improved compatibility with proprietary VPN clients in network provider (#200).
  • Fixed stale values in keyboard provider (#197).

⚠️ Deprecations

// ❌ Old (deprecated)
const tauriWindow = currentWidget().window.tauri; 

// ✅ New
const tauriWindow = currentWidget().tauriWindow;

Big thanks to @HolbyFPV, @Katona, @Video-Nomad, @xytaglyph, @qwbarch, @5I-I5, and @mPyKen for contributing to this release 💛

/ @lars-berger

Don't miss a new zebar release

NewReleases is sending notifications on new releases.