Vous voulez suivre vos fils RSS favoris, connaitre l'heure à Caracas, le temps qu'il fait à Honolulu, le nom du morceau qui passe sur votre lecteur de musique, l'espace disque restant sur une de vos partitions, l'age de votre charmante voisine de pallier, la température de votre charmante voisi... euh de votre CPU ?
Conky peut vous aider !


Installation

Rien de plus simple, en ligne de commande :

$ sudo apt-get install conky

Ou avec Synaptic: chercher conky.

Ou encore plus simple: apt.png


Configuration

Une fois installé, conky se lance en tapant simplement conky dans un terminal ou avec "alt+F2". Il va chercher par défaut le fichier /etc/conky/conky.conf, qui contient un exemple très basique de configuration.

Il est préférable de créer son propre fichier de configuration, de le ranger dans son répertoire personnel et d'indiquer à conky d'aller lire ce fichier au lancement. Il est possible d'avoir plusieurs fichiers de configuration, par exemple .conkyrc, .conkyrc-musique, .conkyrc-envrac et conyrc-meteo, ceci pour organiser finement le placement des données sur votre écran. N'oubliez que le point en tête d'un nom de fichier indique que ce fichier est caché (un CTRL+H permet d'afficher les fichiers cachés dans Nautilus).

Pour indiquer le nom du fichier conkyrc à charger, il faut employer l'option "-c" :

$ conky -c /chemin/vers/fichier-conkyrc-a-charger

Mais pour charger plusieurs fichiers .conkyrc en même temps, il est plus pratique d'utiliser un petit script très simple. Nous verrons cela plus bas.

Voilà un exemple basique de .conkyrc :

own_window yes
own_window_type normal
own_window_transparent yes
own_window_hints undecorated,below,skip_taskbar,skip_pager
use_xft yes
xftfont Comic sans MS:size=12
xftalpha 0.8
update_interval 1
total_run_times 0
alignment tm
maximum_width 300
minimum_size 200 5
gap_x 8
gap_y 20
draw_shades no
draw_outline no
draw_borders no
stippled_borders 8
border_margin 4
border_width 1
default_color white
default_shade_color black
default_outline_color black
double_buffer yes
no_buffers yes
uppercase no
cpu_avg_samples 4
net_avg_samples 4
override_utf8_locale yes
use_spacer none

TEXT

Main
$nodename - $sysname $kernel
Uptime: $uptime Charge: $loadavg
Processus : $processes En cours : $running_processes
RAM : $mem/$memmax - $memperc% ${membar}
Swap : $swap/$swapmax - $swapperc% ${swapbar}

CPU
Core : $color${cpu cpu1}% ${cpubar cpu1}
${cpugraph}

Network
IP Locale: ${addr br0}
Download : ${totaldown br0}
Upload : ${totalup br0}

Disc Space
Root : ${fs_free /}/${fs_size /} $alignr${fs_used_perc /}%
${fs_bar /}

CPU Usage
${top name 1} ${top pid 1} ${top cpu 1}
${top name 2} ${top pid 2} ${top cpu 2}
${top name 3} ${top pid 3} ${top cpu 3}
${top name 4} ${top pid 4} ${top cpu 4}
${top name 5} ${top pid 5} ${top cpu 5}

MEMORY Usage
${top_mem name 1} ${top_mem pid 1} ${top_mem mem 1}
${top_mem name 2} ${top_mem pid 2} ${top_mem mem 2}
${top_mem name 3} ${top_mem pid 3} ${top_mem mem 3}
${top_mem name 4} ${top_mem pid 4} ${top_mem mem 4}
${top_mem name 5} ${top_mem pid 5} ${top_mem mem 5}

Qui donne sur votre écran:

capture-conkybureausimple.png

Cette exemple simple permet de bien comprendre l'organisation du fichier et le rendu à l'écran. Supprimez une ligne en dessous de TEXT, redémarrez conky et regardez le résultat. Puis recommencez !
C'est une bonne façon de découvrir le fonctionnement et le rendu à l'écran lors des premiers pas.

