Ora

How can I add an application to the GNOME application menu?

Published in GNOME Application Management 5 mins read

You can add an application to the GNOME application menu by creating a .desktop file, which acts as a shortcut and defines the application's entry, and placing it in the appropriate directory for GNOME to discover.

Understanding .desktop Files: The Core of GNOME Menu Entries

A .desktop file is a plain text file that contains information about an application, such as its name, command to execute, and icon. These files adhere to the XDG Desktop Entry Specification and are how GNOME (and other Linux desktop environments) populate their application menus.

Creating a .desktop File (Menu Item Definition)

To add an application to your GNOME menu, you primarily need to create one of these .desktop files.

  1. Open a text editor: Use any text editor (like Gedit, Nano, or VS Code) to create a new file.
  2. Add the content: Paste the necessary configuration into the file.
  3. Save the file: Save it with a .desktop extension (e.g., my-custom-app.desktop). The filename doesn't need to match the Name field inside the file, but it should be descriptive.

Here are the key fields commonly used in a .desktop file:

Field Description Example
[Desktop Entry] The mandatory header that identifies the file type. [Desktop Entry]
Type Specifies the type of desktop entry. For applications, it's almost always Application. Type=Application
Name The name of the application displayed in the menu. Name=My Custom App
Exec The command to execute when the application is launched. Can include arguments. Exec=/opt/my-app/my-app-binary %U
Icon The name or full path to the icon file for the application. If a name, the system searches in standard icon paths. Icon=my-custom-app or Icon=/opt/my-app/icons/app-icon.png
Categories A semicolon-separated list of categories where the application should appear in the menu (e.g., Utility;Development;). Categories=Utility;Development;
Comment A tooltip or short description of the application. Comment=A powerful tool for custom tasks.
Terminal Set to true if the application needs to be run in a terminal window, false otherwise. Terminal=false
StartupNotify Set to true if the application notifies the desktop environment when it's starting, showing a busy cursor. Useful for applications that take time to load. StartupNotify=true
Path Specifies the working directory for the application. Path=/opt/my-app/

Example .desktop File:

[Desktop Entry]
Name=My Custom Application
Comment=Launches a custom script or binary
Exec=/path/to/your/executable --option
Icon=/path/to/your/icon.png
Terminal=false
Type=Application
Categories=Utility;Education;
StartupNotify=true

Replace /path/to/your/executable with the actual command to launch your application and /path/to/your/icon.png with the icon's location.

Where to Place Your .desktop File

The location where you save your .desktop file determines its scope:

  • For the current user only: Place the file in ~/.local/share/applications/.
    • This is the recommended location for personal applications or scripts that only you will use.
  • For all users system-wide: Place the file in /usr/share/applications/.
    • This requires root privileges (e.g., using sudo) and is suitable for applications installed for the entire system.

After placing the file, ensure it has the correct permissions, typically chmod +x your-app.desktop to make it executable.

Ensuring Your Application Has an Icon (Visual Representation)

The Icon field in your .desktop file points to the image that will represent your application in the menu.

  • Specify a full path: You can provide the absolute path to an icon file (e.g., Icon=/opt/my-app/app-icon.png). Supported formats usually include PNG and SVG.
  • Specify an icon name: If you provide just a name (e.g., Icon=my-custom-app), the system will search for an icon with that name in standard icon theme directories (like /usr/share/icons/hicolor/ or specific theme directories such as /usr/share/icons/theme-name/icon-size/apps/). If you're creating a custom icon, you can place it in a system-wide icon directory (e.g., /usr/share/icons/hicolor/scalable/apps/) or simply reference its full path from your .desktop file.

Handling Custom MIME Types (Advanced File Association)

While not strictly required for merely adding an application to the menu, if your application introduces a new file type that GNOME needs to recognize, you'll need to update the MIME database. This allows GNOME to correctly associate your application with specific file extensions and display appropriate icons for those files.

  1. Create an XML file: Define your new MIME type in an XML file (e.g., my-custom-type.xml).
    <?xml version="1.0" encoding="UTF-8"?>
    <mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
      <mime-type type="application/x-my-custom-file">
        <comment>My Custom File Type</comment>
        <glob pattern="*.mcft"/>
      </mime-type>
    </mime-info>
  2. Place the file: Save this XML file in /usr/share/mime/packages/. This usually requires root privileges.
  3. Update the MIME database: Run the command sudo update-mime-database /usr/share/mime to integrate your new MIME type into the system.

This step is primarily for applications that handle unique file formats, allowing users to double-click such files and have them open directly with your application.

Activating Your New Menu Entry

Once the .desktop file is correctly placed, GNOME usually detects it automatically. If it doesn't appear immediately:

  • Log out and back in: This is often the simplest way to refresh the GNOME Shell.
  • Update desktop entry database: For system-wide .desktop files, you might need to run sudo update-desktop-database to regenerate the applications cache. For user-specific entries, this is often handled automatically or by gio set.
  • Reboot: As a last resort, a full system reboot will ensure all caches are cleared and rebuilt.

Alternative: Using a GUI Menu Editor

For users who prefer a graphical interface, tools like "Main Menu" (also known as Alacarte) provide a way to add, edit, or remove menu entries without manually creating .desktop files. You can typically install it via your distribution's package manager (e.g., sudo apt install alacarte on Ubuntu/Debian).