Create a Linux desktop launch icon

Introduction

If you have a script or application you want to run but don't have a desktop or dock launch icon for it, you can create a custom one yourself.

This will work in Gnome, KDE, and other desktops that follow the specifications at freedesktop.org.

For more options, you can read more about Desktop Entry Specifications.

Desktop entry location

There are a few primary places you should consider putting your desktop entry, depending on whether you want it available to everyone or just one user.

These include:

  • /usr/share/applications/
  • /usr/local/share/applications/
  • $HOME/.local/share/applications/

Desktop entry file

The desktop entry file is a simple text file. The file should end with .desktop. For example, myapp.desktop.

Here is an example template:

[Desktop Entry]

# Application, Links (URL), or Directory (sub-group for applications)
Type=Application

Encoding=UTF-8
Icon=/path/to/launch_icon.png
Name=MySpecificApp
GenericName=SomethingGeneric
Comment=This is a tooltip
Exec=/thing/to/execute

# Should run in a terminal?
Terminal=false

# Name of the window. Optional. See below.
# Allows windows to stack
# If this does not match, duplicate icons may show up in your dock
StartupWMClass=name-of-app-window

# Optional categories
Categories=Development;Education;


# Optional actions (right click options)
Actions=launch1;launch2;launch3

[Desktop Action launch1]
Name=Launch normally
Exec=/path/to/launch

[Desktop Action launch2]
Name=Launch with alt options
Exec=/path/to/launch --alts

[Desktop Action launch3]
Name=Launch with alt options again
Exec=/path/to/launch --otheralts

Get the name of a window

If you have issues with the windows not stacking on the launch icon in your dock or favorites bar, you might need to set the StartupWMClass value.

To get a window's name, first run the app so it is visible, then open a terminal and run xprop WM_CLASS. It will then wait until you click on the title bar of a window and then it will print the name of the window. For example:

xprop WM_CLASS

# Then click on the window.

# It will output something like:
# WM_CLASS(STRING) = "code-oss-dev", "code-oss-dev"

# Your entry would have the line:
# StartupWMClass=code-oss-dev

Conclusion

You should now have the ability the create your own desktop launch icon for a Linux desktop. You should also have the resources to learn more about freedesktop.org standards.