To the best of my knowledge, all shortcuts in the Unity Launcher have a corresponding *.desktop file. I have one shortcut (for skrooge) that doesn't have an icon. How can I find the *.desktop file corresponding to this shortcut so that I can add an icon to it?

up vote 92 down vote accepted

It's probably sitting in /usr/share/applications/ but if you want to find every .desktop file on the system run this:

find / -name '*.desktop'

or

sudo updatedb
locate *.desktop

To find files with "skrooge" in their path or name, add a grep to the command:

locate *.desktop | grep -iR "skrooge"
  • 18
    locate -i "*skrooge*.desktop". Though there's mainly three places unity will look for desktop files. ~/.local/share/applications, /usr/local/share/applications and /usr/share/applications. If there are desktop files for the same command in multiple places, it'll use the left-most of the three I listed. – geirha Mar 30 '12 at 14:32
  • Showed up as /usr/share/applications/kde4/skrooge.desktop. Thanks. :) – Koviko Mar 30 '12 at 15:08

The system stores the .desktop files in /usr/share/applications/. Unfortunately, if you open that folder in nautilus the .desktop files appears with the icon specified in the file and with the file name called out within the file. You also won't be allowed to edit these files by clicking on them and selecting edit.

To edit these files, you need to open that folder within a terminal window. Doing an ls command will show all the .desktop files with their actual names. When you locate the .desktop you wish to change, run gksudo gedit {file-name}.desktop.

It's normal practice to keep any .desktop files you create or edit in your home folder ~/.local/share/applications.

  • Running from the terminal can be handier for some, but it is also possible to drag from nautilus into gedit or another text editor. – Jon Hanna May 1 '14 at 21:40
  • what's the point of the directory "~/.local/share/applications"? Files there don't seem to be used, not I cannot add them as "shortcut" to Unity. – Malachiasz Feb 8 '15 at 15:14
  • 2
    @Malachiasz Actually, the *.desktop files from ~/.local/share/applications are reloaded when session restarts. So, log out and log back in. Note that these are specific to that user. – akshay2000 Mar 21 '15 at 7:11
  • I also found this Q&A here on site useful: How to force Unity reload ~/.local/share/applications/ – hakre Sep 18 '17 at 18:19

Some additional details valid too for the other answers:

By default, the .desktop files should be in /usr/share/applications

If you want, you could copy them over to ~/.local/share/applications and edit them there without needing sudo.
Leave the edited copy in ~/.local/share/applications. It will override the copy in /usr/share/applications

Note that the modifications you make to the .desktop file in ~/.local/share/applications will persist until you change them.
Any changes you make to the .desktop file in /usr/share/applications will be automatically lost when the application updates.

Extracted from here

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.