[[conky]]
Piste: » conky
Affichage des ressources système : Conky
Conky permet la surveillance de pratiquement toutes les variables du système : CPU, mémoire, swap, espace disque, température, téléchargements, messages du système, et bien d'autres encore. L'affichage peut se faire en arrière plan sur le bureau.
Conky est extrêmement configurable bien que sa configuration puisse être difficile. Pour voir des exemples de configuration de conky, consultez ce sujet :
Pré-requis
Pour installer ce logiciel, vous devez avoir activé l'accès au dépôt Universe.
Installation
Il vous suffit, pour cela, d'installer le paquet conky.
Versions de conky disponible sous Ubuntu:
- Dapper Drake (6.06) : 1.3.5 (ou 1.4.4 si vous activez les dépots backports)
- Edgy Eft (6.10) : 1.4.2 (ou 1.4.5 si vous activez les dépots backports)
- Feisty Fawn (7.04) : 1.4.5
- Gutsy Gibbon (7.10) : 1.4.7 (ou 1.4.9 si vous activez les dépots backports)
- Hardy Heron (8.04) : 1.5.1
Configuration
Pour configurer conky, créez le fichier .conkyrc dans votre dossier personnel et mettez à l'intérieur de celui-ci du code spécial conky, par exemple :
Interface simple fenêtrée
use_xft yes
xftfont Arial:size=8
xftalpha 0.8
update_interval 1.0
total_run_times 0
own_window yes
own_window_transparent yes
double_buffer yes
minimum_size 280 5
draw_shades no
draw_outline no
draw_borders no
stippled_borders 8
border_margin 4
border_width 1
default_color 4582B5
default_shade_color black
default_outline_color black
alignment bottom_right
gap_x 8
gap_y 50
no_buffers yes
uppercase no
cpu_avg_samples 2
net_avg_samples 2
override_utf8_locale no
use_spacer no
TEXT
$nodename - $sysname $kernel on $machine
$stippled_hr
${color #4582B5}Uptime:$color $uptime ${color #FFFFFF}- Load:$color $loadavg
${color #4582B5}Usage CPU:$color $cpu% ${color #FFFFFF} ${cpubar}
$color ${cpugraph FFFFFFF FFFFFFF}
${color #4582B5}Usage RAM:${color #FFFFFF} $mem/$memmax - $memperc% ${membar}
${color #4582B5}Usage Swap:${color #FFFFFF} $swap/$swapmax - $swapperc% ${swapbar}
${color #4582B5}Processus:$color $processes ${color #FFFFFF}Running:$color $running_processes
$color$stippled_hr
${color #4582B5}Reseau:
Down:${downspeed eth1} k/s${color #FFFFFF} ${offset 80}Up:${color #FFFFFF} ${upspeed eth1} k/s
$color${downspeedgraph eth1 32,150 FFFFFF FFFFFF} $color${upspeedgraph eth1 32,150 FFFFFF FFFFFF}
$color$stippled_hr
${color #4582B5}Espace Disque:
ext3: $color${fs_free /}/${fs_size /} ${fs_bar /}
$color$stippled_hr
${color #4582B5} PID CPU% MEM%
CPU usage
${color #FFFFFF} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${color #FFFFFF} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${color #FFFFFF} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
${color #4582B5}Mem usage
${color #FFFFFF} ${top_mem name 1} ${top_mem pid 1} ${top_mem cpu 1} ${top_mem mem 1}
${color #FFFFFF} ${top_mem name 2} ${top_mem pid 2} ${top_mem cpu 2} ${top_mem mem 2}
${color #FFFFFF} ${top_mem name 3} ${top_mem pid 3} ${top_mem cpu 3} ${top_mem mem 3}
${color #FFFFFF} ${top_mem name 4} ${top_mem pid 4} ${top_mem cpu 4} ${top_mem mem 4}
Intégrée au fond d'écran
# set to yes if you want Conky to be forked in the background
background no
cpu_avg_samples 2
net_avg_samples 2
out_to_console no
# X font when Xft is disabled, you can pick one with program xfontsel
#font 7x12
#font 6x10
#font 7x13
#font 8x13
#font 7x12
#font *mintsmild.se*
#font -*-*-*-*-*-*-34-*-*-*-*-*-*-*
#font -artwiz-snap-normal-r-normal-*-*-100-*-*-p-*-iso8859-1
# Use Xft?
use_xft yes
# Xft font when Xft is enabled
xftfont Bitstream Vera Sans Mono:size=8
own_window_transparent yes
own_window_colour hotpink
# Text alpha when using Xft
xftalpha 0.8
on_bottom yes
# mail spool
mail_spool $MAIL
# Update interval in seconds
update_interval 1
# Create own window instead of using desktop (required in nautilus)
own_window no
# Use double buffering (reduces flicker, may not work for everyone)
double_buffer yes
# Minimum size of text area
#minimum_size 280 5
#maximum_width 150
# Draw shades?
draw_shades no
# Draw outlines?
draw_outline no
# Draw borders around text
draw_borders no
# Stippled borders?
stippled_borders 10
# border margins
border_margin 4
# border width
border_width 1
# Default colors and also border colors
default_color white
default_shade_color white
default_outline_color white
# Text alignment, other possible values are commented
#alignment top_left
#minimum_size 10 10
gap_x 13
gap_y 34
alignment top_right
#alignment bottom_left
#alignment bottom_right
# Gap between borders of screen and text
# Add spaces to keep things from moving about? This only affects certain objects.
use_spacer no
# Subtract file system buffers from used memory?
no_buffers yes
# set to yes if you want all text to be in uppercase
uppercase no
# boinc (seti) dir
# seti_dir /opt/seti
# Possible variables to be used:
#
# Variable Arguments Description
# acpiacadapter ACPI ac adapter state.
# acpifan ACPI fan state
# acpitemp ACPI temperature.
# adt746xcpu CPU temperature from therm_adt746x
# adt746xfan Fan speed from therm_adt746x
# battery (num) Remaining capasity in ACPI or APM
# battery. ACPI battery number can be
# given as argument (default is BAT0).
# buffers Amount of memory buffered
# cached Amount of memory cached
# color (color) Change drawing color to color
# cpu CPU usage in percents
# cpubar (height) Bar that shows CPU usage, height is
# bar's height in pixels
# downspeed net Download speed in kilobytes
# downspeedf net Download speed in kilobytes with one
# decimal
# exec shell command Executes a shell command and displays
# the output in torsmo. warning: this
# takes a lot more resources than other
# variables. I'd recommend coding wanted
# behaviour in C and posting a patch :-).
# execi interval, shell Same as exec but with specific interval.
# command Interval can't be less than
# update_interval in configuration.
# fs_bar (height), (fs) Bar that shows how much space is used on
# a file system. height is the height in
# pixels. fs is any file on that file
# system.
# fs_free (fs) Free space on a file system available
# for users.
# fs_free_perc (fs) Free percentage of space on a file
# system available for users.
# fs_size (fs) File system size
# fs_used (fs) File system used space
# hr (height) Horizontal line, height is the height in
# pixels
# i2c (dev), type, n I2C sensor from sysfs (Linux 2.6). dev
# may be omitted if you have only one I2C
# device. type is either in (or vol)
# meaning voltage, fan meaning fan or temp
# meaning temperature. n is number of the
# sensor. See /sys/bus/i2c/devices/ on
# your local computer.
# kernel Kernel version
# loadavg (1), (2), (3) System load average, 1 is for past 1
# minute, 2 for past 5 minutes and 3 for
# past 15 minutes.
# machine Machine, i686 for example
# mails Mail count in mail spool. You can use
# program like fetchmail to get mails from
# some server using your favourite
# protocol. See also new_mails.
# mem Amount of memory in use
# membar (height) Bar that shows amount of memory in use
# memmax Total amount of memory
# memperc Percentage of memory in use
# new_mails Unread mail count in mail spool.
# nodename Hostname
# outlinecolor (color) Change outline color
# pre_exec shell command Executes a shell command one time before
# torsmo displays anything and puts output
# as text.
# processes Total processes (sleeping and running)
# running_processes Running processes (not sleeping),
# requires Linux 2.6
# shadecolor (color) Change shading color
# stippled_hr (space), Stippled (dashed) horizontal line
# (height)
# swapbar (height) Bar that shows amount of swap in use
# swap Amount of swap in use
# swapmax Total amount of swap
# swapperc Percentage of swap in use
# sysname System name, Linux for example
# time (format) Local time, see man strftime to get more
# information about format
# totaldown net Total download, overflows at 4 GB on
# Linux with 32-bit arch and there doesn't
# seem to be a way to know how many times
# it has already done that before torsmo
# has started.
# totalup net Total upload, this one too, may overflow
# updates Number of updates (for debugging)
# upspeed net Upload speed in kilobytes
# upspeedf net Upload speed in kilobytes with one
# decimal
# uptime Uptime
# uptime_short Uptime in a shorter format
#
# seti_prog Seti@home current progress
# seti_progbar (height) Seti@home current progress bar
# seti_credit Seti@hoome total user credit
# variable is given either in format $variable or in ${variable}. Latter
# allows characters right after the variable and must be used in network
# stuff because of an argument
#${font Dungeon:style=Bold:pixelsize=10}I can change the font as well
#${font Verdana:size=10}as many times as I choose
#${font Perry:size=10}Including UTF-8,
#${font Luxi Mono:size=10}justo como este texto que o google traduz fêz o português
# stuff after 'TEXT' will be formatted on screen
#${font Grunge:size=12}${time %a %b %d}${alignr -25}${time %k:%M}
TEXT
$nodename - $sysname $kernel on $machine
$stippled_hr
${color lightgrey}Uptime:$color $uptime ${color lightgrey}- Load:$color $loadavg
${color lightgrey}CPU Usage:${color #5000a0} ${cpu}% ${cpubar}
${color black}${cpugraph 000000 5000a0}
${color lightgrey}RAM Usage:$color $mem/$memmax - $memperc% $membar
${color lightgrey}Swap Usage:$color $swap/$swapmax - $swapperc% ${swapbar}
${color lightgrey}Processes:$color $processes ${color grey}Running:$color $running_processes
$color$stippled_hr
${color lightgrey}Networking:
Down:${color #8844ee} ${downspeed eth0} k/s${color lightgrey} ${offset 70}Up:${color #22ccff} ${upspeed eth0} k/s
${color black}${downspeedgraph eth0 32,150 ff0000 0000ff} $alignr${color black}${upspeedgraph eth0 32,150 0000ff ff0000}
${color lightgrey}File systems:
/ $color${fs_used /}/${fs_size /} ${fs_bar /}
${color lightgrey}Temperatures:
CPU:$color ${i2c temp 2}C${color grey} - MB:$color ${i2c temp 1}C
${font Dungeon:style=Bold:pixelsize=12}${color #88aadd}MPD: ${alignc}$mpd_artist - $mpd_title
${color #88aadd}$mpd_bar
${color #88aadd}${alignc}$mpd_status
${color}Name PID CPU% MEM%
${color #ddaa00} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${color lightgrey} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${color lightgrey} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
${color}Mem usage
${color #ddaa00} ${top_mem name 1} ${top_mem pid 1} ${top_mem cpu 1} ${top_mem mem 1}
${color lightgrey} ${top_mem name 2} ${top_mem pid 2} ${top_mem cpu 2} ${top_mem mem 2}
${color lightgrey} ${top_mem name 3} ${top_mem pid 3} ${top_mem cpu 3} ${top_mem mem 3}
${color #FFFFFF} ${top_mem name 1} ${top_mem pid 1} ${top_mem cpu 1} ${top_mem mem 1}
${color #FFFFFF} ${top_mem name 2} ${top_mem pid 2} ${top_mem cpu 2} ${top_mem mem 2}
${color #FFFFFF} ${top_mem name 3} ${top_mem pid 3} ${top_mem cpu 3} ${top_mem mem 3}
${color #FFFFFF} ${top_mem name 4} ${top_mem pid 4} ${top_mem cpu 4} ${top_mem mem 4}
Autres exemples
Sur le site officiel : site officiel
Sur le forum : http://forum.ubuntu-fr.org/viewtopic.php?id=99471
Exécution
Pour exécuter conky, faites ALT + F2 et vous tapez conky.
Si vous voulez le charger au démarrage : Système → Préférence → Sessions → Programme au démarrage
Cliquez sur Ajouter et vous tapez "conky". Éventuellement, il faudra retarder son exécution afin que votre bureau (GNOME/KDE/XFCE) soit initialisé :
xterm -e sleep 5 && conky && exit
Problèmes rencontrés
Problème de clignotement
Pour éviter le clignotement éditez le fichier .conkyrc
Et vous mettez "yes" pour:
- double_buffer
On peut aussi rajouter "yes" pour:
- own_window_transparent
Pour que l'option double_buffer fonctionne, le module "dbe" (Double Buffer Extension) doit être activé dans /etc/X11/xorg.conf. On ajoute donc Load "dbe" dans la section Module du xorg.conf après l'avoir sauvegardé:
sudo cp /etc/X11/xorg.conf /etc/X11/xorg.backup gksudo gedit /etc/X11/xorg.conf
chercher
Section "Module" ... EndSection
et insérer
Load "dbe"
dans la liste des modules chargés. Relancer le serveur X (ctrl+alt+backspace) pour que les changements prennent effet.
En cas de problème,
sudo cp /etc/X11/xorg.backup /etc/X11/xorg.conf
Voilà ;)
PS_1 : pour les personnes ou ça continue toujours de clignoter introduire ceci dans .conkyrc /etc/X11/xorg.conf :
Load "glx" Load "dbe" Load "i2c" Load "bitmap" Load "ddc" Load "extmod" Load "freetype" Load "int10" Load "vbe"
PS_2: (Ou plus simple, cas perso.) Pour supprimer tout clignotement, il faut créer une ligne de "texte pur" légerement plus large que la plus large des lignes affichées avec des variables ou graph. exemple de ligne texte ajoutée dans .conkyrc (ajuster le nombre de tiré "-" en fontion) : ${color #666666}———————————————————–
Éviter une fenêtre dans la barre des taches
Deux méthodes :
1. (conky 1.4.2) Il faut rajouter dans le .conkyrc, avant la section TEXT (cette méthode permet de ne pas avoir à lancer un deuxième processus au démarrage) :
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
Les propriétés sont :
- undecorated qui enlève le tour de la fenêtre
- below qui permet de mettre la fenêtre de conky sous les autres fenêtres
- sticky qui laisse la fenêtre de conky sur tous les bureaux
- skip_taskbar qui enlève conky de la barre des taches
- skip_pager qui enlève conky du pager (alt-tab)
Ce type ne permet pas de conserver conky visible lorsque l'on clique sur faire apparaître le bureau. En mettant la ligne :
own_window_type override
On conserve les options évoquées précédemment et en plus on conserve conky même lorsque l'on clique sur faire apparaître le bureau (il peut y avoir un problème d'affichage des icones du bureau).
(plus d'info dans le man conky qui est reproduit sur http://conky.sourceforge.net/docs.html).
2. Il faut utiliser le packet devilspie (ce qui nécessite le lancement de conky et devilspie au démarrage, l'intérêt est que l'on peut gérer plusieurs processus avec devilspie) :
sudo apt-get install devilspie
Deux méthodes de configuration de devilspie : Pour devilspie ⇐ 0.12
Méthode 1 : créer un fichier:
gedit $HOME/.devilspie.xml
Et vous mettez dedans:
<?xml version="1.0"?> <!DOCTYPE devilspie SYSTEM "devilspie.dtd"> <devilspie> <!-- This flurb configures devilspie to watch for a window called "conky" --> <flurb name="conky"> <matchers> <matcher name="DevilsPieMatcherWindowName"> <property name="application_name" value="conky"/> </matcher> </matchers> <!-- The following controls what actions are preformed --> <actions> <!-- Hide conky from the taskbar and the pager --> <action name="DevilsPieActionHide"> <property name="skip-tasklist" value="TRUE"/> <property name="skip-pager" value="TRUE"/> </action> <!-- Show conky on all workspaces --> <action name="DevilsPieActionSetWorkspace"> <property name="pinned" value="TRUE"/> </action> </actions> </flurb> </devilspie>
CETTE METHODE NE MARCHE PAS...
Méthode 2:
Créez un dossier caché dans le home:
mkdir ~/.devilspie
Aller dans ce dossier:
cd ~/.devilspie/
Editer le fichier de configuration (on peut lui donner n'importe quel nom):
gedit conky.ds
Coller les s-expressions utilisées par devilspie (infos supplémentaires sur http://wiki.foosel.net/linux/devilspie). Un fichier classique pour conky serait :
(if
(is (application_name) "ubuntu - conky")
(begin
(pin)
(skip_pager)
(skip_tasklist)
(below)
(wintype "dock")
)
)
Quelques explications :
- application_name : nom de l'application
- pin : permet de mettre conky sur tous les bureaux
- skip_pager : conky n'apparait pas quand on fait alt-tab
- skip_tasklist : conky n'apparait pas dans la barre des taches
- below : conky est toujours dessous les autres fenêtres
- wintype "dock" : permet d'avoir conky encore visible même lorsque l'on clique sur l'icône pour faire apparaître le bureau
la classe ultime...
Il est possible qu'il faille adapter le champ application_name. Il y a surement une méthode plus simple mais j'ai pas encore trouvé... On fait un fichier test.ds dans le dossier caché devilspie avec dedans :
(debug)
Ensuite on lance l'application dont on cherche le nom (conky dans notre cas). Puis on lance devilspie dans la console. Il apparait dans la console des informations sur les fenêtres ouvertes en ce moment, donc notre application, il suffit de repérer le nom de conky. Une fois cela fait on efface le fichier test.ds
Puis il faut le charger au démarrage : Système → Préférence → Sessions → Programme au démarrage Cliquez sur Ajouter et vous tapez devilspie
Voilà
Conflit entre conky et les icônes du bureau
Il arrive lorsque l'on configure Conky en intégration bureau que les icônes soient masquées par l'option "double_buffer" mise à yes. Vous pouvez tester en la mettant à "no" mais le code clignote à chaque réactualisation. Pour garder cette option, j'ai trouvé la solution, en m'inspirant de HowTo: Embedded Terminal On Your Gutsy Desktop
Tout d'abord, éditez le fichier ~/.conkyrc et ajoutez l'argument :
own_window yes
Conky apparait ainsi en mode fenêtré, et ne gène plus les icônes du bureau. Ah, vous ne voulez quand-même que Conky soit intégré en transparence au bureau, pas de souci. Si ce n'est pas déjà fait, installez le paquet compizconfig-settings-manager
.
Lancez le depuis Système\Préférences\Advanced Desktop Effects Settings ou en tapant ccsm dans un terminal. Commencez par vous rendre dans Utility et activez Regex Matching. Allez ensuite dans Effects, Décoration de la fenêtre (activée par défaut, ne la désactivez pas). Dans la partie Decoration windows, insérez
!title=x
où x est le titre de la fenêtre de conky, composé en général du nom de votre PC, suivi de conky :
!title=ma-machine - conky
Indiquez la même chose dans Shadow windows. Ceci aura pour effet de laisser activé le cadre de fenêtre et l'ombrage pour toutes les fenêtres exceptées celle de Conky. Si vous aviez déjà placé quelque chose dans ces zones, séparez-les par un &.
Ensuite, rendez-vous dans la partie Window Management, et ouvrez la partie Windows Rules (cochez-là si ce n'est pas fait). Entrez cette fois
title=x
où x est le titre de la fenêtre de Conky (sans le ! cette fois) dans les catégories Skip taskbar, Skip pager, Below, Sticky, Non resizable windows, Non minimizable windows, Non maximizable windows, Non closable windows..., selon vos préférences pour que ces paramètres s'activent pour Conky.
Voilà, c'est prêt, tapez
conky
dans un terminal pour exécuter le logiciel avec les nouveaux paramètres. On a une illusion d'intégration dans le fond d'écran, sans répercussion pour les icônes.
Le conky réapparaît parfois brièvement au premier plan, devant mes applications
J'ai rencontré ce problème avec les Conky de largeur variable (quand on affiche les ports ouverts et l'adresse distante par exemple).
Pour y remédier il faut fixer la largeur du Conky, en spécifiant une largeur minimale et une largeur maximale identiques :
minimum_size 260 maximum_width 260
Scripts pour votre .conkyrc
Rhythmbox
Si vous desirez juste sur votre Conky, ce que vous ecoutez sur Rhythmbox, voici la portion à rajouter dans votre .conkyrc
${color lightgrey}Now Playing :
${exec rhythmbox-client --print-playing}
Pour une version plus complète, il suffit de regarder le manuel de rhytmbox-client pour imaginer
${color lightgrey}RhythmBox Now Playing :
${alignc}${exec rhythmbox-client --print-playing-format "%ta - %at"}
${alignc}${exec rhythmbox-client --print-playing-format "%tn - %tt"}
AmaroK
Si vous desirez voir sur votre Conky, ce que vous ecoutez sur AmaroK, voici la portion à rajouter dans votre .conkyrc
${if_running amarok}
${color}AmaroK${color white}
${alignc}${execi 10 ~/.conky/amarok artist}
${alignc}${execi 10 ~/.conky/amarok title}
${execibar 1 ~/.conky/amarok progress}
${alignc}"${execi 10 ~/.conky/amarok album}"
${alignc}${execi 10 ~/.conky/amarok year} - ${color white}${alignc}${execi 10 ~/.conky/amarok genre}$endif
Ensuite vous créez un dossier caché dans le home nommé ".conky"
Créez un dossier caché dans le home:
mkdir ~/.conky
Aller dans ce dossier :
cd ~/.conky/
Puis créez un fichier nommé "amarok"
gedit ~/.conky/amarok
Et ajouter :
#!/bin/bash
# amaroK info display script by eirc <eirc.eirc@gmail.com>
case "$1" in
# Now Playing Info
artist) dcop amarok player artist ;;
title) dcop amarok player title ;;
album) dcop amarok player album ;;
year) dcop amarok player year ;;
genre) dcop amarok player genre ;;
progress)
curr=`dcop amarok player trackCurrentTime`
tot=`dcop amarok player trackTotalTime`
if (( $tot )); then
expr $curr \* 100 / $tot
fi
;;
esac
sudo chmod +x ~/.conky/amarok
Voila :)
Audacious (v1.2)
Audacious intègre un outil dédié très pratique : "audtool". Celui-ci fourni des informations console qui peuvent être utilisé ensuite pour des programmes tels que le plugin "music" de aMSN, ou bien ici Conky.
Pour cela, il faut rajouter des "exec audtool <commande>" dans votre script, par exemple :
${color #e49c16}Audacious:${color white} ${exec audtool --current-song-length} ${exec audtool --current-song-bitrate-kbps} kbps
${exec audtool --current-song | cut -b-50}
${color #ffc11f}${execbar expr 99 \* $(audtool --current-song-output-length-seconds) \/ $(audtool --current-song-length-seconds)}
Pour plus de commandes :
man audtool
Attention tout de même, si Audacious n'est pas lancé, vous aurez des messages d'erreur. Ceux-ci peuvent déformer Conky, alors pour éviter cela, il faut bidouiller l'argument "maximum_width" dans l'en-tête (350 semble être une valeur correcte pour du 1024*768 :)).
Moi j'ai une formule simple pour éviter le message d'erreur : ${if_running audacious} au début de la partie "audacious", puis on ajoute à la fin de cette partie : $endif on pourra "bidouiller" pour rajouter des choses comme une barre etc... mais ça je sais pas faire.
Ainsi on peut faire comme conseillé sur un site anglais :
${if_running audacious}
${color black}AUD:${color #C0C8CD} ${exec audtool --current-song | cut -b-34}
${color #C0C8CD} ${exec audtool --current-song-bitrate-kbps} kbps * ${exec audtool --current-song-length} ${execbar expr 100 \* $(audtool --current-song-output-length-seconds) \/ $(audtool --current-song-length-seconds)}
${color black}${hr 2}$endif
gmusicbrowser
Conky peut afficher les informations de lecture de gmusicbrowser grâce à un patch créé par l'auteur Quentin Sculo ; par contre, cela nécessite de compiler soi-même conky depuis les sources. Pas de panique cependant, un How-To est disponible ici.
La météo
Installez le paquet curl.
créer un dossier que vous appellerez " scripts " et dans lequel vous créez un fichier script-sh . Pour cela il suffit de creer un fichier text et de le sauvguarder avec l'extenstion " .sh "
Ce fichier vous le nommez donc " weather.sh "
Vous mettez dedans :
#!/bin/sh
#
# Grab weather data from weather.com and format it according to the given XSLT
# Script written by boojit
# Modified by Hellf[i]re
# The orignal script and xslt can be downloaded from http://pondol.com/weather.tar.gz
# Usage:
# ${execi 1800 /path/to/weather/weather.sh location}
# Usage Example:
# ${execi 1800 /home/user/weather/weather.sh 03833}
# your Location ID: use http://xoap.weather.com/search/search?where=[yourcity] to find it
# U.S. users can just use their zip code; doubt that works for anyone else though (YMMV)
LOCID=$1
# s=standard units, m=metric units
UNITS=m
# where this script and the XSLT lives
RUNDIR=/home/[votre nom d'utilisateur]/scripts/
# there's probably other stuff besides CURL that will work for this, but i haven't
# tried any others.
# you can get curl at http://curl.haxx.se/
CURLCMD=/usr/bin/curl
# get it at http://xmlsoft.org/XSLT/
XSLTCMD=/usr/bin/xsltproc
# you probably don't need t[b][/b]o modify anything below this point....
# CURL url. Use cc=* for current forecast or dayf=10 to get a multi-day forecast
CURLURL="http://xoap.weather.com/weather/local/$LOCID?cc=*&unit=$UNITS&dayf=2"
# The XSLT to use when translating the response from weather.com
# You can modify this xslt to your liking
XSLT=$RUNDIR/.weather.xslt
#filter (if you want to convert stuff to lower-case or upper case or something)
#FILTER="|gawk '{print(tolower(\$0));}'"
#####
eval "$CURLCMD \"$CURLURL\" 2>/dev/null| $XSLTCMD $XSLT - $FILTER"
puis vous créez un autre fichier texte, que vous nommerez " weather.xslt " dans lequel vous mettez cela :
<!--
This XSLT is used to translate an XML response from the weather.com
XML API.
You can format this file to your liking. Two things you may feel
like doing:
1) Modify the layout of the fields or static text already defined
2) Add other fields from the XML response file that aren't referenced in this
XSLT. You can grab a full list by just doing a:
wget "http://xoap.weather.com/weather/local/$LOCID?cc=*&unit=$UNITS"
(change $LOCID and $UNITS to suit your needs)
-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" >
<xsl:output method="text" disable-output-escaping="yes"/>
<xsl:template match="weather">
<xsl:apply-templates select="cc"/>
<xsl:apply-templates select="dayf/day[@d='1']"/>
</xsl:template>
<xsl:template match="cc">
<xsl:text>Location: </xsl:text><xsl:value-of select="obst"/>
<xsl:text>:
</xsl:text>
<xsl:text>
Température : </xsl:text><xsl:value-of select="tmp"/><xsl:value-of select="/weather/head/ut"/>
<xsl:if test="tmp != flik">
<xsl:text>
Température ressentie : </xsl:text><xsl:value-of select="flik"/><xsl:value-of select="/weather/head/ut"/>
</xsl:if>
<xsl:text>
Conditions : </xsl:text><xsl:value-of select="t"/>
<xsl:text>
Vent : </xsl:text>
<xsl:choose>
<xsl:when test="wind/s = 'calm'"><xsl:text>0</xsl:text></xsl:when>
<xsl:otherwise><xsl:value-of select="wind/s"/></xsl:otherwise>
</xsl:choose>
<xsl:value-of select="/weather/head/us"/>
<xsl:choose>
<xsl:when test="wind/s = 'calm'"><xsl:text>(0mph)</xsl:text></xsl:when>
<xsl:otherwise><xsl:text> (</xsl:text><xsl:value-of select="round(wind/s * 0.6214)"/><xsl:text>mph)</xsl:text></xsl:otherwise>
</xsl:choose>
<xsl:text> (</xsl:text><xsl:value-of select="wind/t"/>
<xsl:text>)</xsl:text>
</xsl:template>
<xsl:template match="dayf/day[@d='1']">
<xsl:text>
Demain : </xsl:text><xsl:value-of select="low"/><xsl:value-of select="/weather/head/ut"/>
<xsl:text> to </xsl:text><xsl:value-of select="hi"/><xsl:value-of select="/weather/head/ut"/>
<xsl:text>, </xsl:text><xsl:value-of select="part[@p='d']/t"/>
<xsl:text>
Levé du soleil : </xsl:text><xsl:value-of select="flik"/><xsl:value-of select="/weather/loc/sunr"/>
<xsl:text>
Couché du soleil : </xsl:text><xsl:value-of select="flik"/><xsl:value-of select="/weather/loc/suns"/>
</xsl:template>
</xsl:stylesheet>
vous nommerez ce fichier .weather.xslt (n'oubliez pas le premier point)
Authorisez les droit d'utilisateurs pour les deux fichiers weather créés (clic droit/authoriser l'execution, ou terminal comme vous voulez).
Ensuite vous allez sur le site www.weather.com . Tapez le nom de votre ville dans le champ "Local weather". Après avoir validé,
Cliquez alors sur le lien de votre ville puis regardez l'adresse du lien qui vient de s'ouvrir. (pour Tours par exemple il y a ceci : http://www.weather.com/outlook/travel/businesstraveler/local/FRXX0100?from=search_city Le FRXX00100 est le code qu'il y a pour la ville que je veux...
Donc il me suffit de taper ce code dans le .conkyrc (sudo gedit .conkyrc) à l'aide de cette ligne , à l'endroit où vous voulez que la météo apparaisse :
$color ${execi 1800 /home/[votre pseudo]/scripts/weather/.weather.sh FRXX0100}
(évidemment vous tapez le code de la ville qui vous interesse à la place de FRXX0100). Pour Paris, france : FRXX0076
Il se peut enfin qu'au demarage de conky vous ayez un message de type
sh: /home/albert/scripts/weather.sh: Permission denied
dans ce cas, il faut mettre les droits d'execuction sur les fichier weather.sh et weather.xslt
chmod 755 ~/scripts/weather.sh chmod 755 ~/scripts/weather.xslt
Voila normalement ça devrait marcher...
Variante météo : en français et avec icônes
- télécharger et installer cette police (indispensable pour avoir les icônes météo)
- installer le paquet xsltproc (c'est léger)
À rajouter à votre fichier conky :
${color #33FF33}${execi 120 ~/.conky/meteo.sh FRXX0071}Météo à ${execi 120 ~/.conky/meteo2.sh "Ville"}
${color}Aujourd'hui : ${execi 120 ~/.conky/meteo2.sh "Température aujourd'hui"} ${font weather:size=40}${voffset -18}${execi 120 ~/.conky/meteo2.sh "Conditions aujourd'hui"}${font}${voffset -11}
Vent : ${execi 120 ~/.conky/meteo2.sh "Vent aujourd'hui"}
Lever du soleil : ${execi 120 ~/.conky/meteo2.sh "Lever du soleil"}
Coucher du soleil : ${execi 120 ~/.conky/meteo2.sh "Coucher du soleil"}
Demain : ${execi 120 ~/.conky/meteo2.sh "Température demain"} ${font weather:size=32}${voffset -10}${execi 120 ~/.conky/meteo2.sh "Conditions demain"}${font}
- en remplaçant FRXX0071 par le code de votre ville (cf. paragraphe plus haut)
- en adaptant les espaces, les tailles de police et les décalages (voffset) pour que la disposition vous plaise
Fichier ~/.conky/meteo.sh (à rendre exécutable) :
#!/bin/bash # Répertoire de ce script et du XSLT RUNDIR=~/.conky # Emplacement du XSLT XSLT=$RUNDIR/meteo.xslt # Fichier de destination des informations DESTFILE=/tmp/conky_meteo.txt # Emplacement de xsltproc XSLTCMD=/usr/bin/xsltproc # Traitement URL="http://xoap.weather.com/weather/local/$1?cc=*&unit=m&dayf=2" w3m -dump $URL | $XSLTCMD $XSLT - > $DESTFILE
Fichier ~/.conky/meteo2.sh (à rendre exécutable) :
#!/bin/bash
# Fichier où sont stockées les informations
SRCFILE=/tmp/conky_meteo.txt
# Traitement
RESULTAT=$(grep "$1" $SRCFILE | awk -F " : " '{print $2}')
# Transformation de la condition en lettre qui deviendra une icône
if echo "$1" | grep -i -q 'condition'; then
if echo "$RESULTAT" | grep -i -q 'partly cloudy'; then
RESULTAT='c'
elif echo "$RESULTAT" | grep -i -q 'fair'; then
RESULTAT='b'
elif echo "$RESULTAT" | grep -i -q 'sunny'; then
RESULTAT='D'
elif echo "$RESULTAT" | grep -i -q 'cloudy'; then
RESULTAT='d'
elif echo "$RESULTAT" | grep -E -i -q 'storm|thunder'; then
RESULTAT='i'
elif echo "$RESULTAT" | grep -i -q 'snow'; then
RESULTAT='k'
elif echo "$RESULTAT" | grep -i -q 'rain'; then
RESULTAT='h'
elif echo "$RESULTAT" | grep -i -q 'shower'; then
RESULTAT='g'
fi
# Transformation des heures à l'américaine (5:50 AM) en heures à la française (5h50)
elif echo "$1" | grep -i -q 'soleil'; then
RESULTAT=$(echo "$RESULTAT" | awk '{print $1}' | sed -e s/:/h/g)
# Transformation des heures PM (9h38 PM) en heures françaises (21h38)
if echo "$1" | grep -i -q 'coucher'; then
HEURES=$(echo "$RESULTAT" | awk -F "h" '{print $1}')
MINUTES=$(echo "$RESULTAT" | awk -F "h" '{print $2}')
HEURES=$(($HEURES + 12))
RESULTAT="${HEURES}h${MINUTES}"
fi
# Transformation de "Ville, Pays" en "Ville"
elif echo "$1" | grep -i -q 'ville'; then
RESULTAT=$(echo "$RESULTAT" | awk -F "," '{print $1}')
fi
# Affichage du résultat
echo $RESULTAT
Fichier ~/.conky/meteo.xslt :
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" >
<xsl:output method="text" disable-output-escaping="yes"/>
<xsl:template match="weather">
<xsl:text>Ville : </xsl:text><xsl:value-of select="/weather/loc/dnam"/>
<xsl:apply-templates select="cc"/>
<xsl:apply-templates select="dayf/day[@d='1']"/>
<xsl:text>
Lever du soleil : </xsl:text><xsl:value-of select="/weather/loc/sunr"/>
<xsl:text>
Coucher du soleil : </xsl:text><xsl:value-of select="/weather/loc/suns"/>
</xsl:template>
<xsl:template match="cc">
<xsl:text>
Température aujourd'hui : </xsl:text><xsl:value-of select="tmp"/>°<xsl:value-of select="/weather/head/ut"/>
<xsl:if test="tmp != flik">
<xsl:text> (</xsl:text>
<xsl:value-of select="flik"/>°<xsl:value-of select="/weather/head/ut"/>
<xsl:text> ressenti)</xsl:text>
</xsl:if>
<xsl:text>
Conditions aujourd'hui : </xsl:text><xsl:value-of select="t"/>
<xsl:text>
Vent aujourd'hui : </xsl:text>
<xsl:choose>
<xsl:when test="wind/s = 'calm'"><xsl:text>0</xsl:text></xsl:when>
<xsl:otherwise><xsl:value-of select="wind/s"/></xsl:otherwise>
</xsl:choose>
<xsl:text> </xsl:text>
<xsl:value-of select="/weather/head/us"/>
</xsl:template>
<xsl:template match="dayf/day[@d='1']">
<xsl:text>
Température demain : de </xsl:text><xsl:value-of select="low"/>°<xsl:value-of select="/weather/head/ut"/>
<xsl:text> à </xsl:text><xsl:value-of select="hi"/>°<xsl:value-of select="/weather/head/ut"/>
<xsl:text>
Conditions demain : </xsl:text><xsl:value-of select="part[@p='d']/t"/>
</xsl:template>
</xsl:stylesheet>
Progression des téléchargements de aMule
Si vous désirez voir sur votre Conky, les progressions des téléchargements de aMule, voici la marche a suivre.
Les packages
nécessaire : Installez les paquet amule amule-utils
facultatif : Installez les paquet amule-daemon amule-utils-gui (Pour que aMule s'exécute automatiquement en service de fond automatiquement (amuled))
Configuration
Contrôler aMule à distance
Depuis amule, aller dans les Préférences → Contrôle à distance → Paramètre externes
- Cocher "Accepter les connexions externes"
- Entré un mot de passe
- Choisiser un port TCP
- Redémarrer aMule
Configurer amulecmd
taper la commande :
amulecmd -h hostname -p ECport -P ECpassword -w
hostname = 127.0.0.1 si le amule est sur votre pc. (si non il faut entré l'ip du pc sur le quel amuled est exécuté)
ECport = port que vous avez entre à l'étape ci-dessus
ECpassword = port que vous avez entré à l'étape ci-dessus
aMuled (pour ce qui on choisi d'installer les packets facultatif)
- Il sera nécessaire d'ajouter un utilisateur à la configuration du daemon (éviter l'utilisation de root pour des questions de sécurité) : /etc/default/amule-daemon mettre à jour : AMULED_USER="votre_user"
- Redémarrer l'ordinateur.
- Pour accéder à l'interface graphique de aMule, lancer : Application → Internet → aMuleGUI
Script conky
Donc normalement si tout c'est bien passer, si vous exécuter la commande : [code]amulecmd -c "show dl"[/code] Un résultat devrais s'afficher, si c'est pas le cas, c'est soit que vous avez oublié de lancer amule (ou pas redémarré votre ordinateur pour les personnes qui on choisi d'installer aMuled) soit qu'il y a un point que vous avez mal effectué...
~/conky/filtre.awk :
/^ > [^\t]/ {
dejaEcrit = 0;
for (i=3;i<=NF&&dejaEcrit<20;i++) {
printf("%s", (length($i) > 20-dejaEcrit) ? substr($i,1,23-dejaEcrit)"..." : $i);
dejaEcrit += length($i)
}
printf("\t");
next;
}
/^ > \t/ {
printf("%s", (length($2) < 7) ? "0"substr($2,2,3) : substr($2,2,4));
}
/^ > \t.*\/s/ {
printf("\t%s", $(NF-1)$(NF));
}
/^ > / {
printf("\n");
}
~/conky/amulecmd_perso.sh :
#!/bin/bash if [ "`ps -ef |grep 'amule' |grep -v grep`" != "" ]; then amulecmd -c "$1" fi
Dans conky (si vous n'utiliser pas amuled, remplacer le {if_running amuled} par {if_running amule}) :
color1 d51621 # ecriture active
color0 d4d4d4 # ecriture pasive
${color2}${stippled_hr}
${color0}${font Webdings:style=Regular:pixelsyze=8}i${font}aMule ${if_running amuled}(${color3}${texeci 5 ~/conky/amulecmd_perso.sh status | awk '/ > Download:/ { print $3$4}'}${color0} / ${color1}${texeci 5 ~/conky/amulecmd_perso.sh status | awk '/ > Upload:/ { print $3$4}'}${color0})${execi 5 ~/conky/amulecmd_perso.sh "show dl" | awk -f ~/conky/filtre.awk | sort -k 2 -r > ~/conky/tmp}
${color0}${if_empty ${exec awk 'NR==1{ print $1 }' ~/conky/tmp}}${else}${texeci 5 awk 'NR==1{ print $1 }' ~/conky/tmp} ${if_empty ${exec awk 'NR==1{ print $3 }' ~/conky/tmp}}${else}(${color3}${texeci 5 awk 'NR==1{ print $3 }' ~/conky/tmp}${color0})${endif}${color3}${alignr 90}${execibar 5 awk 'NR==1{ print $2 }' ~/conky/tmp}${endif}
${color0}${if_empty ${exec awk 'NR==2{ print $1 }' ~/conky/tmp}}${else}${texeci 5 awk 'NR==2{ print $1 }' ~/conky/tmp} ${if_empty ${exec awk 'NR==2{ print $3 }' ~/conky/tmp}}${else}(${color3}${texeci 5 awk 'NR==2{ print $3 }' ~/conky/tmp}${color0})${endif}${color3}${alignr 90}${execibar 5 awk 'NR==2{ print $2 }' ~/conky/tmp}${endif}
${color0}${if_empty ${exec awk 'NR==3{ print $1 }' ~/conky/tmp}}${else}${texeci 5 awk 'NR==3{ print $1 }' ~/conky/tmp} ${if_empty ${exec awk 'NR==3{ print $3 }' ~/conky/tmp}}${else}(${color3}${texeci 5 awk 'NR==3{ print $3 }' ~/conky/tmp}${color0})${endif}${color3}${alignr 90}${execibar 5 awk 'NR==3{ print $2 }' ~/conky/tmp}${endif}
${color0}${if_empty ${exec awk 'NR==4{ print $1 }' ~/conky/tmp}}${else}${texeci 5 awk 'NR==4{ print $1 }' ~/conky/tmp} ${if_empty ${exec awk 'NR==4{ print $3 }' ~/conky/tmp}}${else}(${color3}${texeci 5 awk 'NR==4{ print $3 }' ~/conky/tmp}${color0})${endif}${color3}${alignr 90}${execibar 5 awk 'NR==4{ print $2 }' ~/conky/tmp}${endif}
${color0}${if_empty ${exec awk 'NR==5{ print $1 }' ~/conky/tmp}}${else}${texeci 5 awk 'NR==5{ print $1 }' ~/conky/tmp} ${if_empty ${exec awk 'NR==5{ print $3 }' ~/conky/tmp}}${else}(${color3}${texeci 5 awk 'NR==5{ print $3 }' ~/conky/tmp}${color0})${endif}${color3}${alignr 90}${execibar 5 awk 'NR==5{ print $2 }' ~/conky/tmp}${endif}
${color0}${if_empty ${exec awk 'NR==6{ print $1 }' ~/conky/tmp}}${else}${texeci 5 awk 'NR==6{ print $1 }' ~/conky/tmp} ${if_empty ${exec awk 'NR==6{ print $3 }' ~/conky/tmp}}${else}(${color3}${texeci 5 awk 'NR==6{ print $3 }' ~/conky/tmp}${color0})${endif}${color3}${alignr 90}${execibar 5 awk 'NR==6{ print $2 }' ~/conky/tmp}${endif}
${color0}${if_empty ${exec awk 'NR==7{ print $1 }' ~/conky/tmp}}${else}${texeci 5 awk 'NR==7{ print $1 }' ~/conky/tmp} ${if_empty ${exec awk 'NR==7{ print $3 }' ~/conky/tmp}}${else}(${color3}${texeci 5 awk 'NR==7{ print $3 }' ~/conky/tmp}${color0})${endif}${color3}${alignr 90}${execibar 5 awk 'NR==7{ print $2 }' ~/conky/tmp}${endif}
${color0}${if_empty ${exec awk 'NR==8{ print $1 }' ~/conky/tmp}}${else}${texeci 5 awk 'NR==8{ print $1 }' ~/conky/tmp} ${if_empty ${exec awk 'NR==8{ print $3 }' ~/conky/tmp}}${else}(${color3}${texeci 5 awk 'NR==8{ print $3 }' ~/conky/tmp}${color0})${endif}${color3}${alignr 90}${execibar 5 awk 'NR==8{ print $2 }' ~/conky/tmp}${endif}
${color0}${if_empty ${exec awk 'NR==9{ print $1 }' ~/conky/tmp}}${else}${texeci 5 awk 'NR==9{ print $1 }' ~/conky/tmp} ${if_empty ${exec awk 'NR==9{ print $3 }' ~/conky/tmp}}${else}(${color3}${texeci 5 awk 'NR==9{ print $3 }' ~/conky/tmp}${color0})${endif}${color3}${alignr 90}${execibar 5 awk 'NR==9{ print $2 }' ~/conky/tmp}${endif}
${color0}${if_empty ${exec awk 'NR==10{ print $1 }' ~/conky/tmp}}${else}${texeci 5 awk 'NR==10{ print $1 }' ~/conky/tmp} ${if_empty ${exec awk 'NR==10{ print $3 }' ~/conky/tmp}}${else}(${color3}${texeci 5 awk 'NR==10{ print $3 }' ~/conky/tmp}${color0})${endif}${color3}${alignr 90}${execibar 5 awk 'NR==10{ print $2 }' ~/conky/tmp}${endif}
${color0}${if_empty ${exec awk 'NR==11{ print $1 }' ~/conky/tmp}}${else}${texeci 5 awk 'NR==11{ print $1 }' ~/conky/tmp} ${if_empty ${exec awk 'NR==11{ print $3 }' ~/conky/tmp}}${else}(${color3}${texeci 5 awk 'NR==11{ print $3 }' ~/conky/tmp}${color0})${endif}${color3}${alignr 90}${execibar 5 awk 'NR==11{ print $2 }' ~/conky/tmp}${endif}
${color0}${if_empty ${exec awk 'NR==12{ print $1 }' ~/conky/tmp}}${else}${texeci 5 awk 'NR==12{ print $1 }' ~/conky/tmp} ${if_empty ${exec awk 'NR==12{ print $3 }' ~/conky/tmp}}${else}(${color3}${texeci 5 awk 'NR==12{ print $3 }' ~/conky/tmp}${color0})${endif}${color3}${alignr 90}${execibar 5 awk 'NR==12{ print $2 }' ~/conky/tmp}${endif}
${color0}${if_empty ${exec awk 'NR==13{ print $1 }' ~/conky/tmp}}${else}${texeci 5 awk 'NR==13{ print $1 }' ~/conky/tmp} ${if_empty ${exec awk 'NR==13{ print $3 }' ~/conky/tmp}}${else}(${color3}${texeci 5 awk 'NR==13{ print $3 }' ~/conky/tmp}${color0})${endif}${color3}${alignr 90}${execibar 5 awk 'NR==13{ print $2 }' ~/conky/tmp}${endif}
${color0}${if_empty ${exec awk 'NR==14{ print $1 }' ~/conky/tmp}}${else}${texeci 5 awk 'NR==14{ print $1 }' ~/conky/tmp} ${if_empty ${exec awk 'NR==14{ print $3 }' ~/conky/tmp}}${else}(${color3}${texeci 5 awk 'NR==14{ print $3 }' ~/conky/tmp}${color0})${endif}${color3}${alignr 90}${execibar 5 awk 'NR==14{ print $2 }' ~/conky/tmp}${endif}
${color0}${if_empty ${exec awk 'NR==15{ print $1 }' ~/conky/tmp}}${else}${texeci 5 awk 'NR==15{ print $1 }' ~/conky/tmp} ${if_empty ${exec awk 'NR==15{ print $3 }' ~/conky/tmp}}${else}(${color3}${texeci 5 awk 'NR==15{ print $3 }' ~/conky/tmp}${color0})${endif}${color3}${alignr 90}${execibar 5 awk 'NR==15{ print $2 }' ~/conky/tmp}${endif}
$else${color1}Arrêté
$endif
Liens
Tutoriel : http://www.pcinpact.com/forum/index.php?showtopic=97542
Doc officielle (très bien faite, mais en anglais... ) :
http://conky.sourceforge.net/variables.html
http://conky.sourceforge.net/config_settings.html
Pour voir quelques jolis bureaux postés par les utilisateurs et intégrant Conky, découvrir de nouveaux scripts et poser vos questions, vous pouvez également vous rendre sur le forum ubuntu-fr consacré :
http://forum.ubuntu-fr.org/viewtopic.php?id=99471