D'autres exemples assez basiques sont disponibles sur le site du projet, et il existe trois fils de discussions (plus de 130 pages au total !) sur le forum ubuntu-fr. Le premier est là, le second ici, et enfin le troisième, celui en activité.
Vous y trouverez une multitude de configurations en tout genre, de la plus simple à la plus aboutie.

Le fichier de configuration

Il comporte deux sections :

Tout d'abord une partie dédiée au paramétrage du comportement de conky, démarrant à la première ligne du conkyrc, jusqu'à la "balise" TEXT. Cette section permet de paramétrer le comportement général de conky, comme la position sur l'écran, avec bordure ou sans, avec transparence ou non, etc... Un de ces paramétrages est particulièrement utile, double_buffer yes, qui permet de faire disparaitre le clignotement des fenêtres de conky.

Cette première section peut utiliser de nombreux autres paramètres, dont la liste complète est disponible ici.

Ensuite, en dessous de la balise "TEXT", tout sera interprété et envoyé vers l'écran.
C'est le cœur de votre configuration. Les données que vous voulez voir apparaître sur votre écran seront à indiquer ici et l'organisation générale dans cette zone sera rendue à l'écran, si vous laissez un espace de deux lignes au lieu d'une, vous aurez ainsi deux lignes d'espace à l'écran.

Il existe une foule de possibilités... Plutôt que d'indiquer toute la liste, je vous laisse le soin d'aller piocher dans les fichiers "conkyrc" que vous trouverez en nombre sur le web. Du copier/coller, des tests, des adaptations, voilà une bonne façon de découvrir conky, et de trouver la recette qui conviendra le mieux aux informations que vous voulez voir apparaitre sur votre bureau.

Vous trouverez la liste de toutes les variables utilisables sur la page de documentation.


Lancement au démarrage

Si vous voulez charger conky au démarrage, il faut l'indiquer à votre environnement de bureau. Sous Gnome c'est dans : "Système → Préférence → Sessions → Programme au démarrage"

Cliquez sur Ajouter et vous tapez conky -c /chemin/vers/conkyrc.

Il faut souvent retarder son exécution afin que votre bureau (GNOME/KDE/XFCE) soit initialisé, c'est entre autres pourquoi l'utilisation d'un petit script avec un sleep 5 (par exemple) est souvent plus simple. Cette méthode offre en plus le choix de charger plusieurs fichiers conkyrc. C'est très utile pour pouvoir organiser la disposition des informations.

Voilà un petit exemple rapide :

#!/bin/bash
# Les ; en fin de certaines lignes sont indispensables.
sleep 10
# On tue les instances de conky déjà lancées.
# Utile pour relancer le tout.
killall conky
# On lance conky, -d pour daemon, -c suivi du fichier de config.
conky -d -c /chemin/vers/conkyrc1;
# On lance un autre fichier de config.
conky -d -c /chemin/vers/conkyrc2;
# Et on quitte proprement le script.
exit

Copiez puis adaptez le contenu de cette exemple dans un fichier nommé par exemple start-conky.sh. Ensuite, il faut rendre ce fichier exécutable avec cette commande :

$ chmod 755 /chemin/vers/start-conky.sh

Et pour finir, au lieu de taper conky -c /chemin/vers/conkyrc dans "Système  → Préférence → Sessions → Programme au démarrage → Ajouter", indiquez simplement le chemin complet du fichier start-conky.sh.


Fermer conky

Pour fermer complètement conky, il ne faut pas chercher compliqué :

$ killall conky

Et vous voilà débarrassé de lui. Si vous êtes joueur, sachez que conky a tendance à faire légèrement saccader l'affichage vidéo à chaque rafraichissement (donc par défaut toutes les secondes !), particulièrement sur les jeux vidéo. Il est donc parfois utile de le fermer avant de jouer.

Il peut être utile de fermer une seule instance de conky et dans ce cas, le simple et efficace killall conky est à proscrire. Pour pouvoir cibler l'instance de conky à fermer, il est possible d'utiliser le nom du fichier .conkyrc avec la commande suivante :

$ for i in `ps aux | grep [c]onkyrc-a-kill |awk '{ print $2}'`; do kill -9 $i;done;

