Adding a menu location for locally installed xdg .desktop application links

I ran into an issue recently trying to install a application menu link on a debian system (desktop was mate in this case, but I think it applies to any gnome based desktop). The issue was that I would install a new .directory file for a new menu entry along with the .desktop file, and when I did, the application would show up under "Other" and not under the menu category I was trying to add.

The processes being:

  • create your menu entry in a file named company-company.directory
  • create your application entry in a file name company-appname.desktop
  • install with the command xdg-desktop-menu install company-company.directory company-appname.desktop

Running this as the local user, correctly installs the files in ~/.local/share/, but it does not write a menu file. And so the application will show up under Applications->Other

If you run the command as root, it will install system wide, and creates the menu for you under /etc/xdg/menus/applications-merged/company-company.menu

But if you don't want this installed system wide, it seems like the only way to fix this is to setup the .menu file manually? I feel like I'm doing this wrong, and there is a way to specify the menu in a user folder, but at the time I can't seem to figure this out.

To fix the issue I created the /etc/xdg/menus/applications-merged/company-company.menu file manually like this:

<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
  "http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">
<Menu>
    <Name>Applications</Name>
<Menu>
    <Name>company-company</Name>
    <Directory>company-company.directory</Directory>
    <Include>
        <Category>Company</Category>
    </Include>
</Menu>
</Menu>

This added the menu entry, and the locally installed applications now show up in the correct location.


Previous: Setting ip address of squeezeboxserver Next: Running latest firefox on debian installed as user