HUD for xubuntu

I find that xubuntu leaves me wanting for very little feature-wise. The only thing I’ve ever felt disappointed by is its lack of a readily available Heads-Up Display (HUD) for searching through app menus with. It now looks like this one issue has been resolved with the hud-menu script.

You may now be asking, ‘What is a HUD and why should I care?’  A Heads-Up Display allows you to search through an application’s appmenu.  So if you’re trying to find that single filter in GIMP but can’t remember which filter category it fits into or if you can’t recall if preferences sits under File, Edit or Tools on your favourite browser, you can just search for it rather than hunting through the menus.

This post details an updated version of Rafaël Bocquet’s i3-hud-menu.  When called, the script opens a rofi (the original used dmenu but rofi offers better customisation) instance at the top of the screen which can be instantly searched and navigated through with the keyboard (you could also get patches that make rofi respond to the mouse allowing for a more Unity-HUD-like experience).  The scripts used are provided in the following zip file:

hud-menu.zip

Before use you’ll need to sure that you have python3, python-dbus and rofi installed. You also should ensure that appmenu-qt, unity-gtk2-module and unity-gtk3-module are installed. All these packages can be installed together through the following command:

sudo apt-get install python3 python-dbus rofi appmenu-qt unity-gtk2-module unity-gtk3-module

Once installed you’ll also need to add the following to your .profile file:

export APPMENU_DISPLAY_BOTH=1
if [ -n "$GTK_MODULES" ]
then
  GTK_MODULES="$GTK_MODULES:unity-gtk-module"
else
  GTK_MODULES="unity-gtk-module"
fi

if [ -z "$UBUNTU_MENUPROXY" ]
then
  UBUNTU_MENUPROXY=1
fi 

export GTK_MODULES
export UBUNTU_MENUPROXY

On some systems it may be better to place this code snippet at the top of the .bashrc file.

The download contains two scripts which should be unpacked from the zip and put somewhere you can easily call them (like a folder in your home directory).  The first script, hud-menu-service.py, should be set to start up with the session (on xubuntu this can be easily done with the ‘Session and Startup’ app by adding an entry where the command is just path/to/hud-menu-service.py).

The second script, hud-menu.py, should be bound to a shortcut.  The most useful setup for the second script is to bind it to a keyboard shortcut (which in xubuntu can be done with the ‘Keyboard’ app by adding an entry where the command is just path/to/hud-menu.py), I use ctrl + the special/windows key.  You could also create a visible shortcut on a panel (such as through a launcher on an xfce panel, as shown in the image bellow).

The ReadMe on the github repository for the updated scripts explains the workings and usage of the scripts in more detail.  Note that some apps just won’t play nice such as Firefox while others may need a bit of tweaking to work (for example, Java based apps may need additional libraries installed, though Eclipse actually does work without any additional tweaking).  Though tested on xubuntu 14.04 only, this should work for most recent versions of the OS and may also work to an extent on other Linux distributions as long as they support the rofi, dbus and python.

Note: On some distributions you may need to install unity-gtk-module-standalone-bzr to get the unity-gtk-modules.  If you need to do this run this code in a terminal:
gsettings set com.canonical.unity-gtk-module gtk2-shell-shows-menubar false
(or change this setting to false through the dconf editor) and reboot to ensure the menu-bars in GTK applications are shown.

Warning: Installation of unity-gtk-modules may disable the global-menu on some distributions as its constituent packages conflict with those the menus may depend on.

Update: There is now a fork of this work bringing the functionality to Ubuntu MATE.

Advertisement

