GNOME 45–50 · GPL-3.0 · Native D-Bus

Your app menus, back in one bar.

FUHGAWZ Global Menu brings application menubars directly into the GNOME Shell top panel, paired with an active live indicator. Track Nautilus file copies, stream media playback with animated Cairo wave equalizers, and extract menus across Wayland, GTK 4, GTK 3, and Qt apps.

Install extension GitHub Releases
Release curl -sLO https://github.com/katon26/fuhgawz-global-menu/releases/latest/download/fuhgawzglbmenu@katon26.github.io.shell-extension.zip && gnome-extensions install --force fuhgawzglbmenu@katon26.github.io.shell-extension.zip && gnome-extensions enable fuhgawzglbmenu@katon26.github.io
✓ Live Media & MPRIS ✓ Zero window clutter ✓ Wayland & X11

See it in action

Click menus, hover the live indicator, explore the full desktop.

Code
Sep 10 09:41
extension.js systemMenu.js

02 · Architecture Pipeline

How menus reach the bar

A resilient 3-layer pipeline guarantees your panel always has a menu ready.

01 SOURCE

Application Layer

gtk-modules=appmenu-gtk-module

Classic GTK 3 and compatible applications export their native menu trees over D-Bus automatically.

02 BRIDGE

Resolution Engine

org.gtk.Actions & dbusmenu

When an app uses GTK 4 or Qt, the fallback engine queries action groups and session registrars to build menu structures dynamically.

03 SHELL

GNOME Top Bar

Clutter + dynamic live indicator

Rendered natively inside GNOME Shell with hover submenus, live media capsules, and a system menu fallback if no app menu answers.

02 · Fallback Engine

The 6-tier fallback chain

When standard D-Bus export is unavailable, FUHGAWZ cascades through six audited resolution tiers to maintain zero panel lag.

01

Native GTK Menu Model

Standard path probing picks up menu trees exported by GTK 3 and GTK 4 apps with no extra work.

org.gtk.Menus
02

DBusMenu Protocol

Registered through com.canonical.AppMenu.Registrar, matched by PID on Wayland and by XID on XWayland.

com.canonical.dbusmenu
03

Declarative Profiles

Curated JSON menu trees for Brave, Chrome, VS Code and GNOME Text Editor, with dynamic bookmark synchronization.

profiles/*.json
04

GTK Action Heuristic

Enumerates live action maps via DescribeAll, then dispatches synthetic keystrokes via virtual keyboard for unexported actions.

DescribeAllAll
05

Restricted AT-SPI Scan

50ms budget, strictly menu bars only, Chromium and Electron blacklisted to avoid a compositor stall.

ATSPI_ROLE_MENU_BAR
06

Desktop App Fallback

When no menu answers, launcher actions and window management still land on the same slot.

Gio.DesktopAppInfo

Chromium and Electron are deliberately excluded from the accessibility scan. Declarative profiles bridge them instead, so the bar never goes empty.

Install in two steps

Get pre-packaged release builds directly from GitHub Releases, or compile from source if you are customizing the extension.

1
Download GitHub Release

Download the latest pre-built .shell-extension.zip from GitHub Releases and install in user space.

2
Enable in GNOME Shell

Activate via CLI or the GNOME Extensions app without restarting your desktop.

$ curl -sLO https://github.com/katon26/fuhgawz-global-menu/releases/latest/download/fuhgawzglbmenu@katon26.github.io.shell-extension.zip
$ gnome-extensions install --force fuhgawzglbmenu@katon26.github.io.shell-extension.zip
$ gnome-extensions enable fuhgawzglbmenu@katon26.github.io