Desktop icon position (programmatically access and manipulate)

I'd like to programmatically access and manipulate the Desktop icon positions, their icons, etc.

This is for files and directories that you keep in ~/Desktop .

Where is this stuff stored?


Solution 1:

Stored as GVFS metadata attributes.

To get all GVFS metadata attributes for file/directory:

gvfs-info '/home/user/Desktop/Untitled Folder/'

To get specific attribute - icon position:

gvfs-info -a 'metadata::nautilus-icon-position' '/home/user/Desktop/Untitled Document/'

To set icon position:

gvfs-set-attribute -t string '/home/user/Desktop/Untitled Document/' 'metadata::nautilus-icon-position' '500,500'

Remember to refresh desktop (F5 key) to see effect.

If lower level manipulation required there is Nautilus Extension API (via libnautilus):

https://developer.gnome.org/libnautilus-extension/stable/

and specifically:

https://developer.gnome.org/libnautilus-extension/stable/NautilusFileInfo.html