Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1526 Le 26/06/2008, à 22:13

LoViZ

Re : Conky : Postez vos conkyrc ou certaines parties intéressantes

@ Herberts et titimoi

Merci pour les conseils ca fonctionne maintenant pour le lancement de conky, j'avais planté un truc dans le gestionnaire de sessions, j'avais mis une commande qui allai pas.

Et du coup pour le code ca donne:

#!/bin/bash

sleep 15
conky -c /home/User/.conkyrc  &
exit

User étant à adapter en fonction du nom du répertoire.

Merci a tous.

Je bosse sur un conky un peu plus complet et je vous reposte ca dans quelques semaines.
wink


Choisir c'est renoncer et renoncer c'est grandir...

Hors ligne

#1527 Le 26/06/2008, à 22:25

titimoi

Re : Conky : Postez vos conkyrc ou certaines parties intéressantes

LoViZ a écrit :

@ Herberts et titimoi

Merci a tous.

Je bosse sur un conky un peu plus complet et je vous reposte ca dans quelques semaines.
wink

ravi d'avoir pu t'aider wink

Hors ligne

#1528 Le 27/06/2008, à 13:02

StyphaX13

Re : Conky : Postez vos conkyrc ou certaines parties intéressantes

Aller hop, mine wink
http://up.pix-heb.org/Capture-Bureau.jpg

Et le conkyrc smile

double_buffer yes
own_window_transparent yes
own_window yes
own_window_type override
background yes
draw_shades no
draw_borders yes
border_margin 15
#Position à l'écran
alignment bottom_right
gap_x 28
use_xft yes
override_utf8_locale yes
update_interval 1.5
TEXT
${font Sans:style=Bold:pixelsize=9}${color FFFFFF}MACHINE ${hr 2}

${alignc}Ubuntu 8.04 Hardy Heron LTS 32 Bits
${alignc}$sysname $kernel $machine
${alignc} Uptime: $uptime
${alignc} ${time %A %d %B %Y} - ${time %H:%M:%S}

${color FFFFFF}RESSOURCES CPU ${hr 2}

${alignc}AMD Athlon(tm) 64 X2 Dual Core Processor 

Core 0 : ${freq_g cpu0}Ghz ${cpu cpu0}% $alignr Core 1 : ${freq_g cpu1}Ghz ${cpu cpu1}%
${cpubar cpu0 5,150}${alignr} ${cpubar cpu1 5,150} 
${cpugraph cpu0 25,150 FFFFFF FFFFFF}  ${alignr}${cpugraph cpu1 25,150 FFFFFF FFFFFF}
Core0 Temp: ${exec expr `cat /sys/class/hwmon/hwmon0/device/temp1_input` / 1000} °C  ${alignr} Core1 Temp: ${exec expr `cat /sys/class/hwmon/hwmon0/device/temp3_input` / 1000} °C

Charge globale CPUs   ${alignc}${freq_g} GHz  $cpu% ${alignr} 
${cpubar}
Moyenne CPU: ${loadavg} ${alignr}Processus: $processes Actifs: $running_processes


${color FFFFFF}RESSOURCES MEMOIRE ${hr 2}

RAM:$memperc% ${alignr} $mem / $memmax
${membar} 
SWAP: ${alignr} $swap / ${swapmax}
${swapbar}