18 thoughts on “HUD for xubuntu

  1. 1) running an archlinux system; i dont seem to have this folder “/etc/X11/Xsession.d” is there another place to put the 80appmenu file? I did create both folder and file but it doesnt seem to do anything.

    2) assuming if i get the “80appmenu” file to load properly, does that work on GTK apps as well as QT? You seem to have GIMP menu visible on your screenshot

    1. Hi. When working the scripts will support GTK.

      I think you might need to tweak things a bit to get them working outside ubuntu-based distributions. I suspect you may need to install appmenu-gtk2 and appmenu-gtk3 instead of the unity-gtk modules. You’ll also need to change the references regarding “unity-gtk-module” in .profile to “appmenu-gtk”.

      Instead of creating the 80appmenu file try adding ‘export APPMENU_DISPLAY_BOTH=1’ to the end of the .profile file.

      I don’t have archlinux to hand so I’ll be interested to hear if this can actually work.

  2. 1) doesnt seem to work if you have anything else other than “unity-gtk-module” ; i tryed appmenu-gtk, appmenu-gtk2, appmenu-gtk3.

    2) got this to load, export APPMENU_DISPLAY_BOTH=1
    checked using echo $APPMENU_DISPLAY_BOTH

    3) Steps used (Archlinux)
    installed packages
    Official: python dmenu python-dbus bzr appmenu-qt
    AUR: unity-gtk-module-standalone-bzr
    (Provides : appmenu-gtk2 appmenu-gtk3 unity-gtk-module)

    sudo vim /etc/X11/xinit/xinitrc.d/80unity-gtk-module
    added in; export APPMENU_DISPLAY_BOTH=1
    Note: dont think you need the ~/.profile since this 80unity-gtk-module exist already.

    Binded hotkeys to i3-hud-menu.py
    Added startup to i3-appmenu-service.py

    4) Long story short, the HUD works just the menu is invisible, which i like it to be visible and working with the HUD.

    Anyways if you figure it out let me know, and many Thanks for figuring this out for none Unity users lols =)

    1. Hi again,

      I’m still scratching my head over this one. Do the menubars disappear from the qt apps (like vlc) too?

      If not, then it may just be a gtk problem. If that’s the case then try adding ‘gtk-shell-shows-menubar=0’ to the following files:
      ~/.config/gtk-3.0/settings.ini
      ~/.config/gtk-2.0/settings.ini
      /etc/gtk-3.0/settings.ini

      1. Thanks, that narrows things down a bit. Could you try the following:
        gsettings set com.canonical.unity-gtk-module gtk2-shell-shows-menubar false
        then reboot? (You can also set this through the dconf editor if you encounter any permissions errors.)

  3. I have the same problem in elementary OS Freya (which is based on Ubuntu 14.04) where the menu bar doesn’t appear, but also the top panel (vingpanel) disappears. The work arounds you suggested unfortunately don’t work for me either.

  4. this is the best thing ever and one of the most important projects in computing history.

    you are now my most favourite person and i want to do everything i can to help you develop this further so it can work with some apps that don’t yet work (firefox, thunderbird, libreoffice) Unity can handle these, so i guess that with some effort, i3-hud-menu will be able to handle these too.

    unfortunately there is no issue tracking on your github fork 😦

    i’m on Mint 17.3 x86 xfce
    with firefox and thunderbird, at least the menu bar is displayed at all. but with libreoffice, the menu bar is completely hidden, so i can’t even access menu items the old way. is there a known workaround foir this?

    1. Thanks for your enthusiasm! I’ve enabled issue tracking now so you can create an issue for libre-office (plus firefox and thunderbird too). I’m not too up to date with libreoffice but I wonder if there’s an extension of it that would show the app menu in a toolbar elsewhere. But you’re right, if unity can do it then surely we can. (As a side-note I’ve been using the Kingsoft office suite recently which works really well with the HUD).

      1. >I’m not too up to date with libreoffice but I wonder if there’s an extension of it that would show the app menu in a toolbar elsewhere

        during the experimental stages of unity-hud, there used to be an extension package called lo-menubar which was required for libreoffice to integrate with unity-hud. but that was more than 4 years ago and i assume the extension has since been integrated into libreoffice by default

  5. I’ve searched, and I’ve searched, and I’ve searched. I’ve never found a replacement for Unity’s HUD, and whenever I’ve asked, people always thought I was talking about application launchers instead and couldn’t help me. Am I really seeing this now? Am I dreaming?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s