Contenu | Rechercher | Menus

Annonce

L'équipe des administrateurs et modérateurs du forum vous invite à prendre connaissance des nouvelles règles.
En cas de besoin, vous pouvez intervenir dans cette discussion.

Ubuntu 18.04 LTS
Ubuntu-fr propose des clés USB de Ubuntu et toutes ses « saveurs » ainsi qu'un magnifique t-shirt pour cette toute nouvelle version d'Ubuntu !

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.

#551 Le 03/02/2012, à 10:42

ragamatrix

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

Didier-T a écrit :
ragamatrix a écrit :

@Didier-T
Salut,
J'ai presque réussi à faire tourner l'animation meteo gif, mais la carte est coupée en deux et je ne peux pas "killer" ce conky.Je dois fermer ma session pour la faire disparaitre.
J'ai fais deux conky pour lancer ça :
http://pix.toile-libre.org/upload/origi … 197558.png

conkyrc_sat_gif :

# temps pour fermer conky en seconde. 0 = toujours actif 
total_run_times 0

# affiche le texte sur la sortie standard
out_to_console no

# réglage de la mémoire, pour éviter le clignotement
double_buffer yes
# Soustraire les mémoires tampons de la mémoire utilisée
no_buffers yes
text_buffer_size 2048




# taux de rafraichissement de la fenêtre (en secondes)
update_interval 1

# nombre d'échantillons à utiliser pour calculer la moyenne d'utilisation
cpu_avg_samples 4
net_avg_samples 4

# taille et positon
alignment tm
minimum_size 5 5
maximum_width 700

# écart avec le bord x=gauche ou droit y= haut ou bas
gap_x 0
gap_y 10

#  afficher les ombres
draw_shades yes
# afficher des contours
draw_outline no
# contours autour des blocs de texte
draw_borders no
# largeur du contour
border_width 1
# largeur des marges
#border_margin 4

#pour que conky tourne en arrière plan background no pour les tests
background no

# utiliser sa propre fenêtre
own_window yes
#type de fenêtre : normal(avec le cadre) / override / desktop
own_window_type override # normal / override / desktop
#pseudo transparence si vous avez des icones sous le conky elle ne seront plus accessible une fois conky activé
own_window_transparent yes

# Utiliser Xft (polices lissées etc)
use_xft yes
#xftalpha .1
#override_utf8_locale yes # force UTF8

#police a utiliser : use_xft doit être a "yes"
xftfont Comic sans MS:size=8
xftalpha 0.8
# Tout le texte en majuscule
uppercase no

# Ajoute des espaces après certains objets pour éviter de les faire bouger.
# Fonctionne uniquement avec les polices Fixes
use_spacer right

# Taille de la jauge par défault
default_gauge_size 0 10

# Couleurs
default_color FFFFFF #blanc
default_shade_color 333333
default_outline_color black

color1 e49c16 
color2 CA0000 #rouge

color6 EEEEEE
color7 DDDDDD
color8 CCCCCC
color9 BBBBBB

TEXT


#${color red}${font Bitstream Vera Sans Mono:style=Bold:size=14}Météo ${hr 2}${font}
#${color white}${font Comic sans MS:size=14}

${execi 300 ~/conky/script/images2.sh} 

conkyrc_sat_gif_2 :

# temps pour fermer conky en seconde. 0 = toujours actif 
total_run_times 0

# affiche le texte sur la sortie standard
out_to_console no

# réglage de la mémoire, pour éviter le clignotement
double_buffer no
# Soustraire les mémoires tampons de la mémoire utilisée
no_buffers yes
text_buffer_size 1024

# taux de rafraichissement de la fenêtre (en secondes)
update_interval 1 # 2100 max

# nombre d'échantillons à utiliser pour calculer la moyenne d'utilisation
cpu_avg_samples 2
net_avg_samples 2

# taille et positon
alignment tm
minimum_size 310 0
maximum_width 310

# écart avec le bord x=gauche ou droit y= haut ou bas
gap_x -5
gap_y 420

#pour que conky tourne en arrière plan background no pour les tests
background no

# utiliser sa propre fenêtre
own_window yes
#type de fenêtre : normal(avec le cadre) / override / desktop
own_window_type normal # normal / override / desktop
#pseudo transparence si vous avez des icones sous le conky elle ne seront plus accessible une fois conky activé
own_window_transparent yes
own_window_hints undecorated,below,skip_taskbar,skip_pager
own_window_title conkyanimate

# Utiliser Xft (polices lissées etc)
use_xft yes
#xftalpha .1
#override_utf8_locale yes # force UTF8

#police a utiliser : use_xft doit être a "yes"
xftfont Comic sans MS:size=8
xftalpha 0.8
# Tout le texte en majuscule
uppercase no

# Ajoute des espaces après certains objets pour éviter de les faire bouger.
# Fonctionne uniquement avec les polices Fixes
use_spacer right

# Taille de la jauge par défault
default_gauge_size 0 100

# Couleurs
default_color FFFFFF #blanc
default_shade_color 333333
default_outline_color black

color1 e49c16 
color2 CA0000 #rouge

color6 EEEEEE
color7 DDDDDD
color8 CCCCCC
color9 BBBBBB

