I am really excited to see [Ted’s post](https://gould.cx/ted/blog/Having_a_tidy_systray) regarding some of the improvements coming to the desktop notification area. This part of our desktop has become something of a wild west – icons look ugly, are spaced too close together, have left/right click inconstancy, often provide obscure and inaccessible widgets and cannot be easily controlled across notification icons with a single keyboard shortcut. This approach will fix many of these issues.
This approach has two distinctive components – the user interface improvements and the technology to implement. The user interface changes I think are really interesting and bring some distinctive benefits:
 * Application indicators are more consistent – no more left and right-click inconsistency. Always left click to see the items.
 * Scrubbing – you can click once on an app indicator and scrub left and right through other indicators with your mouse.
 * More accessible – importantly, scrubbing also applies to the keyboard: this means you could bind a key to the indicator applet, hit that key and then use the arrow keys to navigate through all the indicators.
 * Themable panel icons – you can set a specific icon to be a panel icon for an indicator: this should make it easier for creating single colour panel icons for light and dark themes.
 *  KDE/GNOME compatability – one thing that really excites me is that by using this spec, KDE applications running in GNOME will have their application notification menus rendered with GTK widgets and vice-versa.
I am really excited about the opportunities this brings to the desktop, and I am also really excited about us working with our friends in KDE on this spec.
I wanted to give this a roll in my more native Python tongue so I [added the Karmic PPA](https://edge.launchpad.net/~indicator-applet-developers/+archive/indicator-core-ppa) and started playing with the module. I contributed my code as an example [on the wiki](https://wiki.ubuntu.com/DesktopExperienceTeam/ApplicationIndicators). Here it is to show how it works:
    import gobject
    import gtk
    import appindicator
    if __name__ == “__main__”:
        ind = appindicator.Indicator (“example-simple-client”, “indicator-messages”, appindicator.CATEGORY_APPLICATION_STATUS)
        ind.set_status (appindicator.STATUS_ACTIVE)
        ind.set_attention_icon (“indicator-messages-new”)
        # create a menu
        menu = gtk.Menu()
        # create some labels
        for i in range(3):
            buf = “Test-undermenu – %d” % i
menu_items = gtk.MenuItem(buf)
menu.append(menu_items)
# this is where you would connect your menu item up with a function:
# menu_items.connect(“activate”, self.menuitem_response, buf)
        # show the items
        menu_items.show()
ind.set_menu(menu)
gtk.main()
I basically created an indicator object and threw a GTK menu into it and as if by magic my app appeared in the notification panel, properly spaced out and enjoying the benefits I mentioned above. Pretty simple. 🙂