RESEAU / INTERNET ${hr 2}
IP LAN: ${addr eth0} ${alignr}IP INTERNET: ${execi 3600 wget -O - http://ip.tupeux.com | tail}

${downspeedgraph eth0 25,150 FFFFFF FFFFFF} ${alignr}${upspeedgraph eth0 25,150 FFFFFF FFFFFF}
Down: ${downspeed eth0}k/s ${alignr}Up: ${upspeed eth0}k/s
Total reçu : ${totaldown eth0}${alignr}Total envoyé : ${totalup eth0}


MEDIAS DE STOCKAGE ${hr 2}

${color #FFFFFF}HDD ( /root ): ${color #FFFFFF}${fs_used /} / ${fs_size /}${alignr}${fs_used_perc /}%
${color #FFFFFF}${fs_bar /}
${color #FFFFFF}HDD EXTERNE ( /media/disk ): ${if_mounted /media/disk}${color #FFFFFF}${fs_used /media/disk} / ${fs_size /media/disk}${alignr}${fs_used_perc /media/disk}%$else ${alignr}disque non-monté$endif
${color #FFFFFF}${fs_bar /media/disk}
${color #FFFFFF}CLE USB ( /media/cle-usb ): ${if_mounted /media/cle-usb}${color #FFFFFF}${fs_used /media/cle-usb} / ${fs_size /media/cle-usb}${alignr}${fs_used_perc /media/cle-usb}%$else ${alignr}clé USB non-montée $endif
${color #FFFFFF}${fs_bar /media/cle-usb}

Serveur LAMP : Lubuntu 8.04 | AMD AthlonXP 1800+ | 1024Mo PC133
PC taff : Win. 7 sur HP DV5 | Core 2 Duo P8400 | 3Go DDR2 | Nvidia GeForce 9600M GT
PC jeu : Win. 7 | INTEL Core2 Quad Q6600 @3.2Ghz | 3Go DDR2 @890 | ATI Radeon HD4890 1024mo
eee_PC : Win. 7 | ASUS 1008HA

Hors ligne

#1529 Le 29/06/2008, à 17:51

tof54

Re : Conky : Postez vos conkyrc ou certaines parties intéressantes

Je suis en train de me poser une colle que vous pourriez peut-être répondre, enfin c'est peut-être une mauvaise manipulation sa ma part dès le départ :
conky est transparent mais si on essaye de sélectionner au dessus on se rend bien compte que c'est un élément à part du bureaux, c'est pareil pour vous ?
j'ai tenté de parer à ce problème avec conpiz mais rien n'y fait c'est toujour le même résultat, quelqu'un a-t-il la solution ? (je tenté dans règles des fenêtres par exemple) merci d'avance

Hors ligne

#1530 Le 29/06/2008, à 23:28

StyphaX13

Re : Conky : Postez vos conkyrc ou certaines parties intéressantes

Apparemment c'est normal smile
C'est pas transparent, ça prends un cliché de ton wall dessous et le fou sur sa fenêtre....
Met donc tes icônes de façon à pas être géné

C'est parfait sinon selon les cas, tu caches un dossier avec tes photos olé olé dedans et personne(ta copine? mdr) le verras... mdr Pour l'ouvrir? Sélection et touche entrer.. lol tongue


Serveur LAMP : Lubuntu 8.04 | AMD AthlonXP 1800+ | 1024Mo PC133
PC taff : Win. 7 sur HP DV5 | Core 2 Duo P8400 | 3Go DDR2 | Nvidia GeForce 9600M GT
PC jeu : Win. 7 | INTEL Core2 Quad Q6600 @3.2Ghz | 3Go DDR2 @890 | ATI Radeon HD4890 1024mo
eee_PC : Win. 7 | ASUS 1008HA

Hors ligne

#1531 Le 30/06/2008, à 06:30

cam

Re : Conky : Postez vos conkyrc ou certaines parties intéressantes

StyphaX13 a écrit :

Apparemment c'est normal smile
C'est pas transparent, ça prends un cliché de ton wall dessous et le fou sur sa fenêtre....
Met donc tes icônes de façon à pas être géné

C'est parfait sinon selon les cas, tu caches un dossier avec tes photos olé olé dedans et personne(ta copine? mdr) le verras... mdr Pour l'ouvrir? Sélection et touche entrer.. lol tongue

lol:lol::lol:

Entre nous, le dossier sera parfaitement visible à partir d'un navigateur de fichiers! Pour qu'il ne soit pas visible faut le passer en dossier caché si vraiment t'as besoin de cacher quelque chose. wink

Dernière modification par cam (Le 30/06/2008, à 11:19)

Hors ligne

#1532 Le 30/06/2008, à 08:52

tof54

Re : Conky : Postez vos conkyrc ou certaines parties intéressantes

mdr ok je te remercie

Hors ligne

#1533 Le 01/07/2008, à 08:08

Ch3mist

Re : Conky : Postez vos conkyrc ou certaines parties intéressantes

Bonjour tout le monde,j'ai un probléme avec la météo pour mon conky :
dans la doc http://doc.ubuntu-fr.org/conky partie météo il est expliqué de créer 2 fichiers :
weather.sh et weather.xslt
En dessous du 2eme script (weather.xslt) il est dit de nommer ce meme fichier .weather.xslt
Alors?avec un "." ou sans "." roll

Puis ensuite coller sa ds le .conkyrc :
$color ${execi 1800 /home/[votre pseudo]/scripts/weather/.weather.sh FRXX0100}

C'est quoi ce fichier weather tout d'un coup?puis .weather.sh maintenant?
Je comprend pas la hmm


http://target0.be/madchat/esprit/pactedesgnous_divx.avi
Jabber : ch3mist@jabber.ubuntu-fr.org

Hors ligne

#1534 Le 01/07/2008, à 09:02

terato

Re : Conky : Postez vos conkyrc ou certaines parties intéressantes

Bonjour à toi, je te conseille tout d'abord d'utiliser un autre scripts permettant d'affiché la meteo.

Tout d'abord telecharges le conkyForecast.py :

http://www.megaupload.com/fr/?d=1ZP49S9X

Assigne lui le droit d'execution.

Ensuite insere ceci dans ton conkyrc et remplace par le numéro correspond a ta ville.


# Weather #

${execi 3600 python ~/scripts/conkyForecast.py --location=FRXX0055 --datatype=CN --refetch}

Jour: ${execi 3600 python ~/scripts/conkyForecast.py --location=FRXX0055 --datatype=DW}
Conditions: ${execi 3600 python ~/scripts/conkyForecast.py --location=FRXX0055 --datatype=CC}
${font Weather:size=36}${execi 3600 python ~/scripts/conkyForecast.py --location=FRXX0055 --datatype=WF}${font}
Température: ${execi 3600 python ~/scripts/conkyForecast.py --location=FRXX0055 --datatype=HT -u}C
Vent: ${execi 3600 python ~/scripts/conkyForecast.py --location=FRXX0055 --datatype=WS -u} Km/h
Direction vent: ${execi 3600 python ~/scripts/conkyForecast.py --location=FRXX0055 --datatype=WD}
Humidité: ${execi 3600 python ~/scripts/conkyForecast.py --location=FRXX0055 --datatype=HM}

Voila tu possède la meteo maintenant !!


Mon bureau v1//v2//v3//v4

Hors ligne

#1535 Le 01/07/2008, à 09:09

Ch3mist

Re : Conky : Postez vos conkyrc ou certaines parties intéressantes

Ok t'assures! merci cool


http://target0.be/madchat/esprit/pactedesgnous_divx.avi
Jabber : ch3mist@jabber.ubuntu-fr.org

Hors ligne

#1536 Le 01/07/2008, à 11:52

StyphaX13

Re : Conky : Postez vos conkyrc ou certaines parties intéressantes

cam a écrit :
StyphaX13 a écrit :

Apparemment c'est normal smile
C'est pas transparent, ça prends un cliché de ton wall dessous et le fou sur sa fenêtre....
Met donc tes icônes de façon à pas être géné

C'est parfait sinon selon les cas, tu caches un dossier avec tes photos olé olé dedans et personne(ta copine? mdr) le verras... mdr Pour l'ouvrir? Sélection et touche entrer.. lol tongue

lol:lol::lol:

Entre nous, le dossier sera parfaitement visible à partir d'un navigateur de fichiers! Pour qu'il ne soit pas visible faut le passer en dossier caché si vraiment t'as besoin de cacher quelque chose. wink

Ta copine sais retrouver un dossier via le navigateur?
Moi c'est tout juste si elel sais allumer MSN et tapper au clavier....mdr smile

Et celle qui s'y connais, faudrai qu'elle sache que le bureau est en fait un dossier...ce que les gens ne savent pas en général tongue (et pis pourquoi elle se douterait qu'un truc est caché derrière conky? tongue)


Serveur LAMP : Lubuntu 8.04 | AMD AthlonXP 1800+ | 1024Mo PC133
PC taff : Win. 7 sur HP DV5 | Core 2 Duo P8400 | 3Go DDR2 | Nvidia GeForce 9600M GT
PC jeu : Win. 7 | INTEL Core2 Quad Q6600 @3.2Ghz | 3Go DDR2 @890 | ATI Radeon HD4890 1024mo
eee_PC : Win. 7 | ASUS 1008HA

Hors ligne

#1537 Le 01/07/2008, à 13:11

kokim

Re : Conky : Postez vos conkyrc ou certaines parties intéressantes

Tout d'abord telecharges le conkyForecast.py :

http://www.megaupload.com/fr/?d=1ZP49S9X

Que faut il modifier pour avoir la météo pour plusieurs jours ?  roll

        Merci

Hors ligne

#1538 Le 01/07/2008, à 15:16

cam

Re : Conky : Postez vos conkyrc ou certaines parties intéressantes

StyphaX13 a écrit :
cam a écrit :
StyphaX13 a écrit :

Apparemment c'est normal smile
C'est pas transparent, ça prends un cliché de ton wall dessous et le fou sur sa fenêtre....
Met donc tes icônes de façon à pas être géné

C'est parfait sinon selon les cas, tu caches un dossier avec tes photos olé olé dedans et personne(ta copine? mdr) le verras... mdr Pour l'ouvrir? Sélection et touche entrer.. lol tongue

lol:lol::lol:

Entre nous, le dossier sera parfaitement visible à partir d'un navigateur de fichiers! Pour qu'il ne soit pas visible faut le passer en dossier caché si vraiment t'as besoin de cacher quelque chose. wink

Ta copine sais retrouver un dossier via le navigateur?
Moi c'est tout juste si elel sais allumer MSN et tapper au clavier....mdr smile

Et celle qui s'y connais, faudrai qu'elle sache que le bureau est en fait un dossier...ce que les gens ne savent pas en général tongue (et pis pourquoi elle se douterait qu'un truc est caché derrière conky? tongue)

Je parlais pas uniquement de ta copine, ya des gens qui ont autre chose à cacher que des dossiers de photos de culs lol Mais bon un dossier cacher ça se retrouve aussi de toute façon. Ya encore la possibilité de crypter toute une partoche mais bon en lecture/écriture c'est pas top...

C'était juste pour rigoler quoi big_smile

Hors ligne

#1539 Le 01/07/2008, à 15:19

le Zouave

Re : Conky : Postez vos conkyrc ou certaines parties intéressantes

desmogone a écrit :

@fluo : J'ai trouvé une parade ... Au moins pour certaines infos !

En fait je peux lancer des scripts qui balancent un ssh vers mon serveur avec la commande qui va bien et qui me ramènent l'info ... Style ssh <addr_ip> df -m | grep home ...
Je n'aurai seulement pas accès aux graphiques, quoi ...

Desmogone, qui doit d'abord finir de configurer le bastringue avant de le gérer ! wink

@Desmogone
Pourquoi n'installerai tu pas  conky sur ton serveur puis l'utiliserai a distance avec ssh et le X-forwarding


Consulte mon post #551 de ce topic j'aborde le sujet et je l'ai meme utilisé ... vois les posts suivants ....

De toute lles Manières vu que je remet tout en place sur mes Machine je suis dans les environs ....

edit: désolé j'ai été un peu vite dans ma lecture ... avec x-org sur ton server ca devrait aller comme cité un peu plus tot !

Dernière modification par le Zouave (Le 01/07/2008, à 15:27)


MachineFixe: P4 2.93Ghz ; 1Go DDR2 ; ATI radeon X300 128Mo ; 200Go Maxtor Sata ; Sound Blaster Live ; Clavier qui Craque ...
MachineUltraportable: Acer Aspire One 962 grammes!
Follow me ...

Hors ligne

#1540 Le 01/07/2008, à 15:34

terato

Re : Conky : Postez vos conkyrc ou certaines parties intéressantes

Ch3mist a écrit :

Ok t'assures! merci cool

De rien wink

kokim a écrit :

Tout d'abord telecharges le conkyForecast.py :

http://www.megaupload.com/fr/?d=1ZP49S9X

Que faut il modifier pour avoir la météo pour plusieurs jours ?  roll

        Merci

Regarde page 59, tu trouvera peu etre ce que tu cherches.


Mon bureau v1//v2//v3//v4

Hors ligne

#1541 Le 01/07/2008, à 22:01

kokim

Re : Conky : Postez vos conkyrc ou certaines parties intéressantes

@ terato merci

n'étant toujours pas 'élu ADSL' je voudrais maintenant, que ma météo ne s'affiche que quand je connecte mon pauvre modem
quand je démarre mon PC, ma météo affiche des phrases désobligeantes, comme quoi il n'y a pas de connexion internet...

une histoire d'if, je suppose...si quelqu'un a une idée

Dernière modification par kokim (Le 01/07/2008, à 22:03)

Hors ligne

#1542 Le 01/07/2008, à 22:27

ferreol

Re : Conky : Postez vos conkyrc ou certaines parties intéressantes

Originaire de ce post je vais poster mon conky quand même  cela fait un baille

871b598c218f81e4d8ae5295a35cc.jpg

Code:
use_xft yes
xftfont DejaVu Sans Mono:size=10
#xftalpha 0.8
update_interval 2.5
total_run_times 0
own_window yes
#own_window_type override #marche pas sous openbox
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
own_window_transparent yes
double_buffer yes
no_buffers yes
background no 
own_window_colour hotpink
#contours des bargraph?
draw_graph_borders no

#largeur maximale de la fenetre  # valeurs identiques pour eviter les bugs
maximum_width 300
#largeur minimale de la fenetre  # du texte de raffraichissement
minimum_size 300
draw_shades no
draw_outline no
draw_borders no
stippled_borders 5
border_margin 0
border_width 0
default_color green
color2 red
color3 white
color4 BDDD32
default_shade_color white
default_outline_color white
alignment top_left
gap_x 45
gap_y 2
uppercase no
cpu_avg_samples 4
net_avg_samples 4
#override_utf8_locale yes
use_spacer no
out_to_console no



TEXT

${font}${color3}playing : ${color}$mpd_title 
${color3}Artist: ${color}$mpd_artist
${color3}Album: ${color}$mpd_album

$color3$mpd_status $color${alignc}${mpd_elapsed} / ${mpd_length}$alignr$mpd_percent%
$color4$mpd_bar
$color3${alignc}Vol : $color${mpd_vol}% - ${color3}Random $color$mpd_random - ${color3}Repeat $color$mpd_repeat

${color4}${font StyleBats:size=30}m    ${color}${font} CPU: ${color3}${cpu cpu1}%  ${freq_g cpu} GHz

${color4}${font StyleBats:size=30}d    ${color}${font} Mem:${color3}$mem  $membar

${color4}${font StyleBats:size=30}5    ${color}${font} Down:${color3}${downspeed ath0} Ko/s   ${color}${alignr}Up: ${color3}${upspeed ath0} Ko/s  ${alignc}${color}Local 

${color4}${font StyleBats:size=30}x    ${color}${font} IP : ${color3}${addr ath0}$alignr${color}

${color4}${font StyleBats:size=30}j    ${font} ${color3}${fs_used /}/${fs_size /}   ${fs_bar}

${color4}${font StyleBats:size=30}o    ${color}${font} Uptime: ${color3}${alignr}${uptime_short}

${color4}${font StyleBats:size=30}r    ${font}${color3}$kernel $machine

Dernière modification par ferreol (Le 01/07/2008, à 22:28)

Hors ligne

#1543 Le 02/07/2008, à 04:41

Antoine974

Re : Conky : Postez vos conkyrc ou certaines parties intéressantes

@ferreol: tres sympa j'aime beaucoup simple et efficace


mon blog : www.poufctout.go1.cc
Home cinema : Nettop ION atom 330 sous XBMC
Samsung N510 ubuntu 9.10

Hors ligne

#1544 Le 02/07/2008, à 10:28

terato

Re : Conky : Postez vos conkyrc ou certaines parties intéressantes

kokim a écrit :

@ terato merci

n'étant toujours pas 'élu ADSL' je voudrais maintenant, que ma météo ne s'affiche que quand je connecte mon pauvre modem
quand je démarre mon PC, ma météo affiche des phrases désobligeantes, comme quoi il n'y a pas de connexion internet...

une histoire d'if, je suppose...si quelqu'un a une idée

Tu peu créer un scripts permettant de démarrer ton conky 2min (ou autre) apres l'allumage de ton pc, ainsi ton modem aura le temps de se connecter !!

Je viens de t'en faire un:
Nomme le startconky.sh par exemple.

#!/bin/bash
killall conky
sleep 120
conky -c /home/<ton pseuso>/.conkyrc &

"sleep 120" correspond au temps en secondes ou ton conky va démarer apres démarrage de ubuntu.
Tu peux donc mettre "sleep 240" pour 4 min etc...

Tu lui assignes les droits d'executions.

Puis dans  le menu /systeme/préférence/session/ tu va modifié l'ouverture au démarrage de conky en lui assignant le scripts créér précedement.

Exemple:

Nom: conky
Commande: ~/scripts/startconky.sh
Commentaire: démarer conky


voili voilou !!


Mon bureau v1//v2//v3//v4

Hors ligne

#1545 Le 02/07/2008, à 16:48

ferreol

Re : Conky : Postez vos conkyrc ou certaines parties intéressantes

Merci Antoine 974

J ai néanmoins un petit probleme sous KDE 4 J avais pas encore changé le wallpaper et maintenant conky n est pas sur un fond transparent mais toujours avec cet arriere plan par defaut sous KDE4

Quelqu'un aurait une solution .

Hors ligne

#1546 Le 02/07/2008, à 19:21

kokim

Re : Conky : Postez vos conkyrc ou certaines parties intéressantes

c'est sympa terato, mais c'est un peu plus compliqué. je ne connecte pas mon modem en permanence, je suis en bas débit avec un forfait 50 heures
il  faut un script qui  démarre mon conky météo quand je me connecte, mais je ne me connecte pas systématiquement au démarrage du PC, même 3 ou 4 mn aprés
il faut lier le démarrage de la météo à l'événement connexion...

Hors ligne

#1547 Le 02/07/2008, à 20:06

terato

Re : Conky : Postez vos conkyrc ou certaines parties intéressantes

@kokim: D'accord, désolé dans ce cas je ne sais pas...Maintenant c'est à nos geeks de se reveillés !!

Petit up de mon conky !!

J'avais envie d'avoir un bureau plus fonctionnel, donc j'ai relooké mon conky selon mes besoins !

626adf30d943f7706dfd4a767ce33tt.jpg
(clic sur image pour zoom)

---> Conkyrc

# Position sur l'écran
alignment top_right

# Nombre d'échantillons à prendre en compte pour le monitoring du CPU
cpu_avg_samples 5

# Afficher les contours
draw_outline no

# Afficher des bordures autour des graphes
draw_graph_borders no

# Couleur par défaut (texte et bordure)
default_color white
color1 FEC268

# Écart avec le bord gauche ou droit de l'écran
gap_x 10

# Écart avec le bord haut ou bas de l'écran
gap_y 100

# Soustraire les mémoires tampons de la mémoire utiliser
no_buffer no

# Taille minimale de la fenêtre
minimum_size 200 5

# Nombre d'échantillons pour faire la moyenne de l'utilisation réseau
net_avg_samples 5

# utiliser la pseudo-transparence 
own_window_transparent yes

# créer sa propre fenêtre
own_window yes

# Intervalle de rafraîchessement (en seconde)
update_interval 1

# Nombre total de rafraîchissement de Conky avant de quitter. 0 fait tourner Conky tout le temps.
total_run_times 0

# Utiliser Xft (polices lissées etc)
use_xft yes

# Police Xft à utiliser
xftfont Snap.se:size=8:bold

# Utiliser l'extension Xdbe 
double_buffer yes

# Bordure en pointillés (en pixel)
stippled_borders 1

# Si own_window est vrai, vous pouvez utiliser les 'conseils' du gestionnaire de fenêtres pour gérer l'affichage de Conky
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager

font Snap.se:size=8:bold
top_cpu_separate yes

TEXT
${font StyleBats:size=20}A ${font}Core0: ${cpu cpu1}% / Core1: ${cpu cpu2}%

${font StyleBats:size=20}P ${font}RAM: $memperc%

${font StyleBats:size=20}J ${font}Swap: $swapperc%




${font StyleBats:size=20}H ${font}Wifi: ${wireless_link_qual_perc wlan0}%

${font StyleBats:size=20}5 ${font}Up: ${upspeed wlan0} k/s / Down: ${downspeed wlan0} k/s




${font StyleBats:size=20}G ${font}Linux: ${fs_used_perc /}% (${fs_free /})

${font StyleBats:size=20}G ${font}Seagate: ${if_mounted /media/DDJEREM}${fs_used_perc /media/DDJEREM}%  (${fs_free /media/DDJEREM}) 

${else} Déconnecter $endif




${font weather:size=25}y ${font}Core0: ${exec expr `cat /sys/class/hwmon/hwmon0/device/temp1_input` / 1000} °C

${font weather:size=25}y ${font}Core1: ${exec expr `cat /sys/class/hwmon/hwmon1/device/temp1_input` / 1000} °C

${font weather:size=25}y ${font}GPU: ${exec nvidia-settings -q gpucoretemp | grep '):' | awk '{print $4}'}°C

${font weather:size=25}y ${font}HDD System: ${hddtemp /dev/sda}




${font StyleBats:size=20}X ${font}Gmail: ${texeci 60 ~/scripts/conkygmail.sh

---> Conkyrcmeteo

# Position sur l'écran
alignment top_middle

# Nombre d'échantillons à prendre en compte pour le monitoring du CPU
cpu_avg_samples 5

# Afficher les contours
draw_outline no

# Afficher des bordures autour des graphes
draw_graph_borders no

# Couleur par défaut (texte et bordure)
default_color white
color1 FEC268

# Écart avec le bord gauche ou droit de l'écran
gap_x 10

# Écart avec le bord haut ou bas de l'écran
gap_y 230

# Soustraire les mémoires tampons de la mémoire utiliser
no_buffer no

# Taille minimale de la fenêtre
minimum_size 200 5

# Nombre d'échantillons pour faire la moyenne de l'utilisation réseau
net_avg_samples 5

# utiliser la pseudo-transparence 
own_window_transparent yes

# créer sa propre fenêtre
own_window yes

# Intervalle de rafraîchessement (en seconde)
update_interval 1

# Nombre total de rafraîchissement de Conky avant de quitter. 0 fait tourner Conky tout le temps.
total_run_times 0

# Utiliser Xft (polices lissées etc)
use_xft yes

# Police Xft à utiliser
xftfont Snap.se:size=10:bold

# Utiliser l'extension Xdbe 
double_buffer yes

# Bordure en pointillés (en pixel)
stippled_borders 1

# Si own_window est vrai, vous pouvez utiliser les 'conseils' du gestionnaire de fenêtres pour gérer l'affichage de Conky
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager

font Snap.se:size=10:bold
top_cpu_separate yes

TEXT
${execi 600 python /home/terato/scripts/conkyForecast.py --locale=fr --location=FRXX0055 --template=/home/terato/scripts/conkyActual.template}
${font weather:size=41}${execi 600 python /home/terato/scripts/conkyForecast.py --location=FRXX0055 --startday=1 --endday=3 --datatype=WF --spaces=2}$font
${execi 600 python /home/terato/scripts/conkyForecast.py --locale=fr --location=FRXX0055 --template=/home/terato/scripts/conky3Days.template}

---> Pour Gmail (conkygmail.sh)

#!/bin/bash

gmail_login=xxxxxx 
gmail_password=xxxxxx

dane="$(wget --secure-protocol=TLSv1 --timeout=3 -t 1 -q -O - \
https://${gmail_login}:${gmail_password}@mail.google.com/mail/feed/atom \
--no-check-certificate | grep 'fullcount' \
| sed -e 's/.*<fullcount>//;s/<\/fullcount>.*//' 2>/dev/null)"

if [ -z "$dane" ]; then
echo "Connection Error !"
else
echo "$dane non lus"
fi

---> Pour la meteo

- conkyForecast.py

#!/usr/bin/python
# -*- coding: utf-8 -*-
###############################################################################
# conkyForecast.py is a (not so) simple (anymore) python script to gather 
# details of the current weather for use in conky.
#
#  Author: Kaivalagi
# Created: 13/04/2008
# Modifications:
#	14/04/2008	Allow day ranges for forecast data
#	14/04/2008	Check for connectivity to xoap service
#	18/04/2008	Allow the setting of spaces for ranged output
#	18/04/2008	Allow Night and Day forecast output
#	18/04/2008	Support locale for condition code text "CC" option, awaiting spanish language translation
#	18/04/2008	Use pickling for class data rather than opening xml, this bypasses the need to interrogate cached data
#	19/04/2008	Added spanish condition text - Thanks Bruce M
#	19/04/2008	Added isnumeric check on all numeric output with units suffix
#	19/04/2008	Altered pickle file naming to include location code
#	19/04/2008	Added spanish week days conversion via locale
#	20/04/2008	Added decent command argument parser
#	20/04/2008	Added --shortweekday option, if given the day of week data type is shortened to 3 characters
#	21/04/2008	Fixed locale options for forecast output
#	21/04/2008	Added --template option to allow custom output using a single exec call :)
#	21/04/2008	Added --hideunits option to remove, for example, mph and C from output
#	23/04/2008	Removed --imperial option from template, this MUST be set as a standard option on the script call and not used in the template file. 
#	23/04/2008	Readded --imperial option to template, enabling metric or imperial values per datatype. Note when using templates command line option will not work.
#	23/04/2008	Added output notifying user if the location given is bad
#	24/04/2008	Added handling for no connectivity, will revert to cached data now (erroring if no cache exists). Tests by trying to open xoap.weather.com
#	24/04/2008	Fixed Celsius to fahrenheit conversion
#	06/05/2008	Updated url used after webservice was updated
#	09/05/2008	Consolidated current condition and forecast data fetch into one call
#	09/05/2008	Added Sunrise and sunset to datatypes, these are specific to both current conditions and forecast data
#	09/05/2008	Added moon phase, barometer reading and barometer description to datatypes, these are only specific to current conditions and so are N/A in forecasted output
#	09/05/2008	Added unit conversions for barometer from mb to inches (imperial)
#   09/05/2008  Updated spanish condition text - Thanks Bruce M
#   10/05/2008  Added french locale data - Thanks benpaka
#   12/05/2008  Added new BF (bearing font) datatype to provide an arrow character (use with Arrow.ttf font) instead of NSEW output from WD (wind direction)
#   12/05/2008  Updated WD output to be locale specific, currently supports default english and spanish - Thanks Bruce M
#	18/05/2008	Added new MF (moon font) datatype to provide a moon font character (characters incorrect and no dedicated font yet).
#	21/05/2008	For current conditions the --datatype=LT option now displays "feels like" temperature rather than the current temperature
#	28/05/2008	Arrows reported to be pointing in the wrong direction. Correction provided by jjgomera
#	03/06/2008	Updated MF function, added days #26, #27, #28 nad #29 to complete the cycle. Corrections provided by Bruce M/uboops/HippyRandall
#
# TODO:
# Consolidate pkl files into one file/class
# ??? Any more requirements out there?

import sys, os, socket, urllib2, datetime, time
from xml.dom import minidom
from stat import *
from optparse import OptionParser
import locale
import gettext
import pickle
from math import *

APP="conkyForecast.py"
DIR=os.path.dirname (__file__) + '/locale'
gettext.bindtextdomain(APP, DIR)
gettext.textdomain(APP)
_ = gettext.gettext

class CommandLineParser:

	parser = None

	def __init__(self):

		self.parser = OptionParser()
		self.parser.add_option("-l","--location", dest="location", default="UKXX0103", type="string", metavar="CODE", help=u"location code for weather data [default: %default],Use the following url to determine your location code by city name: http://xoap.weather.com/search/search?where=Norwich")
		self.parser.add_option("-d","--datatype",dest="datatype", default="HT", type="string", metavar="DATATYPE", help=u"[default: %default] The data type options are: DW (Day Of Week), WF (Weather Font Output), LT (Forecast:Low Temp,Current:Feels Like Temp), HT (Forecast:High Temp,Current:Current Temp), CC (Current Conditions), CT (Conditions Text), PC (Precipitation Chance), HM (Humidity), WD (Wind Direction), WS (Wind Speed), WG (Wind Gusts), CN (City Name), SR (sunrise), SS (sunset), MP (moon phase), MF (moon font), BR (barometer reading), BD (barometer description). Not applicable at command line when using templates.")
		self.parser.add_option("-s","--startday",dest="startday", type="int", metavar="NUMBER", help=u"define the starting day number, if omitted current conditions are output. Not applicable at command line when using templates.")
		self.parser.add_option("-e","--endday",dest="endday", type="int", metavar="NUMBER", help=u"define the ending day number, if omitted only starting day data is output. Not applicable at command line when using templates.")
		self.parser.add_option("-S","--spaces",dest="spaces", type="int", default=1, metavar="NUMBER", help=u"[default: %default] Define the number of spaces between ranged output. Not applicable at command line when using templates.")
		self.parser.add_option("-t","--template",dest="template", type="string", metavar="FILE", help=u"define a template file to generate output in one call. A displayable item in the file is in the form {--datatype=HT --startday=1}. The following are possible options within each item: --datatype,--startday,--endday,--night,--shortweekday,--imperial,--hideunits,--spaces . Note that the short forms of the options are not currently supported! None of these options are applicable at command line when using templates.")
		self.parser.add_option("-L","--locale",dest="locale", type="string", help=u"override the system locale for language output (en=english, es=spanish, fr=french, more to come)")
		self.parser.add_option("-i","--imperial",dest="imperial", default=False, action="store_true", help=u"request imperial units, if omitted output is in metric. Not applicable at command line when using templates.")
		self.parser.add_option("-n","--night",dest="night", default=False, action="store_true", help=u"switch output to night data, if omitted day output will be output. Not applicable at command line when using templates.")
		self.parser.add_option("-w","--shortweekday",dest="shortweekday", default=False, action="store_true", help=u"Shorten the day of week data type to 3 characters. Not applicable at command line when using templates.")
		self.parser.add_option("-u","--hideunits",dest="hideunits", default=False, action="store_true", help=u"Hide units such as mph or C, degree symbols (°) are still shown. Not applicable at command line when using templates.")
		self.parser.add_option("-v","--verbose",dest="verbose", default=False, action="store_true", help=u"request verbose output, no a good idea when running through conky!")
		self.parser.add_option("-r","--refetch",dest="refetch", default=False, action="store_true", help=u"fetch data regardless of data expiry")

	def parse_args(self):
		(options, args) = self.parser.parse_args()
		return (options, args)

	def print_help(self):
		return self.parser.print_help()

class WeatherData:
	def __init__(self, day_of_week, low, high, condition_code, condition_text, precip, humidity, wind_dir, wind_speed, wind_gusts, city, sunrise, sunset, moon_phase, moon_icon, bar_read, bar_desc):
		self.day_of_week = u""+day_of_week
		self.low = u""+low
		self.high = u""+high
		self.condition_code = u""+condition_code
		self.condition_text = u""+condition_text
		self.precip = u""+precip
		self.humidity = u""+humidity
		self.wind_dir = u""+wind_dir
		self.wind_speed = u""+wind_speed
		self.wind_gusts = u""+wind_gusts
		self.city = u""+city
		self.sunrise = u""+sunrise
		self.sunset = u""+sunset
		self.moon_phase = u""+moon_phase
		self.moon_icon = u""+moon_icon		
		self.bar_read = u""+bar_read
		self.bar_desc = u""+bar_desc


class WeatherText:

	conditions_text = {
		"0": _(u"Tornado"),
		"1": _(u"Tropical Storm"),
		"2": _(u"Hurricane"),
		"3": _(u"Severe Thunderstorms"),
		"4": _(u"Thunderstorms"),
		"5": _(u"Mixed Rain and Snow"),
		"6": _(u"Mixed Rain and Sleet"),
		"7": _(u"Mixed Precipitation"),
		"8": _(u"Freezing Drizzle"),
		"9": _(u"Drizzle"),
		"10": _(u"Freezing Rain"),
		"11": _(u"Showers"),
		"12": _(u"Showers"),
		"13": _(u"Snow Flurries"),
		"14": _(u"Light Snow Showers"),
		"15": _(u"Blowing Snow"),
		"16": _(u"Snow"),
		"17": _(u"Hail"),
		"18": _(u"Sleet"),
		"19": _(u"Dust"),
		"20": _(u"Fog"),
		"21": _(u"Haze"),
		"22": _(u"Smoke"),
		"23": _(u"Blustery"), 
		"24": _(u"Windy"),
		"25": _(u"Cold"),
		"26": _(u"Cloudy"),
		"27": _(u"Mostly Cloudy"),
		"28": _(u"Mostly Cloudy"),
		"29": _(u"Partly Cloudy"),
		"30": _(u"Partly Cloudy"),
		"31": _(u"Clear"),
		"32": _(u"Clear"),
		"33": _(u"Fair"),
		"34": _(u"Fair"),
		"35": _(u"Mixed Rain and Hail"),
		"36": _(u"Hot"),
		"37": _(u"Isolated Thunderstorms"),
		"38": _(u"Scattered Thunderstorms"),
		"39": _(u"Scattered Thunderstorms"),
		"40": _(u"Scattered Showers"),
		"41": _(u"Heavy Snow"),
		"42": _(u"Scattered Snow Showers"),
		"43": _(u"Heavy Snow"),
		"44": _(u"Partly Cloudy"),
		"45": _(u"Thunder Showers"),
		"46": _(u"Snow Showers"),
		"47": _(u"Isolated Thunderstorms"),
		"na": _(u"N/A"),
		"-": _(u"N/A")
	}

	conditions_text_es = {
        "0": _(u"Tornado"),
        "1": _(u"Tormenta Tropical"),
        "2": _(u"Huracá¡n"),
        "3": _(u"Tormentas Fuertes"),
        "4": _(u"Tormentas"),
        "5": _(u"Lluvia y Nieve Mezclada"),
        "6": _(u"Lluvia y Aguanieve Mezclada"),
        "7": _(u"Aguanieve"),
        "8": _(u"Llovizna Helada"),
        "9": _(u"Llovizna"),
        "10": _(u"Lluvia Engelante"), # o lluvia helada
        "11": _(u"Chaparrones"),
        "12": _(u"Chaparrones"),
        "13": _(u"Nieve Ligera"),
        "14": _(u"Nieve Ligera"),
        "15": _(u"Ventisca de Nieve"),
        "16": _(u"Nieve"),
        "17": _(u"Granizo"),
        "18": _(u"Aguanieve"),
        "19": _(u"Polvo"),
        "20": _(u"Niebla"),
        "21": _(u"Bruma"),
        "22": _(u"Humo"),
        "23": _(u"Tempestad"),
        "24": _(u"Ventoso"),
        "25": _(u"Fráo"),
        "26": _(u"Muy Nublado"),
        "27": _(u"Principalmente Nublado"),
        "28": _(u"Principalmente Nublado"),
        "29": _(u"Parcialmente Nublado"),
        "30": _(u"Parcialmente Nublado"),
        "31": _(u"Despejado"),
        "32": _(u"Despejado"),
        "33": _(u"Algo Nublado"),
        "34": _(u"Algo Nublado"),
        "35": _(u"Lluvia con Granizo"),
        "36": _(u"Calor"),
        "37": _(u"Tormentas Aisladas"),
        "38": _(u"Tormentas Dispersas"),
        "39": _(u"Tormentas Dispersas"),
        "40": _(u"Chubascos Dispersos"),
        "41": _(u"Nieve Pesada"),
        "42": _(u"Nevadas Débiles y Dispersas"),
        "43": _(u"Nevada Intensa"),
        "44": _(u"Nubes Dispersas"),
        "45": _(u"Tormentas"),
        "46": _(u"Nevadas Dispersas"),
        "47": _(u"Tormentas Aisladas"),
        "na": _(u"N/A"),
        "-": _(u"N/A")
    }

	conditions_text_fr = {
        "0": _(u"Tornade"),
        "1": _(u"Tempête Tropicale"),
        "2": _(u"Ouragan"),
        "3": _(u"Orages Violents"),
        "4": _(u"Orageux"),
        "5": _(u"Pluie et Neige"),
        "6": _(u"Pluie et Neige Mouillée"),
        "7": _(u"Variable avec averses"),
        "8": _(u"Bruine Givrante"),
        "9": _(u"Bruine"),
        "10": _(u"Pluie Glacante"),
        "11": _(u"Averses"),
        "12": _(u"Averses"),
        "13": _(u"Légère Neige"),
        "14": _(u"Forte Neige"),
        "15": _(u"Tempête de Neige"),
        "16": _(u"Neige"),
        "17": _(u"Grêle"),
        "18": _(u"Pluie/Neige"),
        "19": _(u"Nuage de poussière"),
        "20": _(u"Brouillard"),
        "21": _(u"Brume"),
        "22": _(u"Fumée"),
        "23": _(u"Tres Venteux"),
        "24": _(u"Venteux"),
        "25": _(u"Froid"),
        "26": _(u"Nuageux"),
        "27": _(u"Tres Nuageux"),
        "28": _(u"Tres Nuageux"),
        "29": _(u"Nuages Disséminés"),
        "30": _(u"Nuages Disséminés"),
        "31": _(u"Beau"),
        "32": _(u"Beau"),
        "33": _(u"Belles Éclaircies"),
        "34": _(u"Belles Éclaircies"),
        "35": _(u"Pluie avec Grêle"),
        "36": _(u"Chaleur"),
        "37": _(u"Orages Isolés"),
        "38": _(u"Orages Localisés"),
        "39": _(u"Orages Localisés"),
        "40": _(u"Averses Localisées"),
        "41": _(u"Neige Lourde"),
        "42": _(u"Tempête de Neige Localisées"),
        "43": _(u"Neige Lourde"),
        "44": _(u"Nuages Disséminés"),
        "45": _(u"Orages"),
        "46": _(u"Tempête de Neige"),
        "47": _(u"Orages Isolés"),
        "na": _(u"N/A"),
        "-": _(u"N/A")
	}
	
	conditions_weather_font = {
		"0": _(u"W"),
		"1": _(u"V"),
		"2": _(u"W"),
		"3": _(u"s"),
		"4": _(u"p"),
		"5": _(u"k"),
		"6": _(u"k"),
		"7": _(u"g"),
		"8": _(u"g"),
		"9": _(u"g"),
		"10": _(u"h"),
		"11": _(u"g"),
		"12": _(u"g"),
		"13": _(u"k"),
		"14": _(u"k"),
		"15": _(u"k"),
		"16": _(u"k"),
		"17": _(u"k"),
		"18": _(u"k"),
		"19": _(u"e"),
		"20": _(u"e"),
		"21": _(u"a"),
		"22": _(u"d"),
		"23": _(u"d"), 
		"24": _(u"d"),
		"25": _(u"d"),
		"26": _(u"e"),
		"27": _(u"e"),
		"28": _(u"e"),
		"29": _(u"c"),
		"30": _(u"c"),
		"31": _(u"a"),
		"32": _(u"a"),
		"33": _(u"b"),
		"34": _(u"b"),
		"35": _(u"k"),
		"36": _(u"a"),
		"37": _(u"f"),
		"38": _(u"f"),
		"39": _(u"f"),
		"40": _(u"g"),
		"41": _(u"k"),
		"42": _(u"k"),
		"43": _(u"k"),
		"44": _(u"b"),
		"45": _(u"g"),
		"46": _(u"k"),
		"47": _(u"f"),
		"na": _(u""),
		"-": _(u"")
	}

	conditions_moon_font = {
		"0": _(u"1"),
		"1": _(u"N"),
		"2": _(u"O"),
		"3": _(u"P"),
		"4": _(u"Q"),
		"5": _(u"R"),
		"6": _(u"S"),
		"7": _(u"T"),
		"8": _(u"U"),
		"9": _(u"V"),
		"10": _(u"W"),
		"11": _(u"X"),
		"12": _(u"Y"),
		"13": _(u"Z"),
		"14": _(u"0"),
		"15": _(u"0"),
		"16": _(u"A"),
		"17": _(u"B"),
		"18": _(u"C"),
		"19": _(u"D"),
		"20": _(u"E"),
		"21": _(u"F"),
		"22": _(u"G"),
		"23": _(u"H"),
		"24": _(u"I"),
		"25": _(u"J"),
		"26": _(u"K"),
		"27": _(u"L"),
		"28": _(u"M"),
		"29": _(u"1"),
		"na": _(u""),
		"-": _(u"")
	}
		
	day_of_week = {
		"Today": _(u"Today"),
		"Monday": _(u"Monday"),
		"Tuesday": _(u"Tuesday"),
		"Wednesday": _(u"Wednesday"),
		"Thursday": _(u"Thursday"),
		"Friday": _(u"Friday"),
		"Saturday": _(u"Saturday"),
		"Sunday": _(u"Sunday")
	}

	day_of_week_short = {
		"Today": _(u"Now"),
		"Monday": _(u"Mon"),
		"Tuesday": _(u"Tue"),
		"Wednesday": _(u"Wed"),
		"Thursday": _(u"Thu"),
		"Friday": _(u"Fri"),
		"Saturday": _(u"Sat"),
		"Sunday": _(u"Sun")
	}

	day_of_week_es = {
		"Today": _(u"hoy"),
		"Monday": _(u"lunes"),
		"Tuesday": _(u"martes"),
		"Wednesday": _(u"miércoles"),
		"Thursday": _(u"jueves"),
		"Friday": _(u"viernes"),
		"Saturday": _(u"sábado"),
		"Sunday": _(u"domingo")
	}

	day_of_week_short_es = {
		"Today": _(u"hoy"),
		"Monday": _(u"lun"),
		"Tuesday": _(u"mar"),
		"Wednesday": _(u"mié"),
		"Thursday": _(u"jue"),
		"Friday": _(u"vie"),
		"Saturday": _(u"sáb"),
		"Sunday": _(u"dom")
	}

	day_of_week_fr = {
		"Today": _(u"Aujourd'hui"),
		"Monday": _(u"Lundi"),
		"Tuesday": _(u"Mardi"),
		"Wednesday": _(u"Mercredi"),
		"Thursday": _(u"Jeudi"),
		"Friday": _(u"Vendredi"),
		"Saturday": _(u"Samedi"),
		"Sunday": _(u"Dimanche")
	}

	day_of_week_short_fr = {
		"Today": _(u"Auj"),
		"Monday": _(u"Lun"),
		"Tuesday": _(u"Mar"),
		"Wednesday": _(u"Mer"),
		"Thursday": _(u"Jeu"),
		"Friday": _(u"Ven"),
		"Saturday": _(u"Sam"),
		"Sunday": _(u"Dim")
	}

	bearing_arrow_font = {
		"N": _(u"i"),
		"NNE": _(u"j"),
		"NE": _(u"k"),
		"ENE": _(u"l"),
		"E": _(u"m"),
		"ESE": _(u"n"),
		"SE": _(u"o"),
		"SSE": _(u"p"),
		"S": _(u"a"),
		"SSW": _(u"b"),
		"SW": _(u"c"),
		"WSW": _(u"d"),
		"W": _(u"e"),
		"WNW": _(u"f"),
		"NW": _(u"g"),
		"NNW": _(u"h"),
		"N/A": _(u" ")
	}

	bearing_text_es = {
		"N": _(u"N"),
		"NNE": _(u"NNE"),
		"NE": _(u"NE"),
		"ENE": _(u"ENE"),
		"E": _(u"E"),
		"ESE": _(u"ESE"),
		"SE": _(u"SE"),
		"SSE": _(u"SSE"),
		"S": _(u"S"),
		"SSW": _(u"SSO"),
		"SW": _(u"SO"),
		"WSW": _(u"WOW"),
		"W": _(u"O"),
		"WNW": _(u"ONO"),
		"NW": _(u"NO"),
		"NNW": _(u"NNO"),
		"N/A": _(u"N\A")
	}

	bearing_text_fr = {
		"N": _(u"N"),
		"NNE": _(u"NNE"),
		"NE": _(u"NE"),
		"ENE": _(u"ENE"),
		"E": _(u"E"),
		"ESE": _(u"ESE"),
		"SE": _(u"SE"),
		"SSE": _(u"SSE"),
		"S": _(u"S"),
		"SSW": _(u"SSO"),
		"SW": _(u"SO"),
		"WSW": _(u"WOW"),
		"W": _(u"O"),
		"WNW": _(u"ONO"),
		"NW": _(u"NO"),
		"NNW": _(u"NNO"),
		"N/A": _(u"N\A")		
	}
			  
class GlobalWeather:

	current_conditions = []
	day_forecast = []
	night_forecast = []

	locale = "en"

	options = None
	weatherxmldoc = ""

 	TEMP_FILEPATH_CURRENT = "/tmp/conkyForecast-c-LOCATION.pkl"
	TEMP_FILEPATH_DAYFORECAST = "/tmp/conkyForecast-df-LOCATION.pkl"
	TEMP_FILEPATH_NIGHTFORECAST = "/tmp/conkyForecast-nf-LOCATION.pkl"
 	EXPIRY_MINUTES = 10
	DEFAULT_SPACING = u" "
		

	def __init__(self,options):

		self.options = options
		
		if self.options.locale == None:
			try:
				self.locale = locale.getdefaultlocale()[0][0:2]
				#self.locale = "es" #uncomment this line to force Spanish locale
				#self.locale = "fr" #uncomment this line to force French locale				
			except:
				print "locale not set"
		else:
			self.locale = self.options.locale
			#self.locale = "es" #uncomment this line to force Spanish locale
			#self.locale = "fr" #uncomment this line to force French locale	

		if self.options.verbose == True:
			print >> sys.stdout, "locale set to ",self.locale

	def getText(self,nodelist):
		rc = ""
		for node in nodelist:
			if node.nodeType == node.TEXT_NODE:
				rc = rc + node.data
		return rc


	def getSpaces(self,spaces):
		string = u""
		if spaces == None:
			string = self.DEFAULT_SPACING
		else:
			for i in range(0, spaces+1):
				string = string + u" "
		return string


	def isNumeric(self,string):
		try:
			dummy = float(string)
			return True
		except:
			return False

	def isConnectionAvailable(self):
		# ensure we can access weather.com's server by opening the url
		try:
			usock = urllib2.urlopen('http://xoap.weather.com')
			usock.close()
			return True
		except:
			return False

	def getBearingText(self,bearing):
		bearing = float(bearing)
		if bearing < 11.25:
			return u"N"
		elif bearing < 33.75:
			return u"NNE"
		elif bearing < 56.25:
			return u"NE"
		elif bearing < 78.75:
			return u"ENE"
		elif bearing < 101.25:
			return u"E"
		elif bearing < 123.75:
			return u"ESE"
		elif bearing < 146.25:
			return u"SE"
		elif bearing < 168.75:
			return u"SSE"
		elif bearing < 191.25:
			return u"S"
		elif bearing < 213.75:
			return u"SSW"
		elif bearing < 236.25:
			return u"SW"
		elif bearing < 258.75:
			return u"WSW"
		elif bearing < 281.25:
			return u"W"
		elif bearing < 303.75:
			return u"WNW"
		elif bearing < 326.25:
			return u"NW"
		elif bearing < 348.75:
			return u"NNW"
		else:
			return "N/A"

	def convertCelsiusToFahrenheit(self,temp):
		return str(int(floor(((float(temp)*9.0)/5.0)+32)))

	def convertKilometresToMiles(self,dist):
		return str(int(floor(float(dist)*0.621371192)))

	def convertMillibarsToInches(self,mb):
		return str(int(floor(float(mb)/33.8582)))

	def getTemplateList(self,template):

		templatelist = []
	
		for template_part in template.split("{"):
			if template_part != "":
				for template_part in template_part.split("}"):
					if template_part != "":
						templatelist.append(u""+template_part)

		return templatelist


	def getOutputText(self,datatype,startday,endday,night,shortweekday,imperial,hideunits,spaces):
		#try:
			output = u""
		
			# define current units for output
			if hideunits == False:
				if imperial == False:
					tempunit = u"°C"
					speedunit = u"kph"
					pressureunit = u"mb"
				else:
					tempunit = u"°F"
					speedunit = u"mph"
					pressureunit = u"in"
			else:
				tempunit = u"°"
				speedunit = u""
				pressureunit = u""

			if startday == None: # current conditions

				if datatype == "DW":
					if self.locale == "es":
						if shortweekday == True:
							output = WeatherText.day_of_week_short_es[self.current_conditions[0].day_of_week]
						else:
							output = WeatherText.day_of_week_es[self.current_conditions[0].day_of_week]
					elif self.locale == "fr":
						if shortweekday == True:
							output = WeatherText.day_of_week_short_fr[self.current_conditions[0].day_of_week]
						else:
							output = WeatherText.day_of_week_fr[self.current_conditions[0].day_of_week]							
					else:
						if shortweekday == True:
							output = WeatherText.day_of_week_short[self.current_conditions[0].day_of_week]
						else:
							output = WeatherText.day_of_week[self.current_conditions[0].day_of_week]
				elif datatype == "WF": # weather font
					output = WeatherText.conditions_weather_font[self.current_conditions[0].condition_code]
				elif datatype == "LT":
					string = self.current_conditions[0].low
					if self.isNumeric(string) == True:
						if imperial == True:
							string = self.convertCelsiusToFahrenheit(string)
						string = string + tempunit
					output = string
				elif datatype == "HT":
					string = self.current_conditions[0].high
					if self.isNumeric(string) == True:
						if imperial == True:
							string = self.convertCelsiusToFahrenheit(string)
						string = string + tempunit
					output = string
				elif datatype == "CC":
					if self.locale == "es":
						output = WeatherText.conditions_text_es[self.current_conditions[0].condition_code]
					elif self.locale == "fr":
						output = WeatherText.conditions_text_fr[self.current_conditions[0].condition_code]						
					else:
						output = WeatherText.conditions_text[self.current_conditions[0].condition_code] 
				elif datatype == "CT":
					output = self.current_conditions[0].condition_text
				elif datatype == "PC":
					string = self.current_conditions[0].precip
					if self.isNumeric(string) == True:
						string = string + u"%"
					output = string
				elif datatype == "HM":
					string = self.current_conditions[0].humidity
					if self.isNumeric(string) == True:
						string = string + u"%"
					output = string
				elif datatype == "WD":
					string = self.current_conditions[0].wind_dir
					if self.isNumeric(string) == True:
						string = self.getBearingText(string)
						
					if self.locale == "es":
						output = WeatherText.bearing_text_es[string]
					elif self.locale == "fr":
						output = WeatherText.bearing_text_fr[string]
					else:
						output = string
											
				elif datatype == "BF":
					string = self.current_conditions[0].wind_dir
					if self.isNumeric(string) == True:
						string = WeatherText.bearing_arrow_font[self.getBearingText(string)]
					output = string					
				elif datatype == "WS":
					string = self.current_conditions[0].wind_speed
					if self.isNumeric(string) == True:
						if imperial == True:
							string = self.convertKilometresToMiles(string)
						string = string + speedunit
					output = string
				elif datatype == "WG":
					string = self.current_conditions[0].wind_gusts
					if self.isNumeric(string) == True:
						if imperial == True:
							string = self.convertKilometresToMiles(string)
						string = string + speedunit
					output = string
				elif datatype == "CN":
					output = self.current_conditions[0].city
				elif datatype == "SR":
					output = self.current_conditions[0].sunrise
				elif datatype == "SS":
					output = self.current_conditions[0].sunset
				elif datatype == "MP":
					output = self.current_conditions[0].moon_phase
				elif datatype == "MF":
					output = WeatherText.conditions_moon_font[self.current_conditions[0].moon_icon]							
				elif datatype == "BR":
					string = self.current_conditions[0].bar_read
					if self.isNumeric(string) == True:
						if imperial == True:
							string = self.convertMillibarsToInches(string)
						string = string + pressureunit
					output = string
				elif datatype == "BD":
					output = self.current_conditions[0].bar_desc
				else:
					output = "\nERROR:Unknown data type requested"

			else: # forecast data

				if endday == None: # if no endday was set use startday
					endday = startday

				if night == True: # night forecast required

					for day_number in range(startday, endday+1):

						if datatype == "DW":
							if self.locale == "es":
								if shortweekday == True:
									output = output + self.getSpaces(spaces) + WeatherText.day_of_week_short_es[self.night_forecast[day_number].day_of_week]
								else:
									output = output + self.getSpaces(spaces) + WeatherText.day_of_week_es[self.night_forecast[day_number].day_of_week]
							elif self.locale == "fr":
								if shortweekday == True:
									output = output + self.getSpaces(spaces) + WeatherText.day_of_week_short_fr[self.night_forecast[day_number].day_of_week]
								else:
									output = output + self.getSpaces(spaces) + WeatherText.day_of_week_fr[self.night_forecast[day_number].day_of_week]
							else:
								if shortweekday == True:
									output = output + self.getSpaces(spaces) + WeatherText.day_of_week_short[self.night_forecast[day_number].day_of_week]
								else:
									output = output + self.getSpaces(spaces) + WeatherText.day_of_week[self.night_forecast[day_number].day_of_week]
						elif datatype == "WF": # weather font
							output = output + self.getSpaces(spaces) + WeatherText.conditions_weather_font[self.night_forecast[day_number].condition_code]
						elif datatype == "LT":
							string = self.night_forecast[day_number].low
							if self.isNumeric(string) == True:
								if imperial == True:
									string = self.convertCelsiusToFahrenheit(string)
								string = string + tempunit
							output = output + self.getSpaces(spaces) + string

						elif datatype == "HT":
							string = self.night_forecast[day_number].high
							if self.isNumeric(string) == True:
								if imperial == True:
									string = self.convertCelsiusToFahrenheit(string)
								string = string + tempunit
							output = output + self.getSpaces(spaces) + string
						elif datatype == "CC":
							if self.locale == "es":
								output = output + self.getSpaces(spaces) + WeatherText.conditions_text_es[self.night_forecast[day_number].condition_code]
							elif self.locale == "fr":
								output = output + self.getSpaces(spaces) + WeatherText.conditions_text_fr[self.night_forecast[day_number].condition_code]
							else:
								output = output + self.getSpaces(spaces) + WeatherText.conditions_text[self.night_forecast[day_number].condition_code]
						elif datatype == "CT":
							output = output + self.getSpaces(spaces) + self.night_forecast[day_number].condition_text
						elif datatype == "PC":
							string = self.night_forecast[day_number].precip
							if self.isNumeric(string) == True:
								string = string + u"%"
							output = output + self.getSpaces(spaces) + string
						elif datatype == "HM":
							string = self.night_forecast[day_number].humidity
							if self.isNumeric(string) == True:
								string = string + u"%"
							output = output + self.getSpaces(spaces) + string
						elif datatype == "WD":
							string = self.night_forecast[day_number].wind_dir
							if self.locale == "es":
								output = output + self.getSpaces(spaces) + WeatherText.bearing_text_es[string]
							elif self.locale == "fr":
								output = output + self.getSpaces(spaces) + WeatherText.bearing_text_fr[string]
							else:
								output = output + self.getSpaces(spaces) + string
                            
						elif datatype == "BF":
							output = output + self.getSpaces(spaces) + WeatherText.bearing_arrow_font[self.night_forecast[day_number].wind_dir]
						elif datatype == "WS":
							string = self.night_forecast[day_number].wind_speed
							if self.isNumeric(string) == True:
								if imperial == True:
									string = self.convertKilometresToMiles(string)
								string = string + speedunit
							output = output + self.getSpaces(spaces) + string
						elif datatype == "WG":
							string = self.night_forecast[day_number].wind_gusts
							if self.isNumeric(string) == True:
								if imperial == True:
									string = self.convertKilometresToMiles(string)
								string = string + speedunit
							output = output + self.getSpaces(spaces) + string
						elif datatype == "CN":
							output = output + self.getSpaces(spaces) + self.night_forecast[day_number].city
						elif datatype == "SR":
							output = output + self.getSpaces(spaces) + self.night_forecast[day_number].sunrise
						elif datatype == "SS":
							output = output + self.getSpaces(spaces) + self.night_forecast[day_number].sunset
						elif datatype == "MP":
							output = output + self.getSpaces(spaces) + self.night_forecast[day_number].moon_phase
						elif datatype == "MF":
							output = output + self.getSpaces(spaces) + WeatherText.conditions_moon_font[self.night_forecast[day_number].moon_icon]
						elif datatype == "BR":
							output = output + self.getSpaces(spaces) + self.night_forecast[day_number].bar_read
						elif datatype == "BD":
							output = output + self.getSpaces(spaces) + self.night_forecast[day_number].bar_desc
						else:
							output = "\nERROR:Unknown data type requested"
							break

				else: # day forecast wanted

					for day_number in range(startday, endday+1):

						if datatype == "DW":
							if self.locale == "es":
								if shortweekday == True:
									output = output + self.getSpaces(spaces) + WeatherText.day_of_week_short_es[self.day_forecast[day_number].day_of_week]
								else:
									output = output + self.getSpaces(spaces) + WeatherText.day_of_week_es[self.day_forecast[day_number].day_of_week]
							elif self.locale == "fr":
								if shortweekday == True:
									output = output + self.getSpaces(spaces) + WeatherText.day_of_week_short_fr[self.day_forecast[day_number].day_of_week]
								else:
									output = output + self.getSpaces(spaces) + WeatherText.day_of_week_fr[self.day_forecast[day_number].day_of_week]									
							else:
								if shortweekday == True:
									output = output + self.getSpaces(spaces) + WeatherText.day_of_week_short[self.day_forecast[day_number].day_of_week]
								else:
									output = output + self.getSpaces(spaces) + WeatherText.day_of_week[self.day_forecast[day_number].day_of_week]
						elif datatype == "WF": # weather font
							output = output + self.getSpaces(spaces) + WeatherText.conditions_weather_font[self.day_forecast[day_number].condition_code]
						elif datatype == "LT":
							string = self.day_forecast[day_number].low
							if self.isNumeric(string) == True:
								if imperial == True:
									string = self.convertCelsiusToFahrenheit(string)
								string = string + tempunit
							output = output + self.getSpaces(spaces) + string
						elif datatype == "HT":
							string = self.day_forecast[day_number].high
							if self.isNumeric(string) == True:
								if imperial == True:
									string = self.convertCelsiusToFahrenheit(string)
								string = string + tempunit
							output = output + self.getSpaces(spaces) + string
						elif datatype == "CC":
							if self.locale == "es":
								output = output + self.getSpaces(spaces) + WeatherText.conditions_text_es[self.day_forecast[day_number].condition_code]
							elif self.locale == "fr":
								output = output + self.getSpaces(spaces) + WeatherText.conditions_text_fr[self.day_forecast[day_number].condition_code]
							else:
								output = output + self.getSpaces(spaces) + WeatherText.conditions_text[self.day_forecast[day_number].condition_code]
						elif datatype == "CT":
							output = output + self.getSpaces(spaces) + self.day_forecast[day_number].condition_text
						elif datatype == "PC":
							string = self.day_forecast[day_number].precip
							if self.isNumeric(string) == True:
								string = string + u"%"
							output = output + self.getSpaces(spaces) + string
						elif datatype == "HM":
							string = self.day_forecast[day_number].humidity
							if self.isNumeric(string) == True:
								string = string + u"%"
							output = output + self.getSpaces(spaces) + string
						elif datatype == "WD":
							string = self.day_forecast[day_number].wind_dir
							
							if self.locale == "es":
								output = output + self.getSpaces(spaces) + WeatherText.bearing_text_es[string]
							elif self.locale == "fr":
								output = output + self.getSpaces(spaces) + WeatherText.bearing_text_fr[string]
							else:
								output = output + self.getSpaces(spaces) + string	

						elif datatype == "BF":
							output = output + self.getSpaces(spaces) + WeatherText.bearing_arrow_font[self.day_forecast[day_number].wind_dir]
						elif datatype == "WS":
							string = self.day_forecast[day_number].wind_speed
							if self.isNumeric(string) == True:
								if imperial == True:
									string = self.convertKilometresToMiles(string)
								string = string + speedunit
							output = output + self.getSpaces(spaces) + string
						elif datatype == "WG":
							string = self.day_forecast[day_number].wind_gusts
							if self.isNumeric(string) == True:
								if imperial == True:
									string = self.convertKilometresToMiles(string)
								string = string + speedunit
							output = output + self.getSpaces(spaces) + string
						elif datatype == "CN":
							output = output + self.getSpaces(spaces) + self.day_forecast[day_number].city
						elif datatype == "SR":
							output = output + self.getSpaces(spaces) + self.day_forecast[day_number].sunrise
						elif datatype == "SS":
							output = output + self.getSpaces(spaces) + self.day_forecast[day_number].sunset
						elif datatype == "MP":
							output = output + self.getSpaces(spaces) + self.day_forecast[day_number].moon_phase
						elif datatype == "MF":
							output = output + self.getSpaces(spaces) + WeatherText.conditions_moon_font[self.day_forecast[day_number].moon_icon]
						elif datatype == "BR":
							output = output + self.getSpaces(spaces) + self.day_forecast[day_number].bar_read
						elif datatype == "BD":
							output = output + self.getSpaces(spaces) + self.day_forecast[day_number].bar_desc
						else:
							output = u"\nERROR:Unknown data type requested"
							break

			output = u""+output.strip(u" ") # lose leading/trailing spaces
			return output

		#except:
			#print "getOutputText:Unexpected error: ", sys.exc_info()[0]


	def getOutputTextFromTemplate(self,template):
		#try:

			# keys to template data
			DATATYPE_KEY = "--datatype="
			STARTDAY_KEY = "--startday="
			ENDDAY_KEY = "--endday="
			NIGHT_KEY = "--night"
			SHORTWEEKDAY_KEY = "--shortweekday"
			IMPERIAL_KEY = "--imperial"
			HIDEUNITS_KEY = "--hideunits"
			SPACES_KEY = "--spaces="

			output = u""

			optionfound = False

			#load the file
			try:
				fileinput = open(self.options.template)
				template = fileinput.read()
				fileinput.close()
			except:
				output = u"Template file no found!"

			templatelist = self.getTemplateList(template)

			# lets walk through the template list and determine the output for each item found
			for i in range(0,len(templatelist)-1):

				pos = templatelist[i].find(DATATYPE_KEY)
				if pos != -1:
					optionfound = True
					pos = pos + len(DATATYPE_KEY)
					datatype = templatelist[i][pos:pos+4].strip("}").strip("{").strip("-").strip(" ")
				else:
					datatype = None

				pos = templatelist[i].find(STARTDAY_KEY)
				if pos != -1:
					optionfound = True
					pos = pos + len(STARTDAY_KEY)
					startday = int(templatelist[i][pos:pos+4].strip("}").strip("{").strip("-").strip(" "))
				else:
					startday = None

				pos = templatelist[i].find(ENDDAY_KEY)
				if pos != -1:
					optionfound = True
					pos = pos + len(ENDDAY_KEY)
					endday = int(templatelist[i][pos:pos+4].strip("}").strip("{").strip("-").strip(" "))
				else:
					endday = None

				pos = templatelist[i].find(NIGHT_KEY)
				if pos != -1:
					optionfound = True
					night = True
				else:
					night = False

				pos = templatelist[i].find(SHORTWEEKDAY_KEY)
				if pos != -1:
					optionfound = True
					shortweekday = True
				else:
					shortweekday = False

				pos = templatelist[i].find(IMPERIAL_KEY)
				if pos != -1:
					optionfound = True
					imperial = True
				else:
					imperial = False

				pos = templatelist[i].find(HIDEUNITS_KEY)
				if pos != -1:
					optionfound = True
					hideunits = True
				else:
					hideunits = False

				pos = templatelist[i].find(SPACES_KEY)
				if pos != -1:
					optionfound = True
					pos = pos + len(SPACES_KEY)
					spaces = int(templatelist[i][pos:pos+4].strip("}").strip("{").strip("-").strip(" "))
				else:
					spaces = 1

				if optionfound == True:
					templatelist[i] = self.getOutputText(datatype,startday,endday,night,shortweekday,imperial,hideunits,spaces)
					optionfound = False

			# go through the list concatenating the output now that it's been populated
			for item in templatelist:
				output = output + item

			return output

		#except:
			#print "getOutputTextFromTemplate:Unexpected error: ", sys.exc_info()[0]


	def fetchData(self):

		# always fetch metric data, use conversation functions on this data
		file_path_current = self.TEMP_FILEPATH_CURRENT.replace("LOCATION",self.options.location)
		file_path_dayforecast = self.TEMP_FILEPATH_DAYFORECAST.replace("LOCATION",self.options.location)
		file_path_nightforecast = self.TEMP_FILEPATH_NIGHTFORECAST.replace("LOCATION",self.options.location)

		if self.isConnectionAvailable() == False:
			if os.path.exists(file_path_current):
				RefetchData = False
			else: # no connection, no cache, bang!
				print "No internet connection is available and no cached weather data exists."
		elif self.options.refetch == True:
			RefetchData = True
		else:
	 		# does the data need retrieving again?
	 		if os.path.exists(file_path_current):
	 			lastmodDate = time.localtime(os.stat(file_path_current)[ST_MTIME])
				expiryDate = (datetime.datetime.today() - datetime.timedelta(minutes=self.EXPIRY_MINUTES)).timetuple()

				if expiryDate > lastmodDate:
					RefetchData = True
				else:
					RefetchData = False
			else:
				RefetchData = True


                # fetch the current conditions data, either from the website or by 'unpickling'
 		if RefetchData == True:

			# obtain current conditions data from xoap service
			try:

				# http://xoap.weather.com/weather/local/UKXX0103?cc=*&dayf=5&link=xoap&prod=xoap&par=1061785028&key=e374effbfd74930b

				url = 'http://xoap.weather.com/weather/local/' + self.options.location + '?cc=*&dayf=8&link=xoap&prod=xoap&par=1061785028&key=e374effbfd74930b&unit=m'
				if self.options.verbose == True:
					print >> sys.stdout, "fetching weather data from ",url

				usock = urllib2.urlopen(url)
				xml = usock.read()
				usock.close()
				self.weatherxmldoc = minidom.parseString(xml)
			except:
				print "fetchData:Unexpected error: ", sys.exc_info()[0]
				print "Unable to contact weather source for current conditions"

			# tell the user if the location is bad...
			found = xml.find("Invalid location provided")
			if found != -1:
				print "Invalid location provided"

			# interrogate weather data, load into class structure and pickle it
			try:

				# prepare weather data lists
				self.current_conditions = []
				self.day_forecast = []
				self.night_forecast = []

				# collect general data
				weather_n = self.weatherxmldoc.documentElement
				location_n = weather_n.getElementsByTagName('loc')[0]
				city_n = location_n.getElementsByTagName('dnam')[0]
				city = self.getText(city_n.childNodes)

				# collect current conditions data
				day_of_week = u"Today"
				precip = u"N/A"
				sunrise_n = location_n.getElementsByTagName('sunr')[0]
				sunrise = self.getText(sunrise_n.childNodes)
				sunset_n = location_n.getElementsByTagName('suns')[0]
				sunset = self.getText(sunset_n.childNodes)
				current_condition_n = weather_n.getElementsByTagName('cc')[0]
				current_desc_n = current_condition_n.getElementsByTagName('t')[0]
				current_desc = self.getText(current_desc_n.childNodes)
				current_code_n = current_condition_n.getElementsByTagName('icon')[0]
				current_code = self.getText(current_code_n.childNodes)
				current_temp_n = current_condition_n.getElementsByTagName('tmp')[0]
				current_temp = self.getText(current_temp_n.childNodes)
				current_temp_feels_n = current_condition_n.getElementsByTagName('flik')[0]
				current_temp_feels = self.getText(current_temp_feels_n.childNodes)
				bar_n = current_condition_n.getElementsByTagName('bar')[0]
				bar_read_n = bar_n.getElementsByTagName('r')[0]
				bar_read = self.getText(bar_read_n.childNodes)
				bar_desc_n = bar_n.getElementsByTagName('d')[0]
				bar_desc = self.getText(bar_desc_n.childNodes)
				wind_n = current_condition_n.getElementsByTagName('wind')[0]
				wind_speed_n = wind_n.getElementsByTagName('s')[0]
				wind_speed = self.getText(wind_speed_n.childNodes)
				wind_gust_n = wind_n.getElementsByTagName('gust')[0]
				wind_gusts = self.getText(wind_gust_n.childNodes)
				wind_dir_n = wind_n.getElementsByTagName('d')[0]
				wind_direction = self.getText(wind_dir_n.childNodes)
				humidity_n = current_condition_n.getElementsByTagName('hmid')[0]
				humidity = self.getText(humidity_n.childNodes)
				moon_n = current_condition_n.getElementsByTagName('moon')[0]
				moon_icon_n = moon_n.getElementsByTagName('icon')[0]
				moon_icon = self.getText(moon_icon_n.childNodes)
				moon_phase_n = moon_n.getElementsByTagName('t')[0]
				moon_phase = self.getText(moon_phase_n.childNodes)
				current_conditions_data = WeatherData(day_of_week, current_temp_feels, current_temp, current_code, current_desc, precip, humidity, wind_direction, wind_speed, wind_gusts, city, sunrise, sunset, moon_phase, moon_icon, bar_read, bar_desc)
				self.current_conditions.append(current_conditions_data)

				# collect forecast data
				bar_read = u"N/A"
				bar_desc = u"N/A"
				moon_phase = u"N/A"
				moon_icon = u"na"
				forecast_n = weather_n.getElementsByTagName('dayf')[0]
				day_nodes = forecast_n.getElementsByTagName('day')
	
				for day in day_nodes:
					day_of_week = day.getAttribute('t')
					day_of_year = day.getAttribute('dt')
					high_temp_n = day.getElementsByTagName('hi')[0]
					high_temp = self.getText(high_temp_n.childNodes)
					low_temp_n = day.getElementsByTagName('low')[0]
					low_temp = self.getText(low_temp_n.childNodes)

					sunrise_n = day.getElementsByTagName('sunr')[0]
					sunrise = self.getText(sunrise_n.childNodes)
					sunset_n = day.getElementsByTagName('suns')[0]
					sunset = self.getText(sunset_n.childNodes)

					# day forecast specific data
					daytime_n = day.getElementsByTagName('part')[0] # day
					condition_code_n = daytime_n.getElementsByTagName('icon')[0]
					condition_code = self.getText(condition_code_n.childNodes)
					condition_n = daytime_n.getElementsByTagName('t')[0]
					condition = self.getText(condition_n.childNodes)
					precip_n = daytime_n.getElementsByTagName('ppcp')[0]
					precip = self.getText(precip_n.childNodes)
					humidity_n = daytime_n.getElementsByTagName('hmid')[0]
					humidity = self.getText(humidity_n.childNodes)
					wind_n = daytime_n.getElementsByTagName('wind')[0]
					wind_speed_n = wind_n.getElementsByTagName('s')[0]
					wind_speed = self.getText(wind_speed_n.childNodes)
					wind_direction_n = wind_n.getElementsByTagName('t')[0]
					wind_direction = self.getText(wind_direction_n.childNodes)
					wind_gusts_n = wind_n.getElementsByTagName('gust')[0]
					wind_gusts = self.getText(wind_gusts_n.childNodes)
					day_forecast_data = WeatherData(day_of_week, low_temp, high_temp, condition_code, condition, precip, humidity, wind_direction, wind_speed, wind_gusts, city, sunrise, sunset, moon_phase, moon_icon, bar_read, bar_desc)
					self.day_forecast.append(day_forecast_data) 	

					# night forecast specific data
					daytime_n = day.getElementsByTagName('part')[1] # night
					condition_code_n = daytime_n.getElementsByTagName('icon')[0]
					condition_code = self.getText(condition_code_n.childNodes)
					condition_n = daytime_n.getElementsByTagName('t')[0]
					condition = self.getText(condition_n.childNodes)
					precip_n = daytime_n.getElementsByTagName('ppcp')[0]
					precip = self.getText(precip_n.childNodes)
					humidity_n = daytime_n.getElementsByTagName('hmid')[0]
					humidity = self.getText(humidity_n.childNodes)
					wind_n = daytime_n.getElementsByTagName('wind')[0]
					wind_speed_n = wind_n.getElementsByTagName('s')[0]
					wind_speed = self.getText(wind_speed_n.childNodes)
					wind_direction_n = wind_n.getElementsByTagName('t')[0]
					wind_direction = self.getText(wind_direction_n.childNodes)
					wind_gusts_n = wind_n.getElementsByTagName('gust')[0]
					wind_gusts = self.getText(wind_gusts_n.childNodes)
					night_forecast_data = WeatherData(day_of_week, low_temp, high_temp, condition_code, condition, precip, humidity, wind_direction, wind_speed, wind_gusts, city, sunrise, sunset, moon_phase, moon_icon, bar_read, bar_desc)
					self.night_forecast.append(night_forecast_data) 


				# pickle the data for next time!
				fileoutput = open(file_path_current, 'w')
 				pickle.dump(self.current_conditions,fileoutput)
		 		fileoutput.close()

				fileoutput = open(file_path_dayforecast, 'w')
 				pickle.dump(self.day_forecast,fileoutput)
		 		fileoutput.close()

				fileoutput = open(file_path_nightforecast, 'w')
 				pickle.dump(self.night_forecast,fileoutput)
		 		fileoutput.close()
		
			except:
				print "fetchData:Unexpected error: ", sys.exc_info()[0]
				print "Unable to interrogate the weather data"

		else: # fetch weather data from pickled class files
			if self.options.verbose == True:
				print >> sys.stdout, "fetching weather data from file: ",file_path_current

 			fileinput = open(file_path_current, 'r')
			self.current_conditions = pickle.load(fileinput)
			fileinput.close()

			if self.options.verbose == True:
				print >> sys.stdout, "fetching day forecast data from files: ",file_path_dayforecast, file_path_nightforecast

 			fileinput = open(file_path_dayforecast, 'r')
			self.day_forecast = pickle.load(fileinput)
			fileinput.close()

			if self.options.verbose == True:
				print >> sys.stdout, "fetching day forecast data from files: ",file_path_nightforecast, file_path_nightforecast

 			fileinput = open(file_path_nightforecast, 'r')
			self.night_forecast = pickle.load(fileinput)
			fileinput.close()

	def outputData(self):
		#try:

			if self.options.template != None:

				output = self.getOutputTextFromTemplate(self.options.template)

			else:

				output = self.getOutputText(self.options.datatype,self.options.startday,self.options.endday,self.options.night,self.options.shortweekday,self.options.imperial,self.options.hideunits,self.options.spaces)


			print output.encode("utf-8")

		#except:
			#print "outputData:Unexpected error: ", sys.exc_info()[0]

if __name__ == "__main__":

	parser = CommandLineParser()
	(options, args) = parser.parse_args()

	if options.verbose == True:
		print >> sys.stdout, "location:",options.location
		print >> sys.stdout, "imperial:",options.imperial
		print >> sys.stdout, "datatype:",options.datatype
		print >> sys.stdout, "night:",options.night
		print >> sys.stdout, "start day:",options.startday
		print >> sys.stdout, "end day:",options.endday
		print >> sys.stdout, "spaces:",options.spaces
		print >> sys.stdout, "verbose:",options.verbose
		print >> sys.stdout, "refetch:",options.refetch

	# create new global weather object
	weather = GlobalWeather(options)
	weather.fetchData()
	weather.outputData()

- conkyActual.template

Ville:   {--datatype=CN }
Actuellement:   {--locale=es --datatype=CC --startday=0 }
Ce soir:   {--locale=es --datatype=CC --night --startday=0}
Min/Max:   {--datatype=LT --startday=0}/{--datatype=HT}   -   Precipitation:{--datatype=PC --startday=0}

- conky3Days.template

{--datatype=DW --startday=1 --shortweekday}                     {--datatype=DW --startday=2 --shortweekday}                    {--datatype=DW --startday=3 --shortweekday}
{--datatype=LT --startday=1 --hideunits}/{--datatype=HT --startday=1 }              {--datatype=LT --startday=2 --hideunits}/{--datatype=HT --startday=2}             {--datatype=LT --startday=3 --hideunits}/{--datatype=HT --startday=3}
  {--datatype=PC --startday=1}                    {--datatype=PC --startday=2}                    {--datatype=PC --startday=3 }

---> scripts démarrage tout les conky (startconky.sh)

#!/bin/bash
killall conky
sleep 120
conky -c /home/terato/.conkyrc &
conky -c /home/terato/.conkyrcmeteo &
exit

Voili Voilou !!

Si vous avez des suggestions, des questions ou des améliorations a me proposer n'hésiter pas !!


Mon bureau v1//v2//v3//v4

Hors ligne

#1548 Le 02/07/2008, à 22:39

kikislater

Re : Conky : Postez vos conkyrc ou certaines parties intéressantes

ferreol a écrit :

Originaire de ce post je vais poster mon conky quand même  cela fait un baille

http://pix.nofrag.com/8/c/4/871b598c218 … 5a35cc.jpg

Code:
use_xft yes
xftfont DejaVu Sans Mono:size=10
#xftalpha 0.8
update_interval 2.5
total_run_times 0
own_window yes
#own_window_type override #marche pas sous openbox
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
own_window_transparent yes
double_buffer yes
no_buffers yes
background no 
own_window_colour hotpink
#contours des bargraph?
draw_graph_borders no

#largeur maximale de la fenetre  # valeurs identiques pour eviter les bugs
maximum_width 300
#largeur minimale de la fenetre  # du texte de raffraichissement
minimum_size 300
draw_shades no
draw_outline no
draw_borders no
stippled_borders 5
border_margin 0
border_width 0
default_color green
color2 red
color3 white
color4 BDDD32
default_shade_color white
default_outline_color white
alignment top_left
gap_x 45
gap_y 2
uppercase no
cpu_avg_samples 4
net_avg_samples 4
#override_utf8_locale yes
use_spacer no
out_to_console no



TEXT

${font}${color3}playing : ${color}$mpd_title 
${color3}Artist: ${color}$mpd_artist
${color3}Album: ${color}$mpd_album

$color3$mpd_status $color${alignc}${mpd_elapsed} / ${mpd_length}$alignr$mpd_percent%
$color4$mpd_bar
$color3${alignc}Vol : $color${mpd_vol}% - ${color3}Random $color$mpd_random - ${color3}Repeat $color$mpd_repeat

${color4}${font StyleBats:size=30}m    ${color}${font} CPU: ${color3}${cpu cpu1}%  ${freq_g cpu} GHz

${color4}${font StyleBats:size=30}d    ${color}${font} Mem:${color3}$mem  $membar

${color4}${font StyleBats:size=30}5    ${color}${font} Down:${color3}${downspeed ath0} Ko/s   ${color}${alignr}Up: ${color3}${upspeed ath0} Ko/s  ${alignc}${color}Local 

${color4}${font StyleBats:size=30}x    ${color}${font} IP : ${color3}${addr ath0}$alignr${color}

${color4}${font StyleBats:size=30}j    ${font} ${color3}${fs_used /}/${fs_size /}   ${fs_bar}

${color4}${font StyleBats:size=30}o    ${color}${font} Uptime: ${color3}${alignr}${uptime_short}

${color4}${font StyleBats:size=30}r    ${font}${color3}$kernel $machine

Vous faites comment pour avoir des icones ?

Hors ligne

#1549 Le 02/07/2008, à 23:00

terato

Re : Conky : Postez vos conkyrc ou certaines parties intéressantes

kikislater a écrit :
ferreol a écrit :

Originaire de ce post je vais poster mon conky quand même  cela fait un baille

http://pix.nofrag.com/8/c/4/871b598c218 … 5a35cc.jpg

Code:
use_xft yes
xftfont DejaVu Sans Mono:size=10
#xftalpha 0.8
update_interval 2.5
total_run_times 0
own_window yes
#own_window_type override #marche pas sous openbox
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
own_window_transparent yes
double_buffer yes
no_buffers yes
background no 
own_window_colour hotpink
#contours des bargraph?
draw_graph_borders no

#largeur maximale de la fenetre  # valeurs identiques pour eviter les bugs
maximum_width 300
#largeur minimale de la fenetre  # du texte de raffraichissement
minimum_size 300
draw_shades no
draw_outline no
draw_borders no
stippled_borders 5
border_margin 0
border_width 0
default_color green
color2 red
color3 white
color4 BDDD32
default_shade_color white
default_outline_color white
alignment top_left
gap_x 45
gap_y 2
uppercase no
cpu_avg_samples 4
net_avg_samples 4
#override_utf8_locale yes
use_spacer no
out_to_console no



TEXT

${font}${color3}playing : ${color}$mpd_title 
${color3}Artist: ${color}$mpd_artist
${color3}Album: ${color}$mpd_album

$color3$mpd_status $color${alignc}${mpd_elapsed} / ${mpd_length}$alignr$mpd_percent%
$color4$mpd_bar
$color3${alignc}Vol : $color${mpd_vol}% - ${color3}Random $color$mpd_random - ${color3}Repeat $color$mpd_repeat

${color4}${font StyleBats:size=30}m    ${color}${font} CPU: ${color3}${cpu cpu1}%  ${freq_g cpu} GHz

${color4}${font StyleBats:size=30}d    ${color}${font} Mem:${color3}$mem  $membar

${color4}${font StyleBats:size=30}5    ${color}${font} Down:${color3}${downspeed ath0} Ko/s   ${color}${alignr}Up: ${color3}${upspeed ath0} Ko/s  ${alignc}${color}Local 

${color4}${font StyleBats:size=30}x    ${color}${font} IP : ${color3}${addr ath0}$alignr${color}

${color4}${font StyleBats:size=30}j    ${font} ${color3}${fs_used /}/${fs_size /}   ${fs_bar}

${color4}${font StyleBats:size=30}o    ${color}${font} Uptime: ${color3}${alignr}${uptime_short}

${color4}${font StyleBats:size=30}r    ${font}${color3}$kernel $machine

Vous faites comment pour avoir des icones ?

Il s'agit d'une police, mais a la place de lettre il y a des symboles.

Pour les telecharger:

http://www.dafont.com/fr/

Ce site rassemble un nombre incroyable de polices.

Comme tu peux le constater la police permettant d'affiché ces "logo" dans le conky est: StyleBats

Pour telecharger cette police clic ici

Ensuite pour installer la police:

Décompresse l'archive précedement telecharger puis,

Alt + F2

tape: gksudo nautilus

une fois nautilus en mode root ouvert va dans: /systeme de fichier/usr/share/fonts/truetype/

puis colle dans ce dossier ta police.

Voila ta police est installer, maintenant pour inserer un "logo" dans ton conky rien de plus simple:

par exemple: ${font StyleBats:size=30}b   ${font}

Le b correspond a une image (cf à http://www.dafont.com/fr/style-bats.font)


Voila maintenant il ne te reste plus qu'a mettre en forme ton conky.

J'espere avoir ete clair ! Bonne chance !!

Dernière modification par terato (Le 02/07/2008, à 23:06)


Mon bureau v1//v2//v3//v4

Hors ligne

#1550 Le 02/07/2008, à 23:32

kikislater

Re : Conky : Postez vos conkyrc ou certaines parties intéressantes

C'est très clair merci !

Par contre, j'ai essayé d'affiché un script à la fin, il s'affiche mais il est coupé ...

Voici ce que j'ai rajouté à la fin du fichier :

${color #ffc11f}# BashFR.org :
${color #FFFFFF}${execi 120 ~/.conky/conky_bashfr.sh}

contenu du script :

#!/bin/bash
fortune /usr/share/games/fortunes/bashfr

Donc en fait il faudrait que les citations reviennent à la ligne automatiquement comme quand je lance le script dans le terminal. C'est possible ça ?

D'avance merci

Dernière modification par kikislater (Le 02/07/2008, à 23:35)

Hors ligne