TEXT
${voffset 177}${if_updatenr 2}${exec animate -window $(xwininfo -name "conkyanimate" |grep xwininfo |awk '{ print $4 }') -delay 10 -pause 1 ~/conky/images/Traitee/*.jpg}${endif}  

Merci si tu peux m'expliquer...;)

alors tu ne peut pas killer ton conky car animate tant empêche, en fait ces animate que tu doit killer.
si ton image est couper en deux c'est que ton conky qui sert d’écran n'est pas aux bonnes dimensions.

il faut jouer sur ces paramètres

minimum_size 310 0
maximum_width 310

dans ton conkyrc_sat_gif_2

edit : il me semble que tu as la possibilité de modifier la taille de l'image dans le images2.sh

Salut,
pour cette animation j'ai modifié la taille de l'image qui est à l'origine un carré 375x375 en 300x300 dans le script, et dans le conkyrc_sat_gif2 :

# taille et positon
alignment tm
minimum_size 300 0
maximum_width 300 

mais l'image est toujours comme ceci :
gifmeteo
comprends pas ?

Hors ligne

#552 Le 03/02/2012, à 10:57

Phyllinux

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

@ Didier-T

En ce qui me concerne, j'utilise la V3.1 de meteo.lua.
Ce matin, avant d'essayer de faire tourner le baro, j'essaye de régler un petit problème avec cette dernière version. Car, au lancement ce matin, je ne comprends pas pourquoi les données ne sont pas enregistrées dans le répertoire temp ,que j'ai défini dans le meteo.cfg. Et du coup, cela sème la panique pour les faire afficher !


The ship is sinking normally...

Hors ligne

#553 Le 03/02/2012, à 11:05

ragamatrix

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

@Didier-T
Merci pour ton aide,je pars et reviens lundi,pour replonger dans le "conkyworld" wink

Hors ligne

#554 Le 03/02/2012, à 11:10

Didier-T

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

Phyllinux a écrit :

@ Didier-T

En ce qui me concerne, j'utilise la V3.1 de meteo.lua.
Ce matin, avant d'essayer de faire tourner le baro, j'essaye de régler un petit problème avec cette dernière version. Car, au lancement ce matin, je ne comprends pas pourquoi les données ne sont pas enregistrées dans le répertoire temp ,que j'ai défini dans le meteo.cfg. Et du coup, cela sème la panique pour les faire afficher !

J'ai eut le problème ce matin en regardant le script de canou.
c'est au niveau de la lunaison qu'était le problème.
je pensait que le site se mettrait à jour tous seul un peut plus tard dans la matinée, mais je vois que ce n'est pas le cas.
je bosse jusqu’à midi cette apres midi je ferais une petite mise à jour qui règleras le problème.
ce seras la 3.11 wink

Hors ligne

#555 Le 03/02/2012, à 11:12

Didier-T

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

ragamatrix a écrit :
Didier-T a écrit :
ragamatrix a écrit :

@Didier-T
Salut,
J'ai presque réussi à faire tourner l'animation meteo gif, mais la carte est coupée en deux et je ne peux pas "killer" ce conky.Je dois fermer ma session pour la faire disparaitre.
J'ai fais deux conky pour lancer ça :
http://pix.toile-libre.org/upload/origi … 197558.png

conkyrc_sat_gif :

# temps pour fermer conky en seconde. 0 = toujours actif 
total_run_times 0

# affiche le texte sur la sortie standard
out_to_console no

# réglage de la mémoire, pour éviter le clignotement
double_buffer yes
# Soustraire les mémoires tampons de la mémoire utilisée
no_buffers yes
text_buffer_size 2048




# taux de rafraichissement de la fenêtre (en secondes)
update_interval 1

# nombre d'échantillons à utiliser pour calculer la moyenne d'utilisation
cpu_avg_samples 4
net_avg_samples 4

# taille et positon
alignment tm
minimum_size 5 5
maximum_width 700

# écart avec le bord x=gauche ou droit y= haut ou bas
gap_x 0
gap_y 10

#  afficher les ombres
draw_shades yes
# afficher des contours
draw_outline no
# contours autour des blocs de texte
draw_borders no
# largeur du contour
border_width 1
# largeur des marges
#border_margin 4

#pour que conky tourne en arrière plan background no pour les tests
background no

# utiliser sa propre fenêtre
own_window yes
#type de fenêtre : normal(avec le cadre) / override / desktop
own_window_type override # normal / override / desktop
#pseudo transparence si vous avez des icones sous le conky elle ne seront plus accessible une fois conky activé
own_window_transparent yes

# Utiliser Xft (polices lissées etc)
use_xft yes
#xftalpha .1
#override_utf8_locale yes # force UTF8

#police a utiliser : use_xft doit être a "yes"
xftfont Comic sans MS:size=8
xftalpha 0.8
# Tout le texte en majuscule
uppercase no

# Ajoute des espaces après certains objets pour éviter de les faire bouger.
# Fonctionne uniquement avec les polices Fixes
use_spacer right

# Taille de la jauge par défault
default_gauge_size 0 10

# Couleurs
default_color FFFFFF #blanc
default_shade_color 333333
default_outline_color black

color1 e49c16 
color2 CA0000 #rouge

color6 EEEEEE
color7 DDDDDD
color8 CCCCCC
color9 BBBBBB

TEXT


#${color red}${font Bitstream Vera Sans Mono:style=Bold:size=14}Météo ${hr 2}${font}
#${color white}${font Comic sans MS:size=14}

${execi 300 ~/conky/script/images2.sh} 

conkyrc_sat_gif_2 :

# temps pour fermer conky en seconde. 0 = toujours actif 
total_run_times 0

# affiche le texte sur la sortie standard
out_to_console no

# réglage de la mémoire, pour éviter le clignotement
double_buffer no
# Soustraire les mémoires tampons de la mémoire utilisée
no_buffers yes
text_buffer_size 1024

# taux de rafraichissement de la fenêtre (en secondes)
update_interval 1 # 2100 max

# nombre d'échantillons à utiliser pour calculer la moyenne d'utilisation
cpu_avg_samples 2
net_avg_samples 2

# taille et positon
alignment tm
minimum_size 310 0
maximum_width 310

# écart avec le bord x=gauche ou droit y= haut ou bas
gap_x -5
gap_y 420

#pour que conky tourne en arrière plan background no pour les tests
background no

# utiliser sa propre fenêtre
own_window yes
#type de fenêtre : normal(avec le cadre) / override / desktop
own_window_type normal # normal / override / desktop
#pseudo transparence si vous avez des icones sous le conky elle ne seront plus accessible une fois conky activé
own_window_transparent yes
own_window_hints undecorated,below,skip_taskbar,skip_pager
own_window_title conkyanimate

# Utiliser Xft (polices lissées etc)
use_xft yes
#xftalpha .1
#override_utf8_locale yes # force UTF8

#police a utiliser : use_xft doit être a "yes"
xftfont Comic sans MS:size=8
xftalpha 0.8
# Tout le texte en majuscule
uppercase no

# Ajoute des espaces après certains objets pour éviter de les faire bouger.
# Fonctionne uniquement avec les polices Fixes
use_spacer right

# Taille de la jauge par défault
default_gauge_size 0 100

# Couleurs
default_color FFFFFF #blanc
default_shade_color 333333
default_outline_color black

color1 e49c16 
color2 CA0000 #rouge

color6 EEEEEE
color7 DDDDDD
color8 CCCCCC
color9 BBBBBB

TEXT
${voffset 177}${if_updatenr 2}${exec animate -window $(xwininfo -name "conkyanimate" |grep xwininfo |awk '{ print $4 }') -delay 10 -pause 1 ~/conky/images/Traitee/*.jpg}${endif}  

Merci si tu peux m'expliquer...;)

alors tu ne peut pas killer ton conky car animate tant empêche, en fait ces animate que tu doit killer.
si ton image est couper en deux c'est que ton conky qui sert d’écran n'est pas aux bonnes dimensions.

il faut jouer sur ces paramètres

minimum_size 310 0
maximum_width 310

dans ton conkyrc_sat_gif_2

edit : il me semble que tu as la possibilité de modifier la taille de l'image dans le images2.sh

Salut,
pour cette animation j'ai modifié la taille de l'image qui est à l'origine un carré 375x375 en 300x300 dans le script, et dans le conkyrc_sat_gif2 :

# taille et positon
alignment tm
minimum_size 300 0
maximum_width 300 

mais l'image est toujours comme ceci :
http://pix.toile-libre.org/upload/origi … 258372.png
comprends pas ?

tu pourras afficher une image tel qu'elle doit s’afficher ainsi que ces dimensions sur le site.

A+ bon weekend

Hors ligne

#556 Le 03/02/2012, à 11:38

Phyllinux

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

Didier-T a écrit :
Phyllinux a écrit :

@ Didier-T

En ce qui me concerne, j'utilise la V3.1 de meteo.lua.
Ce matin, avant d'essayer de faire tourner le baro, j'essaye de régler un petit problème avec cette dernière version. Car, au lancement ce matin, je ne comprends pas pourquoi les données ne sont pas enregistrées dans le répertoire temp ,que j'ai défini dans le meteo.cfg. Et du coup, cela sème la panique pour les faire afficher !

J'ai eut le problème ce matin en regardant le script de canou.
c'est au niveau de la lunaison qu'était le problème.
je pensait que le site se mettrait à jour tous seul un peut plus tard dans la matinée, mais je vois que ce n'est pas le cas.
je bosse jusqu’à midi cette apres midi je ferais une petite mise à jour qui règleras le problème.
ce seras la 3.11 wink

En ce qui me concerne, ce n'est pas que la mise à jour des données lune qui pose problème.
C'est qu'avec la 3.1, quel que soit le répertoire déclaré d'enregistrement des fichiers dans le meteo.cfg, rien ne se passe. Je n'ai aucun fichier CondCour, Prevision, Lunaison qui ne s'enregistre dans aucun répertoire que je déclare.
Le conky récupère donc les anciennes valeurs par défaut.
Comme je n'ai pas gardé de sauvegarde de la V3, je ne peux pas voir si mon problème vient effectivement du changement de version ou pas.
J'attends ta MAJ pour voir si le problème est réglé.


The ship is sinking normally...

Hors ligne

#557 Le 03/02/2012, à 14:43

jpdipsy

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

Phyllinux a écrit :

Comme je n'ai pas gardé de sauvegarde de la V3, je ne peux pas voir si mon problème vient effectivement du changement de version ou pas.
J'attends ta MAJ pour voir si le problème est réglé.

Tiens voilou la 3

-- Créé par Didier-T (forum.ubuntu-fr.org)
-- Nécessite imagemagick http://apt.ubuntu.com/p/imagemagick



require "io"
require "os"
local Version = "v3"
local conditionJour = {}
local conditionNuit = {}
local InfoJour = {}
local conditioncourante = {}
local Rep, cmd, jours, delais, r, repsauv, l

--Traduction date
function trad_date(d)
    local date = d
    date = string.gsub(date, "Monday", "Lundi")
    date = string.gsub(date, "Tuesday", "Mardi")
    date = string.gsub(date, "Wednesday", "Mercredi")
    date = string.gsub(date, "Thursday", "Jeudi")
    date = string.gsub(date, "Friday", "Vendredi")
    date = string.gsub(date, "Saturday", "Samedi")
    date = string.gsub(date, "Sunday", "Dimanche")

    date = string.gsub(date, "Mon", "Lun")
    date = string.gsub(date, "Tue", "Mar")
    date = string.gsub(date, "Wed", "Mer")
    date = string.gsub(date, "Thu", "Jeu")
    date = string.gsub(date, "Fri", "Ven")
    date = string.gsub(date, "Sat", "Sam")
    date = string.gsub(date, "Sun", "Dim")
    
    date = string.gsub(date, "January", "Janvier")
    date = string.gsub(date, "February", "Février")
    date = string.gsub(date, "March", "Mars")
    date = string.gsub(date, "April", "Avril")
    date = string.gsub(date, "May", "Mai")
    date = string.gsub(date, "June", "Juin")
    date = string.gsub(date, "July", "Juillet")
    date = string.gsub(date, "August", "Août")
    date = string.gsub(date, "September", "Septembre")
    date = string.gsub(date, "October", "Octobre")
    date = string.gsub(date, "November", "Novembre")
    date = string.gsub(date, "December", "Décembre")
    
    date = string.gsub(date, "Feb", "Fév")
    date = string.gsub(date, "Apr", "Avr")
    date = string.gsub(date, "May", "Mai")
    date = string.gsub(date, "Jun", "Juin")
    date = string.gsub(date, "Jul", "Juil")
    date = string.gsub(date, "Aug", "Aoû")
    date = string.gsub(date, "Dec", "Déc")
        
    return date
end

--Vérifier l'existence d'un fichier
function existe(file) 
  local a = io.open(file, "r")
  local present
  if a then
    present = true
    io.close(a)
  else
    present = false
  end
  return present
end

--Formatage des accents
function accent(ligne)

    ligne = string.gsub(ligne, "ô", "ô")
    ligne = string.gsub(ligne, "é", "é")
    ligne = string.gsub(ligne, "è", "è")
    ligne = string.gsub(ligne, "à", "à")
    ligne = string.gsub(ligne, "ç", "ç")
    ligne = string.gsub(ligne, "ê", "ê")
    ligne = string.gsub(ligne, "ö", "ö")
    ligne = string.gsub(ligne, "î", "î")
    ligne = string.gsub(ligne, "ï", "ï")
    ligne = string.gsub(ligne, "û", "û")
    ligne = string.gsub(ligne, "ü", "ü")
    ligne = string.gsub(ligne, "'", "'")

    return ligne
end

--Prévision
function prevision(fichier)
    local iconej, iconen, Tmax, Tmin, Tmaxr, Tminr, ProbPrecj, ProbPrecn, Vdirj, Vdirn, Vforcej, Vforcen, Vrafalesj, Vrafalesn, Descriptifj, Descriptifn, UV, ProbOragesj, ProbOragesn, Precj, Precn, Pluiej, Pluien, Neigej, Neigen, Verglasj, Verglasn, Datej, LeverSoleil, CoucherSoleil, parse, pos1, pos2, LeverSoleilH, LeverSoleilM, CoucherSoleilH, CoucherSoleilM
    local file = assert(io.open(fichier, "rb") )
    local line = file:read()
    for line in file:lines() do
        if string.find(line, '"details"') ~= nil then
            parse = 1
        end
        if parse == 1 then
            if string.find(line, 'class="icon i-') ~= nil then
                pos1 = string.find(line, '-')+1
                pos2 = string.find(line, '"', pos1)-1
                if iconej == nil then
                    iconej = string.sub(line, pos1, pos2)
                else
                    iconen = string.sub(line, pos1, pos2)
                end
            elseif string.find(line, '"temp"') ~= nil then
                pos1 = string.find(line, '"temp"')+7
                pos2 = string.find(line, '<', pos1)-1
                if Tmax == nil then
                    Tmax = string.sub(line, pos1, pos2)
                else
                    Tmin = string.sub(line, pos1, pos2)
                end
            elseif string.find(line, 'RealFeel&#174;') ~= nil then
                pos1 = string.find(line, ';')+2
                pos2 = string.find(line, '&', pos1)-1
                if Tmaxr == nil then
                    Tmaxr = string.sub(line, pos1, pos2)
                else
                    Tminr = string.sub(line, pos1, pos2)
                end
            elseif string.find(line, 'cipitations ') ~= nil then
                pos1 = string.find(line, 's ')+2
                pos2 = string.find(line, '<', pos1)-1
                if ProbPrecj == nil then
                    ProbPrecj = string.sub(line, pos1, pos2)
                    ProbPrecj = ProbPrecj:match("(%d+)")
                else
                    ProbPrecn = string.sub(line, pos1, pos2)
                    ProbPrecn = ProbPrecn:match("(%d+)")
                end
            elseif string.find(line, 'var d') ~= nil then
                pos1 = string.find(line, "'")+1
                pos2 = string.find(line, "'", pos1)-1
                if Vdirj == nil then
                    Vdirj = string.gsub(string.sub(line, pos1, pos2), "W", "O")
                else
                    Vdirn = string.gsub(string.sub(line, pos1, pos2), "W", "O")
                end
            elseif string.find(line, 'var s') ~= nil then
                pos1 = string.find(line, "'")+1
                pos2 = string.find(line, "'", pos1)-1
                if Vforcej == nil then
                    Vforcej = string.sub(line, pos1, pos2)
                    Vforcej = Vforcej:match("(%d+)")
                else
                    Vforcen = string.sub(line, pos1, pos2)
                    Vforcen = Vforcen:match("(%d+)")
                end
            elseif string.find(line, 'Rafales') ~= nil then
                pos1 = string.find(line, ">")+2
                pos2 = string.find(line, " ", pos1)-1
                if Vrafalesj == nil then
                    Vrafalesj = string.sub(line, pos1, pos2)
                    Vrafalesj = Vrafalesj:match("(%d+)")
                    if Vrafalesj == nil then Vrafalesj = Vforcen end
                else
                    Vrafalesn = string.sub(line, pos1, pos2)
                    Vrafalesn = Vrafalesn:match("(%d+)")
                    if Vrafalesn == nil then Vrafalesn = Vforcej end
                end
            elseif Descriptifn == nil and string.find(line, '<p>') ~= nil then
                pos1 = string.find(line, ">")+1
                pos2 = string.find(line, "<", pos1)-1
                if Descriptifj == nil then
                    Descriptifj = string.sub(line, pos1, pos2)
                    Descriptifj = accent(Descriptifj)
                    local troplong = string.find(Descriptifj, ";")
                    if troplong ~= nil then
                        Descriptifj = string.sub(Descriptifj, "1", troplong-1)
                    end
                else
                    Descriptifn = string.sub(line, pos1, pos2)
                    Descriptifn = accent(Descriptifn)
                    local troplong = string.find(Descriptifn, ";")
                    if troplong ~= nil then
                        Descriptifn = string.sub(Descriptifn, "1", troplong-1)
                    end
                end
            elseif string.find(line, 'UV') ~= nil then
                pos1 = string.find(line, "g>")+2
                pos2 = string.find(line, "<", pos1)-1
                if UV == nil then
                    UV = string.sub(line, pos1, pos2)
                end
            elseif string.find(line, 'Orages') ~= nil then
                pos1 = string.find(line, '">')+2
                pos2 = string.find(line, "<", pos1)-1
                if ProbOragesj == nil then
                    ProbOragesj = string.sub(line, pos1, pos2)
                    ProbOragesj = ProbOragesj:match("(%d+)")
                else
                    ProbOragesn = string.sub(line, pos1, pos2)
                    ProbOragesn = ProbOragesn:match("(%d+)")
                end
            elseif string.find(line, 'cipitations:') ~= nil then
                pos1 = string.find(line, 'g>')+2
                pos2 = string.find(line, " ", pos1)-1
                if Precj == nil then
                    Precj = string.sub(line, pos1, pos2)
                else
                    Precn = string.sub(line, pos1, pos2)
                end
            elseif string.find(line, 'Pluie:') ~= nil then
                pos1 = string.find(line, '">')+2
                pos2 = string.find(line, " ", pos1)-1
                if Pluiej == nil then
                    Pluiej = string.sub(line, pos1, pos2)
                else
                    Pluien = string.sub(line, pos1, pos2)
                end
            elseif string.find(line, 'Neige:') ~= nil then
                pos1 = string.find(line, '">')+2
                pos2 = string.find(line, " ", pos1)-1
                if Neigej == nil then
                    Neigej = string.sub(line, pos1, pos2)
                else
                    Neigen = string.sub(line, pos1, pos2)
                end
            elseif string.find(line, 'Verglas:') ~= nil then
                pos1 = string.find(line, '">')+2
                pos2 = string.find(line, " ", pos1)-1
                if Verglasj == nil then
                    Verglasj = string.sub(line, pos1, pos2)
                else
                    Verglasn = string.sub(line, pos1, pos2)
                end
            elseif string.find(line, 'Historique ') ~= nil then
                pos1 = string.find(line, '- ')+2
                pos2 = string.find(line, "<", pos1)-1
                Datej = string.sub(line, pos1, pos2)
                local j, m, a = Datej:match("(%d+)/(%d+)/(%d+)")
                Datej = os.time{year=a, month=m, day=j, hour=0}
            elseif string.find(line, 'start"') ~= nil then
                pos1 = string.find(line, '>')+1
                pos2 = string.find(line, "<", pos1)-1
                if LeverSoleil == nil then
                    LeverSoleil = string.sub(line, pos1, pos2)
                    LeverSoleilH, LeverSoleilM = LeverSoleil:match("(%d+):(%d+)")
                end
            elseif string.find(line, 'finish"') ~= nil then
                pos1 = string.find(line, '>')+1
                pos2 = string.find(line, "<", pos1)-1
                if CoucherSoleil == nil then
                    CoucherSoleil = string.sub(line, pos1, pos2)
                    CoucherSoleilH, CoucherSoleilM = CoucherSoleil:match("(%d+):(%d+)")
                    CoucherSoleilH = CoucherSoleilH+12
                end
            end
        end
    end
    io.close(file)

-- Retour condition jour, condition nuit, infos journée
    return { Icone=iconej, CondMeteo=Descriptifj, Temp=Tmax, TempRes=Tmaxr, ProbPrec=ProbPrecj, VentDir=Vdirj, VentForce=Vforcej, VentRafales=Vrafalesj, Uv=UV, ProbOrage=ProbOragesj, NivPrec=Precj, QPluie=Pluiej, QNeige=Neigej, EVerglas=Verglasj }, { Icone=iconen, CondMeteo=Descriptifn, Temp=Tmin, TempRes=Tminr, ProbPrec=ProbPrecn, VentDir=Vdirn, VentForce=Vforcen, VentRafales=Vrafalesn, ProbOrage=ProbOragesn, NivPrec=Precn, QPluie=Pluien, QNeige=Neigen, EVerglas=Verglasn }, { Jour=Datej, LeverSoleil=LeverSoleil, LeverSoleilH=LeverSoleilH, LeverSoleilM=LeverSoleilM, CoucherSoleil=CoucherSoleil, CoucherSoleilH=CoucherSoleilH, CoucherSoleilM=CoucherSoleilM }

end


--Infos condition courante
function current(fichier)
    local pos1, pos2, icone, Descriptif, Temp, Tempr, Vdir, Vforce, Humidite, Pression, Couverture, UV, Rosee, Prec, Visibilite, Date, Ville, latitude, longitude, geo, parse
    local file = assert(io.open(fichier, "rb") )
    local line = file:read()
    geo = nil
    parse = nil

    for line in file:lines() do
        if string.find(line, '"details"') ~= nil then
            parse = 1
        end
        if parse == 1 then
            if string.find(line, 'class="icon i-') ~= nil then
                pos1 = string.find(line, '-')+1
                pos2 = string.find(line, '"', pos1)-1
                icone = string.sub(line, pos1, pos2)
            elseif string.find(line, '"cond"') ~= nil then
                pos1 = string.find(line, '"cond"')+7
                pos2 = string.find(line, '<', pos1)-1
                Descriptif = string.sub(line, pos1, pos2)
                Descriptif = accent(Descriptif)
                pos1 = string.find(line, '"temp"')+7
                pos2 = string.find(line, '<', pos1)-1
                Temp = string.sub(line, pos1, pos2)
                pos1 = string.find(line, '; ')+2
                pos2 = string.find(line, '<', pos1)-1
                Tempr = string.sub(line, pos1, pos2)
            elseif string.find(line, 'var d') ~= nil then
                pos1 = string.find(line, "'")+1
                pos2 = string.find(line, "'", pos1)-1
                Vdir = string.gsub(string.sub(line, pos1, pos2), "W", "O")
            elseif string.find(line, 'var s') ~= nil then
                pos1 = string.find(line, "'")+1
                pos2 = string.find(line, "'", pos1)-1
                Vforce = string.sub(line, pos1, pos2)
                Vforce = Vforce:match("(%d+)")
            elseif string.find(line, 'Humidit') ~= nil then
                pos1 = string.find(line, "g>")+2
                pos2 = string.find(line, "<", pos1)-1
                Humidite = string.sub(line, pos1, pos2)
                Humidite = Humidite:match("(%d+)")
            elseif string.find(line, 'Pression') ~= nil then
                pos1 = string.find(line, "g>")+2
                pos2 = string.find(line, "k", pos1)-1
                Pression = string.sub(line, pos1, pos2)*10
            elseif string.find(line, 'Couverture') ~= nil then
                pos1 = string.find(line, "g>")+2
                pos2 = string.find(line, "<", pos1)-1
                Couverture = string.sub(line, pos1, pos2)
                Couverture = Couverture:match("(%d+)")
            elseif string.find(line, 'UV') ~= nil then
                pos1 = string.find(line, "g>")+2
                pos2 = string.find(line, "<", pos1)-1
                UV = string.sub(line, pos1, pos2)
            elseif string.find(line, 'Point') ~= nil then
                pos1 = string.find(line, "g>")+2
                pos2 = string.find(line, "&", pos1)-1
                Rosee = string.sub(line, pos1, pos2)
            elseif string.find(line, 'cipitations') ~= nil then
                pos1 = string.find(line, "g>")+2
                pos2 = string.find(line, " ", pos1)-1
                Prec = string.sub(line, pos1, pos2)
            elseif string.find(line, 'Visibilit') ~= nil then
                pos1 = string.find(line, 'g>')+2
                pos2 = string.find(line, " ", pos1)-1
                Visibilite = string.sub(line, pos1, pos2)
            elseif string.find(line, 'Historique ') ~= nil then
                pos1 = string.find(line, '- ')+2
                pos2 = string.find(line, "<", pos1)-1
                Date = string.sub(line, pos1, pos2)
                local j, m, a = Date:match("(%d+)/(%d+)/(%d+)")
                Date = os.time{year=a, month=m, day=j, hour=0}
            elseif string.find(line, 'latitude') ~= nil then
                geo = 1
            elseif string.find(line, 'title" ') ~= nil then
                pos1 = string.find(line, 'e="')+3
                pos2 = string.find(line, '"', pos1)-1
                if Ville == nil then
                    Ville = accent(string.sub(line, pos1, pos2))
                end
                if geo ~= nil then
                    if latitude ~= nil then
                        longitude = string.sub(line, pos1, pos2)
                    end
                    if latitude == nil then
                        latitude = string.sub(line, pos1, pos2)
                    end
                end
            end
        end
    end
    io.close(file)

--Retour condition courante
    return {Icone=icone, Cond=Descriptif, Temp=Temp, Tempr=Tempr, VentDir=Vdir, VentForce=Vforce, Humidite=Humidite, Pression=Pression, CouvNuage=Couverture, Uv=UV, PointRosee=Rosee, QPrec=Prec, Visibilite=Visibilite, Date=Date, Ville=Ville, latitude=latitude, longitude=longitude}
end


--Infos lunaison
function lune(r)

    s = "${exec wget -q -O "..r.."/cal_lunaire http://www.calendrier-lunaire.net/}"
    conky_parse( s )

    local file = assert(io.open(r..'/cal_lunaire', "rb") )
    local line = file:read()

    for line in file:lines() do
        local pos1 = string.find(line, '">')
        local pos2 = string.find(line, "</", pos1)
        if string.find(line, "ephemerides_1") ~= nil then
            pos1 =    string.find(line, 'src="')
            pos2 = string.find(line, '" /')
            s = "${exec wget -q -O "..r.."/lune.png http://www.calendrier-lunaire.net/"..string.sub(line, pos1+5, pos2-1).."}"
            conky_parse( s )
            conky_parse( "${exec convert "..r.."/lune.png -transparent '#091a2a' "..r.."/lune.png}" )
        elseif string.find(line, "<h2>") ~= nil then
            ephemerides1 = string.sub(line, pos1+2, pos2-1)
            local pos3 = string.find(line, 'n>', pos2)
            local pos4 = string.find(line, "</", pos2+3)
            ephemerides2 = string.sub(line, pos3+3, pos4-1)
            ephemerides = ephemerides1.." "..ephemerides2
        elseif string.find(line, "Visibilit") ~= nil then
            Visibilite = string.sub(line, pos1+2, pos2-3)
        elseif string.find(line, "Phases") ~= nil then
            Phases = string.gsub(string.sub(line, pos1+2, pos2-1), "&eacute;", "é")
            local pos3 = string.find(Phases, ',')
            Phases1 = string.sub(Phases, 0, pos3-1)
            Phases2 = string.sub(Phases, pos3+2)
        elseif string.find(line, "Noeud lunaire") ~= nil then
            local a = string.gsub(string.sub(line, pos1+2, pos2-1), "Dans ", "")
            Noeud_lunaire = string.gsub(a, " Jours", "")
        elseif string.find(line, "Apog") ~= nil then
            local a = string.gsub(string.sub(line, pos1+2, pos2-1), "Dans ", "")
            Apogee = string.gsub(a, " Jours", "")
        elseif string.find(line, "Perig") ~= nil then
            local a = string.gsub(string.sub(line, pos1+2, pos2-1), "Dans ", "")
            Perigee = string.gsub(a, " Jours", "")
        elseif string.find(line, "Distance") ~= nil then
            Distance = string.sub(line, pos1+2, pos2-4)
        elseif string.find(line, "Age de la Lune") ~= nil then
            Age = string.sub(line, pos1+2, pos2-1)
        elseif string.find(line, "La Lune se") ~= nil then
            local a = string.sub(line, pos1+2, pos2-1)
            pos3 = string.find(a, ":")
            Lever_LuneHeure = string.sub(a, 0, pos3-1)
            Lever_LuneMinute = string.sub(a, pos3+1)
        local pos3 = string.find(line, '">', pos2)
            local pos4 = string.find(line, "</", pos3+3)
            a = string.sub(line, pos3+2, pos4-1)
            local pos5 = string.find(a, ":")
            Coucher_LuneHeure = string.sub(a, 0, pos5-1)
            Coucher_LuneMinute = string.sub(a, pos5+1)
        elseif string.find(line, "eclipse_partielle") ~= nil then
            local pos3 = string.find(line, '">', pos1+3)
            local a = string.gsub(string.sub(line, pos3+2, pos2-1), "<br />", "à")
            Eclipse_partielle = a
        elseif string.find(line, "eclipse_totale") ~= nil then
            local pos3 = string.find(line, '">', pos1+3)
            local a = string.gsub(string.sub(line, pos3+2, pos2-1), "<br />", "à")
            Eclipse_total = a
        end
    end
    io.close(file)

end


--Détermine icône vent
function direction_vent(i)

    if i == "Calme" then
        return 0
    elseif i == "N" then
        return 10
    elseif i == "NNE" then
        return 11
    elseif i == "NE" then
        return 12
    elseif i == "ENE" then
        return 13
    elseif i == "E" then
        return 14
    elseif i == "ESE" then
        return 15
    elseif i == "SE" then
        return 16
    elseif i == "SSE" then
        return 17
    elseif i == "S" then
        return 2
    elseif i == "SSO" then
        return 3
    elseif i == "SO" then
        return 4
    elseif i == "OSO" then
        return 5
    elseif i == "O" then
        return 6
    elseif i == "ONO" then
        return 7
    elseif i == "NO" then
        return 8
    elseif i == "NNO" then
        return 9
    else
        return 1
    end

end


--Renvoi vent direction pleine en toute lettre
function vent_plein(d)

    local b

    if string.len(d) == 1 then
        if string.find(d, "N") ~= nil then 
            b = string.gsub(d, "N", "Nord") 
        elseif string.find(d, "S") ~= nil then 
            b = string.gsub(d, "S", "Sud") 
        elseif string.find(d, "E") ~= nil then
            b = string.gsub(d, "E", "Est") 
        elseif string.find(d, "O") ~= nil then
            b = string.gsub(d, "O", "Ouest")
        end
    else
        b = d
    end

    return b

end


--Détermine l'icône vent en tenant conte de la force du vent
function icone_vent(d, fo)

    local f = tonumber(fo)
    local n

    if f <= 25 then
        n = d
    elseif f <= 50 then
        n = d + 17
    elseif f <= 75 then
        n = d + 34
    elseif f >= 76 then
        n = d + 51
    end

    if n <= 9 then 
        n = "0"..n
    end

    return n..".png"

end


--Découpage descriptions sur deux lignes
function decoupage(d)

    local l1, l2, n, p1, p2, n1, n2, l1b, l2b
    if string.len(d) >= 22 then
        n = math.ceil(string.len(d)/2)
        p1 = string.find(d, " ", n)
        p2 = string.find(d, " ", -n)
        if p1 >= p2 then
            l1b = string.sub(d, 1, p2-1)
            l2b = string.sub(d, p2+1)
        else
            l1b = string.sub(d, 1, p1-1)
            l2b = string.sub(d, p1+1)
        end
    else
        l1b = d
        l2b = " "
    end
    n1 = math.ceil((22 - string.len(l1b))/2)
    l1 = string.rep(" ", n1)..l1b 
    n2 = math.ceil((22 - string.len(l2b))/2)
    l2 = string.rep(" ", n2)..l2b 

--Retour information avec espaces ligne 1 & 2 et sans espaces ligne 1 & 2
    return l1, l2, l1b, l2b

end


--Traitement infos prévisions (15 jours max) jour 1 = aujourd'hui
function jour_n(a, j, x)

    local i = j+x
    local s = '${exec wget -q --load-cookies '..Rep..'/cookie -O '..Rep..'/details'..j..' '..a..'?day='..i..'}'
    conky_parse( s )


    conditionJour[j], conditionNuit[j], InfoJour[j] = prevision(Rep..'/details'..j)
    if conditionJour[j].VentDir == "CLM" then
        conditionJour[j].VentDir = "Calme"
        conditionJour[j].VentForce = "0"
    end
    conditionJour[j].VentIcone = icone_vent(direction_vent(conditionJour[j].VentDir), conditionJour[j].VentForce)
    conditionJour[j].RafalesIcone = icone_vent(direction_vent(conditionJour[j].VentDir), conditionJour[j].VentRafales)
    conditionJour[j].VentP = vent_plein(conditionJour[j].VentDir)
    conditionJour[j].CondMeteo1, conditionJour[j].CondMeteo2, conditionJour[j].CondMeteo1se, conditionJour[j].CondMeteo2se = decoupage(conditionJour[j].CondMeteo)

    if conditionNuit[j].VentDir == "Calme" then
        conditionNuit[j].VentForce = "0"
    end
    conditionNuit[j].VentIcone = icone_vent(direction_vent(conditionNuit[j].VentDir), conditionNuit[j].VentForce)
    conditionNuit[j].RafalesIcone = icone_vent(direction_vent(conditionNuit[j].VentDir), conditionNuit[j].VentRafales)
    conditionNuit[j].VentP = vent_plein(conditionNuit[j].VentDir)
    conditionNuit[j].CondMeteo1, conditionNuit[j].CondMeteo2, conditionNuit[j].CondMeteo1se, conditionNuit[j].CondMeteo2se = decoupage(conditionNuit[j].CondMeteo)


end

--initialisation paramètres
function conky_init(cfg)

    local home = os.getenv("HOME")
    cfg = string.gsub(cfg, "~", home)
    cfg = string.gsub(cfg, "$HOME", home)
    
    local file = assert(io.open(cfg, "rb") )
    local line = file:read()
    for line in file:lines() do
        pos1 = string.find(line, '=')
        if string.find(line, 'repsauv=') ~= nil then
            repsauv = string.sub(line, pos1+1)
        elseif string.find(line, 'TempShell=') ~= nil then
            r = string.sub(line, pos1+1)
        elseif string.find(line, 'web=') ~= nil then
            cmd = string.sub(line, pos1+1)
        elseif string.find(line, 'periode=') ~= nil then
            jours = string.sub(line, pos1+1)
        elseif string.find(line, 'update=') ~= nil then
            delais = string.sub(line, pos1+1)
        end
    end
    io.close(file)    
    r = string.gsub(r, "~", home)
    r = string.gsub(r, "$HOME", home)
    repsauv = string.gsub(repsauv, "~", home)
    repsauv = string.gsub(repsauv, "$HOME", home)
    repsauv = repsauv.."/"

print(cmd, " - ", jours, " - ", delais, " - ", r, " - ", repsauv)
--Création répertoire de travail
    l = cmd:match("(%d+)")
    
    local bar, bar1
    local l1 = string.gsub(cmd, '/'..l, "" )
    local b = 1
    while bar1 == nil do
        b = b+1
        bar1 = string.find(l1, '/', -b)
    end
    l1 = string.sub(l1, bar1+1)
    Rep = r.."/"..l1.."/"..l
    if os.execute("cd "..Rep) ~= 0 then
        os.execute("mkdir "..r.."/"..l1)
        os.execute("mkdir "..Rep)
    end
    
--initialisation compteurs
    t = os.time()-delais
    t1 = t
    start = 1
    
--Vérification existence repsauv
    local repsauv1 = string.sub(repsauv, 1, -2)
    if os.execute("cd "..repsauv1) ~= 0 then
--création de repsauv si inexistant
        local pos1 = 1
        local chemin = nil
        local cheminsup = nil
        while pos1 ~= nil do
            pos1 = string.find(repsauv1, '/', pos1+1)
            if pos1 ~= nil then
                cheminsup = string.sub(repsauv1, pos1)
                chemin = string.gsub(repsauv1, cheminsup, "")
            else
                cheminsup = ""
                chemin = repsauv1
            end
            if os.execute("cd "..chemin) ~= 0 then
                os.execute("mkdir "..chemin)
            end
        end
    end
    
    if not existe(repsauv.."CondCour") then
        conky_Meteo_enligne()
    end
    
end

--Mise à jour condition courante et initialisation météo
function conky_Meteo_Maj()

    local s = '${if_gw}${lua conky_Meteo_enligne}${else}${lua conky_Meteo_horsligne}${endif}'
    conky_parse( s )
    return " "
end

--hors ligne récupération de données
function conky_Meteo_horsligne()

    if tonumber(delais) <= os.difftime(os.time(), t1) then
--Récupération dernière condition courante
        local file = assert(io.open(repsauv.."CondCour", "r") )
        local line = file:read()
        local i = 0
        local donee = {}
        for line in file:lines() do
            i = i+1
            donee[i] = line
        end
        conditioncourante.Icone = donee[1]
        conditioncourante.Tempr = donee[2]
        conditioncourante.Temp = donee[3]
        conditioncourante.Cond = donee[4]
        conditioncourante.CondMeteo1 = donee[5]
        conditioncourante.CondMeteo2 = donee[6]
        conditioncourante.CondMeteo1se = donee[7]
        conditioncourante.CondMeteo2se = donee[8]
        conditioncourante.VentDir = donee[9]
        conditioncourante.VentPlein = donee[10]
        conditioncourante.VentForce = donee[11]
        conditioncourante.VentIcone = donee[12]
        conditioncourante.Humidite = donee[13]
        conditioncourante.PointRosee = donee[14]
        conditioncourante.Pression = donee[15]
        conditioncourante.Visibilite = donee[16]
        conditioncourante.Date = donee[17]
        conditioncourante.Ville = donee[18]
        conditioncourante.CouvNuage = donee[19]
        conditioncourante.Uv = donee[20]
        conditioncourante.QPrec = donee[21]
        conditioncourante.latitude = donee[22]
        conditioncourante.longitude = donee[23]
        time = donee[24]
        io.close(file)
--Récupération prévision
        for j = 1,jours do
            local file = assert(io.open(repsauv.."prevision"..j, "r"))
            local line = file:read()
            local i = 0
            local donee = {}
            for line in file:lines() do
                i = i+1
                donee[i] = line
            end
            conditionJour[j] = {}
            conditionJour[j].CondMeteo = donee[1]
            conditionJour[j].CondMeteo1 = donee[2]
            conditionJour[j].CondMeteo2 = donee[3]
            conditionJour[j].CondMeteo1se = donee[4]
            conditionJour[j].CondMeteo2se = donee[5]
            conditionJour[j].Temp = donee[6]
            conditionJour[j].TempRes = donee[7]
            conditionJour[j].ProbPrec = donee[8]
            conditionJour[j].VentDir = donee[9]
            conditionJour[j].VentP = donee[10]
            conditionJour[j].VentForce = donee[11]
            conditionJour[j].VentRafales = donee[12]
            conditionJour[j].Uv = donee[13]
            conditionJour[j].ProbOrage = donee[14]
            conditionJour[j].NivPrec = donee[15]
            conditionJour[j].QPluie = donee[16]
            conditionJour[j].QNeige = donee[17]
            conditionJour[j].Icone = donee[18]
            conditionJour[j].VentIcone = donee[19]
            conditionJour[j].RafalesIcone = donee[43]
            conditionJour[j].EVerglas = donee[45]
            conditionNuit[j] = {}
            conditionNuit[j].CondMeteo = donee[20]
            conditionNuit[j].CondMeteo1 = donee[21]
            conditionNuit[j].CondMeteo2 = donee[22]
            conditionNuit[j].CondMeteo1se = donee[23]
            conditionNuit[j].CondMeteo2se = donee[24]
            conditionNuit[j].Temp = donee[25]
            conditionNuit[j].TempRes = donee[26]
            conditionNuit[j].ProbPrec = donee[27]
            conditionNuit[j].VentDir = donee[28]
            conditionNuit[j].VentP = donee[29]
            conditionNuit[j].VentForce = donee[30]
            conditionNuit[j].VentRafales = donee[31]
            conditionNuit[j].ProbOrage = donee[32]
            conditionNuit[j].NivPrec = donee[33]
            conditionNuit[j].QPluie = donee[34]
            conditionNuit[j].QNeige = donee[35]
            conditionNuit[j].Icone = donee[36]
            conditionNuit[j].VentIcone = donee[37]
            conditionNuit[j].RafalesIcone = donee[44]
            conditionNuit[j].EVerglas = donee[46]
            InfoJour[j] = {}
            InfoJour[j].Jour = donee[38]
            InfoJour[j].LeverSoleilH = donee[39]
            InfoJour[j].LeverSoleilM = donee[40]
            InfoJour[j].CoucherSoleilH = donee[41]
            InfoJour[j].CoucherSoleilM = donee[42]
            io.close(file)
        end

--Récupération lunaison
        local file = assert(io.open(repsauv.."lunaison", "r"))
        local line = file:read()
        local i = 0
        local donee = {}
        for line in file:lines() do
            i = i+1
            donee[i] = line
        end
        ephemerides = donee[1]
        ephemerides1 = donee[2]
        ephemerides2 = donee[3]
        Visibilite = donee[4]
        Phases = donee[5]
        Phases1 = donee[6]
        Phases2 = donee[7]
        Noeud_lunaire = donee[8]
        Apogee = donee[9]
        Perigee = donee[10]
        Distance = donee[11]
        Age = donee[12]
        Lever_LuneHeure = donee[13]
        Lever_LuneMinute = donee[14]
        Coucher_LuneHeure = donee[15]
        Coucher_LuneMinute = donee[16]
        Eclipse_partielle = donee[17]
        Eclipse_total = donee[18]
        io.close(file)

        t1 = os.time()
        collectgarbage()
    end
    return "Hors ligne"
end

--en ligne mise à jour
function conky_Meteo_enligne()
    
    if tonumber(delais) <= os.difftime(os.time(), t) then
--        if os.execute("ping -c 1 www.google.com") == 0 then

            conditioncourante.Date = nil
            while conditioncourante.Date == nil do

                local s = '${exec wget -q --save-cookies '..Rep..'/cookie -O '..Rep..'/curr_cond_raw '..cmd..'/current-weather/'..l..'}'
                conky_parse( s )
                
                conditioncourante = current(Rep.."/curr_cond_raw")
                if conditioncourante.VentDir == "CLM" then
                    conditioncourante.VentDir = "Calme"
                    conditioncourante.VentForce = "0"
                end
                conditioncourante.VentIcone = icone_vent(direction_vent(conditioncourante.VentDir), conditioncourante.VentForce)
                conditioncourante.VentPlein = vent_plein(conditioncourante.VentDir)
                conditioncourante.CondMeteo1, conditioncourante.CondMeteo2, conditioncourante.CondMeteo1se, conditioncourante.CondMeteo2se = decoupage(conditioncourante.Cond)
                
        
                t = os.time() 
                time = t

                if 14400 <= os.difftime(os.time(), t) or start == 1 then
                    start = 2
                    local addr_week = cmd..'/daily-weather-forecast/'..l
                    jour_n(addr_week, 1, 0)

                    if conditioncourante.Date == InfoJour[1].Jour then
                        for i = 2,jours do jour_n(addr_week, i, 0) end
                    else
                        for i = 1,jours do jour_n(addr_week, i, 1) end
                    end
                end

            end
            lune(r)
--        end
--lancement sauvegarde
        if repsauv ~= nil then
            sauvegarde()
        end
        collectgarbage()
    end
    return " "
end


--Retour d'information météo

--Condition courrante

function conky_Meteo_IconeM(r, p, s, f)
    if os.date("%H%M", os.time()) <= InfoJour[1].CoucherSoleilH..InfoJour[1].CoucherSoleilM and os.date("%H%M", os.time()) >= "0"..InfoJour[1].LeverSoleilH..InfoJour[1].LeverSoleilM then
        return "${image "..r.."/jour/"..conditioncourante.Icone..".png -p "..p.." -s "..s.." -f "..f.."}"
    else
        return "${image "..r.."/nuit/"..conditioncourante.Icone..".png -p "..p.." -s "..s.." -f "..f.."}"
    end
end

function conky_Meteo_TempRes()
    return conditioncourante.Tempr
end

function conky_Meteo_TempAct()
    return conditioncourante.Temp
end

function conky_Meteo_CondMeteo()
    return conditioncourante.Cond
end

function conky_Meteo_CondMeteo1()
    return conditioncourante.CondMeteo1
end

function conky_Meteo_CondMeteo2()
    return conditioncourante.CondMeteo2
end

function conky_Meteo_CondMeteo1se()
    return conditioncourante.CondMeteo1se
end

function conky_Meteo_CondMeteo2se()
    return conditioncourante.CondMeteo2se
end

function conky_Meteo_VentDir()
    return conditioncourante.VentDir
end

function conky_Meteo_VentDirP()
    return conditioncourante.VentPlein
end

function conky_Meteo_VentForce()
    return conditioncourante.VentForce
end

function conky_Meteo_IconeV(r, p, s, f)
    return "${image "..r.."/"..conditioncourante.VentIcone.." -p "..p.." -s "..s.." -f "..f.."}"
end

function conky_Meteo_Humidite()
    return tonumber(conditioncourante.Humidite)
end

function conky_Meteo_Rose()
    return tonumber(conditioncourante.PointRosee)
end

function conky_Meteo_Pression()
    return tonumber(conditioncourante.Pression)
end

function conky_Meteo_Visibilite()
    return tonumber(conditioncourante.Visibilite)
end

function conky_Meteo_Date(format)
    format = string.gsub(format, "_", " ")
    return trad_date(os.date(format, conditioncourante.Date))
end

function conky_Meteo_Ville()
    return conditioncourante.Ville
end

function conky_Meteo_CouvNuage()
    return conditioncourante.CouvNuage
end

function conky_Meteo_Uv()
    return conditioncourante.Uv
end

function conky_Meteo_QPrec()
    return conditioncourante.QPrec
end

function conky_Meteo_latitude()
    return conditioncourante.latitude
end

function conky_Meteo_longitude()
    return conditioncourante.longitude
end

function conky_Meteo_Heure()
    return os.date("%H", time)
end

function conky_Meteo_Minute()
    return os.date("%M", time)
end

--Prévision Météo

--Jour

function conky_Meteo_Jour_CondMeteo(j)
    return conditionJour[tonumber(j)].CondMeteo
end

function conky_Meteo_Jour_CondMeteo1(j)
    return conditionJour[tonumber(j)].CondMeteo1
end

function conky_Meteo_Jour_CondMeteo2(j)
    return conditionJour[tonumber(j)].CondMeteo2
end

function conky_Meteo_Jour_CondMeteo1se(j)
    return conditionJour[tonumber(j)].CondMeteo1se
end

function conky_Meteo_Jour_CondMeteo2se(j)
    return conditionJour[tonumber(j)].CondMeteo2se
end

function conky_Meteo_Jour_Temp(j)
    return tonumber(conditionJour[tonumber(j)].Temp)
end

function conky_Meteo_Jour_TempRes(j)
    return tonumber(conditionJour[tonumber(j)].TempRes)
end

function conky_Meteo_Jour_ProbPrec(j)
    return tonumber(conditionJour[tonumber(j)].ProbPrec)
end

function conky_Meteo_Jour_VentDir(j)
    return conditionJour[tonumber(j)].VentDir
end

function conky_Meteo_Jour_VentDirP(j)
    return conditionJour[tonumber(j)].VentP
end

function conky_Meteo_Jour_VentForce(j)
    return tonumber(conditionJour[tonumber(j)].VentForce)
end

function conky_Meteo_Jour_VentRafales(j)
    return tonumber(conditionJour[tonumber(j)].VentRafales)
end

function conky_Meteo_Jour_Uv(j)
    return tonumber(conditionJour[tonumber(j)].Uv)
end

function conky_Meteo_Jour_ProbOrage(j)
    return tonumber(conditionJour[tonumber(j)].ProbOrage)
end

function conky_Meteo_Jour_NivPrec(j)
    return tonumber(conditionJour[tonumber(j)].NivPrec)
end

function conky_Meteo_Jour_QPluie(j)
    return tonumber(conditionJour[tonumber(j)].QPluie)
end

function conky_Meteo_Jour_QNeige(j)
    return tonumber(conditionJour[tonumber(j)].QNeige)
end

function conky_Meteo_Jour_EVerglas(j)
    return tonumber(conditionJour[tonumber(j)].EVerglas)
end

function conky_Meteo_Jour_IconeM(r, p, s, f, j)
    return "${image "..r.."/jour/"..conditionJour[tonumber(j)].Icone..".png -p "..p.." -s "..s.." -f "..f.."}"
end

function conky_Meteo_Jour_IconeV(r, p, s, f, j)
    return "${image "..r.."/"..conditionJour[tonumber(j)].VentIcone.." -p "..p.." -s "..s.." -f "..f.."}"
end

function conky_Meteo_Jour_IconeR(r, p, s, f, j)
    return "${image "..r.."/"..conditionJour[tonumber(j)].RafalesIcone.." -p "..p.." -s "..s.." -f "..f.."}"
end


--Nuit

function conky_Meteo_Nuit_CondMeteo(j)
    return conditionNuit[tonumber(j)].CondMeteo
end

function conky_Meteo_Nuit_CondMeteo1(j)
    return conditionNuit[tonumber(j)].CondMeteo1
end

function conky_Meteo_Nuit_CondMeteo2(j)
    return conditionNuit[tonumber(j)].CondMeteo2
end

function conky_Meteo_Nuit_CondMeteo1se(j)
    return conditionNuit[tonumber(j)].CondMeteo1se
end

function conky_Meteo_Nuit_CondMeteo2se(j)
    return conditionNuit[tonumber(j)].CondMeteo2se
end

function conky_Meteo_Nuit_Temp(j)
    return tonumber(conditionNuit[tonumber(j)].Temp)
end

function conky_Meteo_Nuit_TempRes(j)
    return tonumber(conditionNuit[tonumber(j)].TempRes)
end

function conky_Meteo_Nuit_ProbPrec(j)
    return tonumber(conditionNuit[tonumber(j)].ProbPrec)
end

function conky_Meteo_Nuit_VentDir(j)
    return conditionNuit[tonumber(j)].VentDir
end

function conky_Meteo_Nuit_VentDirP(j)
    return conditionNuit[tonumber(j)].VentP
end

function conky_Meteo_Nuit_VentForce(j)
    return tonumber(conditionNuit[tonumber(j)].VentForce)
end

function conky_Meteo_Nuit_VentRafales(j)
    return tonumber(conditionNuit[tonumber(j)].VentRafales)
end

function conky_Meteo_Nuit_ProbOrage(j)
    return tonumber(conditionNuit[tonumber(j)].ProbOrage)
end

function conky_Meteo_Nuit_NivPrec(j)
    return tonumber(conditionNuit[tonumber(j)].NivPrec)
end

function conky_Meteo_Nuit_QPluie(j)
    return tonumber(conditionNuit[tonumber(j)].QPluie)
end

function conky_Meteo_Nuit_QNeige(j)
    return tonumber(conditionNuit[tonumber(j)].QNeige)
end

function conky_Meteo_Nuit_EVerglas(j)
    return tonumber(conditionNuit[tonumber(j)].EVerglas)
end

function conky_Meteo_Nuit_IconeM(r, p, s, f, j)
    return "${image "..r.."/nuit/"..conditionNuit[tonumber(j)].Icone..".png -p "..p.." -s "..s.." -f "..f.."}"
end

function conky_Meteo_Nuit_IconeV(r, p, s, f, j)
    return "${image "..r.."/"..conditionNuit[tonumber(j)].VentIcone.." -p "..p.." -s "..s.." -f "..f.."}"
end

function conky_Meteo_Nuit_IconeR(r, p, s, f, j)
    return "${image "..r.."/"..conditionNuit[tonumber(j)].RafalesIcone.." -p "..p.." -s "..s.." -f "..f.."}"
end


--Infos sur la journée

function conky_Meteo_Jour(format, j)
    format = string.gsub(format, "_", " ")
    return trad_date(os.date(format, InfoJour[tonumber(j)].Jour))
end

function conky_Meteo_HLeverSoleil(j)
    return InfoJour[tonumber(j)].LeverSoleilH
end

function conky_Meteo_MLeverSoleil(j)
    return InfoJour[tonumber(j)].LeverSoleilM
end

function conky_Meteo_HCoucherSoleil(j)
    return InfoJour[tonumber(j)].CoucherSoleilH
end

function conky_Meteo_MCoucherSoleil(j)
    return InfoJour[tonumber(j)].CoucherSoleilM
end

function conky_Meteo_HDureeJour(j)
    return os.date("%H", ((((InfoJour[tonumber(j)].CoucherSoleilH*3600)-3600)+(InfoJour[tonumber(j)].CoucherSoleilM*60))-(((InfoJour[tonumber(j)].LeverSoleilH*3600))+(InfoJour[tonumber(j)].LeverSoleilM*60))))
end

function conky_Meteo_MDureeJour(j)
    return os.date("%M", ((((InfoJour[tonumber(j)].CoucherSoleilH*3600)-3600)+(InfoJour[tonumber(j)].CoucherSoleilM*60))-(((InfoJour[tonumber(j)].LeverSoleilH*3600))+(InfoJour[tonumber(j)].LeverSoleilM*60))))
end

--Lunaison

function conky_Lune_ephemerides()
    return ephemerides
end

function conky_Lune_ephemerides1()
    return ephemerides1
end

function conky_Lune_ephemerides2()
    return ephemerides2
end

function conky_Lune_Visibilite()
    return Visibilite
end

function conky_Lune_Phases()
    return Phases
end

function conky_Lune_Phases1()
    return Phases1
end

function conky_Lune_Phases2()
    return Phases2
end

function conky_Lune_Noeudlunaire()
    return Noeud_lunaire
end

function conky_Lune_Apogee()
    return Apogee
end

function conky_Lune_Perigee()
    return Perigee
end

function conky_Lune_Distance()
    return Distance
end

function conky_Lune_Age()
    return Age
end

function conky_Lune_HLeverLune()
    return Lever_LuneHeure
end

function conky_Lune_MLeverLune()
    return Lever_LuneMinute
end

function conky_Lune_HCoucherLune()
    return Coucher_LuneHeure
end

function conky_Lune_MCoucherLune()
    return Coucher_LuneMinute
end

function conky_Lune_EclipsePartielle()
    return Eclipse_partielle
end

function conky_Lune_EclipseTotal()
    return Eclipse_total
end

function conky_Version()
    return Version
end

--Sauvegarde des données
function sauvegarde()

--Sauvegarde condition courante
    local file = assert(io.open(repsauv.."CondCour", "w+") )
    file:write ("\n", conditioncourante.Icone, "\n")
    file:write (conditioncourante.Tempr, "\n")
    file:write (conditioncourante.Temp, "\n")
    file:write (conditioncourante.Cond, "\n")
    file:write (conditioncourante.CondMeteo1, "\n")
    file:write (conditioncourante.CondMeteo2, "\n")
    file:write (conditioncourante.CondMeteo1se, "\n")
    file:write (conditioncourante.CondMeteo2se, "\n")
    file:write (conditioncourante.VentDir, "\n")
    file:write (conditioncourante.VentPlein, "\n")
    file:write (conditioncourante.VentForce, "\n")
    file:write (conditioncourante.VentIcone, "\n")
    file:write (conditioncourante.Humidite, "\n")
    file:write (conditioncourante.PointRosee, "\n")
    file:write (conditioncourante.Pression, "\n")
    file:write (conditioncourante.Visibilite, "\n")
    file:write (conditioncourante.Date, "\n")
    file:write (conditioncourante.Ville, "\n")
    file:write (conditioncourante.CouvNuage, "\n")
    file:write (conditioncourante.Uv, "\n")
    file:write (conditioncourante.QPrec, "\n")
    file:write (conditioncourante.latitude, "\n")
    file:write (conditioncourante.longitude, "\n")
    file:write (time, "\n")
    io.close(file)

--sauvegarde prévision
    for j = 1,jours do
        local file = assert(io.open(repsauv.."prevision"..j, "w+"))
        file:write ("\n", conditionJour[j].CondMeteo, "\n")
        file:write (conditionJour[j].CondMeteo1, "\n")
        file:write (conditionJour[j].CondMeteo2, "\n")
        file:write (conditionJour[j].CondMeteo1se, "\n")
        file:write (conditionJour[j].CondMeteo2se, "\n")
        file:write (conditionJour[j].Temp, "\n")
        file:write (conditionJour[j].TempRes, "\n")
        file:write (conditionJour[j].ProbPrec, "\n")
        file:write (conditionJour[j].VentDir, "\n")
        file:write (conditionJour[j].VentP, "\n")
        file:write (conditionJour[j].VentForce, "\n")
        file:write (conditionJour[j].VentRafales, "\n")
        file:write (conditionJour[j].Uv, "\n")
        file:write (conditionJour[j].ProbOrage, "\n")
        file:write (conditionJour[j].NivPrec, "\n")
        file:write (conditionJour[j].QPluie, "\n")
        file:write (conditionJour[j].QNeige, "\n")
        file:write (conditionJour[j].Icone, "\n")
        file:write (conditionJour[j].VentIcone, "\n")
        file:write (conditionNuit[j].CondMeteo, "\n")
        file:write (conditionNuit[j].CondMeteo1, "\n")
        file:write (conditionNuit[j].CondMeteo2, "\n")
        file:write (conditionNuit[j].CondMeteo1se, "\n")
        file:write (conditionNuit[j].CondMeteo2se, "\n")
        file:write (conditionNuit[j].Temp, "\n")
        file:write (conditionNuit[j].TempRes, "\n")
        file:write (conditionNuit[j].ProbPrec, "\n")
        file:write (conditionNuit[j].VentDir, "\n")
        file:write (conditionNuit[j].VentP, "\n")
        file:write (conditionNuit[j].VentForce, "\n")
        file:write (conditionNuit[j].VentRafales, "\n")
        file:write (conditionNuit[j].ProbOrage, "\n")
        file:write (conditionNuit[j].NivPrec, "\n")
        file:write (conditionNuit[j].QPluie, "\n")
        file:write (conditionNuit[j].QNeige, "\n")
        file:write (conditionNuit[j].Icone, "\n")
        file:write (conditionNuit[j].VentIcone, "\n")
        file:write (InfoJour[j].Jour, "\n")
        file:write (InfoJour[j].LeverSoleilH, "\n")
        file:write (InfoJour[j].LeverSoleilM, "\n")
        file:write (InfoJour[j].CoucherSoleilH, "\n")
        file:write (InfoJour[j].CoucherSoleilM, "\n")
        file:write (conditionJour[j].RafalesIcone, "\n")
        file:write (conditionNuit[j].RafalesIcone, "\n")
        file:write (conditionJour[j].EVerglas, "\n")
        file:write (conditionNuit[j].EVerglas, "\n")
        io.close(file)
    end

--sauvegarde lunaison
    local file = assert(io.open(repsauv.."lunaison", "w+"))
    file:write ("\n", ephemerides, "\n")
    file:write (ephemerides1, "\n")
    file:write (ephemerides2, "\n")
    file:write (Visibilite, "\n")
    file:write (Phases, "\n")
    file:write (Phases1, "\n")
    file:write (Phases2, "\n")
    file:write (Noeud_lunaire, "\n")
    file:write (Apogee, "\n")
    file:write (Perigee, "\n")
    file:write (Distance, "\n")
    file:write (Age, "\n")
    file:write (Lever_LuneHeure, "\n")
    file:write (Lever_LuneMinute, "\n")
    file:write (Coucher_LuneHeure, "\n")
    file:write (Coucher_LuneMinute, "\n")
    file:write (Eclipse_partielle, "\n")
    file:write (Eclipse_total, "\n")
    io.close(file)
end

Chez moi pas de souci de sauvegard avec la 3.1

Hors ligne

#558 Le 03/02/2012, à 14:45

carpediem

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

Phyllinux a écrit :
Didier-T a écrit :
Phyllinux a écrit :

@ Didier-T

En ce qui me concerne, j'utilise la V3.1 de meteo.lua.
Ce matin, avant d'essayer de faire tourner le baro, j'essaye de régler un petit problème avec cette dernière version. Car, au lancement ce matin, je ne comprends pas pourquoi les données ne sont pas enregistrées dans le répertoire temp ,que j'ai défini dans le meteo.cfg. Et du coup, cela sème la panique pour les faire afficher !

J'ai eut le problème ce matin en regardant le script de canou.
c'est au niveau de la lunaison qu'était le problème.
je pensait que le site se mettrait à jour tous seul un peut plus tard dans la matinée, mais je vois que ce n'est pas le cas.
je bosse jusqu’à midi cette apres midi je ferais une petite mise à jour qui règleras le problème.
ce seras la 3.11 wink

En ce qui me concerne, ce n'est pas que la mise à jour des données lune qui pose problème.
C'est qu'avec la 3.1, quel que soit le répertoire déclaré d'enregistrement des fichiers dans le meteo.cfg, rien ne se passe. Je n'ai aucun fichier CondCour, Prevision, Lunaison qui ne s'enregistre dans aucun répertoire que je déclare.
Le conky récupère donc les anciennes valeurs par défaut.
Comme je n'ai pas gardé de sauvegarde de la V3, je ne peux pas voir si mon problème vient effectivement du changement de version ou pas.
J'attends ta MAJ pour voir si le problème est réglé.

Salut à tous, j'ai rencontré le même problème ce matin avec le barograph, les données étais figées, "ligne continue" "version lua v2.6b beta", apparemment le fichier CondCour ne se mettait pas à jour ??? après quelques bidouilles j'ai viré le fichier CondCour et tout relancer. et comme par enchantement tous fonctionne à nouveau roll

Cordialement carpediem


"Carpe diem quam minimum credula postero"
(Cueille le jour présent, en te fiant le moins possible au lendemain.)
HORACE

Hors ligne

#559 Le 03/02/2012, à 15:02

Phyllinux

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

jpdipsy a écrit :
Phyllinux a écrit :

Comme je n'ai pas gardé de sauvegarde de la V3, je ne peux pas voir si mon problème vient effectivement du changement de version ou pas.
J'attends ta MAJ pour voir si le problème est réglé.

Tiens voilou la 3

Chez moi pas de souci de sauvegard avec la 3.1

OK, merci beaucoup.

Je confirme donc,cela tourne bien avec la V3. En revanche, avec la 3.1, pas de sauvegarde qui s'effectue, et donc, j'ai un conky sans affichage de données, et message d'erreurs en console.
En revanche, en downgradant à V3, tout rentre dans l'ordre.


The ship is sinking normally...

Hors ligne

#560 Le 03/02/2012, à 15:21

Phyllinux

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

Didier-T a écrit :

@ ragamatrix et Phyllinux,

c'est étrange comme message, sa signifie que vous n'avez pas de retour de conky sur une demande d'information du script lua.
pour déboguer ont vas faire ceci.
ont ajoute un print

avant ajout ligne 222 à 234

function go_gauge_rings(display)
    local function load_gauge_rings(display, data)
        local str, value = '', 0
        str = string.format('${%s %s}',data['name'], data['arg'])
        str = conky_parse(str)
        value = tonumber(str)
        draw_gauge_ring(display, data, value)
    end
    
    for i in pairs(gauge) do
        load_gauge_rings(display, gauge[i])
    end
end

après ajout

function go_gauge_rings(display)
    local function load_gauge_rings(display, data)
        local str, value = '', 0
        str = string.format('${%s %s}',data['name'], data['arg'])
        str = conky_parse(str)
print(data['name'], data['arg'], "= ", str)
        value = tonumber(str)
        draw_gauge_ring(display, data, value)
    end
    
    for i in pairs(gauge) do
        load_gauge_rings(display, gauge[i])
    end
end

Edit : au fait je viens de regarder le conkyrc-baro et du coups je me demande, vous utilisez qu'elle version de meteo.lua tous les deux ???



Voila, suite au retour à la V3, et que cela tourne correctement, voici ce que donne le retour du print sur les lignes concernées :

conky -c /home/gilles/conky/barometre/Baro/conkyrc-baro
Conky: forked to background, pid is 20130
gilles@UbuntuDesktop:~$ 
Conky: desktop window (1e00095) is subwindow of root window (b8)
Conky: window type - override
Conky: drawing to created window (0x5000001)
Conky: drawing to double buffer
http://www.accuweather.com/fr/fr/marseille/170960     -     7     -     1800     -     /tmp     -     /home/gilles/meteotemp/
cpu        =     
Conky: llua_do_call: function conky_main execution failed: /home/gilles/conky/barometre/Baro/baro.lua:145: attempt to perform arithmetic on local 'value' (a nil value)
cpu        =     9 
lua    Meteo_Pression    =     1015
lua    Meteo_TempRes    =     -9
lua    Meteo_TempAct    =     0
cpu        =     7 
lua    Meteo_Pression    =     1015
lua    Meteo_TempRes    =     -9
lua    Meteo_TempAct    =     0
cpu        =     6 
lua    Meteo_Pression    =     1015
lua    Meteo_TempRes    =     -9
lua    Meteo_TempAct    =     0
cpu        =     7

Il y a donc bien un retour sur la demande du script, et les pression, T° actuelle et ressentie sont bien récupérées.
En revanche, si je le lance, sans la commande print, j'ai toujours le message d'erreur :

Conky: llua_do_call: function conky_main execution failed: /home/gilles/conky/barometre/Baro/baro.lua:145: attempt to perform arithmetic on local 'value' (a nil value)

La ligne 145 en question, se trouve dans la partie
Arc of value

local val = (value-sub_value) % (max_value + 1)

The ship is sinking normally...

Hors ligne

#561 Le 03/02/2012, à 15:30

Didier-T

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

@ tous,
les désagréments de ce matin venaient bien des infos lunaison, pour êtres précis du fait que deux données manquaient lever lune et coucher lune. Donc lua plantait pendant la mise à jour et n'allais pas jusqu’à la sauvegarde des données.
j'avais réglé ce problème ce matin avant de partir au travail, mais par manque de temps, ne l'avais pas posté sur le site.

Ce sera donc la 3.11.

Hors ligne

#562 Le 03/02/2012, à 16:06

Didier-T

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

@ Phyllinux,

regarde bien le soucis est la.

...
cpu        =     
Conky: llua_do_call: function conky_main execution failed: /home/gilles/conky/barometre/Baro/baro.lua:145: attempt to perform arithmetic on local 'value' (a nil value)

tu vois juste avant le message d'erreur, le retour de cpu est nul, donc message d'erreur, mais au second cycle plus de problème.
il y a deux solution soit tu laisse comme c'est et tu t’habitue à avoir ce message d'erreur, soit tu modifie la variable cpu avec autre chose par exemple

    name='exec',                arg='echo "1"',                      max_value=1060, sub_value=960,

de toute façons cette variable sert juste à créer un fond (celui en arc de cercle) pour l'aiguille du baromètre. donc la valeur renvoyé est sans importance

Dernière modification par Didier-T (Le 03/02/2012, à 16:11)

Hors ligne

#563 Le 03/02/2012, à 16:23

Phyllinux

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

OK, merci beaucoup. Je pense que je vais faire avec le message d'erreur du script baro que je ne lance pas en console en dehors du travail sur le conkyrc.

Tout semble bon maintenant.

Une petite proposition, pour affiner le changement de couleur des icônes du vent.
L'échelle de 25 Km/H est un peu large pour avoir des changements de couleurs.
Je te propose d'appliquer celle que j'utilise de mon côté :
Jusqu'à 20 Km/H : Vert (icônes de 1 à 17)
De 21 à 35 : Jaune (de 18 à 34)
De 36 à 50 : Orange (de 35 à 51)
Supérieur à 50 : Rouge (de 52 à 68)
Cela permet de varier les icônes du vent, notamment avec la prise en compte de la force des rafales dans le script actuel.
Tu pourras toujours l'intégrer, si tu le veux, dans une version future.


The ship is sinking normally...

Hors ligne

#564 Le 03/02/2012, à 16:34

Didier-T

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

@ Phyllinux,
pourquoi pas, après tout.

Dernière modification par Didier-T (Le 03/02/2012, à 18:07)

Hors ligne

#565 Le 03/02/2012, à 20:11

Phyllinux

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

@ carpediem

Comment faire pour changer la couleur des dates du graphe de pression ?
J'ai réussi à changer toutes les couleurs, car mon fond d'écran est plutôt sombre par rapport au tien qui est très clair.
En revanche, pour l'affichage du graphe, je ne vois pas où l'on déclare les couleurs (que ce soit celle des dates ou celles des graphiques de pression et température)


The ship is sinking normally...

Hors ligne

#566 Le 04/02/2012, à 11:45

carpediem

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

Phyllinux a écrit :

@ carpediem

Comment faire pour changer la couleur des dates du graphe de pression ?
J'ai réussi à changer toutes les couleurs, car mon fond d'écran est plutôt sombre par rapport au tien qui est très clair.
En revanche, pour l'affichage du graphe, je ne vois pas où l'on déclare les couleurs (que ce soit celle des dates ou celles des graphiques de pression et température)

@Phyllinux
Je ne pense pas que l'on puisse changer la couleur des dates et de la grille. Par contre tu peux y inséré un fond clair


1328348485.png  1328348531.png


"Carpe diem quam minimum credula postero"
(Cueille le jour présent, en te fiant le moins possible au lendemain.)
HORACE

Hors ligne

#567 Le 04/02/2012, à 19:54

shamen456

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

Phyllinux a écrit :

@ carpediem

Comment faire pour changer la couleur des dates du graphe de pression ?
J'ai réussi à changer toutes les couleurs, car mon fond d'écran est plutôt sombre par rapport au tien qui est très clair.
En revanche, pour l'affichage du graphe, je ne vois pas où l'on déclare les couleurs (que ce soit celle des dates ou celles des graphiques de pression et température)

Hello a tous...

Chapeau pour le travail accompli sur les conky relatifs à la meteo...
Désolé de ne pas me joindre a vous dans les adaptations des Baro et autres graphes, mais pour le moment c'est un peu la folie coté boulot.. et donc pas le temps de me replonger dans les scripts...

Pour Phyllinux : Je crois que ça doit être possible en modifiant certains paramètres lorsque tu appelles gnuplot (comme c'est le cas pour la couleur et l’épaisseur du trait que j'avais trouvé dans la documentation de gnuplot lors de l’intégration des T° en plus de la pression sur le graphe)...

Par contre pour l'affichage des dates j'avoue que perso j'avais appliqué la solution que préconise carpediem, a savoir un simple rectangle blanc sous le graphe...

a toi de voir...


Bon conky a Tous...

Hors ligne

#568 Le 04/02/2012, à 20:49

Phyllinux

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

@ carpediem et shamen456

C'est effectivement la solution que j'ai retenu, ne réussissant pas à trouver le changement direct de couleur des abscisses.
Et, ma foi, c'est aussi bien comme cela. wink

slection015.th.png

Uploaded with ImageShack.us

En revanche, j'ai un petit décalage des graphes par rapport au cadre comme on peut le voir sur la photo.
Le trait du 0° va jusqu'au bout, alors que ceux des T° et pression, non.


The ship is sinking normally...

Hors ligne

#569 Le 06/02/2012, à 11:06

ragamatrix

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

@Didier-T

Salut,
merci, le week-end était beau mais glacial comme partout en europe.
Je te réponds concernant le script et les images météo_gif, pour la taille des images dans le script :

 wget 'http://wofrance.fr/cgi-bin/getpicture?/daten/sat/im02/'$Anee'/'$Moi'/'$Jour'/'$Heure$Minute1'.jpg' --output-document=$Anee$Moi$Jour$Heure$Minute1.jpg
            if (( $(ls -s $Anee$Moi$Jour$Heure$Minute1.jpg |awk '{ print $1 }') != 4 ))
                then
                if (( $fichier < 10 ))
                    then
                        convert $Anee$Moi$Jour$Heure$Minute1.jpg -resize 300x300 Traitee/0$fichier.jpg
                    else
                        convert $Anee$Moi$Jour$Heure$Minute1.jpg -resize 300x300 Traitee/$fichier.jpg
                fi
                else
                    rm Traitee/$fichier.jpg
            fi   

taille images conkrc_sat_gif :

 # taille et positon
alignment tm
minimum_size 5 5
maximum_width 700 

(mais je crois que changer la taille dans celui-là ne sert à rien.)

conkyrc_sat_gif2 :

# taille et positon
alignment tm
minimum_size 300 0
maximum_width 300 

Dans le dossier images elles font : 575x575
dans le dossier Traitee elles font bien 320x320
++ Merci

Hors ligne

#570 Le 06/02/2012, à 12:37

ragamatrix

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

@Carpediem
Salut !

J'ai vu qu'il y avait dans ton pack un conkyrc apellant un script perl pour recevoir les mails depuis gmail : "Gaim" mais je n'ai pas trouvé ce script, l'as-tu encore ?
Je voulais aussi savoir comment fais-tu pour mettre un bandeau blanc sous les chiffres dean ton conky graph-pression ?Mon fond d'écran est sombre et je ne vois pas bien ces chiffres :
pression
Merci

Hors ligne

#571 Le 06/02/2012, à 14:33

Didier-T

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

@ ragamatrix,

Il faut que tu joue sur le voffset

TEXT
${voffset 177}${if_updatenr 2}${exec animate -window $(xwininfo -name "conkyanimate" |grep xwininfo |awk '{ print $4 }') -delay 10 -pause 1 ~/conky/images/Traitee/*.jpg}${endif}  

actuellement il est sur 177 peut être en le passant à 260, mais il faut tâtonner pour trouver la bonne valeur.

Hors ligne

#572 Le 06/02/2012, à 15:06

ragamatrix

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

@Didier-T
Merci, j' ai tatonné jusqu'à 275 maintenant c'est correct.

Hors ligne

#573 Le 07/02/2012, à 10:52

carpediem

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

ragamatrix a écrit :

@Carpediem
Salut !

J'ai vu qu'il y avait dans ton pack un conkyrc apellant un script perl pour recevoir les mails depuis gmail : "Gaim" mais je n'ai pas trouvé ce script, l'as-tu encore ?
Je voulais aussi savoir comment fais-tu pour mettre un bandeau blanc sous les chiffres dean ton conky graph-pression ?Mon fond d'écran est sombre et je ne vois pas bien ces chiffres :
http://pix.toile-libre.org/upload/origi … 524451.png
Merci

Tu peux insérer un rectangle blanc pour faire apparaître dates de ton graph

Conkyrc-pression avec rectangle blanc et fond gris

TEXT
${voffset -6}${goto 40}${font chopinscript:size=17}${color black}Pression Atmospherique
${if_gw}${execi 1200 bash /home/claude/conky/barograph/barognuplot.sh }${endif}#
${image /home/claude/conky/barograph/bigpanel3.png -s 320x170 -p -10,10 -n}${image /home/claude/conky/barograph/white.png -s 235x20 -p 5,135 -n}${image /home/claude/conky/barograph/graph2.png -s 270x150 -p -10,10 -n}#
${font Verdana:size=7}#
${color black}#
${voffset -5}${goto 10}  40 C${color black}${goto 250}1040mb
${voffset 13}${goto 10}  20 C${color black}${goto 250}1020mb
${voffset 11}${goto 10}    0 C${color black}${goto 250}1000mb
${voffset 13}${goto 10} -20 C${color black}${goto 250} 980mb
${voffset 8}${goto 250} 960mb

1328604183.png

Script perl pour recevoir les mails depuis gmail

#!/usr/bin/perl

use Switch;
use Text::Wrap;

my $what=$ARGV[0];

$user="carpediem"; #username for gmail account
$pass="mot de passeXXXXX"; #password for gmail account
$file="/tmp/gmail.html"; #temporary file to store gmail

#wrap format for subject
$Text::Wrap::columns=65; #Number of columns to wrap subject at
$initial_tab=""; #Tab for first line of subject
$subsequent_tab="\t"; #tab for wrapped lines
$quote="\""; #put quotes around subject

#limit the number of emails to be displayed
$emails=4; #if -1 display all emails

&passwd; #give password the proper url character encoding

switch($what){ #determine what the user wants
    case "n" {&gmail; print "$new\n";} #print number of new emails
    case "s" { #print $from and $subj for new email
        &gmail;
        if ($new>0){
            my $size=@from;
            if ($emails!=-1 && $size>$emails){$size=$emails;} #limit number of emails displayed
            for(my $i=0; $i<$size; ++$i){
                print "From: $from[$i]\n"; #print from line
                $text=$quote.$subj[$i].$quote."\n";
                print wrap($initial_tab, $subsequent_tab, $text); #print subject with word wrap
            }
            $size=@from;
            if ($emails!=-1 && $size >$emails){print "$emails out of $size new emails displayed\n";}
        }
    }     
    case "e" { #print number of new emails, $from, and $subj
        &gmail;
        if($new==0){print "You have no new emails.\n";}
        else{
            print "You have $new new email(s).\n";
            my $size=@from;
            if ($emails!=-1 && $size>$emails){$size=$emails;} #limit number of emails displayed
            for(my $i=0; $i<$size; ++$i){
                print "From: $from[$i]\n"; #print from line
                $text=$quote.$subj[$i].$quote;
                print wrap($initial_tab, $subsequent_tab, $text); #print subject with word wrap
            }
            $size=@from;
            if ($emails!=-1 && $size >$emails){print "$emails out of $size new emails displayed\n";}
        }
    }
    else {
        print "Usage Error: gmail.pl <option>\n";
        print "\tn displays number of new emails\n";
        print "\ts displays from line and subject line for each new email.\n";
        print "\te displays the number of new emails and from line plus \n";
        print "\t\tsubject line for each new email.\n";
    } #didn't give proper option
}

sub gmail{
    if(!(-e $file)){ #create file if it does not exists
        `touch $file`;
    } 

    #get new emails
    `wget -O - https://$user:$pass\@mail.google.com/mail/feed/atom --no-check-certificate> $file`;

    open(IN, $file); #open $file

    my $i=0; #initialize count
    $new=0; #initialize new emails to 0

    my $flag=0;

    while(<IN>){ #cycle through $file
        if(/<entry>/){$flag=1;}
        elsif(/<fullcount>(\d+)<\/fullcount>/){$new=$1;} #grab number of new emails
        elsif($flag==1){ 
            if(/<title>.+<\/title>/){push(@subj, &msg);} #grab new email titles
            elsif(/<name>(.+)<\/name>/){push(@from, $1); $flag=0;} #grab new email from lines
        }
    }

    close(IN); #close $file
}

sub passwd{ #change to url escape codes in password
    #URL ESCAPE CODES
    $_=$pass;
    s/\%/\%25/g;
    s/\#/\%23/g;
    s/\$/\%24/g;
    s/\&/\%26/g;
    s/\//\%2F/g;
    s/\:/\%3A/g;
    s/\;/\%3B/g;
    s/\</\%3C/g;
    s/\=/\%3D/g;
    s/\>/\%3E/g;
    s/\?/\%3F/g;
    s/\@/\%40/g;
    s/\[/\%5B/g;
    s/\\/\%5C/g;
    s/\]/\%5D/g;
    s/\^/\%5E/g;
    s/\`/\%60/g;
    s/\{/\%7B/g;
    s/\|/\%7C/g;
    s/\}/\%7D/g;
    s/\~/\%7E/g;
    $pass=$_;
}

sub msg{
    #THE HTML CODED CHARACTER SET [ISO-8859-1]
    chomp; s/<title>(.+)<\/title>/$1/; #get just the subject
    #now replace any special characters
    s/\&\#33\;/!/g;        #Exclamation mark
    s/\&\#34\;/"/g; s/\&quot\;/"/g;      #Quotation mark
    s/\&\#35\;/#/g;        #Number sign
    s/\&\#36\;/\$/g;        #Dollar sign
    s/\&\#37\;/%/g;        #Percent sign
    s/\&\#38\;/&/g; s/\&amp\;/&/g;        #Ampersand
    s/\&\#39\;/'/g;        #Apostrophe
    s/\&\#40\;/(/g;        #Left parenthesis
    s/\&\#41\;/)/g;        #Right parenthesis
    s/\&\#42\;/*/g;        #Asterisk
    s/\&\#43\;/+/g;        #Plus sign
    s/\&\#44\;/,/g;        #Comma
    s/\&\#45\;/-/g;        #Hyphen
    s/\&\#46\;/./g;        #Period (fullstop)
    s/\&\#47\;/\//g;        #Solidus (slash)
    s/\&\#58\;/:/g;        #Colon
    s/\&\#59\;/\;/g;        #Semi-colon
    s/\&\#60\;/</g; s/\&lt\;/</g;        #Less than
    s/\&\#61\;/=/g;        #Equals sign
    s/\&\#62\;/>/g; s/\&gt\;/>/g;        #Greater than
    s/\&\#63\;/\?/g;        #Question mark
    s/\&\#64\;/\@/g;        #Commercial at
    s/\&\#91\;/\[/g;        #Left square bracket
    s/\&\#92\;/\\/g;        #Reverse solidus (backslash)
    s/\&\#93\;/\]/g;        #Right square bracket
    s/\&\#94\;/\^/g;        #Caret
    s/\&\#95\;/_/g;        #Horizontal bar (underscore)
    s/\&\#96\;/\`/g;        #Acute accent
    s/\&\#123\;/\{/g;        #Left curly brace
    s/\&\#124\;/|/g;        #Vertical bar
    s/\&\#125\;/\}/g;        #Right curly brace
    s/\&\#126\;/~/g;        #Tilde
    s/\&\#161\;/¡/g;        #Inverted exclamation
    s/\&\#162\;/¢/g;        #Cent sign
    s/\&\#163\;/£/g;        #Pound sterling
    s/\&\#164\;/¤/g;        #General currency sign
    s/\&\#165\;/¥/g;        #Yen sign
    s/\&\#166\;/¦/g;        #Broken vertical bar
    s/\&\#167\;/§/g;        #Section sign
    s/\&\#168\;/¨/g;        #Umlaut (dieresis)
    s/\&\#169\;/©/g; s/\&copy\;/©/g;        #Copyright
    s/\&\#170\;/ª/g;        #Feminine ordinal
    s/\&\#171\;/«/g;        #Left angle quote, guillemotleft
    s/\&\#172\;/¬/g;        #Not sign
    s/\&\#174\;/®/g;        #Registered trademark
    s/\&\#175\;/¯/g;        #Macron accent
    s/\&\#176\;/°/g;        #Degree sign
    s/\&\#177\;/±/g;        #Plus or minus
    s/\&\#178\;/²/g;        #Superscript two
    s/\&\#179\;/³/g;        #Superscript three
    s/\&\#180\;/´/g;        #Acute accent
    s/\&\#181\;/µ/g;        #Micro sign
    s/\&\#182\;/¶/g;        #Paragraph sign
    s/\&\#183\;/·/g;        #Middle dot
    s/\&\#184\;/¸/g;        #Cedilla
    s/\&\#185\;/¹/g;        #Superscript one
    s/\&\#186\;/º/g;        #Masculine ordinal
    s/\&\#187\;/»/g;        #Right angle quote, guillemotright
    s/\&\#188\;/¼/g; s/\&frac14\;/¼/g;       # Fraction one-fourth
    s/\&\#189\;/½/g; s/\&frac12\;/½/g;       # Fraction one-half
    s/\&\#190\;/¾/g; s/\&frac34\;/¾/g;       # Fraction three-fourths
    s/\&\#191\;/¿/g;        #Inverted question mark
    s/\&\#192\;/À/g;        #Capital A, grave accent
    s/\&\#193\;/Á/g;        #Capital A, acute accent
    s/\&\#194\;/Â/g;        #Capital A, circumflex accent
    s/\&\#195\;/Ã/g;        #Capital A, tilde
    s/\&\#196\;/Ä/g;        #Capital A, dieresis or umlaut mark
    s/\&\#197\;/Å/g;        #Capital A, ring
    s/\&\#198\;/Æ/g;        #Capital AE dipthong (ligature)
    s/\&\#199\;/Ç/g;        #Capital C, cedilla
    s/\&\#200\;/È/g;        #Capital E, grave accent
    s/\&\#201\;/É/g;        #Capital E, acute accent
    s/\&\#202\;/Ê/g;        #Capital E, circumflex accent
    s/\&\#203\;/Ë/g;        #Capital E, dieresis or umlaut mark
    s/\&\#204\;/Ì/g;        #Capital I, grave accent
    s/\&\#205\;/Í/g;        #Capital I, acute accent
    s/\&\#206\;/Î/g;        #Capital I, circumflex accent
    s/\&\#207\;/Ï/g;        #Capital I, dieresis or umlaut mark   
    s/\&\#208\;/Ð/g;        #Capital Eth, Icelandic
    s/\&\#209\;/Ñ/g;        #Capital N, tilde
    s/\&\#210\;/Ò/g;        #Capital O, grave accent
    s/\&\#211\;/Ó/g;        #Capital O, acute accent
    s/\&\#212\;/Ô/g;        #Capital O, circumflex accent
    s/\&\#213\;/Õ/g;        #Capital O, tilde
    s/\&\#214\;/Ö/g;        #Capital O, dieresis or umlaut mark
    s/\&\#215\;/×/g;        #Multiply sign
    s/\&\#216\;/Ø/g;        #Capital O, slash
    s/\&\#217\;/Ù/g;        #Capital U, grave accent
    s/\&\#218\;/Ú/g;        #Capital U, acute accent
    s/\&\#219\;/Û/g;        #Capital U, circumflex accent
    s/\&\#220\;/Ü/g;        #Capital U, dieresis or umlaut mark
    s/\&\#221\;/Ý/g;        #Capital Y, acute accent
    s/\&\#222\;/Þ/g;        #Capital THORN, Icelandic
    s/\&\#223\;/ß/g;        #Small sharp s, German (sz ligature)
    s/\&\#224\;/à/g;        #Small a, grave accent
    s/\&\#225\;/á/g;        #Small a, acute accent
    s/\&\#226\;/â/g;        #Small a, circumflex accent
    s/\&\#227\;/ã/g;        #Small a, tilde
    s/\&\#228\;/ä/g;        #Small a, dieresis or umlaut mark
    s/\&\#229\;/å/g;        #Small a, ring
    s/\&\#230\;/æ/g;        #Small ae dipthong (ligature)
    s/\&\#231\;/ç/g;        #Small c, cedilla
    s/\&\#232\;/è/g;        #Small e, grave accent
    s/\&\#233\;/é/g;        #Small e, acute accent
    s/\&\#234\;/ê/g;        #Small e, circumflex accent
    s/\&\#235\;/ë/g;        #Small e, dieresis or umlaut mark
    s/\&\#236\;/ì/g;        #Small i, grave accent
    s/\&\#237\;/í/g;        #Small i, acute accent
    s/\&\#238\;/î/g;        #Small i, circumflex accent
    s/\&\#239\;/ï/g;        #Small i, dieresis or umlaut mark
    s/\&\#240\;/ð/g;        #Small eth, Icelandic
    s/\&\#241\;/ñ/g;        #Small n, tilde
    s/\&\#242\;/ò/g;        #Small o, grave accent
    s/\&\#243\;/ó/g;        #Small o, acute accent
    s/\&\#244\;/ô/g;        #Small o, circumflex accent
    s/\&\#245\;/õ/g;        #Small o, tilde
    s/\&\#246\;/ö/g;        #Small o, dieresis or umlaut mark
    s/\&\#247\;/÷/g;        #Division sign
    s/\&\#248\;/ø/g;        #Small o, slash
    s/\&\#249\;/ù/g;        #Small u, grave accent
    s/\&\#250\;/ú/g;        #Small u, acute accent
    s/\&\#251\;/û/g;        #Small u, circumflex accent
    s/\&\#252\;/ü/g;        #Small u, dieresis or umlaut mark
    s/\&\#253\;/ý/g;        #Small y, acute accent
    s/\&\#254\;/þ/g;        #Small thorn, Icelandic
    s/\&\#255\;/ÿ/g;        #Small y, dieresis or umlaut mark
    s/^\s+//;
    return $_;
}

