How to create a Linux desktop icon cross desktop (KDE, GNOME) with xdg-desktop-icon?

James Mitch picture James Mitch · Sep 24, 2012 · Viewed 9.7k times · Source

I'd like to use the xdg-desktop-icon tool because it can be scripted and works cross desktop (at least on Linux with Gnome and KDE). At least it is supposed to do so according to freedesktop.org. 1

Made a minimal file: test.desktop

[Desktop Entry]

Encoding=UTF-8
Type=Application

Exec=test
Icon=test

Name=test

Used xdg-desktop-icon...

xdg-desktop-icon install --novendor test.desktop

Exit code is 0. (Success.) But... I do not see any new icons on my desktop. Also not after reboot. This failed on Ubuntu Precise 12.04 with KDE and on Debian Wheezy with KDE.

How to use the xdg-desktop-icon tool correctly?

The problem on KDE has something to do with the desktop settings. Folder view, Newspaper view and so on.

Answer

gpoo picture gpoo · Sep 27, 2012

xdg-desktop-icon relies on xdg-user-dir to determine the user desktop directory. You can check either against that command and the settings of your file manager (or program handling the desktop).

Assuming by default it would be /home/user/Desktop, then you have to check the file name there. If the file is there, then xdg-desktop-icon is working as expected.

You have to consider that the icon (test in your case) has to be installed separately using xdg-icon-resource. That is, if you are not using a stock icon or custom icon already installed or you are not using an absolute path for the icon.

Do not forget that xdg-desktop-icon only copies the .desktop file in a specific directory. No more no less.

If I am working on ~/myapp directory, I would check by doing:

$ xdg-user-dir
/home/user/Desktop
$ ls `xdg-user-dir`/test.desktop
ls: cannot access /home/user/Desktop/test.desktop: No such file or directory
$ xdg-desktop-icon install --novendor test.desktop
$ ls `xdg-user-dir`/test.desktop
/home/user/Desktop/test.desktop

Eventually, you can run with any xdg- script with:

$ XDG_DEBUG_LEVEL=1 xdg-desktop-icon ...

Which will give you an extra line telling you where the desktop file was installed. At this point, if the icon has not been installed, it might appear an ugly default icon.