Main menu:

Site search

Categories

juin 2010
L M M J V S D
 123456
78910111213
14151617181920
21222324252627
282930  

Archive

Applications Indicators

Dans les prochaines versions d’Ubuntu, la zone de notification sera remplacée par deux zones appelées System Indicators et Applications Indicators.
La zone System Indicators contiendra les applets système du genre gestion de session, du son ou de la batterie pour les portables. La zone Applications Indicators contiendra les applications (icônes et menus) qui s’installent en partie dans le tableau de bord et qui traditionnellement se trouvaient dans la zone de notification.
Ce changement a été initié pour des raisons d’accessibilité, d’unité de présentation et de facilité pour l’utilisateur.
Dans Lucid lynx, appindicator existe déjà. Vous pouvez l’installer dans le tableau de bord en ajoutant à celui-ci l’applet appelée Applet de notification.

Il est très facile de créer une petite application qui va placer une icône dans la zone Applications Indicators. Si vous avez installé l’Applet de notification dans votre tableau de bord, l’icône de votre application ira se loger dans celle-ci sinon, elle ira se mettre dans l’ancienne zone de notification.
Voici un exemple de code en python:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# https://wiki.ubuntu.com/DesktopExperienceTeam/ApplicationIndicators

import appindicator
import gtk
import os

class IndicatorSample:
  def __init__(self):
    
    self.ind = appindicator.Indicator ("System Tools","applications-system", appindicator.CATEGORY_SYSTEM_SERVICES)
    self.ind.set_status (appindicator.STATUS_ACTIVE)
    self.ind.set_attention_icon ("indicator-messages-new")
    
    # Création d'un drop-down menu
    self.menu = gtk.Menu()
    
    # Création des éléments du menu
    self.menu_item1 = gtk.MenuItem("Firefox")
    self.menu_item1.connect("activate", self.on_launch, "firefox")
    self.menu_item2 = gtk.MenuItem("Calculatrice")
    self.menu_item2.connect("activate", self.on_launch, "gcalctool")
    
    self.menu.append(self.menu_item1)
    self.menu.append(self.menu_item2)
    self.menu_item1.show()
    self.menu_item2.show()
    
    self.image = gtk.ImageMenuItem(gtk.STOCK_QUIT)
    self.image.connect("activate", self.on_quit)
    self.image.show()
    self.menu.append(self.image)
    
    # Associe le menu créé avec appindicator
    self.ind.set_menu(self.menu)
    
  def on_launch(self, widget, data):
    os.system(data)
    
  def on_quit(self, widget, data = None):
    gtk.main_quit() 
    
if __name__ == "__main__":
  indicator = IndicatorSample()
  gtk.main()

Auparavant, on plaçait une icône dans la zone de notification en utilisant l’objet gtk.StatusIcon et on pouvait spécifier l’icône en la chargeant depuis un fichier avec gtk.status_icon_new_from_file(). Il semble que ce ne soit pas, plus ou pas encore possible avec appindicator et qu’on soit donc obligé de choisir une icône dans le stock. On peut lire dans le wiki d’Ubuntu sur la page consacrée à appindicator:

The icons need to use icon names from themes, direct paths to icon files are not supported. For example, icon names used with gtk_status_icon_new_from_file() won’t work.

Si jamais vous avez une solution à ce problème, laissé un commentaire à ce billet. Merci d’avance.