"Carpe diem quam minimum credula postero"
(Cueille le jour présent, en te fiant le moins possible au lendemain.)
HORACE

Hors ligne

#574 Le 07/02/2012, à 12:36

ragamatrix

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

@carpediem
Merci pour l'info concernant le bandeau, ça roule; par contre le script gmail.pl me renvoi cette erreur:

 Connexion vers mail.google.com|173.194.70.18|:443...connecté.
requête HTTP transmise, en attente de la réponse...401 Unauthorized
réutilisation de la connexion existante vers mail.google.com:443.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 349 [text/xml]

Sauvegarde en : «STDOUT»

100%[======================================>] 349         --.-K/s   ds 0s      

2012-02-07 11:31:05 (16.2 MB/s) - envoi vers sortie standard [349/349]  

J' ai autorisé pop et imap dans mon compte...faut-il faire autre chose ?
bonne journée et encore merci pour ton aide
++

Hors ligne

#575 Le 07/02/2012, à 14:05

Phyllinux

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

Bonjour à tous,
En voyant le conky de carpediem, post #534, qui intégre la lune dans une horloge, cela m'a donné des idées, pour en faire un qui intègre des données système (état de la batterie, CPU, mémoire, DD...) et des données météo, dans un style montre-chrono.
Je viens faire appel à vos connaissances en scripts lua, plus particulièrement pour les scripts 'ring' lua.
J'ai trouvé un conky que j'ai remis à ma main, qui fait appel à 2 scripts : clock_rings et multi_rings
clock_rings.lua :

},
    {
        name='time',
        arg='%M.%S',
        max=60,
        bg_colour=0xFFFFFF,
        bg_alpha=0.1,
        fg_colour=0x00FF00,
        fg_alpha=0.3,
        x=150, y=150,
        radius=140,
        thickness=4,
        start_angle=0,
        end_angle=360
    },
    {
        name='time',
        arg='%S',
        max=60,
        bg_colour=0xFFFFFF,
        bg_alpha=0.1,
        fg_colour=0x00FF00,
        fg_alpha=0.5,
        x=150, y=150,
        radius=145,
        thickness=4,
        start_angle=0,
        end_angle=360
    },
    {
        name='eval',
        arg='1',
        max=1,
        bg_colour=0x000000,
        bg_alpha=0.1,
        fg_colour=0xFFFFFF,
        fg_alpha=0.0,
        x=150, y=150,
        radius=66,
        thickness=130,
        start_angle=0,
        end_angle=360
    },
    {
        name='eval',
        arg='1',
        max=1,
        bg_colour=0xFFFFFF,
        bg_alpha=1.0,
        fg_colour=0xFFFFFF,
        fg_alpha=0.0,
        x=150, y=150,
        radius=1,
        thickness=10,
        start_angle=0,
        end_angle=360
    },
    {
        name='eval',
        arg='1',
        max=1,
        bg_colour=0xFFFFFF,
        bg_alpha=1.0,
        fg_colour=0xFFFFFF,
        fg_alpha=0.0,
        x=85, y=150,
        radius=30,
        thickness=1,
        start_angle=0,
        end_angle=360
    },
    {
        name='eval',
        arg='1',
        max=1,
        bg_colour=0x000000,
        bg_alpha=0.3,
        fg_colour=0xFFFFFF,
        fg_alpha=0.0,
        x=85, y=150,
        radius=15,
        thickness=27,
        start_angle=0,
        end_angle=360
    },
    {
        name='eval',
        arg='1',
        max=1,
        bg_colour=0xFFFFFF,
        bg_alpha=1.0,
        fg_colour=0xFFFFFF,
        fg_alpha=0.0,
        x=85, y=150,
        radius=1,
        thickness=2,
        start_angle=0,
        end_angle=360
    },
    {
        name='eval',
        arg='1',
        max=1,
        bg_colour=0xFFFFFF,
        bg_alpha=1.0,
        fg_colour=0xFFFFFF,
        fg_alpha=0.0,
        x=215, y=150,
        radius=30,
        thickness=1,
        start_angle=0,
        end_angle=360
    },
    {
        name='eval',
        arg='1',
        max=1,
        bg_colour=0x000000,
        bg_alpha=0.3,
        fg_colour=0xFFFFFF,
        fg_alpha=0.0,
        x=215, y=150,
        radius=15,
        thickness=27,
        start_angle=0,
        end_angle=360
    },
    {
        name='eval',
        arg='1',
        max=1,
        bg_colour=0xFFFFFF,
        bg_alpha=1.0,
        fg_colour=0xFFFFFF,
        fg_alpha=0.0,
        x=215, y=150,
        radius=1,
        thickness=2,
        start_angle=0,
        end_angle=360
    },
    {
        name='eval',
        arg='1',
        max=1,
        bg_colour=0xFFFFFF,
        bg_alpha=1.0,
        fg_colour=0xFFFFFF,
        fg_alpha=0.0,
        x=150, y=75,
        radius=25,
        thickness=1,
        start_angle=0,
        end_angle=360
    },
    {
        name='eval',
        arg='1',
        max=1,
        bg_colour=0x000000,
        bg_alpha=0.3,
        fg_colour=0xFFFFFF,
        fg_alpha=0.0,
        x=150, y=75,
        radius=13,
        thickness=22,
        start_angle=0,
        end_angle=360
    },
    {
        name='eval',
        arg='1',
        max=1,
        bg_colour=0xFFFFFF,
        bg_alpha=1.0,
        fg_colour=0xFFFFFF,
        fg_alpha=0.0,
        x=150, y=75,
        radius=1,
        thickness=2,
        start_angle=0,
        end_angle=360
    },
    }

