How To Add A Global Menu And HUD To Gnome Shell (Gnome Global AppMenu Extension)

As a continuation of our previous article about making Gnome Shell more like Unity by using the Unite extension, this article includes instructions for adding a global menu and a searchable menu HUD in Gnome Shell, by using the Gnome Global AppMenu extension.

Gnome Shell global menu

Gnome Global AppMenu is a Gnome Shell extension that's currently in beta, which implements Ubuntu Unity's global menu to Gnome Shell. The extension also provides support for HUD menus so you can search in an application's menus.

The extension developer announced it discontinued the project a while back, but he changed his mind back in January 2018, when he successfully added support for Wayland. I only tested the Gnome Global AppMenu extension on X.Org (which is default in Ubuntu 18.04) though. The instructions in this article won't work on Wayland.

Since it's beta software, Gnome Global Menu extension is not considered stable. Check out its known issues section before using it.

Gnome Global AppMenu main features:
  • It makes use of Unity GTK Modules, so it supports the same applications as the Unity global menu (AppMenu). This includes Gtk+ 2, Gtk+ 3, Qt 5 applications, Firefox, LibreOffice, and so on. Qt4 applications don't seem to be supported, at least in a default Ubuntu 18.04 setup (it can probably be done by exporting some env variable, but I don't think it's worth it given that it supports Qt 5 by default).
  • Unity-like HUD (Heads Up Display) feature which allows searching through application menus. This feature may seem to not work if you try to use it as soon as you launch an application because it seems it needs some time to be able to load menu entries.
  • Search running applications menu thanks to a built-in Gnome Shell search provider.
  • Experimental JAyatana support so a global menu can be enabled for Java Swing applications.
  • Supports keyboard navigation.
  • Highly configurable.

Screenshots with Firefox web browser and VLC media player (which uses Qt5) using a global application menu in Gnome Shell 3.28.1 (Ubuntu 18.04):

Gnome Shell Global Menu Ubuntu 18.04

Gnome Global AppMenu Shell Extension

Searchable HUD menu in Gnome Shell:

Gnome Shell searchable HUD menu

As far as header bar applications are concerned, Gnome Global AppMenu won't work with all of them. Some Gnome applications, like Nautilus, no longer export the menu, so you'll get a regular Gnome AppMenu instead. The HUD feature in Gnome Global AppMenu extension won't return any results in such cases.

Gnome Global AppMenu allows tweaking quite a few settings:
  • Use the extension as a replacement of the Gnome AppMenu.
  • Show or hide the application icon or title (or window name) on the panel.
  • Set a maximum limit for the application name on the panel (useful so the menu doesn't move when switching between applications).
  • Configurable keyboard shortcuts.
  • Much more.

Check out the Gnome Global AppMenu settings:

Gnome Global AppMenu settings

The settings window is not that pretty but it offers a lot of configuration options. In fact the window is so long that you only see a small part of the options in the screenshot above. Here are a couple more screenshots:

Gnome Global AppMenu settings

Gnome Global AppMenu settings

A last thing I'd like to add is that Gnome Global AppMenu doesn't play nicely with multiple monitors. It works without any issues, but you will only see the global menu on one monitor. I tried using the Gnome Shell Multi Monitors Add-on, which allows displaying the top panel on additional monitors, but the menu only works on the primary monitor.

How to install a global menu for Gnome Shell with Gnome Global AppMenu extension


The instructions below are for installing a global menu (and HUD) for Gnome using X.Org, and were tested on Ubuntu 18.04. For Wayland there's a separate module which I did not try.

1. Install unity-gtk-module packages for Gtk+ 2 and Gtk+ 3.

In Ubuntu, install them using:

sudo apt install unity-gtk2-module unity-gtk3-module

For other Linux distributions, see the instructions from here.

2. Install other required dependencies

You'll need to install Git (so we can clone the repository), Gnome Tweaks (which we'll later use to enable the extension) and some dependencies that will allow running the Gnome Global AppMenu extension settings (without these, the extension settings window will be blank).

In Ubuntu, use:

sudo apt install git gnome-tweak-tool gir1.2-clutter-1.0 gir1.2-clutter-gst-3.0 gir1.2-gtkclutter-1.0

3. Install the Gnome Global AppMenu extension.

Now clone the Gnome Global AppMenu extension Git repository and install the extension:

git clone https://gitlab.com/lestcape/Gnome-Global-AppMenu
mkdir -p ~/.local/share/gnome-shell/extensions/
cp -r Gnome-Global-AppMenu/gnomeGlobalAppMenu@lestcape ~/.local/share/gnome-shell/extensions/
rm -rf Gnome-Global-AppMenu

