Repository navigation
Releases
v1.1.1
FUHGAWZ Global Menu v1.1.1
We are pleased to announce the v1.1.1 release of FUHGAWZ Global Menu.
This release introduces an intelligent idle global menu collapse and live indicator reveal state model, keyboard and click pinning for the floating media card, scrubbing and marquee stability fixes, and expanded Libadwaita preferences controls.
Major Highlights
1. Idle Global Menu Collapse & Live Indicator Reveal
When media playback or background tasks are active, the top-left global menu buttons automatically collapse to give full visual prominence to the live indicator chip:
- Zone Hover Expansion: Moving the cursor into the top-left menu area smoothly reveals the global menu items with configurable 180ms ease-out animations.
- Slot Reservation: Panel geometry is reserved so top bar indicators never jump, jitter, or shift during transitions.
- Configurable State: Toggle between idle collapse or continuous side-by-side display via preferences.
2. Media Popover Pinning & Keyboard Controls (src/taskIndicatorButton.js)
- Click & Keyboard Pinning: Pin the floating media card open using F10, Alt+F, or direct card interaction.
- Suppressed Dismissal: Prevents accidental popover closure while scrubbing tracks or browsing playback history.
- Quick Dismissal: Press Escape or toggle F10 to unpin and cleanly close the card.
3. Waveform Seek Scrubbing Polish (src/mediaFloatingCard.js)
- Accurate Seeking: Fixed an issue where clicking on an unallocated waveform area incorrectly jumped playback to
0:00. - Throttled Scrubbing: Real-time seek scrubbing is throttled to 120ms with committed press/release offsets, preventing D-Bus command flooding.
4. Marquee Stability & Player Title Normalization
- Marquee Label Width Pinning: Pinned track title container width to eliminate top bar stutter and layout shifts during scrolling text.
- Player Name Normalization: Prioritized MPRIS
Identityproperties over raw process instance identifiers (e.g. "Firefox" instead of "instance4321").
What's Changed in v1.1.1
Click to expand full changelog
Features & Motion
- Idle menu collapse state model with smooth reveal on pointer zone entry.
- Floating media card keyboard pinning (
F10,Alt+F,Escape) and click pinning. - Live indicator reveal animation options (
slide-fade,fade,none) with custom durations (0–400ms). - New GSettings schema keys:
menu-hide-when-idle,task-indicator-reveal,task-indicator-reveal-ms,task-indicator-reduced-motion,indicator-hide-on-hover, andindicator-hide-return.
Bug Fixes & Refinements
- Fixed seek-to-zero bug on unallocated waveform canvas; throttled seek updates to 120ms.
- Fixed player title fallback displaying raw
instance(number)names. - Fixed top bar wobble during marquee title scrolling.
- Fixed pointer leave race conditions dismissing media cards during multi-level submenu navigation.
Installation & Verification
Quick Install from GitHub Release
# 1. Download the release archive
wget https://github.com/katon26/fuhgawz-global-menu/releases/download/v1.1.1/fuhgawzglbmenu@katon26.github.io.shell-extension.zip
# 2. Safety check: remove existing development symlink before force-installing
[ -L ~/.local/share/gnome-shell/extensions/fuhgawzglbmenu@katon26.github.io ] && rm -f ~/.local/share/gnome-shell/extensions/fuhgawzglbmenu@katon26.github.io
# 3. Install using GNOME Extensions CLI
gnome-extensions install --force fuhgawzglbmenu@katon26.github.io.shell-extension.zip
# 4. Enable the extension
gnome-extensions enable fuhgawzglbmenu@katon26.github.ioWarning
Developer Safety Notice: If you previously used a symbolic link (install.sh --link or ln -s) pointing ~/.local/share/gnome-shell/extensions/fuhgawzglbmenu@katon26.github.io to your Git workspace, always remove the symlink (rm -f ~/.local/...) before running gnome-extensions install --force. GNOME's extension installer deletes target contents when --force replacing existing directories, which will follow symlinks and empty your Git development folder!
Full Changelog: https://github.com/katon26/fuhgawz-global-menu/commits/v1.1.1
v1.1.0
FUHGAWZ Global Menu v1.1.0
We are pleased to announce the v1.1.0 release of FUHGAWZ Global Menu!
This feature release introduces a Dynamic Live Media Ingestion & MPRIS Engine, an Interactive Libadwaita Floating Media Popover, Unified Dynamic Task & Media Panel Arbitration, expanded GNOME Shell 45–51 compatibility, and landing page UI redesigns.
Major Highlights
1. Dynamic Live Media Ingestion & MPRIS Engine (src/mediaManager.js)
- Headless D-Bus Listener: Listens directly on session bus for
org.mpris.MediaPlayer2.*endpoints. - Multi-Player Priority Arbitration: Priority system favoring Spotify (
org.mpris.MediaPlayer2.spotify) when multiple players are active. - Property Subscription & Track History: Instant track metadata, position, and playback state tracking via
PropertiesChangedsignals, with a persistent 10-track FIFO history saved to~/.cache/fuhgawz-global-menu/recent-tracks.json. - Async Artwork Caching: Asynchronous remote album artwork downloader caching images to
~/.cache/fuhgawz-global-menu/media-art/.
2. Interactive Libadwaita Floating Media Popover (src/mediaFloatingCard.js)
- Elevated Floating Card: Anchored to top panel indicator on
Main.layoutManager.uiGroup, automatically clamped within screen margins. - Cairo Wave Equalizer & Seek Bar: Real-time animated Cairo wave visualizer with interactive seek scrubbing.
- ATK Accessibility: Full screen-reader support with
Atk.Role.SLIDERand dynamic progress reporting. - Keyboard Navigation: Full Tab navigation, Left/Right arrow key seeking (±5s), Home/End, Enter/Space, and Escape key focus return.
- Collapsible Drawer: Slide-out tray displaying recently played tracks.
3. Unified Dynamic Task & Media Arbitration (src/taskIndicatorButton.js)
- Smart Panel Display: Prioritizes active system operations (Nautilus transfers, downloads, package installs) and seamlessly transitions to live media (
[ 🎵 Spotify • ▶ Song - Artist ]) when system tasks are idle. - Persistent Idle Option: Configurable dim pill state keeping paused playback visible.
- Panel Pill Direct Interaction: Left-click raises active player window; middle-click toggles Play/Pause.
4. Preferences & Extended GNOME Shell Compatibility (prefs.js)
- Media & Dynamic Indicators Settings Group: Added Libadwaita controls for toggling live indicators, Spotify priority, visualizer style selection (
wave/bar), persistent idle, and hover popover. - Expanded Compatibility: Formally validated and supported on GNOME Shell 45, 46, 47, 48, 49, 50, and 51.
What's Changed in v1.1.0
Click to expand full changelog
Features & Architecture
- Live MPRIS media engine with D-Bus property monitoring and player priority queueing.
- Interactive Libadwaita media popover card with Cairo wave visualizer.
- Dynamic task & media panel display arbitration with clock collision guard.
- 5 new GSettings schema keys in
org.gnome.shell.extensions.fuhgawzglbmenu.gschema.xml. - Expanded GNOME Shell compatibility up to version 51.
Documentation & Packaging
- Edge-to-edge landing hero redesign in
docs/index.htmlwith CodexBar stage and dark contrast fixes. - Automated release packaging script
scripts/package-release.sh.
Verification & Testing
- New test suites for media manager, floating card DOM, hover submenu, and landing page updates (
tests/test_mediaManager.js,tests/test_mediaFloatingCard.js,tests/test_media_card_dom.js,tests/test_hoverSubMenu.js).
Installation & Verification
Quick Install from GitHub Release
# 1. Download the release archive
wget https://github.com/katon26/fuhgawz-global-menu/releases/download/v1.1.0/fuhgawzglbmenu@katon26.github.io.shell-extension.zip
# 2. Install using GNOME Extensions CLI
gnome-extensions install --force fuhgawzglbmenu@katon26.github.io.shell-extension.zip
# 3. Enable the extension
gnome-extensions enable fuhgawzglbmenu@katon26.github.ioFull Changelog: https://github.com/katon26/fuhgawz-global-menu/commits/v1.1.0
v1.0.0
FUHGAWZ Global Menu v1.0.0
We are pleased to announce the official v1.0.0 release of FUHGAWZ Global Menu.
This milestone release brings a completely redesigned native Libadwaita Preferences experience, macOS-style horizontal hover flyouts, a universal 6-tier fallback engine for full Wayland compatibility, and critical performance optimizations eliminating window-focus latency.
Major Highlights
1. Universal 6-Tier Fallback Chain
Linux desktops on Wayland feature diverse window toolkits (GTK4, Electron, Chromium, Firefox, GPUI) with divergent D-Bus export support. FUHGAWZ v1.0.0 bridges this gap with an intelligent 6-tier fallback engine:
- Tier 1 (GTK4 / GIO Actions): Instant native extraction via
org.gtk.ActionsandGio.DBusMenuModel. - Tier 2 (Canonical DBusMenu): Standard
com.canonical.dbusmenusupport for apps with dynamic global menus. - Tier 3 (Declarative App Profiles): Zero-overhead JSON profiles with
{{appName}}dynamic templating for apps like Brave, Chrome, VS Code, Antigravity, LibreOffice, and ONLYOFFICE. - Tier 4 (Compositor Virtual Keyboard): Synthetic key injection via
Clutter.VirtualInputDevicefor instant shortcut dispatch. - Tier 5 (Restricted AT-SPI Scanner): Safe accessibility probing with strict 50ms timeouts and domain blacklisting.
- Tier 6 (XWayland Hybrid Mode): Seamless dynamic menubar integration for Chromium and Electron via
./patch-launcher.sh.
2. Redesigned 3-Page Libadwaita Preferences Window
The extension settings have been rewritten from the ground up using native Libadwaita components:
- About Page: Clean branding view featuring custom SVG logo, version badge, direct links, and a support/donation card with QR code.
- Global Menu Page: Toggles for Wayland fallback profiles, hover flyouts, debug logging, and button padding adjustment.
- System Menu Page: Top-left branding menu toggles, custom desktop distro icon picker (Fedora, Arch, Debian, Ubuntu, macOS, etc.), Recent Items, and Force Quit.
3. macOS-Style Horizontal Hover Flyouts
Submenus now open as smooth, horizontal flyout menus instead of vertical GNOME accordions:
- Triangular Velocity Bridge: Moving diagonally toward a submenu will not accidentally close it.
- Multi-Level Hierarchy: Smooth navigation through nested menus (Level 1 to Level 2 to Level 3).
- Boundary Edge Detection: Flyouts automatically flip to the left when near the display right margin.
4. Zero-Overhead Performance & Stutter-Free Navigation
- True Lazy Loading: Dropdown menus instantiate empty (
isEmpty()override) and build items on-demand, eliminating dropped frames when opening or Alt-Tabbing across heavy apps (Nautilus, IDEs). - Button Recycling Pool: Reuses top-bar button actors (
fuhgawz-menu-slot-N), drastically reducing garbage collection spikes. - Ghost Menu Guards: Added monotonic
updateCycleIdand active window verification to guarantee menus never glitch during rapid window switching. - Asynchronous Bookmarks with In-Memory Caching: Dynamic Chrome/Brave bookmarks are loaded asynchronously and cached with filesystem
mtimeverification, capped at 50 items per folder.
What's Changed in v1.0.0
Click to expand full changelog
Features & Integrations
- Built-in profiles for Google Chrome, Brave, VS Code, Antigravity, Zed Editor, LibreOffice, ONLYOFFICE, GNOME Calculator, GNOME Text Editor, and Warp Terminal.
- Top-left System Logo Menu with distro-specific icons, Recent Items submenu, Force Quit killer, and User Switcher.
- Dynamic Chrome & Brave Bookmarks Bar expansion with file monitor.
- Native metadata modal dialog for non-GTK applications replacing deprecated
Main.notify.
Bug Fixes & Stability
- Fixed premature return in
_probeMenubarPathrestoring menubars for Mozilla Firefox on Wayland. - Fixed event grab order and outside click propagation in hover submenus (LIFO dismissal).
- Fixed startup ghost popups by ensuring actors hide upon creation and attach to top chrome only on
open(). - Added safe filtering for Desktop Icons NG (DING) background desktop workers.
- Added Flatpak bare app ID matching and
WindowTrackerbidirectional fallback.
Verification & Testing
- Automated test suite validating 309+ shortcuts and JSON schemas across all app profiles.
- Multi-level submenu and hover grab unit tests.
- Panel button pooling and safe DING filter unit tests.
Installation & Verification
Quick Install from GitHub Release
# 1. Download the release archive
wget https://github.com/katon26/fuhgawz-global-menu/releases/download/v1.0.0/fuhgawzglbmenu@katon26.github.io.shell-extension.zip
# 2. Install using GNOME Extensions CLI
gnome-extensions install --force fuhgawzglbmenu@katon26.github.io.shell-extension.zip
# 3. Enable the extension
gnome-extensions enable fuhgawzglbmenu@katon26.github.io(On Wayland, log out and log back in, or restart GNOME Shell to reload).
Verification & Checksums
| Asset | SHA-256 Checksum |
|---|---|
fuhgawzglbmenu@katon26.github.io.shell-extension.zip |
(Generated automatically by release workflow) |
Full Changelog: https://github.com/katon26/fuhgawz-global-menu/commits/v1.0.0