-- Use these settings to define the origin and extent of your clock.

clock_r=127

-- "clock_x" and "clock_y" are the coordinates of the centre of the clock, in pixels, from the top left of the Conky window.

clock_x=150
clock_y=150

-- Colour & alpha of the clock hands

clock_colour=0x556B2F
clock_alpha=1

-- Do you want to show the seconds hand?

show_seconds=true

require 'cairo'

function rgb_to_r_g_b(colour,alpha)
    return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
end

function draw_ring(cr,t,pt)
    local w,h=conky_window.width,conky_window.height

    local xc,yc,ring_r,ring_w,sa,ea=pt['x'],pt['y'],pt['radius'],pt['thickness'],pt['start_angle'],pt['end_angle']
    local bgc, bga, fgc, fga=pt['bg_colour'], pt['bg_alpha'], pt['fg_colour'], pt['fg_alpha']

    local angle_0=sa*(2*math.pi/360)-math.pi/2
    local angle_f=ea*(2*math.pi/360)-math.pi/2
    local t_arc=t*(angle_f-angle_0)

    -- Draw background ring

    cairo_arc(cr,xc,yc,ring_r,angle_0,angle_f)
    cairo_set_source_rgba(cr,rgb_to_r_g_b(bgc,bga))
    cairo_set_line_width(cr,ring_w)
    cairo_stroke(cr)

    -- Draw indicator ring

    cairo_arc(cr,xc,yc,ring_r,angle_0,angle_0+t_arc)
    cairo_set_source_rgba(cr,rgb_to_r_g_b(fgc,fga))
    cairo_stroke(cr)
