How to add shortcut to unity launcher programmatically? [duplicate]

I'm developing a program in Qt that will help users to manage (create, edit and delete) their quicklists in Unity launcher.

I got to a point where I created .desktop file and I don't know how to programmatically place that file on Unity launcher.

I found two (bad) ways to do this:

  1. Manually drag and drop created .desktop file to unity launcher
  2. Edit favorites key with "gsettings set com.canonical.Unity.Launcher favorites" and force unity to reload with "unity --replace"

So, I'm searching for a function or a system command that is called on first 'drag and drop' method so I can do it in my program without need for user to do it manually.

I don't even know where (or how) to search for my solution so any suggestions will be helpfull.


Solution 1:

You can add dynamic quicklists at runtime by using DbusMenu. You can read more about that here: https://wiki.ubuntu.com/Unity/LauncherAPI. That page also describes adding counters, progressbars and setting urgency.

Solution 2:

I would do it this way:

  1. Drop the .desktop file in ~/.local/share/applications. This way it will appear in the application section as well.
  2. Fetch the list of favorites with gsettings get ....
  3. Insert the path to the desktop file in the array using gsettings set.

The dbus idea by Jo seems nicer though. :)