Cette commande tuera le processus de conkyrc-a-kill, sans toucher à vos autres instances de conky. L'utilisation des crochets autour du "c" de conkyrcakill permet d'éviter un petit message d'erreur sans gravité, mais inesthétique. :-)

Et une petite astuce utile pendant les phases de tests ou il faut régulièrement rafraichir conky pour voir les changements :

$ killall -SIGUSR1 conky

Ça prend parfois 2-3 secondes avant de se rafraichir, mais ça évite d'avoir à fermer relancer.


Mon conky

Vous trouverez ici quelques explications sur les fonctions les plus communes que l'on retrouve dans les configurations de conky, de la météo à l'affichage de l'adresse IP publique, en passant par les polices et leurs utilisations. Vous trouverez mes fichiers de configuration à télécharger, ainsi que des captures d'écran en bas de page.

Afficher l'IP publique

Un petit script doit être utilisé pour aller chercher votre IP. Voilà un exemple très simple de script, copiez le code suivant dans un fichier nommé par exemple "ip.sh" :

#!/bin/bash
wget http://checkip.dyndns.org/ -O - -o /dev/null | cut -d: -f 2 | cut -d\< -f 1

Il faut rendre ce fichier "ip.sh" exécutable :

$ sudo chmod 755 ip.sh

Maintenant il faut indiquer dans votre fichier de configuration conky qu'il doit exécuter ce script et afficher le résultat avec une ligne comme celle-ci :

IP Publique : ${execi 1800 /home/utilisateur/ip.sh}

Cette ligne va écrire "IP Publique : " puis va aller exécuter le fichier /home/utilisateur/ip.sh et afficher le retour de ce fichier, l'adresse IP publique dans ce cas. Le 1800 défini en seconde l'intervalle entre deux exécution, ici 30 minutes.

Pensez bien à toujours adapter les chemins indiqués à votre propre ordinateur. Ceci est valable pour tous les exemples de cette page.

Pour faire le cake, une petite page nommé par exemple ip.php mise en place sur un espace d'hébergement en ligne permet de faire la même chose. Voilà ce que doit contenir la page ip.php :

<?php
echo $_SERVER['REMOTE_ADDR'];
?>

Et ce que doit contenir votre "ip.sh" :

#!/bin/bash
wget -O - http://votre.domaine.tld/ip.php | tail

Ça sert à rien, mais c'est la classe. ;-)


La météo

L'utilisation de la météo est rendue possible par conkyForecast, qui permet d'aller chercher les informations météorologiques d'une ville sur le site weather.com. Le paquet conkyForecast n'est pas disponible dans les dépôts officiels, il vous faut donc ajouter ce dépôt à votre fichier "/etc/apt/source.list" :

# DEPOT DE CONKYFORECAST
deb http://ppa.launchpad.net/m-buck/ubuntu intrepid main

N'oubliez pas de recharger votre liste de dépôts immédiatement après, puis: apt.png

Il vous faudra également ouvrir un compte ici, pour obtenir vos codes d'accès, à indiquer dans le fichier ".conkyForecast.config":

XOAP_PARTNER_ID = XXXXXX
XOAP_LICENCE_KEY = XXXXXX

Vous trouverez le code de votre ville, à indiquer à la suite de chaque occurrence de "--location" dans le conkyrc, sur weather.com. Par exemple, pour Rennes: FRXX0114

Le fichier de configuration ".conkyForecast.config" doit se trouver dans "/home/utilisateur/", sinon vous obtiendrez ce message d'erreur "ERROR: Config data file /home/utilisateur/.conkyForecast.config not found, using defaults (Registration info is needed though)", et la météo ne fonctionnera pas.

Il faut utiliser cette commande dans le fichier .conkyrc :

{execi 1800 conkyForecast ...options...}

Le "execi" permet de lancer les mises à jours à l'intervalle spécifié en argument (le 1800 est en secondes et est à modifier selon votre convenance), sans tenir compte de la fréquence de mise à jour indiquée dans les options de votre conkyrc. Il est en effet inutile de mettre les informations météorologiques à jour toutes les deux secondes... D'autant plus que le site weather.com actualise ses informations toutes les heures.