end

function draw_clock_hands(cr,xc,yc)
    local secs,mins,hours,secs_arc,mins_arc,hours_arc
    local xh,yh,xm,ym,xs,ys

    secs=os.date("%S")
    mins=os.date("%M")
    hours=os.date("%I")

    secs_arc=(2*math.pi/60)*secs
    mins_arc=(2*math.pi/60)*mins+secs_arc/60
    hours_arc=(2*math.pi/12)*hours+mins_arc/12

    -- Draw hour hand

    xh=xc+0.7*clock_r*math.sin(hours_arc)
    yh=yc-0.7*clock_r*math.cos(hours_arc)
    cairo_move_to(cr,xc,yc)
    cairo_line_to(cr,xh,yh)

    cairo_set_line_cap(cr,CAIRO_LINE_CAP_ROUND)
    cairo_set_line_width(cr,5)
    cairo_set_source_rgba(cr,rgb_to_r_g_b(clock_colour,clock_alpha))
    cairo_stroke(cr)

    -- Draw minute hand

    xm=xc+clock_r*math.sin(mins_arc)
    ym=yc-clock_r*math.cos(mins_arc)
    cairo_move_to(cr,xc,yc)
    cairo_line_to(cr,xm,ym)

    cairo_set_line_width(cr,3)
    cairo_stroke(cr)

    -- Draw seconds hand

    if show_seconds then
        xs=xc+clock_r*math.sin(secs_arc)
        ys=yc-clock_r*math.cos(secs_arc)
        cairo_move_to(cr,xc,yc)
        cairo_line_to(cr,xs,ys)

        cairo_set_line_width(cr,1)
        cairo_stroke(cr)
    end
