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:
- Manually drag and drop created .desktop file to unity launcher
- 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:
- Drop the .desktop file in
~/.local/share/applications
. This way it will appear in the application section as well. - Fetch the list of favorites with
gsettings get ...
. - Insert the path to the desktop file in the array using
gsettings set
.
The dbus idea by Jo seems nicer though. :)