La commande "conkyForecast -h" vous donnera les (nombreuses) options disponibles. L'utilisation de override_utf8_locale yes peut être utile dans votre conkyrc en cas de problèmes avec certains caractères.

Pour avoir "Km/h" à la place de "kph" pour la vitesse du vent, il faut aller éditer le fichier /usr/share/conkyforecast/conkyForecast.py, en tant que root. Cherchez vers la ligne 1144 :

speedunit = u"kph"

Modifier le "kph" à votre convenance.


L'image satellite

Pour trouver l'image satellite de votre zone géographique, le site EUMETSAT est une mine !

La récupération de l'image satellite est réalisée via un script nommé imagesat.sh, et contenant ceci :

#! /bin/bash
cd /home/utilisateur/.conky/image/

# Telechargement (uniquement si image plus recente)
wget -m -nd http://oiswww.eumetsat.org/IPPS/html/latestImages/EUMETSAT_MSG_VIS006EColor-westernEurope.jpg
# Copie de l image
cp EUMETSAT_MSG_VIS006EColor-westernEurope.jpg /home/mpatout/.conky/images/imagesattmp.jpg

# Ajustement de l image : reduction recadrage et suppression de la bande inférieure
convert imagesattmp.jpg -resize 64% imagesattmp2.jpg
convert imagesattmp2.jpg -crop 395x200+0+50-10 image.jpg
exit

Ce script est appelé par le .conkyrc-imgsat, avec une ligne de ce genre :

${execi 20 sleep 1 && display -window conky_images -geometry 400x215 -backdrop /home/utilisateur/.conky/images/image.jpg}

On utilise la commande display du paquet ImageMagick.

Ce paquet est indispensable pour le bon fonctionnement de l'affichage de l'image satellite, pour l'affichage avec "display" comme pour le découpage de l'image avec "convert".
Pensez donc à l'installer si besoin : apt.png


La pochette CD

Affichée grâce au petit paquet CID, à télécharger sur le site officiel du projet. Très facile à configurer via le fichier "cid.conf" ou l'interface graphique accessible via un clic droit sur CID, il fonctionne à merveille avec RhythmBox.

Un grand merci à Askelon et Jackass059 du forum Ubuntu-fr pour ce projet.


Conky Images Display (CID)

Les polices

J'utilise les polices qui viennent avec conkyForecast, ainsi que StyleBats et LCD Mono, qui sont disponibles sur Dafont. Il suffit ensuite de décompresser les archives et de copier les fichiers .ttf dans le répertoire (à éventuellement créer) /home/utilisateur/.fonts/

Attention, avec cette méthode, seul l'utilisateur courant disposera des polices. Pour que tous les utilisateurs du système puissent en profiter, il faut les copier dans le répertoire /usr/share/fonts/

Le fonctionnement est simple, une ligne de ce genre :

${font StyleBats:size=12}W$font RSS - PasToutAFait - Commentaires${hr 3}

Affiche le symbole correspondant à la lettre "W" dans la police StyleBats, avec une taille de 12. La balise $font sans argument à la suite du "W" permet d'indiquer que le texte qui suit n'utilise plus StyleBats, mais la police par défaut, donc RSS - PasToutAFait - Commentaires sera affiché correctement.

Les tableaux de correspondances lettres/symboles sont disponibles sur la page de la police sur Dafont.


Les températures

Pour les disques durs le paquet hddtemp doit être installé avec :

$ sudo apt-get install hddtemp

Ou simplement ce lien : apt-24px.png

Ensuite la commande suivante indique la température du disque indiqué en argument :

$ hddtemp /dev/sda
/dev/sda: WDC WD3200AAJS-22B4A0: 43°C

Pour isoler le "43°C", on peut utiliser awk avec la ligne suivante dans conky :

$ hddtemp /dev/sda | awk '{ print $4}'}
43°C

Il est utile de d'exécuter hddtemp avec les privilèges de l'utilisateur root, les autres utilisateurs n'aillant pas le droit de consulter les températures. Pour cela utilisez la commande suivante :

sudo dpkg-reconfigure hddtemp

Puis répondre oui à la question "Faut-il exécuter hddtemp avec les privilèges du superutilisateur ?".