end

function conky_clock_rings()
    local function setup_rings(cr,pt)
        local str=''
        local value=0

        str=string.format('${%s %s}',pt['name'],pt['arg'])
        str=conky_parse(str)

        value=tonumber(str)
        if value == nil then value = 0 end
        pct=value/pt['max']

        draw_ring(cr,pct,pt)
    end

    -- Check that Conky has been running for at least 5s

    if conky_window==nil then return end
    local cs=cairo_xlib_surface_create(conky_window.display,conky_window.drawable,conky_window.visual, conky_window.width,conky_window.height)

    local cr=cairo_create(cs)    

    local updates=conky_parse('${updates}')
    update_num=tonumber(updates)

    if update_num>5 then
        for i in pairs(settings_table) do
            setup_rings(cr,settings_table[i])
        end
    end

    draw_clock_hands(cr,clock_x,clock_y)
end

J'ai réussi à modifier les couleurs des aiguilles, des graduation, ainsi que des anneaux correspondant aux minutes et aux secondes.
En revanche, l'anneau des heures est toujours gris, et je ne sais pas quelles sont les valeurs à modifier pour en faire changer la couleur.
De plus, quelqu'un pourrait il me dire à quoi correspondent les 11 paquets de lignes de code commençant par name='eval',

slection002.th.png

