It has been quite some time since the Unity launcher API was opened; and though dynamic quicklists didn’t work until the release of Unity 3.6.4 (fix courtesy the awesome Michael Terry), many applications in Natty now have support for quicklists, both static and dynamic. Examples of applications using quicklists: Gwibber, Deja-Dup, GNOME-Screenshot, etc.
Last month I worked on adding Unity launcher quicklist support to Firefox , and now I’m working on adding it to update-manager. Provided that I don’t get stopped by major hurdles (UI freeze is in effect, I need to get an exception for each such change), my next stop would be *burp* Banshee!
You too can easily add quicklist support to your own applications. The guide here is highly helpful. As an example, below is the patch I wrote to enable quicklist support in Update Manager:
=== modified file 'UpdateManager/UpdateManager.py'
--- UpdateManager/UpdateManager.py 2011-04-06 07:43:01 +0000
+++ UpdateManager/UpdateManager.py 2011-04-12 09:33:28 +0000
@@ -297,6 +297,34 @@
self.alert_watcher.connect("battery-alert", self._on_battery_alert)
self.alert_watcher.connect("network-3g-alert", self._on_network_3g_alert)
+ # Create Unity launcher quicklist
+ try:
+ from gi.repository import Unity, Dbusmenu
+
+ um_launcher_entry = Unity.LauncherEntry.get_for_desktop_id ("update-manager.desktop")
+ quicklist = Dbusmenu.Menuitem.new()
+
+ update_menu_item = Dbusmenu.Menuitem.new()
+ update_menu_item.property_set (Dbusmenu.MENUITEM_PROP_LABEL, _("Check for Updates"))
+ update_menu_item.property_set_bool (Dbusmenu.MENUITEM_PROP_VISIBLE, True)
+ update_menu_item.connect ("item-activated", self.on_button_reload_clicked, None)
+ quicklist.child_append(update_menu_item)
+
+ install_all_updates_menu_item = Dbusmenu.Menuitem.new()
+ install_all_updates_menu_item.property_set (Dbusmenu.MENUITEM_PROP_LABEL,
+ _("Install All Available Updates"))
+ install_all_updates_menu_item.property_set_bool (Dbusmenu.MENUITEM_PROP_VISIBLE, True)
+ install_all_updates_menu_item.connect ("item-activated", self.install_all_updates, None)
+ quicklist.child_append (install_all_updates_menu_item)
+
+ um_launcher_entry.set_property ("quicklist", quicklist)
+ except ImportError:
+ pass
+
+ def install_all_updates (self, widget, data = None):
+ self.select_all_updgrades (None)
+ self.on_button_install_clicked (None)
+
def on_initial_focus_in(self, widget, event):
"""callback run on initial focus-in (if started unmapped)"""
widget.unstick()
Thanks to GObject-Introspection the Unity and dbusmenu libraries are available for all languages out there which support GObject-Introspection (Vala, Python, etc do it already).
Quicklists aren’t anything too big, but they speed up your workflow a lot (atleast it did so in my case
). Add support for these in your application to make your application rock in Ubuntu 11.04!

Really, really nice.
Ubuntu is reliable OS.
Hi!
Can you help me add counter to update manager?
What should I do your code?
Thank you for your interest, but Michael Vogt has added that already. See this post on Michael’s blog.
It’s just a printscreen, it doesn’t have any explanation or step by step on how to do it.
(thx for the quick response)
I’d love to see quicklists for the terminal app that allowed you to choose from an open list of terminal sessions (as docky does it) – is that possible?