Pour les températures du processeur, de la carte mère ou encore la vitesse de rotation des ventilateurs, il faut s'appuyer sur le paquet lm-sensors. Pour l'installer :

$ sudo apt-get install lm-sensors

Ou le lien suivant : apt-24px.png

Une fois installé, il reste à configurer lm-sensors pour aller chercher toutes les températures disponibles avec votre matériel. Un script de configuration automatique est disponible facilitant beaucoup la tâche. Pour l'exécuter :

$ sudo sensors-detect

Il vous faut répondre oui à toutes les questions posées par le script, puis charger les modules avec sudo modprobe module ou simplement rebooter si vous ne voulez pas le faire à la main. Il est également possible de configurer lm-sensors à la main, la page de documentation sur Ubuntu-fr peut vous y aider.

Les données disponibles sont consultables avec la commande sensors qui les répertories par modules, par exemple sous cette forme :

$ sensors
acpitz-virtual-0
Adapter: Virtual device
temp1:       +25.0°C  (crit = +90.0°C)                  

k8temp-pci-00c3
Adapter: PCI adapter
Core0 Temp:  +17.0°C                                    
Core0 Temp:   +9.0°C                                    
Core1 Temp:   +6.0°C                                    
Core1 Temp:   -4.0°C                                    

it8718-isa-0290
Adapter: ISA adapter
in0:         +1.66 V  (min =  +0.00 V, max =  +4.08 V)   
in1:         +2.50 V  (min =  +0.00 V, max =  +4.08 V)   
in2:         +1.98 V  (min =  +0.00 V, max =  +4.08 V)   
in3:         +2.96 V  (min =  +0.00 V, max =  +4.08 V)   
in4:         +2.54 V  (min =  +0.00 V, max =  +4.08 V)   
in5:         +1.09 V  (min =  +0.00 V, max =  +4.08 V)   
in6:         +0.99 V  (min =  +0.00 V, max =  +4.08 V)   
in7:         +2.99 V  (min =  +0.00 V, max =  +4.08 V)   
in8:         +3.07 V
fan1:       1313 RPM  (min =    0 RPM)
temp1:       +25.0°C  (low  =  -1.0°C, high = +127.0°C)  sensor = thermal diode
temp2:       -78.0°C  (low  =  -1.0°C, high = +127.0°C)  sensor = disabled
temp3:       -78.0°C  (low  =  -1.0°C, high = +127.0°C)  sensor = disabled
cpu0_vid:   +1.550 V

Il ne reste plus ensuite qu'à bâtir une ligne pour votre conkyrc qui ira extraire les valeurs désirés à l'aide de grep, awk ou éventuellement sed, comme dans les exemples présents dans les fichiers en dessous.

Concernant la température de votre GPU, et plus particulièrement les cartes NVIDIA, la commande suivante devrait vous retourner la température :

$ nvidia-settings -q gpucoretemp

N'aillant pas la possibilité de récupérer la température du GPU sur mon matériel, je ne développe pas plus ici.


Mes fichiers

Voila mes fichiers (J'utilise une résolution de 1680x1050) :

Voilà deux scripts supplémentaires, en perl, qui peuvent être utiles, mais que je n'utilise pas :

L'ensemble de ces scripts et fichiers de configuration est directement téléchargeable via cette archive (tar.gz).

Le script pour VieDeMerde (merci à Askelon du forum Ubuntu-fr pour ce script) nécessite une petite manipulation pour être utilisable. Il s'agit d'exécuter les quatres commandes suivantes pour télécharger et installer le script Perl :

wget http://search.cpan.org/CPAN/authors/id/I/ID/IDERRICK/WWW-VieDeMerde-0.02.tar.gz
tar xvfz WWW-VieDeMerde-0.02.tar.gz
cd WWW-VieDeMerde-0.02
perl Makefile.PL ; make ; make test ; sudo make install

Pensez à vérifier que la version 0.02 est bien la dernière disponible !


Les captures

Pour finir, trois captures de mon bureau (En 1680x1050) :

capture-conkybureau.jpg

capture-conkycube.jpg

capture-conkymultidesktop.png


Conky fait bon ménage avec compiz-fusion.

A vous de jouer maintenant !