Uploaded with ImageShack.us

multi_rings.lua :

==============================================================================
--                            multi_rings.lua
--
--  author  : SLK
--  version : v2011011601
--  license : Distributed under the terms of GNU GPL version 2 or later
--
--==============================================================================

require 'cairo'

--------------------------------------------------------------------------------
--                                                                    clock DATA
-- HOURS
clock_h = {
    {
    name='time',                   arg='%H',                    max_value=12,
    x=150,                           y=150,
    graph_radius=140,
    graph_thickness=3,
    graph_unit_angle=30,           graph_unit_thickness=5,
    graph_bg_colour=0xffffff,      graph_bg_alpha=0.0,
    graph_fg_colour=0xFFFFFF,      graph_fg_alpha=0.0,
    txt_radius=100,
    txt_weight=1,                  txt_size=10.0,
    txt_fg_colour=0xFFFFFF,        txt_fg_alpha=0.0,
    graduation_radius=125,
    graduation_thickness=10,        graduation_mark_thickness=2,
    graduation_unit_angle=30,
    graduation_fg_colour=0x00FF00, graduation_fg_alpha=0.5,
    },
}
-- MINUTES
clock_m = {
    {
    name='time',                   arg='%M',                    max_value=60,
    x=150,                           y=150,
    graph_radius=100,
    graph_thickness=3,
    graph_unit_angle=6,            graph_unit_thickness=3,
    graph_bg_colour=0xffffff,      graph_bg_alpha=0.0,
    graph_fg_colour=0xFFFFFF,      graph_fg_alpha=0.0,
    txt_radius=100,
    txt_weight=0,                  txt_size=9.0,
    txt_fg_colour=0xFFFFFF,        txt_fg_alpha=0.0,
    graduation_radius=57,
    graduation_thickness=0,        graduation_mark_thickness=2,
    graduation_unit_angle=30,
    graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.0,
    },
}
-- SECONDS
clock_s = {
    {
    name='time',                   arg='%S',                    max_value=60,
    x=150,                           y=150,
    graph_radius=50,
    graph_thickness=3,
    graph_unit_angle=6,            graph_unit_thickness=3,
    graph_bg_colour=0xffffff,      graph_bg_alpha=0.0,
    graph_fg_colour=0xFFFFFF,      graph_fg_alpha=0.0,
    txt_radius=100,
    txt_weight=0,                  txt_size=12.0,
    txt_fg_colour=0xFFFFFF,        txt_fg_alpha=0.0,
    graduation_radius=0,
    graduation_thickness=0,        graduation_mark_thickness=0,
    graduation_unit_angle=0,
    graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.0,
    },
}