The last command removes the downloaded code since it's no longer needed after installing the extension. You can also symlink the gnomeGlobalAppMenu@lestcape folder to the Gnome Shell extensions directory (~/.local/share/gnome-shell/extensions/) so you can easily update it, instead of removing it.

4. Enable Gnome Global AppMenu extension

Start by restarting Gnome Shell so the new extension shows up in the Tweaks application. You can do this by typing r in the run dialog (Alt + F2) or by logging out and back in.

Gnome Tweaks global applications menu

Now open the Tweaks application and enable the Gnome global application menu extension.

5. Log out / log back in (or restart your computer)

When the extension is enabled, it displays a notification that says to restart the system. To avoid a system restart, you can logout / login. I didn't mention restarting the session by using Alt + F2 and typing r because that froze my system. Though to be safe, you could simply restart your computer.

Tips: avoid having the application name displayed 3 times on the Gnome Shell top panel, more


First tip. From the Gnome Global AppMenu extension settings I recommend enabling the "Use extension as a replace(ment) of Gnome AppMenu (Experimental)", to avoid having two Gnome AppMenus and one application title in the top panel for application that use a Gnome AppMenu. I enabled this option for all the screenshots in this article.

Another tip. If the menu disappears from the panel, it's probably because you've clicked on the app name on the panel. Click it again and the menu should show up.

And a last tip. To avoid having the menu and date / time overlap (and for a some other Unity-like features), I recommend using Gnome Global AppMenu extension in combination with the Unite extension for Gnome Shell. Here is Gnome Global AppMenu in combination with Unite extension:

Gnome Shell like Unity

Notice that the LibreOffice Calc window doesn't have a titlebar and instead, the window title and menu are displayed on the left of the top Gnome Shell bar, while the close, maximize, and minimize buttons are on the right of the top bar.

How to completely remove Gnome Global AppMenu extension


1. Disable the extension from Gnome Tweaks.

2. Remove Unity GTK Modules if they were installed by using this guide (if they weren't already installed). Do not uninstall them if you use Unity as your desktop or some other global menu that uses Unity GTK Modules.

sudo apt purge unity-gtk2-module unity-gtk3-module

3. Remove the extension files.

rm -r ~/.local/share/gnome-shell/extensions/gnomeGlobalAppMenu@lestcape

3. Reset Gsettings values modified by the Gnome Global AppMenu extension.

gsettings reset org.gnome.settings-daemon.plugins.xsettings overrides
gsettings reset org.gnome.settings-daemon.plugins.xsettings enabled-gtk-modules

4. To avoid running into issues, reboot the system.

Update: Gnome Global Menu was initially hosted on GitHub, but later moved to GitLab. I updated all the links in the article to point to the new Gnome Global Menu Gitlab repository.

8 comments:

  1. Very nice. I gotta say, you've quickly become my 'go to' linux site. Plus you survived getting slashdotted on the malware snap article. :)

    Thanks for the great new site!

    ReplyDelete
    Replies
    1. Thanks! 😁 Actually for the snap malware article most visitors came from https://news.ycombinator.com

      Delete
  2. I really love this article... It's providing me a lot of constructive suggestions, issues to be resolved and more stuff... Really thanks. @Logix, one question, you tested the menu with what qt4 application?

    ReplyDelete
    Replies
    1. Firstly, thank you for your work on this extension! Regarding the Qt4 app, Puddletag doesn't have a global menu. I assumed others won't work either, but that's the only one I tried because most apps are now ported to Qt5. That's also why I didn't think it was important to work with Qt4 apps anyway.

      Delete
    2. I think, this was fixed: "Unity-like HUD (Heads Up Display) feature which allows searching through application menus. This feature may seem to not work if you try to use it as soon as you launch an application because it seems it needs some time to be able to load menu entries."

      If you want o test the extension in Wayland, you need to install this unity-gtk-module fork from source: https://gitlab.com/lestcape/unity-gtk-module If this source will be added to Ubuntu, it will work out the box. We also are triying to add the code to the appmenu-gtk-module, but it won't work yet.

      Delete
  3. So sad: https://github.com/lestcape/Gnome-Global-AppMenu
    is GONE....

    ReplyDelete
    Replies
    1. It's not gone gone... The Gnome Global AppMenu repository was moved to GitLab. I updated all the links and instructions in the article to point to the new GitLab repo.

      Delete

Powered by Blogger.