#551 Le 03/02/2012, à 09:42
- ragamatrix
Re : [Conky] Alternative à weather.com ( icones conkyforecast )
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.pngconkyrc_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 :
comprends pas ?
Hors ligne
#552 Le 03/02/2012, à 09: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, à 10: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"
Hors ligne
#554 Le 03/02/2012, à 10:10
- Didier-T
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 !
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
Hors ligne
#555 Le 03/02/2012, à 10:12
- Didier-T
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.pngconkyrc_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, à 10:38
- Phyllinux
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
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, à 13:43
- jpdipsy
Re : [Conky] Alternative à weather.com ( icones conkyforecast )
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®') ~= 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), "é", "é")
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, à 13:45
- carpediem
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.11En 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
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, à 14:02
- Phyllinux
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
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, à 14:21
- Phyllinux
Re : [Conky] Alternative à weather.com ( icones conkyforecast )
@ 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 printavant 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, à 14: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, à 15: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, à 15:11)
Hors ligne
#563 Le 03/02/2012, à 15: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, à 15: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, à 17:07)
Hors ligne
#565 Le 03/02/2012, à 19: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, à 10:45
- carpediem
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)
@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
"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, à 18:54
- shamen456
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)
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, à 19: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.
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, à 10: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, à 11: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 :
Merci
Hors ligne
#571 Le 06/02/2012, à 13: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, à 14: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, à 09:52
- carpediem
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 :
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
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/\"\;/"/g; #Quotation mark
s/\&\#35\;/#/g; #Number sign
s/\&\#36\;/\$/g; #Dollar sign
s/\&\#37\;/%/g; #Percent sign
s/\&\#38\;/&/g; s/\&\;/&/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/\<\;/</g; #Less than
s/\&\#61\;/=/g; #Equals sign
s/\&\#62\;/>/g; s/\>\;/>/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/\©\;/©/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/\¼\;/¼/g; # Fraction one-fourth
s/\&\#189\;/½/g; s/\½\;/½/g; # Fraction one-half
s/\&\#190\;/¾/g; s/\¾\;/¾/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, à 11: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, à 13: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',
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
The ship is sinking normally...
Hors ligne