--------------------------------------------------------------------------------
--                                                                    gauge DATA
gauge = {
{
    name='cpu',                    arg='cpu0',                  max_value=100,
    x=85,                       y=150,
    graph_radius=14,
    graph_thickness=27,
    graph_start_angle=0,
    graph_unit_angle=3.5,          graph_unit_thickness=3.0,
    graph_bg_colour=0xFFFFFF,      graph_bg_alpha=0.0,
    graph_fg_colour=0xFFFFFF,      graph_fg_alpha=0.0,
    hand_fg_colour=0x00CFB3,       hand_fg_alpha=1.0,
    txt_radius=1,
    txt_weight=0,                  txt_size=8.0,
    txt_fg_colour=0xFFFFFF,        txt_fg_alpha=0.0,
    graduation_radius=27,
    graduation_thickness=4,        graduation_mark_thickness=4,
    graduation_unit_angle=30,
    graduation_fg_colour=0x00FF00, graduation_fg_alpha=1.0,
    caption='',
    caption_weight=1,              caption_size=8.0,
    caption_fg_colour=0xFFFFFF,    caption_fg_alpha=0.0,
},
{
    name='memperc',                arg='',                      max_value=100,
    x=215,                        y=150,
    graph_radius=14,
    graph_thickness=27,
    graph_start_angle=0,
    graph_unit_angle=3.5,          graph_unit_thickness=3.0,
    graph_bg_colour=0xFFFFFF,      graph_bg_alpha=0.0,
    graph_fg_colour=0xFFFFFF,      graph_fg_alpha=0.0,
    hand_fg_colour=0x00CFB3,       hand_fg_alpha=1.0,
    txt_radius=1,
    txt_weight=0,                  txt_size=8.0,
    txt_fg_colour=0xFFFFFF,        txt_fg_alpha=0.0,
    graduation_radius=27,
    graduation_thickness=4,        graduation_mark_thickness=4,
    graduation_unit_angle=30,
    graduation_fg_colour=0x00FF00, graduation_fg_alpha=1.0,
    caption='',
    caption_weight=1,              caption_size=8.0,
    caption_fg_colour=0xFFFFFF,    caption_fg_alpha=0.0,
},
{
    name='fs_used_perc',                arg='/',                      max_value=100,
    x=150,                        y=75,
    graph_radius=10,
    graph_thickness=23,
    graph_start_angle=0,
    graph_unit_angle=3.5,          graph_unit_thickness=3.0,
    graph_bg_colour=0xFFFFFF,      graph_bg_alpha=0.0,
    graph_fg_colour=0xFFFFFF,      graph_fg_alpha=0.0,
    hand_fg_colour=0x00CFB3,       hand_fg_alpha=1.0,
    txt_radius=1,
    txt_weight=0,                  txt_size=8.0,
    txt_fg_colour=0xFFFFFF,        txt_fg_alpha=0.0,
    graduation_radius=22,
    graduation_thickness=4,        graduation_mark_thickness=4,
    graduation_unit_angle=30,
    graduation_fg_colour=0x00FF00, graduation_fg_alpha=1.0,
    caption='',
    caption_weight=1,              caption_size=8.0,
    caption_fg_colour=0xFFFFFF,    caption_fg_alpha=0.0,
},
}

-------------------------------------------------------------------------------
--                                                                 rgb_to_r_g_b
-- converts color in hexa to decimal
--
function rgb_to_r_g_b(colour, alpha)
    return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
end

-------------------------------------------------------------------------------
--                                                            angle_to_position
-- convert degree to rad and rotate (0 degree is top/north)
--
function angle_to_position(start_angle, current_angle)
    local pos = current_angle + start_angle
    return ( ( pos * (2 * math.pi / 360) ) - (math.pi / 2) )
end

-------------------------------------------------------------------------------
--                                                              draw_clock_ring
-- displays clock
--
function draw_clock_ring(display, data, value)
    local max_value = data['max_value']
    local x, y = data['x'], data['y']
    local graph_radius = data['graph_radius']
    local graph_thickness, graph_unit_thickness = data['graph_thickness'], data['graph_unit_thickness']
    local graph_unit_angle = data['graph_unit_angle']
    local graph_bg_colour, graph_bg_alpha = data['graph_bg_colour'], data['graph_bg_alpha']
    local graph_fg_colour, graph_fg_alpha = data['graph_fg_colour'], data['graph_fg_alpha']

    -- background ring
    cairo_arc(display, x, y, graph_radius, 0, 2 * math.pi)
    cairo_set_source_rgba(display, rgb_to_r_g_b(graph_bg_colour, graph_bg_alpha))
    cairo_set_line_width(display, graph_thickness)
    cairo_stroke(display)

    -- arc of value
    local val = (value % max_value)
    local i = 1
    while i <= val do
        cairo_arc(display, x, y, graph_radius,(  ((graph_unit_angle * i) - graph_unit_thickness)*(2*math.pi/360)  )-(math.pi/2),((graph_unit_angle * i) * (2*math.pi/360))-(math.pi/2))
        cairo_set_source_rgba(display,rgb_to_r_g_b(graph_fg_colour,graph_fg_alpha))
        cairo_stroke(display)
        i = i + 1
    end
    local angle = (graph_unit_angle * i) - graph_unit_thickness

    -- graduations marks
    local graduation_radius = data['graduation_radius']
    local graduation_thickness, graduation_mark_thickness = data['graduation_thickness'], data['graduation_mark_thickness']
    local graduation_unit_angle = data['graduation_unit_angle']
    local graduation_fg_colour, graduation_fg_alpha = data['graduation_fg_colour'], data['graduation_fg_alpha']
    if graduation_radius > 0 and graduation_thickness > 0 and graduation_unit_angle > 0 then
        local nb_graduation = 360 / graduation_unit_angle
        local i = 1
        while i <= nb_graduation do
            cairo_set_line_width(display, graduation_thickness)
            cairo_arc(display, x, y, graduation_radius, (((graduation_unit_angle * i)-(graduation_mark_thickness/2))*(2*math.pi/360))-(math.pi/2),(((graduation_unit_angle * i)+(graduation_mark_thickness/2))*(2*math.pi/360))-(math.pi/2))
            cairo_set_source_rgba(display,rgb_to_r_g_b(graduation_fg_colour,graduation_fg_alpha))
            cairo_stroke(display)
            cairo_set_line_width(display, graph_thickness)
            i = i + 1
        end
    end

    -- text
    local txt_radius = data['txt_radius']
    local txt_weight, txt_size = data['txt_weight'], data['txt_size']
    local txt_fg_colour, txt_fg_alpha = data['txt_fg_colour'], data['txt_fg_alpha']
    local movex = txt_radius * (math.cos((angle * 2 * math.pi / 360)-(math.pi/2)))
    local movey = txt_radius * (math.sin((angle * 2 * math.pi / 360)-(math.pi/2)))
    cairo_select_font_face (display, "ubuntu", CAIRO_FONT_SLANT_NORMAL, txt_weight);
    cairo_set_font_size (display, txt_size);
    cairo_set_source_rgba (display, rgb_to_r_g_b(txt_fg_colour, txt_fg_alpha));
    cairo_move_to (display, x + movex - (txt_size / 2), y + movey + 3);
    cairo_show_text (display, value);
    cairo_stroke (display);
end

-------------------------------------------------------------------------------
--                                                              draw_gauge_ring
-- displays gauges
--
function draw_gauge_ring(display, data, value)
    local max_value = data['max_value']
    local x, y = data['x'], data['y']
    local graph_radius = data['graph_radius']
    local graph_thickness, graph_unit_thickness = data['graph_thickness'], data['graph_unit_thickness']
    local graph_start_angle = data['graph_start_angle']
    local graph_unit_angle = data['graph_unit_angle']
    local graph_bg_colour, graph_bg_alpha = data['graph_bg_colour'], data['graph_bg_alpha']
    local graph_fg_colour, graph_fg_alpha = data['graph_fg_colour'], data['graph_fg_alpha']
    local hand_fg_colour, hand_fg_alpha = data['hand_fg_colour'], data['hand_fg_alpha']
    local graph_end_angle = (max_value * graph_unit_angle) % 360

    -- background ring
    cairo_arc(display, x, y, graph_radius, angle_to_position(graph_start_angle, 0), angle_to_position(graph_start_angle, graph_end_angle))
    cairo_set_source_rgba(display, rgb_to_r_g_b(graph_bg_colour, graph_bg_alpha))
    cairo_set_line_width(display, graph_thickness)
    cairo_stroke(display)

    -- arc of value
    local val = value % (max_value + 1)
    local start_arc = 0
    local stop_arc = 0
    local i = 1
    while i <= val do
        start_arc = (graph_unit_angle * i) - graph_unit_thickness
        stop_arc = (graph_unit_angle * i)
        cairo_arc(display, x, y, graph_radius, angle_to_position(graph_start_angle, start_arc), angle_to_position(graph_start_angle, stop_arc))
        cairo_set_source_rgba(display, rgb_to_r_g_b(graph_fg_colour, graph_fg_alpha))
        cairo_stroke(display)
        i = i + 1
    end
    local angle = start_arc

    -- hand
    start_arc = (graph_unit_angle * val) - (graph_unit_thickness * 2)
    stop_arc = (graph_unit_angle * val)
    cairo_arc(display, x, y, graph_radius, angle_to_position(graph_start_angle, start_arc), angle_to_position(graph_start_angle, stop_arc))
    cairo_set_source_rgba(display, rgb_to_r_g_b(hand_fg_colour, hand_fg_alpha))
    cairo_stroke(display)

    -- graduations marks
    local graduation_radius = data['graduation_radius']
    local graduation_thickness, graduation_mark_thickness = data['graduation_thickness'], data['graduation_mark_thickness']
    local graduation_unit_angle = data['graduation_unit_angle']
    local graduation_fg_colour, graduation_fg_alpha = data['graduation_fg_colour'], data['graduation_fg_alpha']
    if graduation_radius > 0 and graduation_thickness > 0 and graduation_unit_angle > 0 then
        local nb_graduation = graph_end_angle / graduation_unit_angle
        local i = 0
        while i < nb_graduation do
            cairo_set_line_width(display, graduation_thickness)
            start_arc = (graduation_unit_angle * i) - (graduation_mark_thickness / 2)
            stop_arc = (graduation_unit_angle * i) + (graduation_mark_thickness / 2)
            cairo_arc(display, x, y, graduation_radius, angle_to_position(graph_start_angle, start_arc), angle_to_position(graph_start_angle, stop_arc))
            cairo_set_source_rgba(display,rgb_to_r_g_b(graduation_fg_colour,graduation_fg_alpha))
            cairo_stroke(display)
            cairo_set_line_width(display, graph_thickness)
            i = i + 1
        end
    end

    -- text
    local txt_radius = data['txt_radius']
    local txt_weight, txt_size = data['txt_weight'], data['txt_size']
    local txt_fg_colour, txt_fg_alpha = data['txt_fg_colour'], data['txt_fg_alpha']
    local movex = txt_radius * math.cos(angle_to_position(graph_start_angle, angle))
    local movey = txt_radius * math.sin(angle_to_position(graph_start_angle, angle))
    cairo_select_font_face (display, "ubuntu", CAIRO_FONT_SLANT_NORMAL, txt_weight)
    cairo_set_font_size (display, txt_size)
    cairo_set_source_rgba (display, rgb_to_r_g_b(txt_fg_colour, txt_fg_alpha))
    cairo_move_to (display, x + movex - (txt_size / 2), y + movey + 3)
    cairo_show_text (display, value)
    cairo_stroke (display)

    -- caption
    local caption = data['caption']
    local caption_weight, caption_size = data['caption_weight'], data['caption_size']
    local caption_fg_colour, caption_fg_alpha = data['caption_fg_colour'], data['caption_fg_alpha']
    local tox = graph_radius * (math.cos((graph_start_angle * 2 * math.pi / 360)-(math.pi/2)))
    local toy = graph_radius * (math.sin((graph_start_angle * 2 * math.pi / 360)-(math.pi/2)))
    cairo_select_font_face (display, "ubuntu", CAIRO_FONT_SLANT_NORMAL, caption_weight);
    cairo_set_font_size (display, caption_size)
    cairo_set_source_rgba (display, rgb_to_r_g_b(caption_fg_colour, caption_fg_alpha))
    cairo_move_to (display, x + tox + 5, y + toy + 1)
    -- bad hack but not enough time !
    if graph_start_angle < 105 then
        cairo_move_to (display, x + tox - 30, y + toy + 1)
    end
    cairo_show_text (display, caption)
    cairo_stroke (display)
end

-------------------------------------------------------------------------------
--                                                               go_clock_rings
-- loads data and displays clock
--
function go_clock_rings(display)
    local function load_clock_rings(display, data)
        local str, value = '', 0
        str = string.format('${%s %s}',data['name'], data['arg'])
        str = conky_parse(str)
        value = tonumber(str)
        draw_clock_ring(display, data, value)
    end
    
    for i in pairs(clock_h) do
        load_clock_rings(display, clock_h[i])
    end
    for i in pairs(clock_m) do
        load_clock_rings(display, clock_m[i])
    end
    for i in pairs(clock_s) do
        load_clock_rings(display, clock_s[i])
    end
end

-------------------------------------------------------------------------------
--                                                               go_gauge_rings
-- loads data and displays gauges
--
function go_gauge_rings(display)
    local function load_gauge_rings(display, data)
        local str, value = '', 0
        str = string.format('${%s %s}',data['name'], data['arg'])
        str = conky_parse(str)
        value = tonumber(str)
        draw_gauge_ring(display, data, value)
    end
    
    for i in pairs(gauge) do
        load_gauge_rings(display, gauge[i])
    end
end

-------------------------------------------------------------------------------
--                                                                         MAIN
function conky_main()
    if conky_window == nil then 
        return
    end

    local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, conky_window.width, conky_window.height)
    local display = cairo_create(cs)
    
    local updates = conky_parse('${updates}')
    update_num = tonumber(updates)
    
    if update_num > 5 then
        go_clock_rings(display)
        go_gauge_rings(display)
    end

end

Dans ce script, je ne vois pas quelles sont les valeurs à modifier pour changer les couleurs des cercles, qui sont en blanc.
J'ai réussi à changer les couleurs des aiguilles et des graduations, mais pas celui des cercles.

Merci de votre aide smile


The ship is sinking normally...

Hors ligne