AppMenu brings a macOS-style menu bar to the GNOME top panel without external daemons or background services. It provides app-aware menus, optional real exported app menus when available, keyboard shortcuts, recent items, workspace controls, search, and fast user switching in one lightweight GNOME Shell extension.
- No external daemon: pure GJS extension, no Python service or appmenu daemon
- No manual GTK module setup: no
~/.gtkrc-2.0, no hand-written startup helper, no extra daemon to babysit - Works across app toolkits: GTK, Qt, Electron, Flatpak, browsers, terminals, and Java apps all get the same menu actions
- Wayland-friendly: uses GNOME Shell APIs and virtual keyboard events instead of X11-only menu scraping
- Hybrid behavior: reads real exported menus when apps provide them, and falls back automatically when they do not
- Apple menu with system actions, recent items, and Search
- Dynamic app menu based on the focused window
- Optional real D-Bus app menu import for supported apps
- File, Edit, View, Go, Window, and Help menus
- Workspace navigation and window-to-workspace actions
- Optional workspace navigation dots in the panel
- Spotlight-style search dialog for apps, recent files, and settings
- Fast user switching with avatars and session badges
- Configurable distro icon or Apple logo
- Debug logging toggle for troubleshooting
- GNOME Shell 45 to 50 support
- About This Computer
- System Settings
- App Store
- Recent Items
- Search
- Force Quit
- Sleep, Restart, Shut Down
- Lock Screen, Log Out
| Menu | What it includes |
|---|---|
| App | About, New Window, App Details, Quit, open windows list |
| File | New Folder, New Tab, Open, Open With, Print, Get Info, Rename, Find, Trash, Eject |
| Edit | Undo, Redo, Cut, Copy, Paste, Delete, Select All, Emoji & Symbols |
| View | Icon/List view, sorting, reverse sort, path bar, hidden files, full screen |
| Go | Back, Forward, Recents, Documents, Desktop, Downloads, Home, Computer, Network |
| Window | Minimize, Maximize, Tile, workspace switching, move window between workspaces, close |
| Help | Feedback and GNOME Help |
Open AppMenu Search from the Apple menu or with Ctrl+Space.
Search sources:
- Installed applications
- Recent files
- GNOME Settings panels
The Window menu includes:
- Previous Workspace
- Next Workspace
- Move Window Left
- Move Window Right
Enable Show Workspace Indicator in preferences to show workspace navigation dots in the panel.
| Feature | AppMenu | Fildem | global-menu-for-gnome | Kiwi Menu |
|---|---|---|---|---|
| Pure GNOME Shell extension | Yes | No | Yes | Yes |
| External daemon required | No | Yes | No | No |
| GTK module setup required | No | Yes | No | No |
| Works with GTK/Qt/Electron/Flatpak apps | Yes | Partial | Partial | N/A |
| Recent items | Yes | No | No | Yes |
| Fast user switching | Yes | No | No | No |
| Workspace indicator/actions | Yes | No | No | No |
| Spotlight-style search | Yes | HUD only | No | No |
| One-shot installers | Yes | Yes | No | No |
AppMenu now uses a hybrid approach:
- for apps that export Canonical dbusmenu data, AppMenu can read and trigger the real menu items
- for modern GTK and libadwaita apps that expose
org.gtk.Actions, AppMenu can build native action-backed menus without synthetic key presses - for apps that expose neither path, AppMenu falls back to stable cross-app actions and shortcuts
This keeps the extension useful on GTK4, Qt, Electron, Java, Flatpak, and Wayland, where full exported menu trees are often partial or absent.
Use the dedicated upload package when submitting to extensions.gnome.org:
AppMenu-e.g.o-upload-v5.2.zip
This ZIP has metadata.json and extension.js at the archive root, which is required by the GNOME Extensions upload validator.
Download from the latest release:
AppMenu-e.g.o-upload-v5.2.zip: upload package for extensions.gnome.org[email protected]: manual GNOME Shell extension packageAppMenu-v5.2-linux.run: one-shot self-extracting installerAppMenu-v5.2-linux.bin: one-shot self-extracting installer aliasappmenu_5.2_all.deb: Debian and Ubuntu packageAppMenu-v5.2.zip: source snapshot
git clone https://github.com/ChathurangaBW/AppMenu.git
cd AppMenu
bash install.shThen restart GNOME Shell:
- Wayland: log out and log back in
- X11: press
Alt+F2, typer, then press Enter
Open preferences with:
gnome-extensions prefs [email protected]Available settings:
| Setting | Description |
|---|---|
| Show OS icon | Toggle the logo near the Apple menu |
| Icon | Select a distro icon or Apple logo |
| Lock to focused app | Keep panel app label tied to the focused app |
| Use real application menus | Use dbusmenu or native GTK action exports when supported, with automatic fallback |
| Show User Switcher | Show avatar-based fast user switching |
| Show Workspace Indicator | Show workspace navigation dots |
| Debug Logging | Enable diagnostic GNOME Shell journal logs |
Build release packages:
./scripts/build-packages.shGenerated files go to dist/.
AppMenu/
├── extension.js # Extension lifecycle
├── menuManager.js # Panel menu orchestration
├── searchDialog.js # Spotlight-style search dialog
├── workspaceIndicator.js # Workspace dots controller
├── userSwitcher.js # Fast user switching UI
├── recentItemsSubmenu.js # Recent items submenu
├── documentTooltip.js # Recent item tooltip support
├── logger.js # Debug-gated logging
├── prefs.js # Preferences window
├── stylesheet.css # Shell styling
├── schemas/ # GSettings schema
├── actions/ # Action handlers
├── menus/ # Menu definitions
├── icons/ # SVG icons
├── scripts/build-packages.sh # Release package builder
├── install.sh
└── uninstall.sh
GPL-3.0-or-later © ChathurangaBW
