Bonjour,
voilà une petite application "indicateur" qui permet d'afficher ce qu'on veux dans la zone "applet de notification générale", je pense que ça marche aussi sous unity ou gnome shell... il prend la première option qui lui est passée et l’exécute. Il affichera alors chaque ligne que la commande créera.
L’intérêt de cet indicateur est que si vous maitrisez un minimum la ligne de commande, ça peut etre pratique et facile d'afficher des infos précises...
Par exemple :
- Pour afficher dans la zone la charge de la machine toutes les 3 secondes, lancer l'indicateur avec cette ligne :
./bash-indicator.py "while [ 1 ] ; do cut -d\ -f1,2,3 /proc/loadavg ; sleep 3; done"
- Pour afficher le temps restant sur la batterie :
./bash-indicator.py "while [ 1 ] ; do acpi -b | cut -d, -f3| cut -d\ -f2 ; sleep 60; done"
- Surveiller la place dispo sur la partition /dev/sda6 :
./bash-indicator.py "while [ 1 ] ; do df -hP /dev/sda6 | tail -n 1| awk '{ print \$4 }' ; sleep 30; done"
- Afficher la température du processeur (à adapter) :
./bash-indicator.py "while [ 1 ] ; do sensors |grep temp1 | awk '{ print \$2 }'; sleep 5; done"
- Afficher la température de Toulouse (sudo apt-get install weather-util), rafraichie toutes les 5 minutes :
./bash-indicator.py "while [ 1 ] ; do weather -i LFBO -m | grep Temperature:|cut -d: -f2; sleep 300; done"
Le programme python peut être modifié pour exécuter à intervalle régulier la commande mais de cette manière, on peut exécuter ce que l'on veut, par exemple un tail -f sur un fichier et l'indicateur ne se mettra à jour que lorsque ce sera nécessaire et pas toutes les n secondes...
programme python à coller dans un fichier "bash-indicator.py" et rendre exécutable par "chmod +x bash-indicator.py" :
#!/usr/bin/env python
import gtk
import appindicator
import threading
import subprocess
import sys
class AppIndicator:
def __init__(self):
self.ind = appindicator.Indicator("bash-indicator",
"bash", appindicator.CATEGORY_APPLICATION_STATUS)
self.ind.set_status (appindicator.STATUS_ACTIVE)
self.menu = gtk.Menu()
item = gtk.MenuItem("Quitter")
item.connect("activate", self.quit, None)
self.menu.append(item)
self.menu.show_all()
self.ind.set_menu(self.menu)
self.ind.set_label("Toto")
self.th = threading.Thread(target=self.tail)
self.th.start()
def quit(self, *args):
print "quit"
self.pp.kill()
self.th._Thread__stop()
gtk.main_quit()
sys.exit()
def tail(self):
self.pp = subprocess.Popen(["/bin/bash", "-c", sys.argv[1]], stdout=subprocess.PIPE)
line = self.pp.stdout.readline()[0:-1][0:30]
self.ind.set_label(line)
while line:
line = self.pp.stdout.readline()[0:-1][0:30]
self.ind.set_label(line)
gtk.gdk.threads_init()
AppIndicator()
gtk.main()