#1501 Le 07/01/2017, à 20:47
- enebre
Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes
Bonsoir chepioq, j'ai voulu partager le solar.lua avec un ami, mais j'obtiens une erreur
conky: can't select(): Argument invalide
ça se répète à l'infini,
Et rien de plus est indiqué dans le démarrage après la commande.
Une idée s'il te plait ?
Par contre sunwait fonctionne en ligne de commande, j'obtiens l'heure du lever.
Dernière modification par enebre (Le 07/01/2017, à 20:50)
Hors ligne
#1502 Le 08/01/2017, à 06:31
- chepioq
Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes
Là, franchement je ne sais pas.
En regardant le code source de conky, l'erreur "can't select" aurait un rapport avec X11, ou avec l'écran.
Ton ami est-il sous X ou sous wayland ?
As-t-il un conky basique qui fonctionne ?
Tout est dans tout et réciproquement....
Hors ligne
#1503 Le 08/01/2017, à 12:23
- enebre
Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes
Ton ami est-il sous X ou sous wayland ?
C'est xubuntu 16.04.1 que je lui ai installé il y a un mois, je suis incapable de répondre à ta question, je ne sais pas ce qu'est wayland, je vais consulter la doc pour en apprendre davantage.
As-t-il un conky basique qui fonctionne ?
Oui, il y a mon conky habituel qui ronronne gentiment. La seule chose que je vois en différence, c'est qu'il est en 32 bits.
Hors ligne
#1504 Le 08/01/2017, à 13:03
- chepioq
Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes
As-tu copié ton conky soleil directement sans modification ?
Car je vois chez toi un :
gap_x = 1670,
gap_y = 300,
Peut-être que son écran a une résolution inférieure.
Tout est dans tout et réciproquement....
Hors ligne
#1505 Le 08/01/2017, à 13:12
- enebre
Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes
Oui, j'ai fait les correctifs pour son pc, avant de lancer le fichier, à défaut j'essayerai la version conky sans lua, peut etre qu'elle fonctionnera bien sur son pc, mais je ferai ce test que courant de la semaine. Je te tiendrai au courant, merci chepioq.
Dernière modification par enebre (Le 08/01/2017, à 13:13)
Hors ligne
#1506 Le 21/01/2017, à 15:46
- daniel38100
Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes
Bonjour @ tous
Mise a jour du pack meteo lua de Didier-T dispo ici météo.lua meteo-lua-2.deb v1.20 MAJ:21/01/17
meteo2.lua
-- Créé par Didier-T (forum.ubuntu-fr.org)
-- Nécessite imagemagick http://apt.ubuntu.com/p/imagemagick
-- Nécessite Curl
-- utilise recmeteo.py
-- Repris par Daniel38100 Forum Ubuntu.fr a partir de 1.20 en 01/1017
require "io"
require "os"
require 'cairo'
local Version = "v1.20"
local conditionJour = {}
local conditionNuit = {}
local conditionMatin = {}
local conditionAM = {}
local conditionSoiree = {}
local conditionNoct = {}
local InfoJour = {}
local conditioncourante = {}
local huitHeures = {}
local Rep, cmd, jours, matin, apresmidi, soiree, nuit, delais, r, repsauv, l, fichier_init, MAJ, tc, dermodif, VilleAdresse, start, cmd1, ID
local Debug = "Problème Info "
local home = os.getenv("HOME")
--Liste des accents et carractère non pris en charge par les patterns
local pat="%é%è%à%ä%â%ê%ô%ç%É%È%À%Â%Ä%Ê%Ô%Ç'"
--Trouve ID
function Get_ID()
local proc, ret
proc=io.open("/proc/self/stat", "r")
ret=proc:read():match("%d*")
return ret
end
--Francisation alerte
function fran_alerte(d)
if d:match("(attendue)") ~= nil and d:match("(entre)") ~= nil then
d = d:gsub("entre", "au")
d = d:gsub("attendue ", "attendue du "):gsub("attendues ", "attendues du ")
end
if d:match("(On s'attend à de la)") ~= nil and d:match("(entre)") ~= nil then
d = d:gsub("entre", "et")
end
if d:match("(depuis)") ~= nil and d:match("(dans)") ~= nil then
d = d:gsub("depuis", "à partir de"):gsub("jusqu'à", "à partir de")
end
d = d:gsub("depuis","à partir de"):gsub("tard la", "tard dans la"):gsub("lorsqu'elle deviendra de la", "se transformant en"):gsub("lorsqu'elle", "puis"):gsub("et s'accumulera de", "de"):gsub("avant de finir", "jusqu'à"):gsub("la nuit du", "dans la nuit de")
return d
end
--Traduction date
function trad_date(d)
local date = d
date = date:gsub("Monday", "Lundi"):gsub("Tuesday", "Mardi"):gsub("Wednesday", "Mercredi"):gsub("Thursday", "Jeudi"):gsub("Friday", "Vendredi"):gsub("Saturday", "Samedi"):gsub("Sunday", "Dimanche")
date = date:gsub("lun", "Lun"):gsub("mar", "Mar"):gsub("mer", "Mer"):gsub("jeu", "Jeu"):gsub("ven", "Ven"):gsub("sam", "Sam"):gsub("dim", "Dim")
date = date:gsub("Mon", "Lun"):gsub("Tue", "Mar"):gsub("Wed", "Mer"):gsub("Thu", "Jeu"):gsub("Fri", "Ven"):gsub("Sat", "Sam"):gsub("Sun", "Dim")
date = date:gsub("January", "Janvier"):gsub("February", "Février"):gsub("March", "Mars"):gsub("April", "Avril"):gsub("May", "Mai"):gsub("June", "Juin"):gsub("July", "Juillet"):gsub("August", "Août"):gsub("September", "Septembre"):gsub("October", "Octobre"):gsub("November", "Novembre"):gsub("December", "Décembre")
date = date:gsub("jan", "Jan"):gsub("fev", "Fév"):gsub("mar", "Mar"):gsub("avr", "Avr"):gsub("mai", "Mai"):gsub("jui", "Jui"):gsub("aou", "Aoû"):gsub("sep", "Sep"):gsub("oct", "Oct"):gsub("nov", "Nov"):gsub("dec", "Déc")
date = date:gsub("Feb", "Fév"):gsub("Apr", "Avr"):gsub("May", "Mai"):gsub("Jun", "Juin"):gsub("Jul", "Juil"):gsub("Aug", "Aoû"):gsub("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 pages web
function string.formatage(ligne)
ligne = ligne:gsub("ô", "ô"):gsub("â", "â"):gsub("é", "é"):gsub("è", "è"):gsub("à", "à"):gsub("ç", "ç"):gsub("ê", "ê"):gsub("ö", "ö"):gsub("î", "î"):gsub("ï", "ï"):gsub("û", "û"):gsub("ü", "ü"):gsub("'", "'"):gsub("Poudreries", "Bourrasques de neige"):gsub("É", "É"):gsub("°",""):gsub("[\n\r]",""):gsub("é", "é")
return ligne
end
--Infos lunaison
function lunaison(r)
local s, web, Lune
web="http://www.calendrier-lunaire.net/"
icone="http://www.calendrier-lunaire.net/module/LYmFzaWMtODMtaDItMTQyNzI5NzY4OS40ODk2LSNmZmZmZmYtMjk1LSMwMDAwMDAtMTQyNzI5NzY4OS0xLTA.png"
f=assert(io.popen("curl --max-time 60 --retry 3 --silent '"..web.."' | grep -A63 '\"TBdoubleColTD5\"' | sed 's/%//g'"))
line=f:read()
i=0
for line in f:lines() do
print(line)
i=i+1
-- if i==37 then
-- icone=line:match("src=\"([%w%p]*)\"")
if i==46 then
ephemerides1, ephemerides2=line:formatage():match("</strong>(%a*) (%a*)</li>")
elseif i==47 then
Visibilite=line:match("</strong>(%d*) </li>")
elseif i==53 then
Phases1=line:formatage():match("title=\"([%a%p%d"..pat.."]*)\" /")
elseif i==54 then
Phases2=line:formatage():match("title=\"([%a%p%d"..pat.."]*)\" /")
Phases=Phases1..", "..Phases2
elseif i==59 then
Noeud_lunaire=line:match("</strong>([%a%d%p%s"..pat.."]*)<img")
elseif i==58 then
Apogee=line:match("</strong>([%a%d%p%s"..pat.."]*)<img")
elseif i==57 then
Perigee=line:match("</strong>([%a%d%p%s"..pat.."]*)<img")
elseif i==49 then
Distance=line:match("</strong>(%d*) Km</li>")
elseif i==50 then
Age=line:match("</strong>([%a%d%s]*)</li>")
elseif i==3 then
Lever_LuneHeure, Lever_LuneMinute=line:match(": ([%d%p]*):([%d%p]*)</div>")
elseif i==4 then
Coucher_LuneHeure, Coucher_LuneMinute=line:match(": ([%d%p]*):([%d%p]*)</div>")
if Coucher_LuneHeure==nil then
Coucher_LuneHeure="N/A"
Coucher_LuneMinute="N/A"
end
elseif i==51 then
Eclipse_total=line:match("</strong> ([%a%p%d%s"..pat.."]*)</a>")
end
end
f:close()
if Noeud_lunaire:match("(%d+)") ~= nil then Noeud_lunaire = Noeud_lunaire:match("(%d+)") end
if Apogee:match("(%d+)") ~= nil then Apogee = Apogee:match("(%d+)") end
if Perigee:match("(%d+)") ~= nil then Perigee = Perigee:match("(%d+)") end
ephemerides = ephemerides1.." "..ephemerides2
Eclipse_total = datelune(Eclipse_total)
s = "${exec wget --tries=3 -q -O "..r.."/lune.png http://www.calendrier-lunaire.net/"..icone.."}"
conky_parse( s )
-- conky_parse( "${exec convert "..r.."/lune.png -transparent '#ffffff' "..r.."/lune.png}" )
end
function datelune(d)
local j, m, a = d:gsub("Janvier", "01"):gsub("Février", "02"):gsub("Mars", "03"):gsub("Avril", "04"):gsub("Mais", "05"):gsub("Juin", "06"):gsub("Juillet", "07"):gsub("Août", "08"):gsub("Septembre", "09"):gsub("Octobre", "10"):gsub("Novembre", "11"):gsub("Décembre", "12"):match("le (%d+) (%d+) (%d+)")
d = os.time{year=a, month=m, day=j}
return d
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 <= Palier then
n = d
elseif f <= Palier*2 then
n = d + 17
elseif f <= Palier*3 then
n = d + 34
elseif f >= (Palier*3)+1 then
n = d + 51
end
if n <= 9 then
n = "0"..n
end
return n
end
--Découpage descriptions sur deux lignes
function decoupage(d)
local l1, l2, n, p1, p2, n1, n2, l1b, l2b, dm, dp
if string.len(d) >= 22 then
n = math.ceil(string.len(d)/2)
dm = string.sub(d, 1, n)
dp = string.sub(d, n)
p1 = string.find(dp, " ")
local b = 1
p2 = nil
if string.find(dm, ' ') then
while p2 == nil do
b = b+1
p2 = string.find(dm, ' ', -b)
end
end
if p1 ~= nil then p1 = n+p1-1 end
if p1 == nil and p2 == nil then p1 = string.find(d, " ") end
if p2 == nil then p2 = p1 end
if p1 == nil then p1 = p2 end
if p1-n >= n-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
--initialisation paramètres
function conky_init(cfg)
print("[\27[1;43mINFO\27[0m] "..cfg)
notifyPartielle="oui"
local pos1
cfg = string.gsub(cfg, "~", home)
cfg = string.gsub(cfg, "$HOME", home)
fichier_init = cfg
local file = assert(io.open(cfg, "rb") )
local line = file:read()
for line in file:lines() do
pos1 = string.find(line, '#')
if pos1 ~= nil then
line = string.sub(line, 1, pos1-1)
end
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, 'repscript=') ~= nil then
repscript = string.sub(line, pos1+1)
elseif string.find(line, 'web=') ~= nil then
cmd1 = string.sub(line, pos1+1)
elseif string.find(line, 'periode=') ~= nil then
jours = string.sub(line, pos1+1)
elseif string.find(line, 'matinée=') ~= nil then
matin = string.sub(line, pos1+1)
elseif string.find(line, 'am=') ~= nil then
apresmidi = string.sub(line, pos1+1)
elseif string.find(line, 'soiree=') ~= nil then
soiree = string.sub(line, pos1+1)
elseif string.find(line, 'nuit=') ~= nil then
nuit = string.sub(line, pos1+1)
elseif string.find(line, 'Prev8heures=') ~= nil then
huit = string.sub(line, pos1+1)
elseif string.find(line, 'Palier=') ~= nil then
Palier = tonumber(string.sub(line, pos1+1))
elseif string.find(line, 'update=') ~= nil then
delais = string.sub(line, pos1+1)
elseif string.find(line, 'notify=') ~= nil then
notify = string.sub(line, pos1+1)
elseif string.find(line, 'nbFoisHuit=') ~= nil then
nbFoisHuit = string.sub(line, pos1+1)
elseif string.find(line, 'notifyPartielle=') ~= nil then
notifyPartielle = string.sub(line, pos1+1)
end
end
io.close(file)
ID = Get_ID()
r = r:gsub("~", home):gsub("$HOME", home)
repsauv = repsauv:gsub("~", home):gsub("$HOME", home)
repscript = repscript:gsub("~", home):gsub("$HOME", home)
print("", "version = "..Version.."\n", "web = "..cmd1.."\n", "Pévision Nb jours = "..jours.."\n", "Pévision Matin = "..matin.."\n", "Pévision Après Midi = "..apresmidi.."\n", "Pévision Soirée = "..soiree.."\n", "Pévision Nuit = "..nuit.."\n","Prévision sur 8 heures = "..huit.."\n","nbFoisHuit= "..nbFoisHuit.."\n", "Délais = "..delais.."\n", "Chemin de travail = "..r.."\n","Palier = "..Palier.."\n", "Chemin de sauvegarde = "..repsauv.."\n", "Chemin script = "..repscript.."\n", "Notification = "..notify.."\n", "ID = "..ID)
--Création répertoire de travail
cmd, l = cmd1:match("([%a%p%d]*)/[%a%p]*/([%d%p%a]*)")
l1 = cmd:match("[%a%p]*/(%a*)/%d*")
Rep = r.."/"..l1.."/"..l
if os.execute("cd "..Rep) ~= 0 then
os.execute("mkdir "..r.."/"..l1.."&& mkdir "..Rep)
end
--initialisation compteurs
t = os.time()-delais
tc = t
start = 1
--Vérification existence repsauv
if os.execute("cd "..repsauv) ~= 0 then
--création de repsauv si inexistant
local pos1 = 1
local chemin = nil
local cheminsup = nil
while pos1 ~= nil do
pos1 = string.find(repsauv, '/', pos1+1)
if pos1 ~= nil then
cheminsup = string.sub(repsauv, pos1)
chemin = string.gsub(repsauv, cheminsup, "")
else
cheminsup = ""
chemin = repsauv
end
if os.execute("cd "..chemin) ~= 0 then
os.execute("mkdir "..chemin)
end
end
end
start=1
MAJ ="0"
end
--Mise à jour 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()
local value
if dermodif2 == nil or dermodif2 ~= conky_parse("${exec date -r "..repsauv.."/CC '+%s'}") then
dermodif2=conky_parse("${exec date -r "..repsauv.."/CC '+%s'}")
--Récupération dernière condition courante
local file = assert(io.open(repsauv.."/CC", "r") )
local line = file:read()
local i = 0
local donee = {}
for line in file:lines() do
i = i+1
donee[i] = line
end
io.close(file)
local t = {"Ville", "latitude", "longitude", "Cond", "Icone", "Temp", "Tempr", "VentDir", "VentForce", "Humidite", "Pression", "Uv", "CouvNuage", "Plafond", "PointRosee", "Visibilite", "Alerte", "HistoMaxJour", "HistoMaxNormalJour", "HistoMaxRecordJour", "HistoMax1Ans", "HistoMinJour", "HistoMinNormalJour", "HistoMinRecordJour", "HistoMin1Ans", "DateJour", "DateMois", "DateAnnee"}
i=0
for i = 1,table.getn(t) do
donee[i]=donee[i]:match("[%a%p%d"..pat.."]*: ([%s%a%p%d"..pat.."]*)")
value=donee[i]:match("(%d*)")
if value ~= "" then
donee[i] = value
end
conditioncourante[t[i]] = donee[i]
end
--Récupération de l'heure de mise a jour
time = donee[table.getn(t)+1]
conditioncourante.Date = os.time{year=conditioncourante.DateAnnee, month=conditioncourante.DateMois, day=conditioncourante.DateJour, hour=0}
--Traitement condition courrante
if conditioncourante.VentDir == "CLM" then
conditioncourante.VentDir = "Calme"
conditioncourante.VentForce = "0"
end
conditioncourante.Alerte = fran_alerte(conditioncourante.Alerte)
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)
conditioncourante.Alerte1, conditioncourante.Alerte2, conditioncourante.Alerte1se, conditioncourante.Alerte2se = decoupage(conditioncourante.Alerte)
print("[\27[1;42m OK \27[0m] Condition courante")
--Récupération prévision
for j = 1,jours do
local file = assert(io.open(repsauv.."/Jour"..j, "r"))
local line = file:read()
local i = 0
local donee = {}
for line in file:lines() do
i = i+1
donee[i] = line
end
io.close(file)
local infojournee = {}
local t = {"VentDirJour", "VentForceJour", "VentDirNuit", "VentForceNuit", "VentRafalesJour", "VentRafalesNuit", "UvJour", "UvNuit", "ProbOrageJour", "ProbOrageNuit", "NivPrecJour", "NivPrecNuit", "QPluieJour", "QPluieNuit", "QNeigeJour", "QNeigeNuit", "EVerglasJour", "EVerglasNuit", "HeurePrecJour", "HeurePrecNuit", "HeurePluieJour", "HeurePluieNuit", "TempJour", "TempNuit", "RealFeelJour", "RealFeelNuit", "ProbPrecJour", "ProbPrecNuit", "CondMeteoJour", "CondMeteoNuit", "IconeJour", "IconeNuit", "HistoMaxJour", "HistoMaxNormalJour", "HistoMaxRecordJour", "HistoMax1Ans", "HistoMinJour", "HistoMinNormalJour", "HistoMinRecordJour", "HistoMin1Ans", "SoleilLever", "SoleilDuree", "SoleilCoucher", "LuneLever", "LuneDuree", "LuneCoucher", "DateJour", "DateMois", "DateAnnee"}
i=0
for i = 1,table.getn(t) do
donee[i]=donee[i]:match("[%a%p%d"..pat.."]*: ([%s%a%p%d"..pat.."]*)")
if donee[i]:find(":") == nil then
value=donee[i]:match("(%d*)")
if value ~= "" then
donee[i] = value
end
end
infojournee[t[i]] = donee[i]
end
--Trie des infos
local info = {}
local y ={"VentDirJour", "VentForceJour", "VentRafalesJour", "UvJour", "ProbOrageJour", "NivPrecJour", "QPluieJour", "QNeigeJour", "EVerglasJour", "HeurePrecJour", "HeurePluieJour", "TempJour", "RealFeelJour", "ProbPrecJour", "CondMeteoJour", "IconeJour"}
local t = {"VentDir", "VentForce", "VentRafales", "Uv", "ProbOrage", "NivPrec", "QPluie", "QNeige", "EVerglas", "HrPrecJour", "HrPluieJour", "Temp", "TempRes", "ProbPrec", "CondMeteo", "Icone"}
conditionJour[j] = {}
i=0
for i = 1, table.getn(t) do
info[t[i]] = infojournee[y[i]]
end
conditionJour[j] = info
local info1 = {}
local y = {"VentDirNuit", "VentForceNuit", "VentRafalesNuit", "UvNuit", "ProbOrageNuit", "NivPrecNuit", "QPluieNuit", "QNeigeNuit", "EVerglasNuit", "HeurePrecNuit", "HeurePluieNuit", "TempNuit", "RealFeelNuit", "ProbPrecNuit", "CondMeteoNuit", "IconeNuit"}
local t = {"VentDir", "VentForce", "VentRafales", "Uv", "ProbOrage", "NivPrec", "QPluie", "QNeige", "EVerglas", "HrPrecNuit", "HrPluieNuit", "Temp", "TempRes", "ProbPrec", "CondMeteo", "Icone"}
conditionNuit[j] = {}
i=0
for i = 1, table.getn(t) do
info1[t[i]] = infojournee[y[i]]
end
conditionNuit[j] = info1
local info2 = {}
InfoJour[j] = {}
InfoJour[j].Jour = os.time{year=infojournee.DateAnnee, month=infojournee.DateMois, day=infojournee.DateJour, hour=0}
InfoJour[j].LeverSoleilH, InfoJour[j].LeverSoleilM = infojournee.SoleilLever:match("(%d*):(%d*)")
InfoJour[j].CoucherSoleilH, InfoJour[j].CoucherSoleilM = infojournee.SoleilCoucher:match("(%d*):(%d*)")
InfoJour[j].Histo_Max =infojournee.HistoMax1Ans
InfoJour[j].Histo_Min =infojournee.HistoMin1Ans
--Traitement condition courrante
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)
print("[\27[1;42m OK \27[0m] Prévision "..j)
--Récupération quart de journée
local t = {"CondMeteo", "Icone", "TempMin", "TempMax", "TempMinR", "TempMaxR", "VentDir", "VentForce", "ProbPrec", "QPluie", "QNeige", "Humidite", "CouvNuage", "PointRosee", "Visibilite"}
if matin == "oui" then
local file = assert(io.open(repsauv.."/Matin"..j, "r"))
local line = file:read()
local i = 0
local donee = {}
for line in file:lines() do
i = i+1
donee[i] = line
end
conditionMatin[j] = {}
local info3 = {}
for i = 1,table.getn(t) do
donee[i]=donee[i]:match("[%a%p%d"..pat.."]*: ([%s%a%p%d"..pat.."]*)")
value=donee[i]:match("(%d*)")
if value ~= "" then
donee[i] = value
end
info3[t[i]] = donee[i]
end
conditionMatin[j] = info3
io.close(file)
if conditionMatin[j].VentDir == "CLM" then
conditionMatin[j].VentDir = "Calme"
conditionMatin[j].VentForce = "0"
end
conditionMatin[j].VentIcone = icone_vent(direction_vent(conditionMatin[j].VentDir), conditionMatin[j].VentForce)
conditionMatin[j].VentP = vent_plein(conditionMatin[j].VentDir)
conditionMatin[j].CondMeteo1, conditionMatin[j].CondMeteo2, conditionMatin[j].CondMeteo1se, conditionMatin[j].CondMeteo2se = decoupage(conditionMatin[j].CondMeteo)
print("[\27[1;42m OK \27[0m] Matin "..j)
end
if apresmidi == "oui" then
local file = assert(io.open(repsauv.."/AM"..j, "r"))
local line = file:read()
local i = 0
local donee = {}
for line in file:lines() do
i = i+1
donee[i] = line
end
conditionAM[j] = {}
local info3 = {}
for i = 1,table.getn(t) do
donee[i]=donee[i]:match("[%a%p%d"..pat.."]*: ([%s%a%p%d"..pat.."]*)")
value=donee[i]:match("(%d*)")
if value ~= "" then
donee[i] = value
end
info3[t[i]] = donee[i]
end
conditionAM[j] = info3
io.close(file)
if conditionAM[j].VentDir == "CLM" then
conditionAM[j].VentDir = "Calme"
conditionAM[j].VentForce = "0"
end
conditionAM[j].VentIcone = icone_vent(direction_vent(conditionAM[j].VentDir), conditionAM[j].VentForce)
conditionAM[j].VentP = vent_plein(conditionAM[j].VentDir)
conditionAM[j].CondMeteo1, conditionAM[j].CondMeteo2, conditionAM[j].CondMeteo1se, conditionAM[j].CondMeteo2se = decoupage(conditionAM[j].CondMeteo)
print("[\27[1;42m OK \27[0m] Apres Midi "..j)
end
if soiree == "oui" then
local file = assert(io.open(repsauv.."/Soiree"..j, "r"))
local line = file:read()
local i = 0
local donee = {}
for line in file:lines() do
i = i+1
donee[i] = line
end
io.close(file)
conditionSoiree[j] = {}
local info3 = {}
for i = 1,table.getn(t) do
donee[i]=donee[i]:match("[%a%p%d"..pat.."]*: ([%s%a%p%d"..pat.."]*)")
value=donee[i]:match("(%d*)")
if value ~= "" then
donee[i] = value
end
info3[t[i]] = donee[i]
end
conditionSoiree[j] = info3
if conditionSoiree[j].VentDir == "CLM" then
conditionSoiree[j].VentDir = "Calme"
conditionSoiree[j].VentForce = "0"
end
conditionSoiree[j].VentIcone = icone_vent(direction_vent(conditionSoiree[j].VentDir), conditionSoiree[j].VentForce)
conditionSoiree[j].VentP = vent_plein(conditionSoiree[j].VentDir)
conditionSoiree[j].CondMeteo1, conditionSoiree[j].CondMeteo2, conditionSoiree[j].CondMeteo1se, conditionSoiree[j].CondMeteo2se = decoupage(conditionSoiree[j].CondMeteo)
print("[\27[1;42m OK \27[0m] Soiree "..j)
end
if nuit == "oui" then
local file = assert(io.open(repsauv.."/Nuit"..j, "r"))
local line = file:read()
local i = 0
local donee = {}
for line in file:lines() do
i = i+1
donee[i] = line
end
io.close(file)
conditionNoct[j] = {}
local info3 = {}
for i = 1,table.getn(t) do
donee[i]=donee[i]:match("[%a%p%d"..pat.."]*: ([%s%a%p%d"..pat.."]*)")
value=donee[i]:match("(%d*)")
if value ~= "" then
donee[i] = value
end
info3[t[i]] = donee[i]
end
conditionNoct[j] = info3
if conditionNoct[j].VentDir == "CLM" then
conditionNoct[j].VentDir = "Calme"
conditionNoct[j].VentForce = "0"
end
conditionNoct[j].VentIcone = icone_vent(direction_vent(conditionNoct[j].VentDir), conditionNoct[j].VentForce)
conditionNoct[j].VentP = vent_plein(conditionNoct[j].VentDir)
conditionNoct[j].CondMeteo1, conditionNoct[j].CondMeteo2, conditionNoct[j].CondMeteo1se, conditionNoct[j].CondMeteo2se = decoupage(conditionNoct[j].CondMeteo)
print("[\27[1;42m OK \27[0m] Nuit "..j)
end
end
if huit == "oui" then
local info4 = {}
local info3 = {}
for y = 1,nbFoisHuit do
local file = assert(io.open(repsauv.."/huitHeures"..y, "r"))
t = {"Heure", "TempMax", "TempMaxR", "Humidite", "Pluie", "Neige", "Verglas", "Vent", "UV", "CouvNuage", "PointRosee", "Icone"}
local line = file:read()
local i = 0
local donee = {}
for line in file:lines() do
i = i+1
donee[i] = line
end
io.close(file)
for j = 1,8 do
x=j+((y-1)*8)
huitHeures[x] = {}
info3[x] = {}
end
x=0
for i = 1,table.getn(t) do
for j = 1,8 do
x=x+1
local k=j+((y-1)*8)
donee[x]=donee[x]:match("[%a%p%d"..pat.."]*: ([%s%a%p%d"..pat.."]*)")
if i ~= 8 then
value=donee[x]:match("(%d*)")
if value ~= "" then
donee[x] = value
end
end
table.insert(info3[k],i,donee[x])
end
end
end
for j = 1,8*nbFoisHuit do
info4 = {}
for i = 1,table.getn(t) do
info4[t[i]]=info3[j][i]
end
huitHeures[j]=info4
huitHeures[j].VentForce, huitHeures[j].VentDir=huitHeures[j].Vent:match("(%d*) (%a*)")
if huitHeures[j].VentDir == "CLM" then
huitHeures[j].VentDir = "Calme"
huitHeures[j].VentForce = "0"
end
huitHeures[j].VentIcone = icone_vent(direction_vent(huitHeures[j].VentDir), huitHeures[j].VentForce)
huitHeures[j].VentP = vent_plein(huitHeures[j].VentDir)
end
print("[\27[1;42m OK \27[0m] huit heures")
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_total = donee[17]
io.close(file)
if MAJ == "0" then
MAJ = "1"
else
MAJ = "0"
end
collectgarbage()
end
return ""
end
--en ligne mise à jour
function conky_Meteo_enligne()
if start==1 then
-- os.execute("pkill -f \"python "..repscript.."/recmeteo_python_2.py adressWeb="..cmd1.." repsauv="..repsauv.." huitHeures="..huit.." nbFoisHuit="..nbFoisHuit.." nbJour="..jours.." interval="..delais.." matin="..matin.." apresmidi="..apresmidi.." soiree="..soiree.." nuit="..nuit.." notify="..notify.."\"")
os.execute("python3 "..repscript.."/recmeteo.py adressWeb="..cmd1.." repsauv="..repsauv.." huitHeures="..huit.." nbFoisHuit="..nbFoisHuit.." nbJour="..jours.." interval="..delais.." matin="..matin.." apresmidi="..apresmidi.." soiree="..soiree.." nuit="..nuit.." notify="..notify.." notifyPartielle="..notifyPartielle.." id="..ID.." demon=oui MAJP=oui &")
end
if dermodif == nil or dermodif ~= conky_parse("${exec date -r "..repsauv.."/CC '+%s'}") then
dermodif=conky_parse("${exec date -r "..repsauv.."/CC '+%s'}")
if 3600 <= os.difftime(os.time(), tc) or start == 1 then
start = 2
tc = os.time()
-- lunaison(r)
-- print("[\27[1;42m OK \27[0m] lunaison")
if repsauv ~= nil then
--lancement sauvegarde
sauvegarde()
end
end
conky_Meteo_horsligne()
collectgarbage()
end
return " "
end
--Retour d'information météo
--Condition courrante
function conky_Meteo_IconeM(r, x, y, w, h)
conky_fDrawImage(r.."/icone_meteo/"..conditioncourante.Icone..".png", x, y, w, h)
return ""
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_Alerte()
return conditioncourante.Alerte
end
function conky_Meteo_Alerte1()
return conditioncourante.Alerte1
end
function conky_Meteo_Alerte2()
return conditioncourante.Alerte2
end
function conky_Meteo_Alerte1se()
return conditioncourante.Alerte1se
end
function conky_Meteo_Alerte2se()
return conditioncourante.Alerte2se
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, x, y, w, h)
conky_fDrawImage(r.."/vent/"..conditioncourante.VentIcone..".png", x, y, w, h)
return ""
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 tonumber(conditioncourante.CouvNuage)
end
function conky_Meteo_Uv()
return conditioncourante.Uv
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")
end
function conky_Meteo_Minute()
return os.date("%M")
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, x, y, w, h, j)
conky_fDrawImage(r.."/icone_meteo/"..conditionJour[tonumber(j)].Icone..".png", x, y, w, h)
return ""
end
function conky_Meteo_Jour_IconeV(r, x, y, w, h, j)
conky_fDrawImage(r.."/vent/"..conditionJour[tonumber(j)].VentIcone..".png", x, y, w, h)
return ""
end
function conky_Meteo_Jour_IconeR(r, x, y, w, h, j)
conky_fDrawImage(r.."/vent/"..conditionJour[tonumber(j)].RafalesIcone..".png", x, y, w, h)
return ""
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, x, y, w, h, j)
conky_fDrawImage(r.."/icone_meteo/"..conditionNuit[tonumber(j)].Icone..".png", x, y, w, h)
return ""
end
function conky_Meteo_Nuit_IconeV(r, x, y, w, h, j)
conky_fDrawImage(r.."/vent/"..conditionNuit[tonumber(j)].VentIcone..".png", x, y, w, h)
return ""
end
function conky_Meteo_Nuit_IconeR(r, x, y, w, h, j)
conky_fDrawImage(r.."/vent/"..conditionNuit[tonumber(j)].RafalesIcone..".png", x, y, w, h)
return ""
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_LeverSoleil(j)
return tonumber((InfoJour[tonumber(j)].LeverSoleilH*60)+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_CoucherSoleil(j)
return tonumber((InfoJour[tonumber(j)].CoucherSoleilH*60)+InfoJour[tonumber(j)].CoucherSoleilM)
end
function conky_Meteo_HDureeJour(j)
return InfoJour[tonumber(j)].CoucherSoleilH-InfoJour[tonumber(j)].LeverSoleilH
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
function conky_Meteo_Histo_Min(j)
return InfoJour[tonumber(j)].Histo_Min
end
function conky_Meteo_Histo_Max(j)
return InfoJour[tonumber(j)].Histo_Max
end
--Matin
function conky_Meteo_Matin_CondMeteo(j)
return conditionMatin[tonumber(j)].CondMeteo
end
function conky_Meteo_Matin_CondMeteo1(j)
return conditionMatin[tonumber(j)].CondMeteo1
end
function conky_Meteo_Matin_CondMeteo2(j)
return conditionMatin[tonumber(j)].CondMeteo2
end
function conky_Meteo_Matin_CondMeteo1se(j)
return conditionMatin[tonumber(j)].CondMeteo1se
end
function conky_Meteo_Matin_CondMeteo2se(j)
return conditionMatin[tonumber(j)].CondMeteo2se
end
function conky_Meteo_Matin_TempMax(j)
return tonumber(conditionMatin[tonumber(j)].TempMax)
end
function conky_Meteo_Matin_TempMin(j)
return tonumber(conditionMatin[tonumber(j)].TempMin)
end
function conky_Meteo_Matin_TempMaxRes(j)
return tonumber(conditionMatin[tonumber(j)].TempMaxR)
end
function conky_Meteo_Matin_TempMinRes(j)
return tonumber(conditionMatin[tonumber(j)].TempMinR)
end
function conky_Meteo_Matin_ProbPrec(j)
return tonumber(conditionMatin[tonumber(j)].ProbPrec)
end
function conky_Meteo_Matin_VentDir(j)
return conditionMatin[tonumber(j)].VentDir
end
function conky_Meteo_Matin_VentDirP(j)
return conditionMatin[tonumber(j)].VentP
end
function conky_Meteo_Matin_VentForce(j)
return tonumber(conditionMatin[tonumber(j)].VentForce)
end
function conky_Meteo_Matin_QPluie(j)
return tonumber(conditionMatin[tonumber(j)].QPluie)
end
function conky_Meteo_Matin_QNeige(j)
return tonumber(conditionMatin[tonumber(j)].QNeige)
end
function conky_Meteo_Matin_Humidite(j)
return tonumber(conditionMatin[tonumber(j)].Humidite)
end
function conky_Meteo_Matin_CouvNuage(j, r)
if r == nil then r = 100 end
local Couv = (tonumber(conditionMatin[tonumber(j)].CouvNuage) / 100) * r
if Couv - math.floor(Couv) <= 0.5 then
Couv = math.floor(Couv)
else
Couv = math.ceil(Couv)
end
return Couv
end
function conky_Meteo_Matin_Rose(j)
return tonumber(conditionMatin[tonumber(j)].PointRosee)
end
function conky_Meteo_Matin_Visibilite(j)
return tonumber(conditionMatin[tonumber(j)].Visibilite)
end
function conky_Meteo_Matin_IconeM(r, x, y, w, h, j)
conky_fDrawImage(r.."/icone_meteo/"..conditionMatin[tonumber(j)].Icone..".png", x, y, w, h)
return ""
end
function conky_Meteo_Matin_IconeV(r, x, y, w, h, j)
conky_fDrawImage(r.."/vent/"..conditionMatin[tonumber(j)].VentIcone..".png", x, y, w, h)
return ""
end
--Après Midi
function conky_Meteo_AM_CondMeteo(j)
return conditionAM[tonumber(j)].CondMeteo
end
function conky_Meteo_AM_CondMeteo1(j)
return conditionAM[tonumber(j)].CondMeteo1
end
function conky_Meteo_AM_CondMeteo2(j)
return conditionAM[tonumber(j)].CondMeteo2
end
function conky_Meteo_AM_CondMeteo1se(j)
return conditionAM[tonumber(j)].CondMeteo1se
end
function conky_Meteo_AM_CondMeteo2se(j)
return conditionAM[tonumber(j)].CondMeteo2se
end
function conky_Meteo_AM_TempMax(j)
return tonumber(conditionAM[tonumber(j)].TempMax)
end
function conky_Meteo_AM_TempMin(j)
return tonumber(conditionAM[tonumber(j)].TempMin)
end
function conky_Meteo_AM_TempMaxRes(j)
return tonumber(conditionAM[tonumber(j)].TempMaxR)
end
function conky_Meteo_AM_TempMinRes(j)
return tonumber(conditionAM[tonumber(j)].TempMinR)
end
function conky_Meteo_AM_ProbPrec(j)
return tonumber(conditionAM[tonumber(j)].ProbPrec)
end
function conky_Meteo_AM_VentDir(j)
return conditionAM[tonumber(j)].VentDir
end
function conky_Meteo_AM_VentDirP(j)
return conditionAM[tonumber(j)].VentP
end
function conky_Meteo_AM_VentForce(j)
return tonumber(conditionAM[tonumber(j)].VentForce)
end
function conky_Meteo_AM_QPluie(j)
return tonumber(conditionAM[tonumber(j)].QPluie)
end
function conky_Meteo_AM_QNeige(j)
return tonumber(conditionAM[tonumber(j)].QNeige)
end
function conky_Meteo_AM_Humidite(j)
return tonumber(conditionAM[tonumber(j)].Humidite)
end
function conky_Meteo_AM_CouvNuage(j, r)
if r == nil then r = 100 end
local Couv = (tonumber(conditionAM[tonumber(j)].CouvNuage) / 100) * r
if Couv - math.floor(Couv) <= 0.5 then
Couv = math.floor(Couv)
else
Couv = math.ceil(Couv)
end
return Couv
end
function conky_Meteo_AM_Rose(j)
return tonumber(conditionAM[tonumber(j)].PointRosee)
end
function conky_Meteo_AM_Visibilite(j)
return tonumber(conditionAM[tonumber(j)].Visibilite)
end
function conky_Meteo_AM_IconeM(r, x, y, w, h, j)
conky_fDrawImage(r.."/icone_meteo/"..conditionAM[tonumber(j)].Icone..".png", x, y, w, h)
return ""
end
function conky_Meteo_AM_IconeV(r, x, y, w, h, j)
conky_fDrawImage(r.."/vent/"..conditionAM[tonumber(j)].VentIcone..".png", x, y, w, h)
return ""
end
--Soirée
function conky_Meteo_Soiree_CondMeteo(j)
return conditionSoiree[tonumber(j)].CondMeteo
end
function conky_Meteo_Soiree_CondMeteo1(j)
return conditionSoiree[tonumber(j)].CondMeteo1
end
function conky_Meteo_Soiree_CondMeteo2(j)
return conditionSoiree[tonumber(j)].CondMeteo2
end
function conky_Meteo_Soiree_CondMeteo1se(j)
return conditionSoiree[tonumber(j)].CondMeteo1se
end
function conky_Meteo_Soiree_CondMeteo2se(j)
return conditionSoiree[tonumber(j)].CondMeteo2se
end
function conky_Meteo_Soiree_TempMax(j)
return tonumber(conditionSoiree[tonumber(j)].TempMax)
end
function conky_Meteo_Soiree_TempMin(j)
return tonumber(conditionSoiree[tonumber(j)].TempMin)
end
function conky_Meteo_Soiree_TempMaxRes(j)
return tonumber(conditionSoiree[tonumber(j)].TempMaxR)
end
function conky_Meteo_Soiree_TempMinRes(j)
return tonumber(conditionSoiree[tonumber(j)].TempMinR)
end
function conky_Meteo_Soiree_ProbPrec(j)
return tonumber(conditionSoiree[tonumber(j)].ProbPrec)
end
function conky_Meteo_Soiree_VentDir(j)
return conditionSoiree[tonumber(j)].VentDir
end
function conky_Meteo_Soiree_VentDirP(j)
return conditionSoiree[tonumber(j)].VentP
end
function conky_Meteo_Soiree_VentForce(j)
return tonumber(conditionSoiree[tonumber(j)].VentForce)
end
function conky_Meteo_Soiree_QPluie(j)
return tonumber(conditionSoiree[tonumber(j)].QPluie)
end
function conky_Meteo_Soiree_QNeige(j)
return tonumber(conditionSoiree[tonumber(j)].QNeige)
end
function conky_Meteo_Soiree_Humidite(j)
return tonumber(conditionSoiree[tonumber(j)].Humidite)
end
function conky_Meteo_Soiree_CouvNuage(j, r)
if r == nil then r = 100 end
local Couv = (tonumber(conditionSoiree[tonumber(j)].CouvNuage) / 100) * r
if Couv - math.floor(Couv) <= 0.5 then
Couv = math.floor(Couv)
else
Couv = math.ceil(Couv)
end
return Couv
end
function conky_Meteo_Soiree_Rose(j)
return tonumber(conditionSoiree[tonumber(j)].PointRosee)
end
function conky_Meteo_Soiree_Visibilite(j)
return tonumber(conditionSoiree[tonumber(j)].Visibilite)
end
function conky_Meteo_Soiree_IconeM(r, x, y, w, h, j)
conky_fDrawImage(r.."/icone_meteo/"..conditionSoiree[tonumber(j)].Icone..".png", x, y, w, h)
return ""
end
function conky_Meteo_Soiree_IconeV(r, x, y, w, h, j)
conky_fDrawImage(r.."/vent/"..conditionSoiree[tonumber(j)].VentIcone..".png", x, y, w, h)
return ""
end
--Nuit
function conky_Meteo_Noct_CondMeteo(j)
return conditionNoct[tonumber(j)].CondMeteo
end
function conky_Meteo_Noct_CondMeteo1(j)
return conditionNoct[tonumber(j)].CondMeteo1
end
function conky_Meteo_Noct_CondMeteo2(j)
return conditionNoct[tonumber(j)].CondMeteo2
end
function conky_Meteo_Noct_CondMeteo1se(j)
return conditionNoct[tonumber(j)].CondMeteo1se
end
function conky_Meteo_Noct_CondMeteo2se(j)
return conditionNoct[tonumber(j)].CondMeteo2se
end
function conky_Meteo_Noct_TempMax(j)
return tonumber(conditionNoct[tonumber(j)].TempMax)
end
function conky_Meteo_Noct_TempMin(j)
return tonumber(conditionNoct[tonumber(j)].TempMin)
end
function conky_Meteo_Noct_TempMaxRes(j)
return tonumber(conditionNoct[tonumber(j)].TempMaxR)
end
function conky_Meteo_Noct_TempMinRes(j)
return tonumber(conditionNoct[tonumber(j)].TempMinR)
end
function conky_Meteo_Noct_ProbPrec(j)
return tonumber(conditionNoct[tonumber(j)].ProbPrec)
end
function conky_Meteo_Noct_VentDir(j)
return conditionNoct[tonumber(j)].VentDir
end
function conky_Meteo_Noct_VentDirP(j)
return conditionNoct[tonumber(j)].VentP
end
function conky_Meteo_Noct_VentForce(j)
return tonumber(conditionNoct[tonumber(j)].VentForce)
end
function conky_Meteo_Noct_QPluie(j)
return tonumber(conditionNoct[tonumber(j)].QPluie)
end
function conky_Meteo_Noct_QNeige(j)
return tonumber(conditionNoct[tonumber(j)].QNeige)
end
function conky_Meteo_Noct_Humidite(j)
return tonumber(conditionNoct[tonumber(j)].Humidite)
end
function conky_Meteo_Noct_CouvNuage(j, r)
if r == nil then r = 100 end
local Couv = (tonumber(conditionNoct[tonumber(j)].CouvNuage) / 100) * r
if Couv - math.floor(Couv) <= 0.5 then
Couv = math.floor(Couv)
else
Couv = math.ceil(Couv)
end
return Couv
end
function conky_Meteo_Noct_Rose(j)
return tonumber(conditionNoct[tonumber(j)].PointRosee)
end
function conky_Meteo_Noct_Visibilite(j)
return tonumber(conditionNoct[tonumber(j)].Visibilite)
end
function conky_Meteo_Noct_IconeM(r, x, y, w, h, j)
conky_fDrawImage(r.."/icone_meteo/"..conditionNoct[tonumber(j)].Icone..".png", x, y, w, h)
return ""
end
function conky_Meteo_Noct_IconeV(r, x, y, w, h, j)
conky_fDrawImage(r.."/vent/"..conditionNoct[tonumber(j)].VentIcone..".png", x, y, w, h)
return ""
end
--Huit prochaines heures
function conky_Meteo_huitHeures_VentDirP(j)
return huitHeures[tonumber(j)].VentP
end
function conky_Meteo_huitHeures_IconeV(r, x, y, w, h, j)
conky_fDrawImage(r.."/vent/"..huitHeures[tonumber(j)].VentIcone..".png", x, y, w, h)
return ""
end
function conky_Meteo_huitHeures_Heure(j)
return tonumber(huitHeures[tonumber(j)].Heure)
end
function conky_Meteo_huitHeures_IconeM(r, x, y, w, h, j)
conky_fDrawImage(r.."/icone_meteo/"..huitHeures[tonumber(j)].Icone..".png", x, y, w, h)
return ""
end
function conky_Meteo_huitHeures_Temp(j)
return tonumber(huitHeures[tonumber(j)].TempMax)
end
function conky_Meteo_huitHeures_TempR(j)
return tonumber(huitHeures[tonumber(j)].TempMaxR)
end
function conky_Meteo_huitHeures_VentDir(j)
return huitHeures[tonumber(j)].VentDir
end
function conky_Meteo_huitHeures_VentForce(j)
return tonumber(huitHeures[tonumber(j)].VentForce)
end
function conky_Meteo_huitHeures_Humidite(j)
return tonumber(huitHeures[tonumber(j)].Humidite)
end
function conky_Meteo_huitHeures_CouvNuage(j)
return tonumber(huitHeures[tonumber(j)].CouvNuage)
end
function conky_Meteo_huitHeures_Rose(j)
return tonumber(huitHeures[tonumber(j)].PointRosee)
end
function conky_Meteo_huitHeures_ProbPluie(j)
return tonumber(huitHeures[tonumber(j)].Pluie)
end
function conky_Meteo_huitHeures_ProbNeige(j)
return tonumber(huitHeures[tonumber(j)].Neige)
end
function conky_Meteo_huitHeures_ProbVerglas(j)
return tonumber(huitHeures[tonumber(j)].Verglas)
end
function conky_Meteo_huitHeures_Uv(j)
return tonumber(huitHeures[tonumber(j)].UV)
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_EclipseTotal()
if format == nil then format = "%A_%d_%B_%Y_à_%H:%M" end
format = string.gsub(format, "_", " ")
return trad_date(os.date(format, Eclipse_total))
end
--Fonction d'affichage
function conky_fDrawImage(path,x,y,w,h,arc)
path = string.gsub(path, "~", home)
path = string.gsub(path, "$HOME", home)
local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, conky_window.width, conky_window.height)
local function fDrawImage(path,x,y,w,h,arc)
x=x+(w/2)
y=y+(h/2)
local img = cairo_image_surface_create_from_png(path)
local w_img, h_img = cairo_image_surface_get_width (img), cairo_image_surface_get_height (img)
local cr = cairo_create (cs)
cairo_translate (cr, x, y)
if arc then
cairo_rotate (cr, arc)
end
cairo_scale (cr, w/w_img, h/h_img)
cairo_set_source_surface (cr, img, -w_img/2, -h_img/2)
cairo_paint (cr)
cairo_destroy(cr)
cairo_surface_destroy (img)
end
fDrawImage(path,x,y,w,h,arc)
cairo_surface_destroy(cs)
return ""
end
--Informations sur le lua
function conky_Version()
return Version
end
function conky_Meteo_fichier_init()
return fichier_init
end
function conky_Meteo_etat_MAJ()
return MAJ
end
--Sauvegarde des données
function sauvegarde()
--[[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_total, "\n")
io.close(file)
]]--
--modification des droits utilisateur
-- os.execute('chmod o+rw- '..r..'/*lun*')
os.execute('chmod -R o+rw- '..repsauv)
os.execute('chmod -R o+rw- '..Rep)
end
recmeteo.py
#! /usr/bin/python3
# -*- coding: utf-8 -*-
# Par Didier-T Forum Ubuntu.fr
# Ajout notification par jpdipsy Forum Ubuntu.fr
# Ajout notification via DBus par ti_tux Forum Ubuntu.fr
# Ajout création repsauv si inexistant par jpdipsy Forum Ubuntu.fr
# Repris par Daniel38100 Forum Ubuntu.fr a partir de 2.00a en 01/1017
from socket import timeout
from urllib.request import Request, urlopen, URLError
from os import path, makedirs, system
from time import time, sleep, strftime, localtime
from re import search, compile, findall
from sys import argv
from gc import collect
from bs4 import BeautifulSoup, Tag, NavigableString
from datetime import date, datetime
Version='2.00a'
homedir=path.expanduser('~')
#### initialisation des variables
adressWeb="http://www.accuweather.com/fr/fr/belfort/133341/daily-weather-forecast/133341"
repsauv="~/essais"
huitHeures="oui"
nbFoisHuit=1
matin="oui"
apresmidi="oui"
soiree="oui"
nuit="oui"
nbJour=1
interval=30
notifi="oui"
externe=None
Id="sans"
demon="non"
fullnotify="non"
MAJP="oui"
lune="oui"
for a in argv:
if search("adressWeb=", a) is not None:
adressWeb=compile("adressWeb=(.*)").search(a).group(1)
if search("repsauv=", a) is not None:
repsauv=compile("repsauv=(.*)").search(a).group(1)
if search("huitHeures=", a) is not None:
huitHeures=compile("huitHeures=(.*)").search(a).group(1)
if search("nbJour=", a) is not None:
nbJour=compile("nbJour=(.*)").search(a).group(1)
if search("interval=", a) is not None:
interval=compile("interval=(.*)").search(a).group(1)
if search("notify=", a) is not None:
notifi=compile("notify=(.*)").search(a).group(1)
if search("notifyPartielle=", a) is not None:
fullnotify=compile("notifyPartielle=(.*)").search(a).group(1)
if search("matin=", a) is not None:
matin=compile("matin=(.*)").search(a).group(1)
if search("apresmidi=", a) is not None:
apresmidi=compile("apresmidi=(.*)").search(a).group(1)
if search("soiree=", a) is not None:
soiree=compile("soiree=(.*)").search(a).group(1)
if search("nuit=", a) is not None:
nuit=compile("nuit=(.*)").search(a).group(1)
if search("externe=", a) is not None:
externe=compile("externe=(.*)").search(a).group(1)
if search("nbFoisHuit=", a) is not None:
nbFoisHuit=compile("nbFoisHuit=(.*)").search(a).group(1)
if search("id=", a) is not None:
Id=compile("id=(.*)").search(a).group(1)
if search("demon=", a) is not None:
demon=compile("demon=(.*)").search(a).group(1)
if search("MAJP=", a) is not None:
MAJP=compile("MAJP=(.*)").search(a).group(1)
nbJour=int(nbJour)
interval=int(interval)
repsauv=repsauv.replace("~", homedir)
notifi=str.lower(notifi)
fullnotify==str.lower(fullnotify)
huitHeures=str.lower(huitHeures)
nbFoisHuit=int(nbFoisHuit)
MAJP=str(MAJP)
#### fin initialisation des variables
#### Fonction de traitement des fichiers
def traitement(adress, fichier, repsauv):
current_balise=None
x=1
user_agent='Mozilla/5.0 (X11; Linux x86_64)'
headers={ 'User-Agent' : user_agent }
while current_balise is None:
response=None
while response is None:
try:
html_page=urlopen(adress, timeout=10)
except (URLError) as error:
print("[\033[31mFAIL\033[0m] HTML ", error)
except timeout:
print("[\033[31mFAIL\033[0m] erreur timeout acces HTML")
else:
try:
currentCond=html_page.read()
except (URLError) as error:
print("[\033[31mFAIL\033[0m] Lecture page ", error)
except timeout:
print("[\033[31mFAIL\033[0m] erreur timeout lecture page")
else:
# print("[\033[32m OK \033[0m] "+adress)
response="ok"
if response is None:
sleep(10)
current_balise=1
soup=BeautifulSoup(currentCond, "lxml")
resultat='\n'
inter=[]
# Huit Heures -----------------------------------------------------
if 'hourly-weather-forecast' in adress :
page=soup.select("[class~=overview-hourly]")[0].find_all('td')+soup.select("[class~=precip-hourly]")[0].find_all('td')+soup.select("[class~=sky-hourly]")[0].find_all('td')
info=BeautifulSoup(str(page), "lxml").find_all('div')+BeautifulSoup(str(page), "lxml").find_all('span')
suppr='<div class='
detail=['Heure','','','Temp°','RealFeel®','Vent (km/h)','Pluie','Neige','Verglas','Indice UV','Couverture nuageuse','Humidité','Point de rosée','Icone']
for i in info :
if suppr in str(i) :
result=str(i).replace(str(i),'')
else :
result=str(i).replace('</span>','').replace('<span>','').replace('</div>','').replace('<div>','')
inter.append(result)
ico=BeautifulSoup(str(page), "lxml").select("[class~=icon]")
x=1
for i in ico:
icone=str(i).replace('<div class="icon-weather icon i-','').replace('"></div>','')
x=x+1
inter.append(icone)
y=0
for i in detail:
x=1
while x<9 :
if i == '' :
x=x+1
y=y+1
else :
resultat=resultat+str(i)+str(x)+': '+inter[y]+'\n'
y=y+1
x=x+1
# Jour ---------------------------------------------------------
if 'daily-weather-forecast' in adress :
page=soup.select("[class~=detail-tab-panel]")[0]
page=str(page).replace('<span class="setting">Mx</span>','').replace('<span class="setting">Mi</span>','')
info=BeautifulSoup(str(page), "lxml").find_all('strong')
inter0=[]
for i in info:
soup1=BeautifulSoup(str(i), "lxml")
comment=soup1.strong.string
inter0.append(comment)
inter.append('VentD jour: '+inter0[0].split(' ')[0].replace('W','O'))
inter.append('VentF jour: '+inter0[0].split(' ')[1]+'km/h')
inter.append('VentD nuit: '+inter0[10].split(' ')[0])
inter.append('VentF nuit: '+inter0[10].split(' ')[1]+'km/h')
inter.append('Rafale jour:'+inter0[1])
inter.append('Rafale nuit:'+inter0[11])
inter.append('UV jour: '+inter0[2])
inter.append('UV nuit: '+inter0[12])
inter.append('Prob orage jour: '+inter0[3])
inter.append('Prob orage nuit: '+inter0[13])
inter.append('Précipitations jour: '+inter0[4])
inter.append('Précipitations nuit: '+inter0[14])
inter.append('Pluie jour: '+inter0[5])
inter.append('Pluie nuit: '+inter0[15])
inter.append('Neige jour: '+inter0[6])
inter.append('Neige nuit: '+inter0[16])
inter.append('Verglas jour: '+inter0[7])
inter.append('Verglas nuit: '+inter0[17])
inter.append('Heures de précipitations jour: '+inter0[8])
inter.append('Heures de précipitations nuit: '+inter0[18])
inter.append('Heures de pluie jour: '+inter0[9])
inter.append('Heures de pluie nuit: '+inter0[19])
info=BeautifulSoup(str(page), "lxml").find_all('span')
inter0=[]
for i in info:
soup1=BeautifulSoup(str(i), "lxml")
comment=soup1.span.string
inter0.append(comment)
inter.append('Temp jour: '+inter0[0])
inter.append('Temp nuit: '+inter0[3])
inter.append('Temp ress jour:'+inter0[1].replace('RealFeel®',''))
inter.append('Temp ress nuit:'+inter0[4].replace('RealFeel®',''))
inter.append('Prob précipitations jour:'+inter0[2].replace('Précipitations',''))
inter.append('Prob précipitations nuit:'+inter0[5].replace('Précipitations',''))
con=BeautifulSoup(str(page), "lxml").select("[class~=cond]")
inter0=[]
for i in con:
cond=str(i).replace('<div class="cond">','').replace('</div>','').replace(' ','').replace('\n','').replace('\r','')
inter0.append(cond)
inter.append('Cond_jour: '+inter0[0])
inter.append('Cond_nuit: '+inter0[1])
ico=BeautifulSoup(str(page), "lxml").select("[class~=icon]")
inter0=[]
for i in ico:
icone=str(i).replace('<div class="icon i-','').replace('"></div>','')
inter0.append(icone)
inter.append('Icone jour: '+inter0[0])
inter.append('Icone nuit: '+inter0[1])
page=soup.select("[id~=feature-history]")[0]
info=BeautifulSoup(str(page), "lxml").find_all('td')
inter0=[]
for i in info:
soup1=BeautifulSoup(str(i), "lxml")
comment=soup1.td.string
inter0.append(comment)
inter.append('Maxjour: '+inter0[0])
inter.append('Maxnormal: '+inter0[1])
inter.append('Maxrecord: '+inter0[2])
inter.append('Max1ans: '+inter0[3])
inter.append('Minjour: '+inter0[4])
inter.append('Minnormal: '+inter0[5])
inter.append('Minrecord: '+inter0[6])
inter.append('Min1ans: '+inter0[7])
page=soup.select("[class~=time-period]")
info=BeautifulSoup(str(page), "lxml").find_all('li')
inter0=[]
for i in info:
soup1=BeautifulSoup(str(i).replace('<span>','').replace('</span>',''), "lxml")
comment=soup1.li.string
inter0.append(comment)
inter.append(inter0[0])
inter.append(inter0[1])
inter.append('Duree soleil'+inter0[2].replace('Durée',''))
inter.append(inter0[3])
inter.append(inter0[4])
inter.append('Duree lune'+inter0[5].replace('Durée',''))
histo=soup.find(id="feature-history")
date=histo.find_all('th')
jour=compile("(.*)/(.*)/(.*)").search(date[4].get_text())
inter.append("jour: "+jour.group(1))
inter.append("mois: "+jour.group(2))
inter.append("année: "+str(int(jour.group(3))+1))
for i in inter:
resultat=resultat+i+'\n'
# quart --------------------------------------------------------
if 'morning-weather-forecast' in adress or 'afternoon-weather-forecast' in adress or 'evening-weather-forecast' in adress or 'overnight-weather-forecast' in adress :
page=soup.select("[class~=detail-tab-panel]")[0]
con=BeautifulSoup(str(page), "lxml").select("[class~=cond]")
for i in con:
cond=str(i).replace('<span class="cond">','').replace('</span>','').replace(' ','').replace('\n','').replace('\r','')
ico=BeautifulSoup(str(page), "lxml").select("[class~=icon]")
for i in ico:
icone=str(i).replace('<div class="icon i-','').replace('"></div>','')
tem=str(BeautifulSoup(str(page), "lxml").select("[class~=large-temp]")[0].select("[class~=small-temp]")[0])
temmax=str(BeautifulSoup(str(page), "lxml").select("[class~=large-temp]")[0]).replace(str(tem),'').split('>')[1].split('<')[0]
temmin=tem.split('/')[1].split('<')[0]
realfeet=str(BeautifulSoup(str(page), "lxml").select("[class~=small-temp]")[1]).replace('<span class="small-temp"><em>RealFeel®</em>','').replace('</span>','').split('/')
realfeetmin=realfeet[1]
realfeetmax=realfeet[0]
ventd=str(BeautifulSoup(str(page), "lxml").select("[class~=wind-point]")[0]).replace('<div class="wind-point ','').replace('"></div>','')
stat=BeautifulSoup(str(page), "lxml").select("[class~=stats]")
ventf=str(BeautifulSoup(str(stat), "lxml").select("[class~=wind]")[0]).replace('<li class="wind">','').replace('</li>','')
inter.append('Cond: '+cond)
inter.append('Icone: '+icone)
inter.append('TempMin: '+temmin)
inter.append('TempMax: '+temmax)
inter.append('RealFeelMin: '+realfeetmin)
inter.append('RealFeelMax:'+realfeetmax)
inter.append('VentD: '+ventd)
inter.append('VentF: '+ventf)
stat=BeautifulSoup(str(page), "lxml").find_all('strong')
detail=['Précipitations: ','Pluie: ','Neige: ','Humidité: ','Couverture nuageuse: ','Point de rosée: ','Visibilité: ']
x=0
for i in stat:
soup1=BeautifulSoup(str(i), "lxml")
comment=soup1.strong.string
inter.append(detail[x]+str(comment))
x=x+1
for i in inter:
resultat=resultat+i+'\n'
# CC -----------------------------------------------------------
if 'current-weather' in adress :
page=soup.find_all('script')
soup1=BeautifulSoup(str(page), "lxml")
ville=compile(" city: '(.*)',").search(str(soup1)).group(1)
longi=compile("lon: '(.*)',").search(str(soup1)).group(1)
lat=compile("lat: '(.*)',").search(str(soup1)).group(1)
inter.append("Ville: "+ville)
inter.append("Lat: "+lat)
inter.append("Long: "+longi)
page=soup.select("[class~=detail-tab-panel]")[0]
cond=str(BeautifulSoup(str(page), "lxml").select("[class~=cond]")[0]).split('>')[1].split('<')[0]
icone=str(BeautifulSoup(str(page), "lxml").select("[class~=icon]")[0]).replace('<div class="icon i-','').replace('"></div>','')
temp=str(BeautifulSoup(str(page), "lxml").select("[class~=large-temp]")[0]).split('>')[1].split('<')[0]
realfeel=str(BeautifulSoup(str(page), "lxml").select("[class~=small-temp]")[0]).split('>')[3].split('<')[0]
ventd=str(BeautifulSoup(str(page), "lxml").select("[class~=wind-point]")[0]).replace('<div class="wind-point ','').replace('"></div>','')
inter.append('Cond: '+cond)
inter.append('Icone: '+icone)
inter.append('Temp: '+temp)
inter.append('RealFeel:'+realfeel)
inter.append('VentD: '+ventd)
stat=BeautifulSoup(str(page), "lxml").find_all('strong')
detail=['VentF: ','Humidité: ','Pression: ','Indice UV: ','Couverture nuageuse: ','Plafond: ','Point de rosée: ','Visibilité: ']
x=0
for i in stat:
soup1=BeautifulSoup(str(i), "lxml")
comment=soup1.strong.string
inter.append(detail[x]+str(comment))
x=x+1
inter.append("Alerte: RAS")
page=soup.select("[id~=feature-history]")[0]
info=BeautifulSoup(str(page), "lxml").find_all('td')
inter0=[]
for i in info:
soup1=BeautifulSoup(str(i), "lxml")
comment=soup1.td.string
inter0.append(comment)
inter.append('Maxjour: '+inter0[0])
inter.append('Maxnormal: '+inter0[1])
inter.append('Maxrecord: '+inter0[2])
inter.append('Max1ans: '+inter0[3])
inter.append('Minjour: '+inter0[4])
inter.append('Minnormal: '+inter0[5])
inter.append('Minrecord: '+inter0[6])
inter.append('Min1ans: '+inter0[7])
histo=soup.find(id="feature-history")
date=histo.find_all('th')
jour=compile("(.*)/(.*)/(.*)").search(date[4].get_text())
inter.append("jour: "+jour.group(1))
inter.append("mois: "+jour.group(2))
inter.append("année: "+str(int(jour.group(3))+1))
date=str(datetime.now()).split(' ')[1].split(':')
inter.append("heure: "+date[0])
inter.append("minute: "+date[1])
inter.append("seconde: "+date[2].split('.')[0])
inter.append(str(int(time())))
for i in inter:
resultat=resultat+i+'\n'
# Lunaison -----------------------------------------------------
if 'http://www.calendrier-lunaire.net/' in adress :
page=soup.select("[class~=TBdoubleColTD8]")[0]
soup1=BeautifulSoup(str(page), 'lxml')
resultat=str(soup1.ul['content']).replace('\t','')
# --------------------------------------------------------------
fiche=open(fichier, "w")
fiche.write(resultat)
fiche.close()
collect()
#### fin Fonction de traitement des fichiers
#### Mise en tache de fond
def demonise(ent, id1, id2, huitHeures, nbJour, interval, nbFoisHuit, Id, demon):
dem=time()-(60*60)
misajour=1
while 1 :
date=str(datetime.now()).split(' ')[1].split(':')
heure=time()
if heure-dem >= 60*60 and MAJP=="oui":
x=0
while x<nbJour:
x=x+1
traitement(ent+nb1+'/daily-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Jour"+str(x), repsauv)
print("[\033[32m OK \033[0m] Jour "+str(x))
if matin=="oui":
traitement(ent+nb1+'/morning-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Matin"+str(x), repsauv)
print("[\033[32m OK \033[0m] Matin "+str(x))
if apresmidi=="oui":
traitement(ent+nb1+'/afternoon-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/AM"+str(x), repsauv)
print("[\033[32m OK \033[0m] AM "+str(x))
if soiree=="oui":
traitement(ent+nb1+'/evening-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Soiree"+str(x), repsauv)
print("[\033[32m OK \033[0m] Soiree "+str(x))
if nuit=="oui":
traitement(ent+nb1+'/overnight-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Nuit"+str(x), repsauv)
print("[\033[32m OK \033[0m] Nuit "+str(x))
if lune == "oui":
traitement('http://www.calendrier-lunaire.net/', repsauv+"/lunaison", repsauv)
print("[\033[32m OK \033[0m] Lunaison")
dem=heure
if huitHeures=="oui":
x=0
while x<nbFoisHuit:
h=(x*8)+int(strftime('%H', localtime()))
x=x+1
traitement(ent+nb1+'/hourly-weather-forecast/'+nb2+'?hour='+str(h), repsauv+"/huitHeures"+str(x), repsauv)
print("[\033[32m OK \033[0m] huitHeures "+str(x))
traitement(ent+nb1+'/current-weather/'+nb2, repsauv+"/CC", repsauv)
print("[\033[32m OK \033[0m] CC")
if externe is not None:
system(externe)
fin=time()
duree=fin-heure
if notifi == "oui":
notify2.init('Recmeteo.py')
if heure-dem == 0:
mess=notify2.Notification('Accuweather', "Mise a jour complete à "+str(date[0])+":"+str(date[1])+":"+str(date[2]).split('.')[0]+" en "+str(round(duree,2)).replace('.','s')+" sec", '/opt/Accuweather/icones/accuweather-logo1.png')
mess.show()
print("[\033[32m OK \033[0m] Mise a jour complete à "+str(date[0])+":"+str(date[1])+":"+str(date[2]).split('.')[0]+" en "+str(round(duree,2)).replace('.','s'))
else:
if fullnotify == "oui" :
mess=notify2.Notification('Accuweather', "Mise a jour partiel à "+str(date[0])+":"+str(date[1])+":"+str(date[2]).split('.')[0]+" en "+str(round(duree,2)).replace('.','s'), '/opt/Accuweather/icones/accuweather-logo1.png')
mess.show()
print("[\033[32m OK \033[0m] Mise a jour partiel à "+str(date[0])+":"+str(date[1])+":"+str(date[2]).split('.')[0]+" en "+str(round(duree,2)).replace('.','s'))
start=heure
pause=60*interval-int(duree)
if pause < 0:
pause=interval
if demon == "non":
print("[\033[33mINFO\033[0m] Mode démon non utilisé fin de recmeteo.py")
exit()
collect()
sleep(pause)
if Id != "sans":
if not path.exists("/proc/"+Id):
exit()
### Initialiation de DBus pour les notifications
if notifi == "oui":
import notify2
### Vérification répertoire
if not path.exists(repsauv):
makedirs(repsauv)
#### Lancement du script et initialisation de la tache de fond
nb1=findall('\d+', adressWeb)[0]
nb2=findall('\d+', adressWeb)[1]
ent=adressWeb[:adressWeb.find(nb1)]
fin=adressWeb.replace(ent+nb1, "")
fin=fin.replace(fin[:fin.find(nb2)]+nb2, "")
nb2=nb2+fin
#print("[\033[33mINFO\033[0m] Recmeteo Version =", Version)
demonise(ent, nb1, nb2, huitHeures, nbJour, interval, nbFoisHuit, Id, demon)
avec le météo fond d'écran accuweather-3.deb v3.10 MAJ:18/01/2017
Dernière modification par daniel38100 (Le 21/01/2017, à 20:47)
Hors ligne
#1507 Le 21/01/2017, à 18:33
- chepioq
Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes
Ton premier lien renvoie une erreur 404 (not found)
Tout est dans tout et réciproquement....
Hors ligne
#1508 Le 21/01/2017, à 20:51
- daniel38100
Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes
Ton premier lien renvoie une erreur 404 (not found)
Erreur de lien corrigé
Merci
Hors ligne
#1509 Le 22/01/2017, à 00:02
- daniel38100
Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes
Hors ligne
#1510 Le 22/01/2017, à 17:19
- grain de sable
Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes
Salut à tous,
après maintes péripéties avec le fameux conky lua, moi aussi, après le passage en 16.04, j'ai découvert que sur trois PC l'un avait besoin d'une commande supplémentaire dans le conkyrc pour pouvoir afficher les cercles de clock_rings.lua ?! Bizarre, mais si je l'enlève, plus de cercle…
il s'agit de la commande:
"Load:{loadavg}".
Je peux la mettre n'importe-où après la zone TEXT, mais il la faut, sinon, pas de cercle!
Donc, si vous aussi vous n'avez plus de cercles, un petit:
${goto 120}${voffset 0}${font caviar dreams:size=7}Load:$color ${loadavg}${font}
dans le conkyrc après "${cpu cpu}%" (par exemple, en insérant une ligne) est sans danger; mais peut décoincer votre conky!
Dernière modification par grain de sable (Le 23/01/2017, à 21:21)
Hors ligne
#1511 Le 24/01/2017, à 15:23
- grain de sable
Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes
Le conkyrc
# Conky settings #
background no
update_interval 1
cpu_avg_samples 2
net_avg_samples 2
override_utf8_locale yes
double_buffer yes
no_buffers yes
text_buffer_size 2048
#imlib_cache_size 0
temperature_unit fahrenheit
# paramètres des fenêtres #
own_window yes
own_window_type dock
own_window_transparent yes
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
border_inner_margin 0
border_outer_margin 5
minimum_size 250 300
maximum_width 350
alignment top_right
gap_x 110
gap_y 60
# réglages graphiques #
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders yes
# Réglages textes #
use_xft yes
xftfont caviar dreams:size=9
xftalpha 0.5
uppercase no
temperature_unit celsius
default_color FFFFFF # Blanc #
color1 FFFFFF # Blanc #
color2 FFD800 # Jaune #
color3 020EF1 # Bleu roi #
color4 00FFFF # Bleu ciel#
color5 FF2300 # Rouge #
color6 5BEF12 # Vert clair #
# Lua Load #
lua_load ./clock01_rings.lua
lua_draw_hook_pre clock_rings
own_window_argb_value 0
own_window_argb_visual yes
own_window_colour 000000
TEXT
#----------------------------------------------------------------------------------------------------------------------------------------
#
# Heure et date
#----------------------------------------------------------------------------------------------------------------------------------------
${voffset 7}${font Radio Space:size=16}${color3}${time %A}${font}$color${font Radio Space:size=38}${goto 167}${voffset -8} ${time %e}${font}
${font Radio Space:size=18}${voffset -30}${time %b}${font}${voffset -3} ${font Radio Space:size=20}${time %Y}${font}${color3} ${hr 1}
#----------------------------------------------------------------------------------------------------------------------------------------
# Capacité restante de la batterie en %
#----------------------------------------------------------------------------------------------------------------------------------------
${color1}${goto 209}${voffset 34}${battery_percent BAT1}%
${color5}${goto 202}${voffset 5}Batterie
#----------------------------------------------------------------------------------------------------------------------------------------
# Météo…
#----------------------------------------------------------------------------------------------------------------------------------------
#${font conkyweather:size=35}${color FFFFFF}${goto 200}${voffset 20}${execpi 6000 sed -n '2p' ~/.conky/accu_weather/rss/weather}$color${font}${font Radio Space:size=11}${color 0ABFFF}${goto 202}${voffset 12}HOME
#${execi 600 bash ~/.conky/accu_weather/rss/acc_rss}${font Radio Space:size=15}${goto 201}${voffset -4}${execpi 600 sed -n '1p' ~/.conky/accu_weather/rss/weather|awk '{print $NF}'}${font}$color
#${font caviar dreams:size=8}${goto 47}${voffset 5}Uptime: ${uptime_short}
#----------------------------------------------------------------------------------------------------------------------------------------
# Processeur (la troisième ligne est indispensable pour avoir les cercles sur certains PC)
#----------------------------------------------------------------------------------------------------------------------------------------
${color4}${goto 140}${voffset 32}Temp°cpu $color ${acpitemp}°C
${color4}${goto 146}${voffset 6}Processus:$color $processes
${color4}${goto 120}${voffset 0}${font caviar dreams:size=7}Load:$color ${loadavg}${font}
${color}${goto 0}${voffset -14}${cpu cpu}% ${color4}${goto 0}${voffset 22}CPUs$color
#----------------------------------------------------------------------------------------------------------------------------------------
# Occupation de la mémoire RAM/SWAP/Système de fichiers/Home/ en %
#----------------------------------------------------------------------------------------------------------------------------------------
${color4}${goto 0}${voffset 10}RAM ${color}${memperc}%
${color4}${goto 22}${voffset 0}${font caviar dreams:size=8}Swap${font}${color}${swapperc}%
${color4}${goto 8}${voffset 50}${font caviar dreams:size=9}Système${color}${fs_used_perc /}%
${color4}${goto 27}${voffset 0} Home ${color}${fs_used_perc /home}%
#----------------------------------------------------------------------------------------------------------------------------------------
${color1}${goto 206}${voffset 25}Net
#----------------------------------------------------------------------------------------------------------------------------------------
${color4}${goto 42}${voffset -15}Down: $color${font caviar dreams:size=8}${downspeed wlan0} k/s
${color4}${goto 47}${voffset 0}Up:$color ${upspeed wlan0} k/s${font}
#----------------------------------------------------------------------------------------------------------------------------------------
# Mettez le texte que vous voulez entre les guillemets et la référence du texte, s'il y a lieu, à la place de "proverbe africain"
#----------------------------------------------------------------------------------------------------------------------------------------
${goto 2}${voffset 10}${font caviar dreams:size=11} "L'homme blanc a une montre ;
${goto 2}${voffset 0} mais il n'a pas le temps"
${color2}${goto 122}${voffset 0}${font caviar dreams:size=8}Proverbe africain
et le # clock01_rings.lua#
--[[
# Clock Rings by Linux Mint (2012) reEdited by Altin.
#
# This script draws percentage meters as rings, and also draws clock hands if you want! It is fully customisable; all options are described in the script.
# This script is based off a combination of my clock.lua script and my rings.lua script.
#
# IMPORTANT: If you are using the 'cpu' function, it will cause a segmentation fault if it tries to draw a ring straight away.
# The if statement on line 324 uses a delay to make sure that this doesn't happen.
# It calculates the length of the delay by the number of updates since Conky started.
# Generally, a value of 5s is long enough, so if you update Conky every 1s,
# use update_num>5 in that if statement (the default).
# If you only update Conky every 2s, you should change it to update_num>3;
# conversely if you update Conky every 0.5s, you should use update_num>10.
# ALSO, if you change your Conky, is it best to use "killall conky; conky" to update it,
# otherwise the update_num will not be reset and you will get an error.
#
# To call this script in Conky, use the following in your conkyrc:
#
# lua_load ~/.conky/clock01_rings.lua
# lua_draw_hook_pre clock_rings
#
# Changelog:
# * v1.0 --> Original release (30.09.2009)
# * v1.1p --> Jpope edit londonali1010 (05.10.2009)
# * vX 2011mint --> reEdit despot77 (18.02.2011)
# * vX 2012 --> Altin reEdit (22.07.2012)
# * Added weather function (Accu Weather)
# * Added battery monitoring
# * Syslog monitoring
# * Running processes monitoring
# * Rearanged rings
# * Exctra network functions/monitoring
# * Changed Fonts
]]
settings_table = {
{
-- Edit this table to customise your rings.
-- You can create more rings simply by adding more elements to settings_table.
-- "name" is the type of stat to display; you can choose from 'cpu', 'memperc', 'fs_used_perc', 'battery_used_perc'.
name='time',
-- "arg" is the argument to the stat type, e.g. if in Conky you would write ${cpu cpu0}, 'cpu0' would be the argument. If you would not use an argument in the Conky variable, use ''.
arg='%I.%M',
-- "max" is the maximum value of the ring. If the Conky variable outputs a percentage, use 100.
max=12,
-- "bg_colour" is the colour of the base ring.
bg_colour=0xffffff, --blanc
-- "bg_alpha" is the alpha value of the base ring.
bg_alpha=0.15,
-- "fg_colour" is the colour of the indicator part of the ring.
fg_colour=0x020EF1, --bleu roi
-- "fg_alpha" is the alpha value of the indicator part of the ring.
fg_alpha=0.3,
-- "x" and "y" are the x and y coordinates of the centre of the ring, relative to the top left corner of the Conky window.
x=100, y=175,
-- "radius" is the radius of the ring.
radius=50,
-- "thickness" is the thickness of the ring, centred around the radius.
thickness=5,
-- "start_angle" is the starting angle of the ring, in degrees, clockwise from top. Value can be either positive or negative.
start_angle=0,
-- "end_angle" is the ending angle of the ring, in degrees, clockwise from top. Value can be either positive or negative, but must be larger than start_angle.
end_angle=360
},
{
name='time',
arg='%M.%S',
max=60,
bg_colour=0xffffff, --blanc
bg_alpha=0.1,
fg_colour=0x00FFFF, --bleu ciel
fg_alpha=0.4,
x=100, y=175,
radius=56,
thickness=5,
start_angle=0,
end_angle=360
},
{
name='time',
arg='%S',
max=60,
bg_colour=0xffffff, --blanc
bg_alpha=0.1,
fg_colour=0x020EF1, --bleu roi
fg_alpha=0.6,
x=100, y=175,
radius=62,
thickness=5,
start_angle=0,
end_angle=360
},
{
name='time',
arg='%d',
max=31,
bg_colour=0xffffff, --blanc
bg_alpha=0.1,
fg_colour=0x00FFFF, --bleu ciel
fg_alpha=0.8,
x=100, y=175,
radius=70,
thickness=5,
start_angle=-90,
end_angle=90
},
{
name='time',
arg='%m',
max=12,
bg_colour=0xffffff, --blanc
bg_alpha=0.1,
fg_colour=0x020EF1, --bleu roi
fg_alpha=1,
x=100, y=175,
radius=76,
thickness=5,
start_angle=-90,
end_angle=90
},
{
name='cpu',
arg='cpu0',
max=100,
bg_colour=0xffffff, --blanc
bg_alpha=0.2,
fg_colour=0x020EF1, --bleu roi
fg_alpha=0.8,
x=40, y=280,
radius=35,
thickness=5,
start_angle=-90,
end_angle=180
},
{
name='cpu',
arg='cpu1',
max=100,
bg_colour=0xffffff, --blanc
bg_alpha=0.2,
fg_colour=0x0072A9, --bleu moyen
fg_alpha=0.8,
x=40, y=280,
radius=25,
thickness=5,
start_angle=-90,
end_angle=180
},
{
name='memperc',
arg='',
max=100,
bg_colour=0xffffff, --blanc
bg_alpha=0.2,
fg_colour=0x020EF1, --bleu roi
fg_alpha=0.8,
x=85, y=360,
radius=35,
thickness=5,
start_angle=-90,
end_angle=180
},
{
name='swapperc',
arg='',
max=100,
bg_colour=0xffffff, --blanc
bg_alpha=0.2,
fg_colour=0xFF6600, --orange
fg_alpha=0.8,
x=85, y=360,
radius=25,
thickness=5,
start_angle=-90,
end_angle=180
},
{
name='fs_used_perc',
arg='/',
max=100,
bg_colour=0xffffff,
bg_alpha=0.2,
fg_colour=0x020EF1, --bleu roi
fg_alpha=0.8,
x=125, y=450,
radius=35,
thickness=5,
start_angle=-90,
end_angle=180
},
{
name='fs_used_perc',
arg='/home',
max=100,
bg_colour=0xffffff,
bg_alpha=0.2,
fg_colour=0x0072A9, --bleu moyen
fg_alpha=0.8,
x=125, y=450,
radius=25,
thickness=5,
start_angle=-90,
end_angle=180
},
{
name='downspeedf',
arg='wlan0',
max=100,
bg_colour=0xffffff,
bg_alpha=0.2,
fg_colour=0x5BEF12, --vert clair
fg_alpha=0.8,
x=170, y=520,
radius=25,
thickness=4,
start_angle=-90,
end_angle=180
},
{
name='upspeedf',
arg='wlan0',
max=100,
bg_colour=0xffffff,
bg_alpha=0.2,
fg_colour=0xff6600, --orange
fg_alpha=0.8,
x=170, y=520,
radius=20,
thickness=4,
start_angle=-90,
end_angle=180
},
}
-- Use these settings to define the origin and extent of your clock.
clock_r=65
-- "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=100
clock_y=175
show_seconds=true -- Change to true if you want the seconds hand
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 window_background(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.76*clock_r*math.sin(hours_arc)
yh=yc-0.72*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,1.0,1.0,1.0,1.0)
cairo_stroke(cr)
-- Draw minute hand
xm=xc+0.98*clock_r*math.sin(mins_arc)
ym=yc-1.02*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+1.1*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)
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 bidouillé les mêmes en orange et en vert également, que je peux poster au cas où au moins l'un d'entre-vous est intéressé.:cool:
Dernière modification par grain de sable (Le 26/01/2017, à 08:32)
Hors ligne
#1512 Le 29/01/2017, à 14:42
- daniel38100
Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes
Bonjour à tous
j'ai fait un script bash pour afficher un calendrier dans mon conky mais il ne me met pas les couleurs
voila le résultat
voici mon 04-clendar.sh
#!/bin/bash
###############################################################################
# #
#------------ Calendrier cree par Daniel38100 Furum Ubuntu.fr ----------------#
# #
###############################################################################
nbj=60
date=$(date +%j)
fonte="monaco"
nom="calendar-$date.png"
destination=~/
### couleurs ###
# cadre
coulfond="transparent"
coulcadre="orangered"
# aujourd'hui
coul='${color red}'
coul1='${color gold}'
# samedi
coulsam='${color yellow}'
coulsam1='${color 00003F}'
# dimanche
couldim='${color orange}'
couldim1='${color 00003F}'
# les autres jours
couljour='${color blue}'
couljour1='${color black}'
###############################################################################
samedi="SAM"
dimanche="DIM"
function calendar
{
if [[ $cale1 = `date +%^a@%d%^b` ]] ; then
coulcal=$coul;fonts1=18;pos13=1;coulcal1=$coul1
elif [[ `echo $cale1 | cut -c1-3` = `echo $dimanche` ]] ; then
coulcal=$couldim;fonts1=16;pos13=0;coulcal1=$couldim1
elif [[ `echo $cale1 | cut -c1-3` = `echo $samedi` ]] ; then
coulcal=$coulsam;fonts1=16;pos13=0;coulcal1=$coulsam1
else coulcal=$couljour;fonts1=16;pos13=0;coulcal1=$couljour1
fi
}
L_ecran=$(xrandr --verbose | grep -F *current |cut -d " " -f3 | cut -d "x" -f1)
H_ecran=$(xrandr --verbose | grep -F *current |cut -d " " -f3 | cut -d "x" -f2)
H_calendar=44
T_calendar=$L_ecran"x"$H_calendar
L=$(echo $T_calendar|cut -d x -f1);L=$((L - 1))
H=$(echo $T_calendar|cut -d x -f2);H=$((H - 1))
nbJ=$((L_ecran/22))
for (( x=0 ; x<nbj ; x++ ));do
calen[x]=`date --date "$((x-15)) day" +%^a@%d%^b`
done
ddd=''
eee=''
for (( x=0 ; x<nbj ; x++ ));do
cale1=`echo ${calen[x]}`; calendar
ddd="$ddd $coulcal `echo ${calen[x]} | sed 's/é/E/g' | cut -c1-2`"
eee="$eee $coulcal `echo ${calen[x]} | sed 's/é/E/g' | cut -c6-7`"
done
echo "$ddd" > /tmp/ddd.log
echo "$eee" >> /tmp/ddd.log
exit 0
et mon conkyrc
# -- Conky settings -- #
background yes
update_interval 1
cpu_avg_samples 2
net_avg_samples 2
override_utf8_locale yes
double_buffer yes
no_buffers yes
text_buffer_size 2048
# -- Window specifications -- #
own_window_argb_visual yes
own_window no
own_window_type override
own_window_transparent yes
own_window_hints undecorated,sticky,skip_taskbar,skip_pager,below
border_inner_margin 0
border_outer_margin 0
minimum_size 280 455
maximum_width 1440
alignment tl
gap_x 0
gap_y 30
# -- Graphics settings -- #
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders yes
# -- Text settings -- #
use_xft yes
xftfont MaiandraGD:size=14
xftalpha 0.4
uppercase no
default_color 8b8b8b
TEXT
${execi 90 ~/04-calendar.sh && cat /tmp/ddd.log}
Dernière modification par daniel38100 (Le 29/01/2017, à 14:46)
Hors ligne
#1513 Le 29/01/2017, à 16:53
- chepioq
Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes
Ton script bash renvoie une ligne (par exemple "${color yellow} SA ${color orange} DI ${color blue} LU ${color blue} MA...." qui est affiché par ton conky, mais qui ne peut en aucun cas être interprété par conky.
Et je ne sais pas si cela est possible.
Je pense qu'il vaut mieux définir directement dans ton script les couleurs que tu souhaites, mais c'est au dessus de mes compétences.
Tout est dans tout et réciproquement....
Hors ligne
#1514 Le 29/01/2017, à 19:32
- chepioq
Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes
Je fais un méa-culpa.
La solution est avec conky, il faut utiliser execpi à la place de execi :
TEXT
${execpi 90 ~/04-calendar.sh && cat /tmp/ddd.log}
Dernière modification par chepioq (Le 29/01/2017, à 20:07)
Tout est dans tout et réciproquement....
Hors ligne
#1515 Le 01/02/2017, à 01:04
- Solmarek
Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes
Bonjour à tous,
je viens de découvrir il y a peu conky, et je vous remercie d’ailleurs pour cette série de topic qui m'a permis de tomber sur le script lua permettant de faire des cercles.
Du coup je l'ai pas mal modifié pour pouvoir avoir des jauges en sens horaire ou anti-horaire, et à force de le modifier j'en suis arrivé à quelques chose de totalement différent et j'ai quelques questions auxquelles je n'ai pas trouvé de réponse pour l'instant.
Donc si une âme charitable pouvait me renseigner svp ^^
Alors pour commencer, voilà un aperçu à quoi ça ressemble (je sais que c'est pas très beau et que ça manque d'info ^^, j'ai tellement passé de temps sur le script lua que j'en ai oublié ce que je voulais faire au départ)
Simple screen:
A ce stade il utilise 5Mo en mémoire, ça me semble assez légers, mais comme je l'ai précisé plus tôt il y a peu d'info.
Niveau utilisation du CPU ça reste à 0% du moment que je rafraîchissement est de 1 seconde.
Par contre à 0.1 sec, l'utilisation du CPU augmente progressivement pour arriver à 12% au bout d'une ou deux heures, cependant l'utilisation mémoire ne bouge pas vraiment (elle augmente de 0.6Mo environ et encore pas toujours) et les informations à traiter ne changent pas vraiment.
Du coup je ne comprend pas ce comportement au niveau du CPU, donc si vous avez déjà rencontré ce phénomène, des infos m’intéresseraient ^^
De plus pensez-vous au vu des perf actuel, si ce script risque d'être gourmand en ressource si je le termine ?
Ensuite j'aimerais pouvoir écrire des infos sur les faces de côté, mais je n'ai rien trouvé sur cairo permettant de faire de genre de transformation (par exemple un texte/mot dont les lettres sont de plus en plus petite ou dont la base est plus large que le haut)
Et enfin, pour les informations qui se bougent pas, est-il préférable d'utiliser directement conky ou bien cairo_show_text ?
Ah aussi un autre souci que j'ai (mais pas très important) si je monte , démonte, remonte,... un disque/volume c'est bien mis à jour à l'affichage sans souci, mais pour tout disque/partition démonté après le lancement de conky, j'ai un message d'erreur statfs64 dans la console concernant le disque démonté, malgré que je vérifie la présence ou non du montage, avant de faire un fs_size et fs_used un peu comme si conky continuait de chercher des infos sur le disque alors que je ne le lui demande pas
Merci d'avance pour votre aide ^^
Hors ligne
#1516 Le 01/02/2017, à 17:24
- chepioq
Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes
Il faudrait que tu nous donnes ton conky, (pas les scripts lua pour le moment).
Par contre, dans ta version animée, on voit bien que l'utilisation CPU varie, si c'est bien la première barre verticale en haut qui indique cela.
Dernière modification par chepioq (Le 01/02/2017, à 17:28)
Tout est dans tout et réciproquement....
Hors ligne
#1517 Le 01/02/2017, à 19:36
- Solmarek
Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes
Bonjour,
Oui l'utilisation CPU (cpu0) est en haut a gauche, j'ai fait des zooms rapide sur un dessin sous krita que les jauges bougent un peu, mais j'avais aussi une 50ene d'onglet ouvert sous firefox ainsi que quelques autres applications.
Pour le conky je peux le poster, mais il n'a rien de spécial car pour l'instant toutes les infos sont afficher via le script lua, il n'y a donc rien dans la zone conky.text = [[ ]] et comme le script n'est pas terminé il tourne en type override pour rester au dessus de l'écran ou je le met.
conky.config = {
alignment = 'top_middle',
background = false,
border_width = 1,
double_buffer=true,
cpu_avg_samples = 2,
default_color = 'white',
default_outline_color = 'white',
default_shade_color = 'white',
draw_borders = false,
draw_graph_borders = true,
draw_outline = false,
draw_shades = false,
use_xft = true,
font = 'DejaVu Sans Mono:size=12',
gap_x = 30,
gap_y = -1035,
minimum_height = 1035,
minimum_width = 1920,
net_avg_samples = 2,
no_buffers = true,
out_to_console = false,
out_to_stderr = false,
extra_newline = false,
own_window = true,
own_window_class = 'Conky',
own_window_type = 'override',
own_window_colour = '000000',
own_window_transparent = true,
own_window_argb_visual=true,
own_window_argb_value=0,
stippled_borders = 0,
update_interval = 1.0,
uppercase = false,
use_spacer = 'none',
show_graph_scale = false,
show_graph_range = false,
color1='55570a',
color2='cc4400',
lua_load='/home/solmarek/.conky/Perso/jauges.lua',
lua_draw_hook_post='conky_main'
}
conky.text = [[
]]
Ce qui m’inquiète c'est que pour en arriver à ce type de jauge, j'utilise beaucoup de cairo_line_to() et pour avoir un pseudo axe z, ça nécessite aussi à chaque fois un calcul pour obtenir les coordonnées xy (cependant g basé le calcul uniquement sur l'axe x pour éviter d'avoir des calculs trop lourds et un résultat quasi identique)
Du coup si ça s'avère être trop lourd, je préfère arrêter les modifications et utiliser le moins possible ces jauges.
Pour le script lua ça ne me pose pas vraiment de problème de le poster, c'est juste qu'il n'est pas terminé, contient des variables déclarées non utilisées (test et idée), des bouts de code en commentaire (modification en cours), des paramètres non utilisé (a ajouter plus tard),.... bref il faudrait que je fasse beaucoup de ménage dedans avant de le poster
de plus pour mieux m'y retrouver, chaque élément (jauge) est dans un fichier lua à part car chaque jauge nécessite environ 150 lignes de paramètres (commentaire compris XD).
Je vais essayer de poster une version allégée du script lua en mettant uniquement ce qui sert à afficher les jauges en perspective. (par contre c'est la premiere foi que je fais du lua, et ma façon de coder va en faire râler plus d'un XD)
Edit: voila mon script lua allégé
j'ai aussi inclu les paramètres pour une jauge (Core 1)
J'ai essayer de commenter tous les paramètres, mais je ne suis pas certain d'avoir toujours été très clair
Par contre vu que le script n'est pas encore terminé, je n'ai pas commenté le code.
pour le tester il suffit d'ajouter ces deux lignes à ton fichier conky (en adaptant le chemin vers le script)
lua_load='/home/solmarek/.conky/Perso/jauges.lua',
lua_draw_hook_post='conky_main'
jauges.lua
couleurs_degrade_CPU_1={0xff2222,0xe3a300,0x00d89f}
couleurs_degrade_CPU_2={0x730e0e,0x6b4c00,0x005941}
couleurs_degrade_CPU_3={0xff7575,0xe3c454,0x4ad8ae}
couleur_face_CPU_1=0x4d8a71
couleur_face_CPU_2=0x440000
couleur_varie_CPU_1=0x00d89f
couleur_varie_CPU_2=0xff0000
couleur_txt_CPU_1=0x000000
couleur_txt_CPU_2=0x888888
couleur_bordure_CPU_1=0xffffff
nbre_couche_max = 0 -- ne pas modifier
num_couche=0 -- ne pas modifier
pointdefuitex=960 -- Coordonnée X du point de fuite pour la perspective
pointdefuitey=540 -- Coordonnée Y du point de fuite pour la perspective
profondeur=1200 -- Profondeur maximum de l'axe Z (augmente ou diminue la taille des faces de coté
grouplist= {
CPU={500,400,50}, -- Coordonnée xyz ajouter aux paramètres posx,posy,posz des jauges ayant le même nom de groupe
-- Permet de positionner plusieurs jauges en même temps
}
require 'cairo'
require 'imlib2'
params_elements= --liste des jauges
{
{
--valeurfixe=50, -- permet de bloquer la valeur de la jauge (pratique pour faire des tests)
surfacetype='jauge_pointdefuite', -- ne pas modifier / ou modifier le script car c la seule option possible dans cette version
group='CPU', -- Pour le grouper les jauges (voir plus haut grouplist)
posx=0,posy=0,posz=0, -- position X,Y et Z de la jauge (valeur ajouter à celle spécifié dans grouplist)
couche=1, -- pour changer l'ordre d'affichage/superposition des jauges sans avoir à déplacer la liste des paramètres de chaque jauge.
dimensions={40,0,40}, --[[taille x, y, z de la jauge (la taille Z affiché dépend de la profondeur maximum et de la distance par rapport au point de fuite.
Mettre une valeur sur l'axe de la face mobile, revient à déplacer la position 0 (par ex pour afficher des valeurs négative) ]]
facemobile='haut', -- sens de remplissage de la jauge (avant, arriere, gauche, droite, haut, bas)
amplitude=2, -- définit la taille de la jauge (valeur maximum * amplitude) >> à modifier car pas pratique ^^ <<
rotation=0, -- angle de rotation de la jauge pour le positionnement (rotation uniquement autour de l'axe z)
ordreface={1,2,3,4,5,6}, --[[ 1=arriere, 2=gauche, haut=3, avant=4, bas=5, droite=6 (ordre d'afichage des faces de la jauge)
à modifier selon les faces visible de la jauge]]
fond_sur_jauge={false,false,false,true,true,true}, --[[ ordre d'affichage entre les parois du conteneur (fond) et celle de la jauge.
true signifie que la parois du conteneur est dessigner par dessus celle de la jauge.
l'ordre correspondant à celui définit plus haut.
ex: si ordreface={4,3,1,5,6,2}, la première valeur de fond_sur_jauge correspond à la face 4 (avant)]]
-- données
name='cpu', -- commande utilisé par conky \ exemple pour name='cpu' et arg='cpu0'
arg='cpu1', -- paramètre utilisé dans la commande précédente / correspond à: ${cpu cpu0}
vmax=100, -- valeur maximum possible
--pointdefuitex=750, --décommenter pour remplacer la valeur de la variable global pointdefuitex (pour corriger l'effet de perspective si nécessaire)
--pointdefuitey=300, --décommenter pour remplacer la valeur de la variable global pointdefuitey (pour corriger l'effet de perspective si nécessaire)
--profondeur=1500, --décommenter pour remplacer la valeur de la variable global profondeur (pour corriger l'effet de perspective si nécessaire)
paramstexte={ voirtexte=true, --affichage des valeurs ou non
textemobile=true,--la position du texte suit le remplissage de la jauge
voirtitre=true, --afficher un titre (un texte fixe)
-- Paramètres du texte (valeurs) de la jauge
operateurcouleur='OVER', --opérateur utilisé pour la superposition des couleurs
txtavanttxt='', -- texte affiché devant la valeur
txtaprestxt='%',-- texte afiché après la valeur
tailletexte=25, -- taille du texte
policetexte='Play',--police du texte
texte_style1='normal', -- (normal / italique / oblique)
texte_style2='gras', -- (normal / gras)
positiontxtxyz={80,15,0},--position du texte (pour ajuster au besoin)
decalx_par_caractere=7, --[[ nombre de pixel à décaler en x par nombre de caractères à afficher (txtavanttxt+valeur+txtaprestxt)
pour maintenir le texte centré, ou bien pour qu'il se décale dans dans un sens ou l'autre.]]
rotationtexte=0, --angle de rotation du texte (même fonctionnement que pour la jauge)
paramscouleur= {--paramètres des couleurs utilisé pour afficher le texte (unie, lineaire, radial, variable). Attention les variables ne sont pas les mêmes celon le type.
typecouleurs='unie',basecouleur=couleur_txt_CPU_1,valeuralpha=1.0 --[[ typecouleurs = unies/lineaire/radial/variable
basecouleur= couleur au format 0x000000 (spécifique à unie et variable)
valeuralpha= valeur comprise entre 0.0 et 1.0 (0=invisible, 1=opaque)]]
},
-- Paramètres du titre de la jauge
optitrecouleur='DIFFERENCE', -- optionnel: operateurcouleur utilisé si absent
titretexte='Core 1', -- Texte affiché comme titre.
policetitre='Play', -- optionnel: policetexte utilisé si absent
tailletitre=30, -- optionnel: tailletexte utilisé si absent
positiontitrexyz={30,-5,0}, -- optionnel: {0,0,0} si absent
rotationtitre=-90, -- optionnel: 0 si absent
titre_style1='normal', -- optionnel: texte_style1 utilisé si absent
titre_style2='gras', -- optionnel: texte_style2 utilisé si absent
paramscouleurtitre={ -- optionnel: paramscouleur utilisé si absent
typecouleurs='unie',basecouleur=couleur_txt_CPU_2,valeuralpha=0.8
}
},
paramslist={ -- Liste des paramètres appliqué à chacune des 6 faces de la jauge
--[[face arriere ]] {
-- Paramètres pour la face de la jauge
fillface=true,traceface=true, --fillface: affichage de la face. --traceface: affichage des contours de la face.
operateurcouleur='OVER', --même effet que pour le texte.
paramscouleurfill= { -- paramètre des couleurs pour la face
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
--[[ listcouleurs: liste des couleurs utilisé pour le dégrade au format {0x000000,0x000000,...} (spécifique à lineaire et radial)
listalphas: liste des valeurs de transparence pour chaque couleur spécifié dans listcouleurs (spécifique à lineaire et radial)
coordspattern: coordonnées définissant le sens de tracé du dégradé,'auto' signifie celon le sens de axe_degrade.
ex format des coordonnées lineaire: {x0=0,y0=100,x1=50,y1=200}
ex format des coordonnées radial: {x0=150,y0=150,radius0=50,x1=150,y1=150,radius1=70}
axe_degrade:1,2,3 ou 4 (sens du dégradé si coordspattern='auto') << uniquement pour lineaire
offsetlist (optionnel): positionnement des couleurs entre x0y0 et x1y1 -format: {0.0,1.0} << option spécifique à lineaire et radial
si l'option est absente, les couleurs sont réparties équitablement(ex pour 5 couleurs {0.0,0.25,0.5,0.75,1.0} sera utilisé.)
]]
},
paramscouleurtrace= { -- paramètre des couleurs pour le tracé du contour de la face
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= { -- paramètre du tracé du contour
taille=0, -- épaisseur du trait (il est possible d'utilisé une valeur inféreur à 1)
typeligne='round', -- forme utilisé pour débuter et terminer le tracé (round,square,butt)
typejointure='round' -- forme utilisé lors d'une croisement de ligne (round,square,bevel)
},
-- Paramètres pour la face du conteneur de la jauge (mêmes options que pour la face de la jauge)
-- Conseil: utilisé une valeur alpha très faible.
fillfond=true, tracefond=true,
operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.1,0.1,0.1},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.2, typeligne='round', typejointure='round'}
},
--[[face gauche ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_2,listalphas={0.1,0.1,0.1},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.2, typeligne='round', typejointure='round'}
},
--[[face haut ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='variable',basecouleur=couleur_varie_CPU_1,couleurseuil=couleur_varie_CPU_2,valeuralpha=0.5
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='unie',basecouleur=couleur_face_CPU_2,valeuralpha=0.1
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.5, typeligne='round', typejointure='round'}
},
--[[face devant ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.3,0.3,0.3},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=1, typeligne='round', typejointure='round'}
},
--[[face bas ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='unie',basecouleur=couleur_face_CPU_1,valeuralpha=0.5
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='unie',basecouleur=couleur_face_CPU_1,valeuralpha=0.1
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.5, typeligne='round', typejointure='round'}
},
--[[face droite ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_3,listalphas={0.3,0.3,0.3},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=1.0, typeligne='round', typejointure='round'}
}
}
}
}
function draw_interface(cr,value,pt)
local w,h=conky_window.width,conky_window.height
local surfacetype=pt['surfacetype']
local vmax=pt['vmax']
if surfacetype=='jauge_pointdefuite' then
local paramslist=pt['paramslist']
local originalparamslist
if paramslist == nil then
paramslist = defautparamslist
originalparamslist = paramslist
end
local amplitude=pt['amplitude']
local group=pt['group']
local positiongroup=grouplist[group]
local posx=pt['posx']+positiongroup[1]
local posy=pt['posy']+positiongroup[2]
local posz=pt['posz']+positiongroup[3]
local pfxy={pointdefuitex,pointdefuitey}
local prf=profondeur
local paramstexte=pt['paramstexte']
local voirtexte=paramstexte['voirtexte']
local origine=true
local dimensions=pt['dimensions']
local facemobile=pt['facemobile']
local listcoord
local coordsp1
local coordsp2
local coordsp3
local coordsp4
local rotation=pt['rotation']
local valeurnegative=false
local valeury=false
local valeurz=false
local ordreface=pt['ordreface']
local fond_sur_jauge=pt['fond_sur_jauge']
if facemobile == 'droite' then
valeury=false
valeurz=false
valeurnegative=false
listcoord={
{0,0,dimensions[3],true, dimensions[1],0,dimensions[3],false, dimensions[1],dimensions[2],dimensions[3],false, 0,dimensions[2],dimensions[3],true},-- x
{0,0,dimensions[3],true, 0,0,0,true, 0,dimensions[2],0,true, 0,dimensions[2],dimensions[3],true}, -- <-
{0,0,dimensions[3],true, dimensions[1],0,dimensions[3],false, dimensions[1],0,0,false, 0,0,0,true},-- ^
{0,0,0,true, dimensions[1],0,0,false, dimensions[1],dimensions[2],0,false, 0,dimensions[2],0,true}, -- o
{0,dimensions[2],0,true, dimensions[1],dimensions[2],0,false, dimensions[1],dimensions[2],dimensions[3],false, 0,dimensions[2],dimensions[3],true},-- v
{dimensions[1],0,0,false, dimensions[1],0,dimensions[3],false, dimensions[1],dimensions[2],dimensions[3],false, dimensions[1],dimensions[2],0,false}-- ->
}
elseif facemobile == 'gauche' then
valeury=false
valeurz=false
valeurnegative=true
listcoord={
{0,0,dimensions[3],false, dimensions[1],0,dimensions[3],true, dimensions[1],dimensions[2],dimensions[3],true, 0,dimensions[2],dimensions[3],false},-- x
{0,0,dimensions[3],false, 0,0,0,false, 0,dimensions[2],0,false, 0,dimensions[2],dimensions[3],false}, -- <-
{0,0,dimensions[3],false, dimensions[1],0,dimensions[3],true, dimensions[1],0,0,true, 0,0,0,false},-- ^
{0,0,0,false, dimensions[1],0,0,true, dimensions[1],dimensions[2],0,true, 0,dimensions[2],0,false}, -- o
{0,dimensions[2],0,false, dimensions[1],dimensions[2],0,true, dimensions[1],dimensions[2],dimensions[3],true, 0,dimensions[2],dimensions[3],false},-- v
{dimensions[1],0,0,true, dimensions[1],0,dimensions[3],true, dimensions[1],dimensions[2],dimensions[3],true, dimensions[1],dimensions[2],0,true}-- ->
}
elseif facemobile == 'haut' then
valeury=true
valeurz=false
valeurnegative=true
listcoord={
{0,0,dimensions[3],false, dimensions[1],0,dimensions[3],false, dimensions[1],dimensions[2],dimensions[3],true, 0,dimensions[2],dimensions[3],true},-- x
{0,0,dimensions[3],false, 0,0,0,false, 0,dimensions[2],0,true, 0,dimensions[2],dimensions[3],true}, -- <-
{0,0,dimensions[3],false, dimensions[1],0,dimensions[3],false, dimensions[1],0,0,false, 0,0,0,false},-- ^
{0,0,0,false, dimensions[1],0,0,false, dimensions[1],dimensions[2],0,true, 0,dimensions[2],0,true}, -- o
{0,dimensions[2],0,true, dimensions[1],dimensions[2],0,true, dimensions[1],dimensions[2],dimensions[3],true, 0,dimensions[2],dimensions[3],true},-- v
{dimensions[1],0,0,false, dimensions[1],0,dimensions[3],false, dimensions[1],dimensions[2],dimensions[3],true, dimensions[1],dimensions[2],0,true}-- ->
}
elseif facemobile == 'bas' then
valeury=true
valeurz=false
valeurnegative=false
listcoord={
{0,0,dimensions[3],true, dimensions[1],0,dimensions[3],true, dimensions[1],dimensions[2],dimensions[3],false, 0,dimensions[2],dimensions[3],false},-- x
{0,0,dimensions[3],true, 0,0,0,true, 0,dimensions[2],0,false, 0,dimensions[2],dimensions[3],false}, -- <-
{0,0,dimensions[3],true, dimensions[1],0,dimensions[3],true, dimensions[1],0,0,true, 0,0,0,true},-- ^
{0,0,0,true, dimensions[1],0,0,true, dimensions[1],dimensions[2],0,false, 0,dimensions[2],0,false}, -- o
{0,dimensions[2],0,false, dimensions[1],dimensions[2],0,false, dimensions[1],dimensions[2],dimensions[3],false, 0,dimensions[2],dimensions[3],false},-- v
{dimensions[1],0,0,true, dimensions[1],0,dimensions[3],true, dimensions[1],dimensions[2],dimensions[3],false, dimensions[1],dimensions[2],0,false}-- ->
}
elseif facemobile == 'arriere' then
valeury=false
valeurz=true
valeurnegative=false
listcoord={
{0,0,dimensions[3],false, dimensions[1],0,dimensions[3],false, dimensions[1],dimensions[2],dimensions[3],false, 0,dimensions[2],dimensions[3],false},-- x
{0,0,dimensions[3],false, 0,0,0,true, 0,dimensions[2],0,true, 0,dimensions[2],dimensions[3],false}, -- <-
{0,0,dimensions[3],false, dimensions[1],0,dimensions[3],false, dimensions[1],0,0,true, 0,0,0,true},-- ^
{0,0,0,true, dimensions[1],0,0,true, dimensions[1],dimensions[2],0,true, 0,dimensions[2],0,true}, -- o
{0,dimensions[2],0,true, dimensions[1],dimensions[2],0,true, dimensions[1],dimensions[2],dimensions[3],false, 0,dimensions[2],dimensions[3],false},-- v
{dimensions[1],0,0,true, dimensions[1],0,dimensions[3],false, dimensions[1],dimensions[2],dimensions[3],false, dimensions[1],dimensions[2],0,true}-- ->
}
elseif facemobile == 'avant' then
valeury=false
valeurz=true
valeurnegative=true
listcoord={
{0,0,dimensions[3],true, dimensions[1],0,dimensions[3],true, dimensions[1],dimensions[2],dimensions[3],true, 0,dimensions[2],dimensions[3],true},-- x
{0,0,dimensions[3],true, 0,0,0,false, 0,dimensions[2],0,false, 0,dimensions[2],dimensions[3],true}, -- <-
{0,0,dimensions[3],true, dimensions[1],0,dimensions[3],true, dimensions[1],0,0,false, 0,0,0,false},-- ^
{0,0,0,false, dimensions[1],0,0,false, dimensions[1],dimensions[2],0,false, 0,dimensions[2],0,false}, -- o
{0,dimensions[2],0,false, dimensions[1],dimensions[2],0,false, dimensions[1],dimensions[2],dimensions[3],true, 0,dimensions[2],dimensions[3],true},-- v
{dimensions[1],0,0,false, dimensions[1],0,dimensions[3],true, dimensions[1],dimensions[2],dimensions[3],true, dimensions[1],dimensions[2],0,false}-- ->
}
end
if pt['pointdefuitex'] ~= nil then
pfxy[1]=pt['pointdefuitex']
end
if pt['pointdefuitey'] ~= nil then
pfxy[2]=pt['pointdefuitey']
end
if pt['profondeur'] ~= nil then
prf=pt['profondeur']
end
if pt['valeurfixe'] ~= nil then
value=pt['valeurfixe']
end
local i1=1
pfxy=rotation_forme(cr,pfxy,{posx,posy,posz},rotation)
for i, v in ipairs(ordreface) do
local paramsface=paramslist[v]
local fillface=paramsface['fillface']
local traceface=paramsface['traceface']
local fillfond=paramsface['fillfond']
local tracefond=paramsface['tracefond']
local listcoordface=listcoord[v]
local tmpcx1=0
local tmpcy1=0
local tmpcx2=0
local tmpcy2=0
local tmpcx3=0
local tmpcy3=0
local tmpcx4=0
local tmpcy4=0
local function trace_face_jauge()
tmpcx1=0
tmpcy1=0
tmpcx2=0
tmpcy2=0
tmpcx3=0
tmpcy3=0
tmpcx4=0
tmpcy4=0
while i1 < 16 do
local cx=listcoordface[i1]
local cy=listcoordface[i1+1]
local cz=listcoordface[i1+2]+posz
local pointfixe=listcoordface[i1+3]
local cxfond=listcoordface[i1]
local cyfond=listcoordface[i1+1]
local czfond=listcoordface[i1+2]+posz
if pointfixe == false then
if valeurz then
if valeurnegative then
cz=(listcoordface[i1+2]-value*amplitude)+posz
czfond=(listcoordface[i1+2]-vmax*amplitude)+posz
else
cz=(listcoordface[i1+2]+value*amplitude)+posz
czfond=(listcoordface[i1+2]+vmax*amplitude)+posz
end
else
if valeury then
if valeurnegative then
cy=cy-value*amplitude
cyfond=cyfond-vmax*amplitude
else
cy=cy+value*amplitude
cyfond=cyfond+vmax*amplitude
end
else
if valeurnegative then
cx=cx-value*amplitude
cxfond=cxfond-vmax*amplitude
else
cx=cx+value*amplitude
cxfond=cxfond+vmax*amplitude
end
end
end
end
local cxy={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,cx,cy,cz)}
local cxyfond={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,cxfond,cyfond,czfond)}
if i1==1 then
tmpcx1=cxyfond[1]
tmpcy1=cxyfond[2]
end
if i1==5 then
tmpcx2=cxyfond[1]
tmpcy2=cxyfond[2]
end
if i1==9 then
tmpcx3=cxyfond[1]
tmpcy3=cxyfond[2]
end
if i1==13 then
tmpcx4=cxyfond[1]
tmpcy4=cxyfond[2]
end
if origine then
cairo_new_path(cr)
cairo_move_to(cr,cxy[1],cxy[2])
origine=false
else
cairo_line_to(cr,cxy[1],cxy[2])
end
i1=i1+4
if i1>13 then
coordsp1={tmpcx1+(tmpcx4-tmpcx1)/2,tmpcy1+(tmpcy4-tmpcy1)/2,tmpcx2+(tmpcx3-tmpcx2)/2,tmpcy2+(tmpcy3-tmpcy2)/2}
coordsp2={tmpcx1+(tmpcx2-tmpcx1)/2,tmpcy1+(tmpcy2-tmpcy1)/2,tmpcx4+(tmpcx3-tmpcx4)/2,tmpcy4+(tmpcy3-tmpcy4)/2}
local lstx={tmpcx1,tmpcx2,tmpcx3,tmpcx4}
local lsty={tmpcy1,tmpcy2,tmpcy3,tmpcy4}
table.sort(lstx)
table.sort(lsty)
coordsp3={lstx[1],0,lstx[4],0}
coordsp4={0,lsty[1],0,lsty[4]}
end
end
i1=1
local paramscouleurfill = paramsface['paramscouleurfill']
local paramscouleurtrace = paramsface['paramscouleurtrace']
local opcouleur=paramsface['operateurcouleur']
local paramsligne=paramsface['paramsligne']
set_mode_fusion(cr,opcouleur)
cairo_close_path(cr)
local patternauto = false
if paramscouleurfill['coordspattern'] == 'auto' then
patternauto = true
if paramscouleurfill['axe_degrade'] == 1 then
paramscouleurfill['coordspattern'] = {x0=coordsp1[1], y0=coordsp1[2], x1=coordsp1[3], y1=coordsp1[4]}
elseif paramscouleurfill['axe_degrade'] == 2 then
paramscouleurfill['coordspattern'] = {x0=coordsp2[1], y0=coordsp2[2], x1=coordsp2[3], y1=coordsp2[4]}
elseif paramscouleurfill['axe_degrade'] == 3 then
paramscouleurfill['coordspattern'] = {x0=coordsp3[1], y0=coordsp3[2], x1=coordsp3[3], y1=coordsp3[4]}
elseif paramscouleurfill['axe_degrade'] == 4 then
paramscouleurfill['coordspattern'] = {x0=coordsp4[1], y0=coordsp4[2], x1=coordsp4[3], y1=coordsp4[4]}
end
end
if fillface and traceface then
set_couleurs(cr,paramscouleurfill,vmax,value)
cairo_fill_preserve(cr)
set_trace(cr,paramsligne)
set_couleurs(cr,paramscouleurtrace,vmax,value)
cairo_stroke(cr)
elseif fillface then
set_couleurs(cr,paramscouleurfill,vmax,value)
cairo_fill(cr)
elseif traceface then
set_couleurs(cr,paramscouleurtrace,vmax,value)
set_trace(cr,paramsligne)
cairo_stroke(cr)
end
if patternauto then
paramscouleurfill['coordspattern'] = 'auto'
end
origine=true
end
local function trace_face_fond()
tmpcx1=0
tmpcy1=0
tmpcx2=0
tmpcy2=0
tmpcx3=0
tmpcy3=0
tmpcx4=0
tmpcy4=0
if fillfond or tracefond then
local pointsface={{0,0},{0,0},{0,0},{0,0}}
local ipoint=1
while i1 < 16 do
local cx=listcoordface[i1]
local cy=listcoordface[i1+1]
local cz=listcoordface[i1+2]+posz
local pointfixe=listcoordface[i1+3]
if pointfixe == false then
if valeurz then
if valeurnegative then
cz=(listcoordface[i1+2]-vmax*amplitude)+posz
else
cz=(listcoordface[i1+2]+vmax*amplitude)+posz
end
else
if valeury then
if valeurnegative then
cy=cy-vmax*amplitude
else
cy=cy+vmax*amplitude
end
else
if valeurnegative then
cx=cx-vmax*amplitude
else
cx=cx+vmax*amplitude
end
end
end
end
local cxy={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,cx,cy,cz)}
if i1==1 then
tmpcx1=cxy[1]
tmpcy1=cxy[2]
end
if i1==5 then
tmpcx2=cxy[1]
tmpcy2=cxy[2]
end
if i1==9 then
tmpcx3=cxy[1]
tmpcy3=cxy[2]
end
if i1==13 then
tmpcx4=cxy[1]
tmpcy4=cxy[2]
end
if origine then
cairo_new_path(cr)
cairo_move_to(cr,cxy[1],cxy[2])
origine=false
else
cairo_line_to(cr,cxy[1],cxy[2])
end
i1=i1+4
pointsface[ipoint]=cxy
ipoint=ipoint+1
if i1>13 then
local lstx={tmpcx1,tmpcx2,tmpcx3,tmpcx4}
local lsty={tmpcy1,tmpcy2,tmpcy3,tmpcy4}
table.sort(lstx)
table.sort(lsty)
coordsp1={tmpcx1+(tmpcx4-tmpcx1)/2,tmpcy1+(tmpcy4-tmpcy1)/2,tmpcx2+(tmpcx3-tmpcx2)/2,tmpcy2+(tmpcy3-tmpcy2)/2}
coordsp2={tmpcx1+(tmpcx2-tmpcx1)/2,tmpcy1+(tmpcy2-tmpcy1)/2,tmpcx4+(tmpcx3-tmpcx4)/2,tmpcy4+(tmpcy3-tmpcy4)/2}
coordsp3={lstx[1],0,lstx[4],0}
coordsp4={0,lsty[1],0,lsty[4]}
end
end
i1=1
ipoint=1
local paramscouleurfillfond = paramsface['paramscouleurfillfond']
local paramscouleurtracefond = paramsface['paramscouleurtracefond']
local opcouleurfond=paramsface['operateurcouleurfond']
local paramslignefond=paramsface['paramslignefond']
set_mode_fusion(cr,opcouleurfond)
cairo_close_path(cr)
local patternauto = false
if paramscouleurfillfond['coordspattern'] == 'auto' then
if paramscouleurfillfond['axe_degrade'] == 1 then
paramscouleurfillfond['coordspattern'] = {x0=coordsp1[1], y0=coordsp1[2], x1=coordsp1[3], y1=coordsp1[4]}
elseif paramscouleurfillfond['axe_degrade'] == 2 then
paramscouleurfillfond['coordspattern'] = {x0=coordsp2[1], y0=coordsp2[2], x1=coordsp2[3], y1=coordsp2[4]}
elseif paramscouleurfillfond['axe_degrade'] == 3 then
paramscouleurfillfond['coordspattern'] = {x0=coordsp3[1], y0=coordsp3[2], x1=coordsp3[3], y1=coordsp3[4]}
elseif paramscouleurfillfond['axe_degrade'] == 4 then
paramscouleurfillfond['coordspattern'] = {x0=coordsp4[1], y0=coordsp4[2], x1=coordsp4[3], y1=coordsp4[4]}
end
patternauto = true
end
if fillfond and tracefond then
set_couleurs(cr,paramscouleurfillfond)
cairo_fill_preserve(cr)
set_trace(cr,paramslignefond)
set_couleurs(cr,paramscouleurtracefond)
cairo_stroke(cr)
elseif fillfond then
set_couleurs(cr,paramscouleurfillfond)
cairo_fill(cr)
elseif tracefond then
set_couleurs(cr,paramscouleurtracefond)
set_trace(cr,paramslignefond)
cairo_stroke(cr)
end
if patternauto then
paramscouleurfillfond['coordspattern'] = 'auto'
end
origine=true
end
end
-- a faire: regrouper en une seule fonction trace_face_fond() et trace_face_jauge()
if fond_sur_jauge[i] then
trace_face_jauge()
trace_face_fond()
else
trace_face_fond()
trace_face_jauge()
end
tmpcx1=0
tmpcy1=0
tmpcx2=0
tmpcy2=0
tmpcx3=0
tmpcy3=0
tmpcx4=0
tmpcy4=0
end
pfxy=rotation_forme(cr,pfxy,{posx,posy,posz},-rotation)
if paramstexte['voirtexte'] then
local optxtcouleur=paramstexte['operateurcouleur']
local textemobile=paramstexte['textemobile']
local txtavanttxt=paramstexte['txtavanttxt']
local txtaprestxt=paramstexte['txtaprestxt']
local tailletexte=paramstexte['tailletexte']
local policetexte=paramstexte['policetexte']
local positiontxtxyz=paramstexte['positiontxtxyz']
local rotationtexte=paramstexte['rotationtexte']
local couleurstexte=paramstexte['paramscouleur']
local texte_style1=paramstexte['texte_style1']
local texte_style2=paramstexte['texte_style2']
local decalx_par_caractere=0
if paramstexte['decalx_par_caractere'] ~= nil then
decalx_par_caractere=paramstexte['decalx_par_caractere']
end
local posxytxt
if textemobile then
if facemobile == 'droite' then
posxytxt={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,positiontxtxyz[1]+value*amplitude,positiontxtxyz[2],posz+positiontxtxyz[3])}
elseif facemobile == 'gauche' then
posxytxt={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,positiontxtxyz[1]-value*amplitude,positiontxtxyz[2],posz+positiontxtxyz[3])}
elseif facemobile == 'haut' then
posxytxt={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,positiontxtxyz[1],positiontxtxyz[2]-value*amplitude,posz+positiontxtxyz[3])}
elseif facemobile == 'bas' then
posxytxt={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,positiontxtxyz[1],positiontxtxyz[2]+value*amplitude,posz+positiontxtxyz[3])}
elseif facemobile == 'arriere' then
posxytxt={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,positiontxtxyz[1],positiontxtxyz[2],posz+positiontxtxyz[3]+(value*amplitude))}
elseif facemobile == 'avant' then
posxytxt={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,positiontxtxyz[1],positiontxtxyz[2],posz+(positiontxtxyz[3]-value*amplitude))}
end
else
posxytxt={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,positiontxtxyz[1],positiontxtxyz[2],posz+positiontxtxyz[3])}
end
pfxy=rotation_forme(cr,pfxy,{posxytxt[1],posxytxt[2],0},rotationtexte)
local texteavoir = txtavanttxt .. value .. txtaprestxt
cairo_move_to(cr,posxytxt[1]-(decalx_par_caractere*string.len(texteavoir)),posxytxt[2])
set_couleurs(cr,couleurstexte,vmax,value)
set_mode_fusion(cr,optxtcouleur)
set_font_texte(cr,policetexte,texte_style1,texte_style2)
cairo_set_font_size(cr, tailletexte)
cairo_show_text(cr, texteavoir)
pfxy=rotation_forme(cr,pfxy,{posxytxt[1],posxytxt[2],0},-rotationtexte)
end
if paramstexte['voirtitre'] then
local titretexte=paramstexte['titretexte']
local tailletitre
local policetitre
local rotationtitre=0
local positiontitrexyz={0,0,0}
local couleurstitre
local optitrecouleur
local titre_style1
local titre_style2
if paramstexte['tailletitre'] ~= nil then
tailletitre=paramstexte['tailletitre']
else
tailletitre=paramstexte['tailletexte']
end
if paramstexte['policetitre'] ~= nil then
policetitre=paramstexte['policetitre']
else
policetitre=paramstexte['policetexte']
end
if paramstexte['titre_style1'] ~= nil then
titre_style1=paramstexte['titre_style1']
else
titre_style1=paramstexte['texte_style1']
end
if paramstexte['titre_style2'] ~= nil then
titre_style2=paramstexte['titre_style2']
else
titre_style2=paramstexte['texte_style2']
end
if paramstexte['positiontitrexyz'] ~= nil then positiontitrexyz=paramstexte['positiontitrexyz'] end
if paramstexte['rotationtitre'] ~= nil then rotationtitre=paramstexte['rotationtitre'] end
if paramstexte['paramscouleurtitre'] ~= nil then
couleurstitre=paramstexte['paramscouleurtitre']
else
couleurstitre=paramstexte['paramscouleur']
end
if paramstexte['optitrecouleur'] ~= nil then
optitrecouleur=paramstexte['optitrecouleur']
else
optitrecouleur=paramstexte['operateurcouleur']
end
local posxytxt
posxytxt={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,positiontitrexyz[1],positiontitrexyz[2],posz+positiontitrexyz[3])}
pfxy=rotation_forme(cr,pfxy,{posxytxt[1],posxytxt[2],0},rotationtitre)
cairo_move_to(cr,posxytxt[1],posxytxt[2])
set_couleurs(cr,couleurstitre,vmax,value)
set_mode_fusion(cr,optitrecouleur)
set_font_texte(cr,policetitre,titre_style1,titre_style2)
cairo_set_font_size(cr, tailletitre)
cairo_show_text(cr, titretexte)
pfxy=rotation_forme(cr,pfxy,{posxytxt[1],posxytxt[2],0},-rotationtitre)
end
end
end
function rgb_to_r_g_b(colour,alpha)
return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
end
function rotation_forme(cr,pfxy,posxyz,angle)
if angle ~= 0 then
cairo_translate (cr,posxyz[1],posxyz[2])
cairo_rotate(cr, angle*math.pi/180)
cairo_translate (cr,-posxyz[1],-posxyz[2])
local angle_s=0
local px1=0
local px2=0
local py1=0
local py2=0
local limitex=false
local limitey=false
if pfxy[2] > posxyz[2] then
py2=pfxy[2]
py1=posxyz[2]
limitey=false
elseif pfxy[2] < posxyz[2] then
py1=pfxy[2]
py2=posxyz[2]
limitey=true
end
if pfxy[1] > posxyz[1] then
px2=pfxy[1]
px1=posxyz[1]
limitex=false
elseif pfxy[1] < posxyz[1] then
px1=pfxy[1]
px2=posxyz[1]
limitex=true
end
local rayonpf=math.sqrt((px2-px1)*(px2-px1)+(py2-py1)*(py2-py1))
local ry=0
local rx=0
if limitex then
rx=-(px2-px1)
else
rx=(px2-px1)
end
if limitey then
ry=(py2-py1)
else
ry=-(py2-py1)
end
angle_s=math.atan2(ry,rx)
pfxy[1]=posxyz[1]+rayonpf*math.cos(-angle_s-angle*math.pi/180)
pfxy[2]=posxyz[2]+rayonpf*math.sin(-angle_s-angle*math.pi/180)
end
return pfxy
end
function set_font_texte(cr,police,fstyle,fweight)
local font_style
local font_weight
if fstyle == 'normal' then
font_style=CAIRO_FONT_SLANT_NORMAL
elseif fstyle == 'italique' then
font_style=CAIRO_FONT_SLANT_ITALIC
elseif fstyle == 'oblique' then
font_style=CAIRO_FONT_SLANT_OBLIQUE
end
if fweight == 'normal' then
font_weight=CAIRO_FONT_WEIGHT_NORMAL
elseif fweight == 'gras' then
font_weight=CAIRO_FONT_WEIGHT_BOLD
end
cairo_select_font_face(cr, police,font_style,font_weight)
end
function set_trace(cr, paramsligne)
local ligne
local jointure
local dasharray=paramsligne['decoupe_trait']
if paramsligne['typeligne'] == 'round' then
ligne=CAIRO_LINE_CAP_ROUND
elseif paramsligne['typeligne'] == 'square' then
ligne=CAIRO_LINE_CAP_SQUARE
else
ligne=CAIRO_LINE_CAP_BUTT
end
if paramsligne['typejointure'] == 'round' then
jointure=CAIRO_LINE_JOIN_ROUND
elseif paramsligne['typejointure'] == 'bevel' then
jointure=CAIRO_LINE_JOIN_BEVEL
else
jointure=CAIRO_LINE_JOIN_MITER
end
if dasharray ~= nil then
cairo_set_dash(cr,dasharray,table.getn(dasharray),1)
end
cairo_set_line_join(cr, jointure)
cairo_set_line_cap(cr, ligne)
cairo_set_line_width(cr,paramsligne['taille'])
end
function set_mode_fusion(cr,modefusion)
if modefusion == 'OVER' then cairo_set_operator(cr,CAIRO_OPERATOR_OVER)
elseif modefusion == 'SOURCE' then cairo_set_operator(cr,CAIRO_OPERATOR_SOURCE)
elseif modefusion == 'XOR' then cairo_set_operator(cr,CAIRO_OPERATOR_XOR)
elseif modefusion == 'ADD' then cairo_set_operator(cr,CAIRO_OPERATOR_ADD)
elseif modefusion == 'SATURATE' then cairo_set_operator(cr,CAIRO_OPERATOR_SATURATE)
elseif modefusion == 'LIGHTEN' then cairo_set_operator(cr,CAIRO_OPERATOR_LIGHTEN)
elseif modefusion == 'HSL_HUE' then cairo_set_operator(cr,CAIRO_OPERATOR_HSL_HUE)
elseif modefusion == 'HSL_SATURATION' then cairo_set_operator(cr,CAIRO_OPERATOR_HSL_SATURATION)
elseif modefusion == 'HSL_COLOR' then cairo_set_operator(cr,CAIRO_OPERATOR_HSL_COLOR)
elseif modefusion == 'HSL_LUMINOSITY' then cairo_set_operator(cr,CAIRO_OPERATOR_HSL_LUMINOSITY)
elseif modefusion == 'CLEAR' then cairo_set_operator(cr,CAIRO_OPERATOR_CLEAR)
elseif modefusion == 'DARKEN' then cairo_set_operator(cr,CAIRO_OPERATOR_DARKEN)
elseif modefusion == 'OUT' then cairo_set_operator(cr,CAIRO_OPERATOR_OUT)
elseif modefusion == 'IN' then cairo_set_operator(cr,CAIRO_OPERATOR_IN)
elseif modefusion == 'ATOP' then cairo_set_operator(cr,CAIRO_OPERATOR_ATOP)
elseif modefusion == 'MULTIPLY' then cairo_set_operator(cr,CAIRO_OPERATOR_MULTIPLY)
elseif modefusion == 'DEST' then cairo_set_operator(cr,CAIRO_OPERATOR_DEST)
elseif modefusion == 'DEST_OVER' then cairo_set_operator(cr,CAIRO_OPERATOR_DEST_OVER)
elseif modefusion == 'DEST_IN' then cairo_set_operator(cr,CAIRO_OPERATOR_DEST_IN)
elseif modefusion == 'DEST_OUT' then cairo_set_operator(cr,CAIRO_OPERATOR_DEST_OUT)
elseif modefusion == 'DEST_ATOP' then cairo_set_operator(cr,CAIRO_OPERATOR_DEST_ATOP)
elseif modefusion == 'SCREEN' then cairo_set_operator(cr,CAIRO_OPERATOR_SCREEN)
elseif modefusion == 'OVERLAY' then cairo_set_operator(cr,CAIRO_OPERATOR_OVERLAY)
elseif modefusion == 'COLOR_DODGE' then cairo_set_operator(cr,CAIRO_OPERATOR_COLOR_DODGE)
elseif modefusion == 'COLOR_BURN' then cairo_set_operator(cr,CAIRO_OPERATOR_COLOR_BURN)
elseif modefusion == 'HARD_LIGHT' then cairo_set_operator(cr,CAIRO_OPERATOR_HARD_LIGHT)
elseif modefusion == 'SOFT_LIGHT' then cairo_set_operator(cr,CAIRO_OPERATOR_SOFT_LIGHT)
elseif modefusion == 'DIFFERENCE' then cairo_set_operator(cr,CAIRO_OPERATOR_DIFFERENCE)
elseif modefusion == 'EXCLUSION' then cairo_set_operator(cr,CAIRO_OPERATOR_EXCLUSION)
else cairo_set_operator(cr,CAIRO_OPERATOR_OVER) end
end
function set_couleurs(cr,paramscouleurs,vmax,value)
local typecouleurs=paramscouleurs['typecouleurs']
if vmax == nil then vmax=0 end
if value == nil then value=0 end
if typecouleurs=='variable' then
local vtemp3=(paramscouleurs['basecouleur'] % 0x100)
local vtemp2=(paramscouleurs['basecouleur'] - vtemp3) % 0x10000
local vtemp1=paramscouleurs['basecouleur'] - vtemp2 - vtemp3
local vc1=vtemp1 / 256 / 256
local vc2=vtemp2 / 256
local vc3=vtemp3
local vcstemp3=(paramscouleurs['couleurseuil'] % 0x100)
local vcstemp2=(paramscouleurs['couleurseuil'] - vcstemp3) % 0x10000
local vcstemp1=paramscouleurs['couleurseuil'] - vcstemp2 - vcstemp3
local vcs1=vcstemp1 / 256 / 256
local vcs2=vcstemp2 / 256
local vcs3=vcstemp3
local cmod1=(vc1-vcs1)/vmax*value
local cmod2=(vc2-vcs2)/vmax*value
local cmod3=(vc3-vcs3)/vmax*value
local newcouleur=math.floor((vc1-cmod1))*256*256 + math.floor((vc2-cmod2))*256 +math.floor(vc3-cmod3)
cairo_set_source_rgba(cr,rgb_to_r_g_b(newcouleur,paramscouleurs['valeuralpha']))
elseif typecouleurs == 'unie' then
cairo_set_source_rgba(cr,rgb_to_r_g_b(paramscouleurs['basecouleur'],paramscouleurs['valeuralpha']))
elseif typecouleurs == 'lineaire' then
local i=1
local nbrecouleur = table.getn(paramscouleurs['listcouleurs'])
local coords=paramscouleurs['coordspattern']
local degradpattern = cairo_pattern_create_linear(coords['x0'], coords['y0'], coords['x1'], coords['y1'])
local listcouleurs=paramscouleurs['listcouleurs']
local listalphas=paramscouleurs['listalphas']
local offsetlist=paramscouleurs['offsetlist']
while i < nbrecouleur+1 do
local offsetc=0
if offsetlist == nil then
offsetc = (1/(nbrecouleur-1))*(i-1)
else
offsetc=offsetlist[i]
end
cairo_pattern_add_color_stop_rgba(degradpattern,offsetc,rgb_to_r_g_b(listcouleurs[i], listalphas[i]))
i=i+1
end
cairo_set_source(cr,degradpattern)
cairo_pattern_destroy(degradpattern)
elseif typecouleurs == 'radial' then
local i=1
local coords=paramscouleurs['coordspattern']
local degradpattern = cairo_pattern_create_radial(coords['x0'], coords['y0'], coords['radius0'], coords['x1'], coords['y1'], coords['radius1'])
local listcouleurs=paramscouleurs['listcouleurs']
local nbrecouleur = table.getn(listcouleurs)
local listalphas=paramscouleurs['listalphas']
local offsetlist=paramscouleurs['offsetlist']
while i < nbrecouleur+1 do
local offsetc=0.0
if offsetlist == nil then
offsetc = (1/(nbrecouleur-1))*(i-1)
else
offsetc=offsetlist[i]
end
cairo_pattern_add_color_stop_rgba(degradpattern,offsetc,rgb_to_r_g_b(listcouleurs[i], listalphas[i]))
i=i+1
end
cairo_set_source(cr,degradpattern)
cairo_pattern_destroy(degradpattern)
end
end
function coordonnees_xyz(prf,pfx,pfy,posx,posy,posz,cx,cy,cz)
local vx=pfx - (posx+cx)
local vy=pfy - (posy+cy)
if (posz+cz) ~= 0 then
local rapport_profondeurx=vx/prf
local tx=(posz+cz)*rapport_profondeurx
local tmpy=vx/tx
local ty=vy/tmpy
if vx == 0 then
rapport_profondeurx=vy/prf
ty=(posz+cz)*rapport_profondeurx
tx=0
end
return posx+cx+tx, posy+cy+ty
else
return posx+cx, posy+cy
end
end
function init_variable()
local function setup_interface(cr,pt)
local str=''
local value=0
if pt['name'] == '' then
value = 0
else
str=string.format('${%s %s}',pt['name'],pt['arg'])
str=conky_parse(str)
value=tonumber(str)
if value == nil then value = 0 end
end
draw_interface(cr,value,pt)
end
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 > 0 then
while num_couche<nbre_couche_max do
for i in pairs(params_elements) do
local params = params_elements[i]
if params['couche'] == num_couche then
setup_interface(cr,params)
end
end
num_couche = num_couche + 1
end
num_couche = 0
end
for i in pairs(params_elements) do
local params = params_elements[i]
if params['couche'] > nbre_couche_max then
nbre_couche_max = params['couche']
end
end
nbre_couche_max = nbre_couche_max + 1
cairo_surface_destroy(cs)
cairo_destroy(cr)
end
function conky_main()
init_variable()
end
Dernière modification par Solmarek (Le 01/02/2017, à 23:02)
Hors ligne
#1518 Le 02/02/2017, à 06:45
- chepioq
Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes
Je ne peux pas tester, j'ai une erreur quand je lance le conky :
dominique@host-192-168-1-2 test-lua$ conky -c conkyrc
conky: desktop window (240018c) is subwindow of root window (284)
conky: window type - override
conky: drawing to created window (0x5800002)
conky: drawing to double buffer
conky: llua_do_call: function conky_main execution failed: /home/dominique/test-lua/jauges.lua:990: attempt to call a nil value (field 'getn')
conky: llua_do_call: function conky_main execution failed: /home/dominique/test-lua/jauges.lua:990: attempt to call a nil value (field 'getn')
conky: llua_do_call: function conky_main execution failed: /home/dominique/test-lua/jauges.lua:990: attempt to call a nil value (field 'getn')
conky: llua_do_call: function conky_main execution failed: /home/dominique/test-lua/jauges.lua:990: attempt to call a nil value (field 'getn')
conky: llua_do_call: function conky_main execution failed: /home/dominique/test-lua/jauges.lua:990: attempt to call a nil value (field 'getn')
^Cconky: received SIGINT or SIGTERM to terminate. bye!
Tout est dans tout et réciproquement....
Hors ligne
#1519 Le 02/02/2017, à 13:44
- Solmarek
Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes
Bonjour et merci de tes réponses,
tu peux essayer avec ce script ?
j'ai remplacé les table.getn() car ça a été retiré dans lua52 apparemment.
couleurs_degrade_CPU_1={0xff2222,0xe3a300,0x00d89f}
couleurs_degrade_CPU_2={0x730e0e,0x6b4c00,0x005941}
couleurs_degrade_CPU_3={0xff7575,0xe3c454,0x4ad8ae}
couleur_face_CPU_1=0x4d8a71
couleur_face_CPU_2=0x440000
couleur_varie_CPU_1=0x00d89f
couleur_varie_CPU_2=0xff0000
couleur_txt_CPU_1=0x000000
couleur_txt_CPU_2=0x888888
couleur_bordure_CPU_1=0xffffff
nbre_couche_max = 0 -- ne pas modifier
num_couche=0 -- ne pas modifier
pointdefuitex=960 -- Coordonnée X du point de fuite pour la perspective
pointdefuitey=540 -- Coordonnée Y du point de fuite pour la perspective
profondeur=1200 -- Profondeur maximum de l'axe Z (augmente ou diminue la taille des faces de coté
grouplist= {
CPU={500,400,50}, -- Coordonnée xyz ajouter aux paramètres posx,posy,posz des jauges ayant le même nom de groupe
-- Permet de positionner plusieurs jauges en même temps
}
require 'cairo'
require 'imlib2'
params_elements= --liste des jauges
{
{
--valeurfixe=50, -- permet de bloquer la valeur de la jauge (pratique pour faire des tests)
surfacetype='jauge_pointdefuite', -- ne pas modifier / ou modifier le script car c la seule option possible dans cette version
group='CPU', -- Pour le grouper les jauges (voir plus haut grouplist)
posx=0,posy=0,posz=0, -- position X,Y et Z de la jauge (valeur ajouter à celle spécifié dans grouplist)
couche=1, -- pour changer l'ordre d'affichage/superposition des jauges sans avoir à déplacer la liste des paramètres de chaque jauge.
dimensions={40,0,40}, --[[taille x, y, z de la jauge (la taille Z affiché dépend de la profondeur maximum et de la distance par rapport au point de fuite.
Mettre une valeur sur l'axe de la face mobile, revient à déplacer la position 0 (par ex pour afficher des valeurs négative) ]]
facemobile='haut', -- sens de remplissage de la jauge (avant, arriere, gauche, droite, haut, bas)
amplitude=2, -- définit la taille de la jauge (valeur maximum * amplitude) >> à modifier car pas pratique ^^ <<
rotation=0, -- angle de rotation de la jauge pour le positionnement (rotation uniquement autour de l'axe z)
ordreface={1,2,3,4,5,6}, --[[ 1=arriere, 2=gauche, haut=3, avant=4, bas=5, droite=6 (ordre d'afichage des faces de la jauge)
à modifier selon les faces visible de la jauge]]
fond_sur_jauge={false,false,false,true,true,true}, --[[ ordre d'affichage entre les parois du conteneur (fond) et celle de la jauge.
true signifie que la parois du conteneur est dessigner par dessus celle de la jauge.
l'ordre correspondant à celui définit plus haut.
ex: si ordreface={4,3,1,5,6,2}, la première valeur de fond_sur_jauge correspond à la face 4 (avant)]]
-- données
name='cpu', -- commande utilisé par conky \ exemple pour name='cpu' et arg='cpu0'
arg='cpu1', -- paramètre utilisé dans la commande précédente / correspond à: ${cpu cpu0}
vmax=100, -- valeur maximum possible
--pointdefuitex=750, --décommenter pour remplacer la valeur de la variable global pointdefuitex (pour corriger l'effet de perspective si nécessaire)
--pointdefuitey=300, --décommenter pour remplacer la valeur de la variable global pointdefuitey (pour corriger l'effet de perspective si nécessaire)
--profondeur=1500, --décommenter pour remplacer la valeur de la variable global profondeur (pour corriger l'effet de perspective si nécessaire)
paramstexte={ voirtexte=true, --affichage des valeurs ou non
textemobile=true,--la position du texte suit le remplissage de la jauge
voirtitre=true, --afficher un titre (un texte fixe)
-- Paramètres du texte (valeurs) de la jauge
operateurcouleur='OVER', --opérateur utilisé pour la superposition des couleurs
txtavanttxt='', -- texte affiché devant la valeur
txtaprestxt='%',-- texte afiché après la valeur
tailletexte=25, -- taille du texte
policetexte='Play',--police du texte
texte_style1='normal', -- (normal / italique / oblique)
texte_style2='gras', -- (normal / gras)
positiontxtxyz={80,15,0},--position du texte (pour ajuster au besoin)
decalx_par_caractere=7, --[[ nombre de pixel à décaler en x par nombre de caractères à afficher (txtavanttxt+valeur+txtaprestxt)
pour maintenir le texte centré, ou bien pour qu'il se décale dans dans un sens ou l'autre.]]
rotationtexte=0, --angle de rotation du texte (même fonctionnement que pour la jauge)
paramscouleur= {--paramètres des couleurs utilisé pour afficher le texte (unie, lineaire, radial, variable). Attention les variables ne sont pas les mêmes celon le type.
typecouleurs='unie',basecouleur=couleur_txt_CPU_1,valeuralpha=1.0 --[[ typecouleurs = unies/lineaire/radial/variable
basecouleur= couleur au format 0x000000 (spécifique à unie et variable)
valeuralpha= valeur comprise entre 0.0 et 1.0 (0=invisible, 1=opaque)]]
},
-- Paramètres du titre de la jauge
optitrecouleur='DIFFERENCE', -- optionnel: operateurcouleur utilisé si absent
titretexte='Core 1', -- Texte affiché comme titre.
policetitre='Play', -- optionnel: policetexte utilisé si absent
tailletitre=30, -- optionnel: tailletexte utilisé si absent
positiontitrexyz={30,-5,0}, -- optionnel: {0,0,0} si absent
rotationtitre=-90, -- optionnel: 0 si absent
titre_style1='normal', -- optionnel: texte_style1 utilisé si absent
titre_style2='gras', -- optionnel: texte_style2 utilisé si absent
paramscouleurtitre={ -- optionnel: paramscouleur utilisé si absent
typecouleurs='unie',basecouleur=couleur_txt_CPU_2,valeuralpha=0.8
}
},
paramslist={ -- Liste des paramètres appliqué à chacune des 6 faces de la jauge
--[[face arriere ]] {
-- Paramètres pour la face de la jauge
fillface=true,traceface=true, --fillface: affichage de la face. --traceface: affichage des contours de la face.
operateurcouleur='OVER', --même effet que pour le texte.
paramscouleurfill= { -- paramètre des couleurs pour la face
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
--[[ listcouleurs: liste des couleurs utilisé pour le dégrade au format {0x000000,0x000000,...} (spécifique à lineaire et radial)
listalphas: liste des valeurs de transparence pour chaque couleur spécifié dans listcouleurs (spécifique à lineaire et radial)
coordspattern: coordonnées définissant le sens de tracé du dégradé,'auto' signifie celon le sens de axe_degrade.
ex format des coordonnées lineaire: {x0=0,y0=100,x1=50,y1=200}
ex format des coordonnées radial: {x0=150,y0=150,radius0=50,x1=150,y1=150,radius1=70}
axe_degrade:1,2,3 ou 4 (sens du dégradé si coordspattern='auto') << uniquement pour lineaire
offsetlist (optionnel): positionnement des couleurs entre x0y0 et x1y1 -format: {0.0,1.0} << option spécifique à lineaire et radial
si l'option est absente, les couleurs sont réparties équitablement(ex pour 5 couleurs {0.0,0.25,0.5,0.75,1.0} sera utilisé.)
]]
},
paramscouleurtrace= { -- paramètre des couleurs pour le tracé du contour de la face
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= { -- paramètre du tracé du contour
taille=0, -- épaisseur du trait (il est possible d'utilisé une valeur inféreur à 1)
typeligne='round', -- forme utilisé pour débuter et terminer le tracé (round,square,butt)
typejointure='round' -- forme utilisé lors d'une croisement de ligne (round,square,bevel)
},
-- Paramètres pour la face du conteneur de la jauge (mêmes options que pour la face de la jauge)
-- Conseil: utilisé une valeur alpha très faible.
fillfond=true, tracefond=true,
operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.1,0.1,0.1},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.2, typeligne='round', typejointure='round'}
},
--[[face gauche ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_2,listalphas={0.1,0.1,0.1},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.2, typeligne='round', typejointure='round'}
},
--[[face haut ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='variable',basecouleur=couleur_varie_CPU_1,couleurseuil=couleur_varie_CPU_2,valeuralpha=0.5
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='unie',basecouleur=couleur_face_CPU_2,valeuralpha=0.1
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.5, typeligne='round', typejointure='round'}
},
--[[face devant ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.3,0.3,0.3},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=1, typeligne='round', typejointure='round'}
},
--[[face bas ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='unie',basecouleur=couleur_face_CPU_1,valeuralpha=0.5
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='unie',basecouleur=couleur_face_CPU_1,valeuralpha=0.1
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.5, typeligne='round', typejointure='round'}
},
--[[face droite ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_3,listalphas={0.3,0.3,0.3},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=1.0, typeligne='round', typejointure='round'}
}
}
}
}
function draw_interface(cr,value,pt)
local w,h=conky_window.width,conky_window.height
local surfacetype=pt['surfacetype']
local vmax=pt['vmax']
if surfacetype=='jauge_pointdefuite' then
local paramslist=pt['paramslist']
local originalparamslist
if paramslist == nil then
paramslist = defautparamslist
originalparamslist = paramslist
end
local amplitude=pt['amplitude']
local group=pt['group']
local positiongroup=grouplist[group]
local posx=pt['posx']+positiongroup[1]
local posy=pt['posy']+positiongroup[2]
local posz=pt['posz']+positiongroup[3]
local pfxy={pointdefuitex,pointdefuitey}
local prf=profondeur
local paramstexte=pt['paramstexte']
local voirtexte=paramstexte['voirtexte']
local origine=true
local dimensions=pt['dimensions']
local facemobile=pt['facemobile']
local listcoord
local coordsp1
local coordsp2
local coordsp3
local coordsp4
local rotation=pt['rotation']
local valeurnegative=false
local valeury=false
local valeurz=false
local ordreface=pt['ordreface']
local fond_sur_jauge=pt['fond_sur_jauge']
if facemobile == 'droite' then
valeury=false
valeurz=false
valeurnegative=false
listcoord={
{0,0,dimensions[3],true, dimensions[1],0,dimensions[3],false, dimensions[1],dimensions[2],dimensions[3],false, 0,dimensions[2],dimensions[3],true},-- x
{0,0,dimensions[3],true, 0,0,0,true, 0,dimensions[2],0,true, 0,dimensions[2],dimensions[3],true}, -- <-
{0,0,dimensions[3],true, dimensions[1],0,dimensions[3],false, dimensions[1],0,0,false, 0,0,0,true},-- ^
{0,0,0,true, dimensions[1],0,0,false, dimensions[1],dimensions[2],0,false, 0,dimensions[2],0,true}, -- o
{0,dimensions[2],0,true, dimensions[1],dimensions[2],0,false, dimensions[1],dimensions[2],dimensions[3],false, 0,dimensions[2],dimensions[3],true},-- v
{dimensions[1],0,0,false, dimensions[1],0,dimensions[3],false, dimensions[1],dimensions[2],dimensions[3],false, dimensions[1],dimensions[2],0,false}-- ->
}
elseif facemobile == 'gauche' then
valeury=false
valeurz=false
valeurnegative=true
listcoord={
{0,0,dimensions[3],false, dimensions[1],0,dimensions[3],true, dimensions[1],dimensions[2],dimensions[3],true, 0,dimensions[2],dimensions[3],false},-- x
{0,0,dimensions[3],false, 0,0,0,false, 0,dimensions[2],0,false, 0,dimensions[2],dimensions[3],false}, -- <-
{0,0,dimensions[3],false, dimensions[1],0,dimensions[3],true, dimensions[1],0,0,true, 0,0,0,false},-- ^
{0,0,0,false, dimensions[1],0,0,true, dimensions[1],dimensions[2],0,true, 0,dimensions[2],0,false}, -- o
{0,dimensions[2],0,false, dimensions[1],dimensions[2],0,true, dimensions[1],dimensions[2],dimensions[3],true, 0,dimensions[2],dimensions[3],false},-- v
{dimensions[1],0,0,true, dimensions[1],0,dimensions[3],true, dimensions[1],dimensions[2],dimensions[3],true, dimensions[1],dimensions[2],0,true}-- ->
}
elseif facemobile == 'haut' then
valeury=true
valeurz=false
valeurnegative=true
listcoord={
{0,0,dimensions[3],false, dimensions[1],0,dimensions[3],false, dimensions[1],dimensions[2],dimensions[3],true, 0,dimensions[2],dimensions[3],true},-- x
{0,0,dimensions[3],false, 0,0,0,false, 0,dimensions[2],0,true, 0,dimensions[2],dimensions[3],true}, -- <-
{0,0,dimensions[3],false, dimensions[1],0,dimensions[3],false, dimensions[1],0,0,false, 0,0,0,false},-- ^
{0,0,0,false, dimensions[1],0,0,false, dimensions[1],dimensions[2],0,true, 0,dimensions[2],0,true}, -- o
{0,dimensions[2],0,true, dimensions[1],dimensions[2],0,true, dimensions[1],dimensions[2],dimensions[3],true, 0,dimensions[2],dimensions[3],true},-- v
{dimensions[1],0,0,false, dimensions[1],0,dimensions[3],false, dimensions[1],dimensions[2],dimensions[3],true, dimensions[1],dimensions[2],0,true}-- ->
}
elseif facemobile == 'bas' then
valeury=true
valeurz=false
valeurnegative=false
listcoord={
{0,0,dimensions[3],true, dimensions[1],0,dimensions[3],true, dimensions[1],dimensions[2],dimensions[3],false, 0,dimensions[2],dimensions[3],false},-- x
{0,0,dimensions[3],true, 0,0,0,true, 0,dimensions[2],0,false, 0,dimensions[2],dimensions[3],false}, -- <-
{0,0,dimensions[3],true, dimensions[1],0,dimensions[3],true, dimensions[1],0,0,true, 0,0,0,true},-- ^
{0,0,0,true, dimensions[1],0,0,true, dimensions[1],dimensions[2],0,false, 0,dimensions[2],0,false}, -- o
{0,dimensions[2],0,false, dimensions[1],dimensions[2],0,false, dimensions[1],dimensions[2],dimensions[3],false, 0,dimensions[2],dimensions[3],false},-- v
{dimensions[1],0,0,true, dimensions[1],0,dimensions[3],true, dimensions[1],dimensions[2],dimensions[3],false, dimensions[1],dimensions[2],0,false}-- ->
}
elseif facemobile == 'arriere' then
valeury=false
valeurz=true
valeurnegative=false
listcoord={
{0,0,dimensions[3],false, dimensions[1],0,dimensions[3],false, dimensions[1],dimensions[2],dimensions[3],false, 0,dimensions[2],dimensions[3],false},-- x
{0,0,dimensions[3],false, 0,0,0,true, 0,dimensions[2],0,true, 0,dimensions[2],dimensions[3],false}, -- <-
{0,0,dimensions[3],false, dimensions[1],0,dimensions[3],false, dimensions[1],0,0,true, 0,0,0,true},-- ^
{0,0,0,true, dimensions[1],0,0,true, dimensions[1],dimensions[2],0,true, 0,dimensions[2],0,true}, -- o
{0,dimensions[2],0,true, dimensions[1],dimensions[2],0,true, dimensions[1],dimensions[2],dimensions[3],false, 0,dimensions[2],dimensions[3],false},-- v
{dimensions[1],0,0,true, dimensions[1],0,dimensions[3],false, dimensions[1],dimensions[2],dimensions[3],false, dimensions[1],dimensions[2],0,true}-- ->
}
elseif facemobile == 'avant' then
valeury=false
valeurz=true
valeurnegative=true
listcoord={
{0,0,dimensions[3],true, dimensions[1],0,dimensions[3],true, dimensions[1],dimensions[2],dimensions[3],true, 0,dimensions[2],dimensions[3],true},-- x
{0,0,dimensions[3],true, 0,0,0,false, 0,dimensions[2],0,false, 0,dimensions[2],dimensions[3],true}, -- <-
{0,0,dimensions[3],true, dimensions[1],0,dimensions[3],true, dimensions[1],0,0,false, 0,0,0,false},-- ^
{0,0,0,false, dimensions[1],0,0,false, dimensions[1],dimensions[2],0,false, 0,dimensions[2],0,false}, -- o
{0,dimensions[2],0,false, dimensions[1],dimensions[2],0,false, dimensions[1],dimensions[2],dimensions[3],true, 0,dimensions[2],dimensions[3],true},-- v
{dimensions[1],0,0,false, dimensions[1],0,dimensions[3],true, dimensions[1],dimensions[2],dimensions[3],true, dimensions[1],dimensions[2],0,false}-- ->
}
end
if pt['pointdefuitex'] ~= nil then
pfxy[1]=pt['pointdefuitex']
end
if pt['pointdefuitey'] ~= nil then
pfxy[2]=pt['pointdefuitey']
end
if pt['profondeur'] ~= nil then
prf=pt['profondeur']
end
if pt['valeurfixe'] ~= nil then
value=pt['valeurfixe']
end
local i1=1
pfxy=rotation_forme(cr,pfxy,{posx,posy,posz},rotation)
for i, v in ipairs(ordreface) do
local paramsface=paramslist[v]
local fillface=paramsface['fillface']
local traceface=paramsface['traceface']
local fillfond=paramsface['fillfond']
local tracefond=paramsface['tracefond']
local listcoordface=listcoord[v]
local tmpcx1=0
local tmpcy1=0
local tmpcx2=0
local tmpcy2=0
local tmpcx3=0
local tmpcy3=0
local tmpcx4=0
local tmpcy4=0
local function trace_face_jauge()
tmpcx1=0
tmpcy1=0
tmpcx2=0
tmpcy2=0
tmpcx3=0
tmpcy3=0
tmpcx4=0
tmpcy4=0
while i1 < 16 do
local cx=listcoordface[i1]
local cy=listcoordface[i1+1]
local cz=listcoordface[i1+2]+posz
local pointfixe=listcoordface[i1+3]
local cxfond=listcoordface[i1]
local cyfond=listcoordface[i1+1]
local czfond=listcoordface[i1+2]+posz
if pointfixe == false then
if valeurz then
if valeurnegative then
cz=(listcoordface[i1+2]-value*amplitude)+posz
czfond=(listcoordface[i1+2]-vmax*amplitude)+posz
else
cz=(listcoordface[i1+2]+value*amplitude)+posz
czfond=(listcoordface[i1+2]+vmax*amplitude)+posz
end
else
if valeury then
if valeurnegative then
cy=cy-value*amplitude
cyfond=cyfond-vmax*amplitude
else
cy=cy+value*amplitude
cyfond=cyfond+vmax*amplitude
end
else
if valeurnegative then
cx=cx-value*amplitude
cxfond=cxfond-vmax*amplitude
else
cx=cx+value*amplitude
cxfond=cxfond+vmax*amplitude
end
end
end
end
local cxy={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,cx,cy,cz)}
local cxyfond={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,cxfond,cyfond,czfond)}
if i1==1 then
tmpcx1=cxyfond[1]
tmpcy1=cxyfond[2]
end
if i1==5 then
tmpcx2=cxyfond[1]
tmpcy2=cxyfond[2]
end
if i1==9 then
tmpcx3=cxyfond[1]
tmpcy3=cxyfond[2]
end
if i1==13 then
tmpcx4=cxyfond[1]
tmpcy4=cxyfond[2]
end
if origine then
cairo_new_path(cr)
cairo_move_to(cr,cxy[1],cxy[2])
origine=false
else
cairo_line_to(cr,cxy[1],cxy[2])
end
i1=i1+4
if i1>13 then
coordsp1={tmpcx1+(tmpcx4-tmpcx1)/2,tmpcy1+(tmpcy4-tmpcy1)/2,tmpcx2+(tmpcx3-tmpcx2)/2,tmpcy2+(tmpcy3-tmpcy2)/2}
coordsp2={tmpcx1+(tmpcx2-tmpcx1)/2,tmpcy1+(tmpcy2-tmpcy1)/2,tmpcx4+(tmpcx3-tmpcx4)/2,tmpcy4+(tmpcy3-tmpcy4)/2}
local lstx={tmpcx1,tmpcx2,tmpcx3,tmpcx4}
local lsty={tmpcy1,tmpcy2,tmpcy3,tmpcy4}
table.sort(lstx)
table.sort(lsty)
coordsp3={lstx[1],0,lstx[4],0}
coordsp4={0,lsty[1],0,lsty[4]}
end
end
i1=1
local paramscouleurfill = paramsface['paramscouleurfill']
local paramscouleurtrace = paramsface['paramscouleurtrace']
local opcouleur=paramsface['operateurcouleur']
local paramsligne=paramsface['paramsligne']
set_mode_fusion(cr,opcouleur)
cairo_close_path(cr)
local patternauto = false
if paramscouleurfill['coordspattern'] == 'auto' then
patternauto = true
if paramscouleurfill['axe_degrade'] == 1 then
paramscouleurfill['coordspattern'] = {x0=coordsp1[1], y0=coordsp1[2], x1=coordsp1[3], y1=coordsp1[4]}
elseif paramscouleurfill['axe_degrade'] == 2 then
paramscouleurfill['coordspattern'] = {x0=coordsp2[1], y0=coordsp2[2], x1=coordsp2[3], y1=coordsp2[4]}
elseif paramscouleurfill['axe_degrade'] == 3 then
paramscouleurfill['coordspattern'] = {x0=coordsp3[1], y0=coordsp3[2], x1=coordsp3[3], y1=coordsp3[4]}
elseif paramscouleurfill['axe_degrade'] == 4 then
paramscouleurfill['coordspattern'] = {x0=coordsp4[1], y0=coordsp4[2], x1=coordsp4[3], y1=coordsp4[4]}
end
end
if fillface and traceface then
set_couleurs(cr,paramscouleurfill,vmax,value)
cairo_fill_preserve(cr)
set_trace(cr,paramsligne)
set_couleurs(cr,paramscouleurtrace,vmax,value)
cairo_stroke(cr)
elseif fillface then
set_couleurs(cr,paramscouleurfill,vmax,value)
cairo_fill(cr)
elseif traceface then
set_couleurs(cr,paramscouleurtrace,vmax,value)
set_trace(cr,paramsligne)
cairo_stroke(cr)
end
if patternauto then
paramscouleurfill['coordspattern'] = 'auto'
end
origine=true
end
local function trace_face_fond()
tmpcx1=0
tmpcy1=0
tmpcx2=0
tmpcy2=0
tmpcx3=0
tmpcy3=0
tmpcx4=0
tmpcy4=0
if fillfond or tracefond then
local pointsface={{0,0},{0,0},{0,0},{0,0}}
local ipoint=1
while i1 < 16 do
local cx=listcoordface[i1]
local cy=listcoordface[i1+1]
local cz=listcoordface[i1+2]+posz
local pointfixe=listcoordface[i1+3]
if pointfixe == false then
if valeurz then
if valeurnegative then
cz=(listcoordface[i1+2]-vmax*amplitude)+posz
else
cz=(listcoordface[i1+2]+vmax*amplitude)+posz
end
else
if valeury then
if valeurnegative then
cy=cy-vmax*amplitude
else
cy=cy+vmax*amplitude
end
else
if valeurnegative then
cx=cx-vmax*amplitude
else
cx=cx+vmax*amplitude
end
end
end
end
local cxy={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,cx,cy,cz)}
if i1==1 then
tmpcx1=cxy[1]
tmpcy1=cxy[2]
end
if i1==5 then
tmpcx2=cxy[1]
tmpcy2=cxy[2]
end
if i1==9 then
tmpcx3=cxy[1]
tmpcy3=cxy[2]
end
if i1==13 then
tmpcx4=cxy[1]
tmpcy4=cxy[2]
end
if origine then
cairo_new_path(cr)
cairo_move_to(cr,cxy[1],cxy[2])
origine=false
else
cairo_line_to(cr,cxy[1],cxy[2])
end
i1=i1+4
pointsface[ipoint]=cxy
ipoint=ipoint+1
if i1>13 then
local lstx={tmpcx1,tmpcx2,tmpcx3,tmpcx4}
local lsty={tmpcy1,tmpcy2,tmpcy3,tmpcy4}
table.sort(lstx)
table.sort(lsty)
coordsp1={tmpcx1+(tmpcx4-tmpcx1)/2,tmpcy1+(tmpcy4-tmpcy1)/2,tmpcx2+(tmpcx3-tmpcx2)/2,tmpcy2+(tmpcy3-tmpcy2)/2}
coordsp2={tmpcx1+(tmpcx2-tmpcx1)/2,tmpcy1+(tmpcy2-tmpcy1)/2,tmpcx4+(tmpcx3-tmpcx4)/2,tmpcy4+(tmpcy3-tmpcy4)/2}
coordsp3={lstx[1],0,lstx[4],0}
coordsp4={0,lsty[1],0,lsty[4]}
end
end
i1=1
ipoint=1
local paramscouleurfillfond = paramsface['paramscouleurfillfond']
local paramscouleurtracefond = paramsface['paramscouleurtracefond']
local opcouleurfond=paramsface['operateurcouleurfond']
local paramslignefond=paramsface['paramslignefond']
set_mode_fusion(cr,opcouleurfond)
cairo_close_path(cr)
local patternauto = false
if paramscouleurfillfond['coordspattern'] == 'auto' then
if paramscouleurfillfond['axe_degrade'] == 1 then
paramscouleurfillfond['coordspattern'] = {x0=coordsp1[1], y0=coordsp1[2], x1=coordsp1[3], y1=coordsp1[4]}
elseif paramscouleurfillfond['axe_degrade'] == 2 then
paramscouleurfillfond['coordspattern'] = {x0=coordsp2[1], y0=coordsp2[2], x1=coordsp2[3], y1=coordsp2[4]}
elseif paramscouleurfillfond['axe_degrade'] == 3 then
paramscouleurfillfond['coordspattern'] = {x0=coordsp3[1], y0=coordsp3[2], x1=coordsp3[3], y1=coordsp3[4]}
elseif paramscouleurfillfond['axe_degrade'] == 4 then
paramscouleurfillfond['coordspattern'] = {x0=coordsp4[1], y0=coordsp4[2], x1=coordsp4[3], y1=coordsp4[4]}
end
patternauto = true
end
if fillfond and tracefond then
set_couleurs(cr,paramscouleurfillfond)
cairo_fill_preserve(cr)
set_trace(cr,paramslignefond)
set_couleurs(cr,paramscouleurtracefond)
cairo_stroke(cr)
elseif fillfond then
set_couleurs(cr,paramscouleurfillfond)
cairo_fill(cr)
elseif tracefond then
set_couleurs(cr,paramscouleurtracefond)
set_trace(cr,paramslignefond)
cairo_stroke(cr)
end
if patternauto then
paramscouleurfillfond['coordspattern'] = 'auto'
end
origine=true
end
end
-- a faire: regrouper en une seule fonction trace_face_fond() et trace_face_jauge()
if fond_sur_jauge[i] then
trace_face_jauge()
trace_face_fond()
else
trace_face_fond()
trace_face_jauge()
end
tmpcx1=0
tmpcy1=0
tmpcx2=0
tmpcy2=0
tmpcx3=0
tmpcy3=0
tmpcx4=0
tmpcy4=0
end
pfxy=rotation_forme(cr,pfxy,{posx,posy,posz},-rotation)
if paramstexte['voirtexte'] then
local optxtcouleur=paramstexte['operateurcouleur']
local textemobile=paramstexte['textemobile']
local txtavanttxt=paramstexte['txtavanttxt']
local txtaprestxt=paramstexte['txtaprestxt']
local tailletexte=paramstexte['tailletexte']
local policetexte=paramstexte['policetexte']
local positiontxtxyz=paramstexte['positiontxtxyz']
local rotationtexte=paramstexte['rotationtexte']
local couleurstexte=paramstexte['paramscouleur']
local texte_style1=paramstexte['texte_style1']
local texte_style2=paramstexte['texte_style2']
local decalx_par_caractere=0
if paramstexte['decalx_par_caractere'] ~= nil then
decalx_par_caractere=paramstexte['decalx_par_caractere']
end
local posxytxt
if textemobile then
if facemobile == 'droite' then
posxytxt={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,positiontxtxyz[1]+value*amplitude,positiontxtxyz[2],posz+positiontxtxyz[3])}
elseif facemobile == 'gauche' then
posxytxt={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,positiontxtxyz[1]-value*amplitude,positiontxtxyz[2],posz+positiontxtxyz[3])}
elseif facemobile == 'haut' then
posxytxt={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,positiontxtxyz[1],positiontxtxyz[2]-value*amplitude,posz+positiontxtxyz[3])}
elseif facemobile == 'bas' then
posxytxt={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,positiontxtxyz[1],positiontxtxyz[2]+value*amplitude,posz+positiontxtxyz[3])}
elseif facemobile == 'arriere' then
posxytxt={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,positiontxtxyz[1],positiontxtxyz[2],posz+positiontxtxyz[3]+(value*amplitude))}
elseif facemobile == 'avant' then
posxytxt={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,positiontxtxyz[1],positiontxtxyz[2],posz+(positiontxtxyz[3]-value*amplitude))}
end
else
posxytxt={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,positiontxtxyz[1],positiontxtxyz[2],posz+positiontxtxyz[3])}
end
pfxy=rotation_forme(cr,pfxy,{posxytxt[1],posxytxt[2],0},rotationtexte)
local texteavoir = txtavanttxt .. value .. txtaprestxt
cairo_move_to(cr,posxytxt[1]-(decalx_par_caractere*string.len(texteavoir)),posxytxt[2])
set_couleurs(cr,couleurstexte,vmax,value)
set_mode_fusion(cr,optxtcouleur)
set_font_texte(cr,policetexte,texte_style1,texte_style2)
cairo_set_font_size(cr, tailletexte)
cairo_show_text(cr, texteavoir)
pfxy=rotation_forme(cr,pfxy,{posxytxt[1],posxytxt[2],0},-rotationtexte)
end
if paramstexte['voirtitre'] then
local titretexte=paramstexte['titretexte']
local tailletitre
local policetitre
local rotationtitre=0
local positiontitrexyz={0,0,0}
local couleurstitre
local optitrecouleur
local titre_style1
local titre_style2
if paramstexte['tailletitre'] ~= nil then
tailletitre=paramstexte['tailletitre']
else
tailletitre=paramstexte['tailletexte']
end
if paramstexte['policetitre'] ~= nil then
policetitre=paramstexte['policetitre']
else
policetitre=paramstexte['policetexte']
end
if paramstexte['titre_style1'] ~= nil then
titre_style1=paramstexte['titre_style1']
else
titre_style1=paramstexte['texte_style1']
end
if paramstexte['titre_style2'] ~= nil then
titre_style2=paramstexte['titre_style2']
else
titre_style2=paramstexte['texte_style2']
end
if paramstexte['positiontitrexyz'] ~= nil then positiontitrexyz=paramstexte['positiontitrexyz'] end
if paramstexte['rotationtitre'] ~= nil then rotationtitre=paramstexte['rotationtitre'] end
if paramstexte['paramscouleurtitre'] ~= nil then
couleurstitre=paramstexte['paramscouleurtitre']
else
couleurstitre=paramstexte['paramscouleur']
end
if paramstexte['optitrecouleur'] ~= nil then
optitrecouleur=paramstexte['optitrecouleur']
else
optitrecouleur=paramstexte['operateurcouleur']
end
local posxytxt
posxytxt={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,positiontitrexyz[1],positiontitrexyz[2],posz+positiontitrexyz[3])}
pfxy=rotation_forme(cr,pfxy,{posxytxt[1],posxytxt[2],0},rotationtitre)
cairo_move_to(cr,posxytxt[1],posxytxt[2])
set_couleurs(cr,couleurstitre,vmax,value)
set_mode_fusion(cr,optitrecouleur)
set_font_texte(cr,policetitre,titre_style1,titre_style2)
cairo_set_font_size(cr, tailletitre)
cairo_show_text(cr, titretexte)
pfxy=rotation_forme(cr,pfxy,{posxytxt[1],posxytxt[2],0},-rotationtitre)
end
end
end
function rgb_to_r_g_b(colour,alpha)
return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
end
function rotation_forme(cr,pfxy,posxyz,angle)
if angle ~= 0 then
cairo_translate (cr,posxyz[1],posxyz[2])
cairo_rotate(cr, angle*math.pi/180)
cairo_translate (cr,-posxyz[1],-posxyz[2])
local angle_s=0
local px1=0
local px2=0
local py1=0
local py2=0
local limitex=false
local limitey=false
if pfxy[2] > posxyz[2] then
py2=pfxy[2]
py1=posxyz[2]
limitey=false
elseif pfxy[2] < posxyz[2] then
py1=pfxy[2]
py2=posxyz[2]
limitey=true
end
if pfxy[1] > posxyz[1] then
px2=pfxy[1]
px1=posxyz[1]
limitex=false
elseif pfxy[1] < posxyz[1] then
px1=pfxy[1]
px2=posxyz[1]
limitex=true
end
local rayonpf=math.sqrt((px2-px1)*(px2-px1)+(py2-py1)*(py2-py1))
local ry=0
local rx=0
if limitex then
rx=-(px2-px1)
else
rx=(px2-px1)
end
if limitey then
ry=(py2-py1)
else
ry=-(py2-py1)
end
angle_s=math.atan2(ry,rx)
pfxy[1]=posxyz[1]+rayonpf*math.cos(-angle_s-angle*math.pi/180)
pfxy[2]=posxyz[2]+rayonpf*math.sin(-angle_s-angle*math.pi/180)
end
return pfxy
end
function set_font_texte(cr,police,fstyle,fweight)
local font_style
local font_weight
if fstyle == 'normal' then
font_style=CAIRO_FONT_SLANT_NORMAL
elseif fstyle == 'italique' then
font_style=CAIRO_FONT_SLANT_ITALIC
elseif fstyle == 'oblique' then
font_style=CAIRO_FONT_SLANT_OBLIQUE
end
if fweight == 'normal' then
font_weight=CAIRO_FONT_WEIGHT_NORMAL
elseif fweight == 'gras' then
font_weight=CAIRO_FONT_WEIGHT_BOLD
end
cairo_select_font_face(cr, police,font_style,font_weight)
end
function set_trace(cr, paramsligne)
local ligne
local jointure
local dasharray=paramsligne['decoupe_trait']
if paramsligne['typeligne'] == 'round' then
ligne=CAIRO_LINE_CAP_ROUND
elseif paramsligne['typeligne'] == 'square' then
ligne=CAIRO_LINE_CAP_SQUARE
else
ligne=CAIRO_LINE_CAP_BUTT
end
if paramsligne['typejointure'] == 'round' then
jointure=CAIRO_LINE_JOIN_ROUND
elseif paramsligne['typejointure'] == 'bevel' then
jointure=CAIRO_LINE_JOIN_BEVEL
else
jointure=CAIRO_LINE_JOIN_MITER
end
if dasharray ~= nil then
--cairo_set_dash(cr,dasharray,table.getn(dasharray),1)
cairo_set_dash(cr,dasharray,#dasharray,1)
end
cairo_set_line_join(cr, jointure)
cairo_set_line_cap(cr, ligne)
cairo_set_line_width(cr,paramsligne['taille'])
end
function set_mode_fusion(cr,modefusion)
if modefusion == 'OVER' then cairo_set_operator(cr,CAIRO_OPERATOR_OVER)
elseif modefusion == 'SOURCE' then cairo_set_operator(cr,CAIRO_OPERATOR_SOURCE)
elseif modefusion == 'XOR' then cairo_set_operator(cr,CAIRO_OPERATOR_XOR)
elseif modefusion == 'ADD' then cairo_set_operator(cr,CAIRO_OPERATOR_ADD)
elseif modefusion == 'SATURATE' then cairo_set_operator(cr,CAIRO_OPERATOR_SATURATE)
elseif modefusion == 'LIGHTEN' then cairo_set_operator(cr,CAIRO_OPERATOR_LIGHTEN)
elseif modefusion == 'HSL_HUE' then cairo_set_operator(cr,CAIRO_OPERATOR_HSL_HUE)
elseif modefusion == 'HSL_SATURATION' then cairo_set_operator(cr,CAIRO_OPERATOR_HSL_SATURATION)
elseif modefusion == 'HSL_COLOR' then cairo_set_operator(cr,CAIRO_OPERATOR_HSL_COLOR)
elseif modefusion == 'HSL_LUMINOSITY' then cairo_set_operator(cr,CAIRO_OPERATOR_HSL_LUMINOSITY)
elseif modefusion == 'CLEAR' then cairo_set_operator(cr,CAIRO_OPERATOR_CLEAR)
elseif modefusion == 'DARKEN' then cairo_set_operator(cr,CAIRO_OPERATOR_DARKEN)
elseif modefusion == 'OUT' then cairo_set_operator(cr,CAIRO_OPERATOR_OUT)
elseif modefusion == 'IN' then cairo_set_operator(cr,CAIRO_OPERATOR_IN)
elseif modefusion == 'ATOP' then cairo_set_operator(cr,CAIRO_OPERATOR_ATOP)
elseif modefusion == 'MULTIPLY' then cairo_set_operator(cr,CAIRO_OPERATOR_MULTIPLY)
elseif modefusion == 'DEST' then cairo_set_operator(cr,CAIRO_OPERATOR_DEST)
elseif modefusion == 'DEST_OVER' then cairo_set_operator(cr,CAIRO_OPERATOR_DEST_OVER)
elseif modefusion == 'DEST_IN' then cairo_set_operator(cr,CAIRO_OPERATOR_DEST_IN)
elseif modefusion == 'DEST_OUT' then cairo_set_operator(cr,CAIRO_OPERATOR_DEST_OUT)
elseif modefusion == 'DEST_ATOP' then cairo_set_operator(cr,CAIRO_OPERATOR_DEST_ATOP)
elseif modefusion == 'SCREEN' then cairo_set_operator(cr,CAIRO_OPERATOR_SCREEN)
elseif modefusion == 'OVERLAY' then cairo_set_operator(cr,CAIRO_OPERATOR_OVERLAY)
elseif modefusion == 'COLOR_DODGE' then cairo_set_operator(cr,CAIRO_OPERATOR_COLOR_DODGE)
elseif modefusion == 'COLOR_BURN' then cairo_set_operator(cr,CAIRO_OPERATOR_COLOR_BURN)
elseif modefusion == 'HARD_LIGHT' then cairo_set_operator(cr,CAIRO_OPERATOR_HARD_LIGHT)
elseif modefusion == 'SOFT_LIGHT' then cairo_set_operator(cr,CAIRO_OPERATOR_SOFT_LIGHT)
elseif modefusion == 'DIFFERENCE' then cairo_set_operator(cr,CAIRO_OPERATOR_DIFFERENCE)
elseif modefusion == 'EXCLUSION' then cairo_set_operator(cr,CAIRO_OPERATOR_EXCLUSION)
else cairo_set_operator(cr,CAIRO_OPERATOR_OVER) end
end
function set_couleurs(cr,paramscouleurs,vmax,value)
local typecouleurs=paramscouleurs['typecouleurs']
if vmax == nil then vmax=0 end
if value == nil then value=0 end
if typecouleurs=='variable' then
local vtemp3=(paramscouleurs['basecouleur'] % 0x100)
local vtemp2=(paramscouleurs['basecouleur'] - vtemp3) % 0x10000
local vtemp1=paramscouleurs['basecouleur'] - vtemp2 - vtemp3
local vc1=vtemp1 / 256 / 256
local vc2=vtemp2 / 256
local vc3=vtemp3
local vcstemp3=(paramscouleurs['couleurseuil'] % 0x100)
local vcstemp2=(paramscouleurs['couleurseuil'] - vcstemp3) % 0x10000
local vcstemp1=paramscouleurs['couleurseuil'] - vcstemp2 - vcstemp3
local vcs1=vcstemp1 / 256 / 256
local vcs2=vcstemp2 / 256
local vcs3=vcstemp3
local cmod1=(vc1-vcs1)/vmax*value
local cmod2=(vc2-vcs2)/vmax*value
local cmod3=(vc3-vcs3)/vmax*value
local newcouleur=math.floor((vc1-cmod1))*256*256 + math.floor((vc2-cmod2))*256 +math.floor(vc3-cmod3)
cairo_set_source_rgba(cr,rgb_to_r_g_b(newcouleur,paramscouleurs['valeuralpha']))
elseif typecouleurs == 'unie' then
cairo_set_source_rgba(cr,rgb_to_r_g_b(paramscouleurs['basecouleur'],paramscouleurs['valeuralpha']))
elseif typecouleurs == 'lineaire' then
local i=1
--local nbrecouleur = table.getn(paramscouleurs['listcouleurs'])
local nbrecouleur = #paramscouleurs['listcouleurs']
local coords=paramscouleurs['coordspattern']
local degradpattern = cairo_pattern_create_linear(coords['x0'], coords['y0'], coords['x1'], coords['y1'])
local listcouleurs=paramscouleurs['listcouleurs']
local listalphas=paramscouleurs['listalphas']
local offsetlist=paramscouleurs['offsetlist']
while i < nbrecouleur+1 do
local offsetc=0
if offsetlist == nil then
offsetc = (1/(nbrecouleur-1))*(i-1)
else
offsetc=offsetlist[i]
end
cairo_pattern_add_color_stop_rgba(degradpattern,offsetc,rgb_to_r_g_b(listcouleurs[i], listalphas[i]))
i=i+1
end
cairo_set_source(cr,degradpattern)
cairo_pattern_destroy(degradpattern)
elseif typecouleurs == 'radial' then
local i=1
local coords=paramscouleurs['coordspattern']
local degradpattern = cairo_pattern_create_radial(coords['x0'], coords['y0'], coords['radius0'], coords['x1'], coords['y1'], coords['radius1'])
local listcouleurs=paramscouleurs['listcouleurs']
-- local nbrecouleur = table.getn(listcouleurs)
local nbrecouleur = #listcouleurs
local listalphas=paramscouleurs['listalphas']
local offsetlist=paramscouleurs['offsetlist']
while i < nbrecouleur+1 do
local offsetc=0.0
if offsetlist == nil then
offsetc = (1/(nbrecouleur-1))*(i-1)
else
offsetc=offsetlist[i]
end
cairo_pattern_add_color_stop_rgba(degradpattern,offsetc,rgb_to_r_g_b(listcouleurs[i], listalphas[i]))
i=i+1
end
cairo_set_source(cr,degradpattern)
cairo_pattern_destroy(degradpattern)
end
end
function coordonnees_xyz(prf,pfx,pfy,posx,posy,posz,cx,cy,cz)
local vx=pfx - (posx+cx)
local vy=pfy - (posy+cy)
if (posz+cz) ~= 0 then
local rapport_profondeurx=vx/prf
local tx=(posz+cz)*rapport_profondeurx
local tmpy=vx/tx
local ty=vy/tmpy
if vx == 0 then
rapport_profondeurx=vy/prf
ty=(posz+cz)*rapport_profondeurx
tx=0
end
return posx+cx+tx, posy+cy+ty
else
return posx+cx, posy+cy
end
end
function init_variable()
local function setup_interface(cr,pt)
local str=''
local value=0
if pt['name'] == '' then
value = 0
else
str=string.format('${%s %s}',pt['name'],pt['arg'])
str=conky_parse(str)
value=tonumber(str)
if value == nil then value = 0 end
end
draw_interface(cr,value,pt)
end
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 > 0 then
while num_couche<nbre_couche_max do
for i in pairs(params_elements) do
local params = params_elements[i]
if params['couche'] == num_couche then
setup_interface(cr,params)
end
end
num_couche = num_couche + 1
end
num_couche = 0
end
for i in pairs(params_elements) do
local params = params_elements[i]
if params['couche'] > nbre_couche_max then
nbre_couche_max = params['couche']
end
end
nbre_couche_max = nbre_couche_max + 1
cairo_surface_destroy(cs)
cairo_destroy(cr)
end
function conky_main()
init_variable()
end
Hors ligne
#1520 Le 02/02/2017, à 19:25
- chepioq
Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes
Avec ce nouveau script cela fonctionne sans soucis, j'ai bien la jauge qui monte et qui descend suivant l'utilisation CPU.
Tout est dans tout et réciproquement....
Hors ligne
#1521 Le 03/02/2017, à 06:39
- chepioq
Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes
Juste une petite correction concernant ta jauge.
Aux lignes 48 et 49 de jauges.lua
name='cpu', -- commande utilisé par conky \ exemple pour name='cpu' et arg='cpu0'
arg='cpu1', -- paramètre utilisé dans la commande précédente / correspond à: ${cpu cpu0}
agr='cpu1' ne correspond pas à ${cpu cpu0} mais à ${cpu cpu1]
Pour ${cpu cpu0} il faut mettre arg='cpu0' ce qui correspond à l'usage total du CPU
Voir ici https://github.com/brndnmtthws/conky/wi … -Variables :
cpu (cpuN) CPU usage in percents. For SMP machines, the CPU number can be provided as an argument. ${cpu cpu0} is the total usage, and ${cpu cpuX} (X >= 1) are individual CPUs.
Tout est dans tout et réciproquement....
Hors ligne
#1522 Le 03/02/2017, à 09:07
- chepioq
Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes
Petit aperçu avec mes quatre+un CPU :
Le script jauges.lua que j'ai utilisé :
couleurs_degrade_CPU_1={0xff2222,0xe3a300,0x00d89f}
couleurs_degrade_CPU_2={0x730e0e,0x6b4c00,0x005941}
couleurs_degrade_CPU_3={0xff7575,0xe3c454,0x4ad8ae}
couleur_face_CPU_1=0x4d8a71
couleur_face_CPU_2=0x440000
couleur_varie_CPU_1=0x00d89f
couleur_varie_CPU_2=0xff0000
couleur_txt_CPU_1=0xff0000
couleur_txt_CPU_2=0x888888
couleur_bordure_CPU_1=0xffffff
nbre_couche_max = 0 -- ne pas modifier
num_couche=0 -- ne pas modifier
pointdefuitex=960 -- Coordonnée X du point de fuite pour la perspective
pointdefuitey=540 -- Coordonnée Y du point de fuite pour la perspective
profondeur=1200 -- Profondeur maximum de l'axe Z (augmente ou diminue la taille des faces de coté
grouplist= {
CPU={100,400,50}, -- Coordonnée xyz ajouter aux paramètres posx,posy,posz des jauges ayant le même nom de groupe
-- Permet de positionner plusieurs jauges en même temps
}
require 'cairo'
require 'imlib2'
params_elements= --liste des jauges
{
{
--valeurfixe=50, -- permet de bloquer la valeur de la jauge (pratique pour faire des tests)
surfacetype='jauge_pointdefuite', -- ne pas modifier / ou modifier le script car c la seule option possible dans cette version
group='CPU', -- Pour le grouper les jauges (voir plus haut grouplist)
posx=0,posy=0,posz=0, -- position X,Y et Z de la jauge (valeur ajouter à celle spécifié dans grouplist)
couche=1, -- pour changer l'ordre d'affichage/superposition des jauges sans avoir à déplacer la liste des paramètres de chaque jauge.
dimensions={40,0,40}, --[[taille x, y, z de la jauge (la taille Z affiché dépend de la profondeur maximum et de la distance par rapport au point de fuite.
Mettre une valeur sur l'axe de la face mobile, revient à déplacer la position 0 (par ex pour afficher des valeurs négative) ]]
facemobile='haut', -- sens de remplissage de la jauge (avant, arriere, gauche, droite, haut, bas)
amplitude=2, -- définit la taille de la jauge (valeur maximum * amplitude) >> à modifier car pas pratique ^^ <<
rotation=0, -- angle de rotation de la jauge pour le positionnement (rotation uniquement autour de l'axe z)
ordreface={1,2,3,4,5,6}, --[[ 1=arriere, 2=gauche, haut=3, avant=4, bas=5, droite=6 (ordre d'afichage des faces de la jauge)
à modifier selon les faces visible de la jauge]]
fond_sur_jauge={false,false,false,true,true,true}, --[[ ordre d'affichage entre les parois du conteneur (fond) et celle de la jauge.
true signifie que la parois du conteneur est dessigner par dessus celle de la jauge.
l'ordre correspondant à celui définit plus haut.
ex: si ordreface={4,3,1,5,6,2}, la première valeur de fond_sur_jauge correspond à la face 4 (avant)]]
-- données
name='cpu', -- commande utilisé par conky \ exemple pour name='cpu' et arg='cpu0'
arg='cpu1', -- paramètre utilisé dans la commande précédente / correspond à: ${cpu cpu0}
vmax=100, -- valeur maximum possible
--pointdefuitex=750, --décommenter pour remplacer la valeur de la variable global pointdefuitex (pour corriger l'effet de perspective si nécessaire)
--pointdefuitey=300, --décommenter pour remplacer la valeur de la variable global pointdefuitey (pour corriger l'effet de perspective si nécessaire)
--profondeur=1500, --décommenter pour remplacer la valeur de la variable global profondeur (pour corriger l'effet de perspective si nécessaire)
paramstexte={ voirtexte=true, --affichage des valeurs ou non
textemobile=true,--la position du texte suit le remplissage de la jauge
voirtitre=true, --afficher un titre (un texte fixe)
-- Paramètres du texte (valeurs) de la jauge
operateurcouleur='OVER', --opérateur utilisé pour la superposition des couleurs
txtavanttxt='', -- texte affiché devant la valeur
txtaprestxt='%',-- texte afiché après la valeur
tailletexte=25, -- taille du texte
policetexte='Play',--police du texte
texte_style1='normal', -- (normal / italique / oblique)
texte_style2='gras', -- (normal / gras)
positiontxtxyz={80,15,0},--position du texte (pour ajuster au besoin)
decalx_par_caractere=7, --[[ nombre de pixel à décaler en x par nombre de caractères à afficher (txtavanttxt+valeur+txtaprestxt)
pour maintenir le texte centré, ou bien pour qu'il se décale dans dans un sens ou l'autre.]]
rotationtexte=0, --angle de rotation du texte (même fonctionnement que pour la jauge)
paramscouleur= {--paramètres des couleurs utilisé pour afficher le texte (unie, lineaire, radial, variable). Attention les variables ne sont pas les mêmes celon le type.
typecouleurs='unie',basecouleur=couleur_txt_CPU_1,valeuralpha=1.0 --[[ typecouleurs = unies/lineaire/radial/variable
basecouleur= couleur au format 0x000000 (spécifique à unie et variable)
valeuralpha= valeur comprise entre 0.0 et 1.0 (0=invisible, 1=opaque)]]
},
-- Paramètres du titre de la jauge
optitrecouleur='DIFFERENCE', -- optionnel: operateurcouleur utilisé si absent
titretexte='Core 1', -- Texte affiché comme titre.
policetitre='Play', -- optionnel: policetexte utilisé si absent
tailletitre=30, -- optionnel: tailletexte utilisé si absent
positiontitrexyz={30,-5,0}, -- optionnel: {0,0,0} si absent
rotationtitre=-90, -- optionnel: 0 si absent
titre_style1='normal', -- optionnel: texte_style1 utilisé si absent
titre_style2='gras', -- optionnel: texte_style2 utilisé si absent
paramscouleurtitre={ -- optionnel: paramscouleur utilisé si absent
typecouleurs='unie',basecouleur=couleur_txt_CPU_2,valeuralpha=0.8
}
},
paramslist={ -- Liste des paramètres appliqué à chacune des 6 faces de la jauge
--[[face arriere ]] {
-- Paramètres pour la face de la jauge
fillface=true,traceface=true, --fillface: affichage de la face. --traceface: affichage des contours de la face.
operateurcouleur='OVER', --même effet que pour le texte.
paramscouleurfill= { -- paramètre des couleurs pour la face
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
--[[ listcouleurs: liste des couleurs utilisé pour le dégrade au format {0x000000,0x000000,...} (spécifique à lineaire et radial)
listalphas: liste des valeurs de transparence pour chaque couleur spécifié dans listcouleurs (spécifique à lineaire et radial)
coordspattern: coordonnées définissant le sens de tracé du dégradé,'auto' signifie celon le sens de axe_degrade.
ex format des coordonnées lineaire: {x0=0,y0=100,x1=50,y1=200}
ex format des coordonnées radial: {x0=150,y0=150,radius0=50,x1=150,y1=150,radius1=70}
axe_degrade:1,2,3 ou 4 (sens du dégradé si coordspattern='auto') << uniquement pour lineaire
offsetlist (optionnel): positionnement des couleurs entre x0y0 et x1y1 -format: {0.0,1.0} << option spécifique à lineaire et radial
si l'option est absente, les couleurs sont réparties équitablement(ex pour 5 couleurs {0.0,0.25,0.5,0.75,1.0} sera utilisé.)
]]
},
paramscouleurtrace= { -- paramètre des couleurs pour le tracé du contour de la face
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= { -- paramètre du tracé du contour
taille=0, -- épaisseur du trait (il est possible d'utilisé une valeur inféreur à 1)
typeligne='round', -- forme utilisé pour débuter et terminer le tracé (round,square,butt)
typejointure='round' -- forme utilisé lors d'une croisement de ligne (round,square,bevel)
},
-- Paramètres pour la face du conteneur de la jauge (mêmes options que pour la face de la jauge)
-- Conseil: utilisé une valeur alpha très faible.
fillfond=true, tracefond=true,
operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.1,0.1,0.1},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.2, typeligne='round', typejointure='round'}
},
--[[face gauche ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_2,listalphas={0.1,0.1,0.1},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.2, typeligne='round', typejointure='round'}
},
--[[face haut ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='variable',basecouleur=couleur_varie_CPU_1,couleurseuil=couleur_varie_CPU_2,valeuralpha=0.5
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='unie',basecouleur=couleur_face_CPU_2,valeuralpha=0.1
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.5, typeligne='round', typejointure='round'}
},
--[[face devant ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.3,0.3,0.3},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=1, typeligne='round', typejointure='round'}
},
--[[face bas ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='unie',basecouleur=couleur_face_CPU_1,valeuralpha=0.5
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='unie',basecouleur=couleur_face_CPU_1,valeuralpha=0.1
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.5, typeligne='round', typejointure='round'}
},
--[[face droite ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_3,listalphas={0.3,0.3,0.3},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=1.0, typeligne='round', typejointure='round'}
}
}
},
{
--valeurfixe=50, -- permet de bloquer la valeur de la jauge (pratique pour faire des tests)
surfacetype='jauge_pointdefuite', -- ne pas modifier / ou modifier le script car c la seule option possible dans cette version
group='CPU', -- Pour le grouper les jauges (voir plus haut grouplist)
posx=120,posy=0,posz=0, -- position X,Y et Z de la jauge (valeur ajouter à celle spécifié dans grouplist)
couche=1, -- pour changer l'ordre d'affichage/superposition des jauges sans avoir à déplacer la liste des paramètres de chaque jauge.
dimensions={40,0,40}, --[[taille x, y, z de la jauge (la taille Z affiché dépend de la profondeur maximum et de la distance par rapport au point de fuite.
Mettre une valeur sur l'axe de la face mobile, revient à déplacer la position 0 (par ex pour afficher des valeurs négative) ]]
facemobile='haut', -- sens de remplissage de la jauge (avant, arriere, gauche, droite, haut, bas)
amplitude=2, -- définit la taille de la jauge (valeur maximum * amplitude) >> à modifier car pas pratique ^^ <<
rotation=0, -- angle de rotation de la jauge pour le positionnement (rotation uniquement autour de l'axe z)
ordreface={1,2,3,4,5,6}, --[[ 1=arriere, 2=gauche, haut=3, avant=4, bas=5, droite=6 (ordre d'afichage des faces de la jauge)
à modifier selon les faces visible de la jauge]]
fond_sur_jauge={false,false,false,true,true,true}, --[[ ordre d'affichage entre les parois du conteneur (fond) et celle de la jauge.
true signifie que la parois du conteneur est dessigner par dessus celle de la jauge.
l'ordre correspondant à celui définit plus haut.
ex: si ordreface={4,3,1,5,6,2}, la première valeur de fond_sur_jauge correspond à la face 4 (avant)]]
-- données
name='cpu', -- commande utilisé par conky \ exemple pour name='cpu' et arg='cpu0'
arg='cpu2', -- paramètre utilisé dans la commande précédente / correspond à: ${cpu cpu0}
vmax=100, -- valeur maximum possible
--pointdefuitex=750, --décommenter pour remplacer la valeur de la variable global pointdefuitex (pour corriger l'effet de perspective si nécessaire)
--pointdefuitey=300, --décommenter pour remplacer la valeur de la variable global pointdefuitey (pour corriger l'effet de perspective si nécessaire)
--profondeur=1500, --décommenter pour remplacer la valeur de la variable global profondeur (pour corriger l'effet de perspective si nécessaire)
paramstexte={ voirtexte=true, --affichage des valeurs ou non
textemobile=true,--la position du texte suit le remplissage de la jauge
voirtitre=true, --afficher un titre (un texte fixe)
-- Paramètres du texte (valeurs) de la jauge
operateurcouleur='OVER', --opérateur utilisé pour la superposition des couleurs
txtavanttxt='', -- texte affiché devant la valeur
txtaprestxt='%',-- texte afiché après la valeur
tailletexte=25, -- taille du texte
policetexte='Play',--police du texte
texte_style1='normal', -- (normal / italique / oblique)
texte_style2='gras', -- (normal / gras)
positiontxtxyz={80,15,0},--position du texte (pour ajuster au besoin)
decalx_par_caractere=7, --[[ nombre de pixel à décaler en x par nombre de caractères à afficher (txtavanttxt+valeur+txtaprestxt)
pour maintenir le texte centré, ou bien pour qu'il se décale dans dans un sens ou l'autre.]]
rotationtexte=0, --angle de rotation du texte (même fonctionnement que pour la jauge)
paramscouleur= {--paramètres des couleurs utilisé pour afficher le texte (unie, lineaire, radial, variable). Attention les variables ne sont pas les mêmes celon le type.
typecouleurs='unie',basecouleur=couleur_txt_CPU_1,valeuralpha=1.0 --[[ typecouleurs = unies/lineaire/radial/variable
basecouleur= couleur au format 0x000000 (spécifique à unie et variable)
valeuralpha= valeur comprise entre 0.0 et 1.0 (0=invisible, 1=opaque)]]
},
-- Paramètres du titre de la jauge
optitrecouleur='DIFFERENCE', -- optionnel: operateurcouleur utilisé si absent
titretexte='Core 2', -- Texte affiché comme titre.
policetitre='Play', -- optionnel: policetexte utilisé si absent
tailletitre=30, -- optionnel: tailletexte utilisé si absent
positiontitrexyz={30,-5,0}, -- optionnel: {0,0,0} si absent
rotationtitre=-90, -- optionnel: 0 si absent
titre_style1='normal', -- optionnel: texte_style1 utilisé si absent
titre_style2='gras', -- optionnel: texte_style2 utilisé si absent
paramscouleurtitre={ -- optionnel: paramscouleur utilisé si absent
typecouleurs='unie',basecouleur=couleur_txt_CPU_2,valeuralpha=0.8
}
},
paramslist={ -- Liste des paramètres appliqué à chacune des 6 faces de la jauge
--[[face arriere ]] {
-- Paramètres pour la face de la jauge
fillface=true,traceface=true, --fillface: affichage de la face. --traceface: affichage des contours de la face.
operateurcouleur='OVER', --même effet que pour le texte.
paramscouleurfill= { -- paramètre des couleurs pour la face
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
--[[ listcouleurs: liste des couleurs utilisé pour le dégrade au format {0x000000,0x000000,...} (spécifique à lineaire et radial)
listalphas: liste des valeurs de transparence pour chaque couleur spécifié dans listcouleurs (spécifique à lineaire et radial)
coordspattern: coordonnées définissant le sens de tracé du dégradé,'auto' signifie celon le sens de axe_degrade.
ex format des coordonnées lineaire: {x0=0,y0=100,x1=50,y1=200}
ex format des coordonnées radial: {x0=150,y0=150,radius0=50,x1=150,y1=150,radius1=70}
axe_degrade:1,2,3 ou 4 (sens du dégradé si coordspattern='auto') << uniquement pour lineaire
offsetlist (optionnel): positionnement des couleurs entre x0y0 et x1y1 -format: {0.0,1.0} << option spécifique à lineaire et radial
si l'option est absente, les couleurs sont réparties équitablement(ex pour 5 couleurs {0.0,0.25,0.5,0.75,1.0} sera utilisé.)
]]
},
paramscouleurtrace= { -- paramètre des couleurs pour le tracé du contour de la face
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= { -- paramètre du tracé du contour
taille=0, -- épaisseur du trait (il est possible d'utilisé une valeur inféreur à 1)
typeligne='round', -- forme utilisé pour débuter et terminer le tracé (round,square,butt)
typejointure='round' -- forme utilisé lors d'une croisement de ligne (round,square,bevel)
},
-- Paramètres pour la face du conteneur de la jauge (mêmes options que pour la face de la jauge)
-- Conseil: utilisé une valeur alpha très faible.
fillfond=true, tracefond=true,
operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.1,0.1,0.1},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.2, typeligne='round', typejointure='round'}
},
--[[face gauche ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_2,listalphas={0.1,0.1,0.1},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.2, typeligne='round', typejointure='round'}
},
--[[face haut ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='variable',basecouleur=couleur_varie_CPU_1,couleurseuil=couleur_varie_CPU_2,valeuralpha=0.5
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='unie',basecouleur=couleur_face_CPU_2,valeuralpha=0.1
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.5, typeligne='round', typejointure='round'}
},
--[[face devant ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.3,0.3,0.3},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=1, typeligne='round', typejointure='round'}
},
--[[face bas ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='unie',basecouleur=couleur_face_CPU_1,valeuralpha=0.5
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='unie',basecouleur=couleur_face_CPU_1,valeuralpha=0.1
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.5, typeligne='round', typejointure='round'}
},
--[[face droite ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_3,listalphas={0.3,0.3,0.3},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=1.0, typeligne='round', typejointure='round'}
}
}
},
{
--valeurfixe=50, -- permet de bloquer la valeur de la jauge (pratique pour faire des tests)
surfacetype='jauge_pointdefuite', -- ne pas modifier / ou modifier le script car c la seule option possible dans cette version
group='CPU', -- Pour le grouper les jauges (voir plus haut grouplist)
posx=240,posy=0,posz=0, -- position X,Y et Z de la jauge (valeur ajouter à celle spécifié dans grouplist)
couche=1, -- pour changer l'ordre d'affichage/superposition des jauges sans avoir à déplacer la liste des paramètres de chaque jauge.
dimensions={40,0,40}, --[[taille x, y, z de la jauge (la taille Z affiché dépend de la profondeur maximum et de la distance par rapport au point de fuite.
Mettre une valeur sur l'axe de la face mobile, revient à déplacer la position 0 (par ex pour afficher des valeurs négative) ]]
facemobile='haut', -- sens de remplissage de la jauge (avant, arriere, gauche, droite, haut, bas)
amplitude=2, -- définit la taille de la jauge (valeur maximum * amplitude) >> à modifier car pas pratique ^^ <<
rotation=0, -- angle de rotation de la jauge pour le positionnement (rotation uniquement autour de l'axe z)
ordreface={1,2,3,4,5,6}, --[[ 1=arriere, 2=gauche, haut=3, avant=4, bas=5, droite=6 (ordre d'afichage des faces de la jauge)
à modifier selon les faces visible de la jauge]]
fond_sur_jauge={false,false,false,true,true,true}, --[[ ordre d'affichage entre les parois du conteneur (fond) et celle de la jauge.
true signifie que la parois du conteneur est dessigner par dessus celle de la jauge.
l'ordre correspondant à celui définit plus haut.
ex: si ordreface={4,3,1,5,6,2}, la première valeur de fond_sur_jauge correspond à la face 4 (avant)]]
-- données
name='cpu', -- commande utilisé par conky \ exemple pour name='cpu' et arg='cpu0'
arg='cpu3', -- paramètre utilisé dans la commande précédente / correspond à: ${cpu cpu0}
vmax=100, -- valeur maximum possible
--pointdefuitex=750, --décommenter pour remplacer la valeur de la variable global pointdefuitex (pour corriger l'effet de perspective si nécessaire)
--pointdefuitey=300, --décommenter pour remplacer la valeur de la variable global pointdefuitey (pour corriger l'effet de perspective si nécessaire)
--profondeur=1500, --décommenter pour remplacer la valeur de la variable global profondeur (pour corriger l'effet de perspective si nécessaire)
paramstexte={ voirtexte=true, --affichage des valeurs ou non
textemobile=true,--la position du texte suit le remplissage de la jauge
voirtitre=true, --afficher un titre (un texte fixe)
-- Paramètres du texte (valeurs) de la jauge
operateurcouleur='OVER', --opérateur utilisé pour la superposition des couleurs
txtavanttxt='', -- texte affiché devant la valeur
txtaprestxt='%',-- texte afiché après la valeur
tailletexte=25, -- taille du texte
policetexte='Play',--police du texte
texte_style1='normal', -- (normal / italique / oblique)
texte_style2='gras', -- (normal / gras)
positiontxtxyz={80,15,0},--position du texte (pour ajuster au besoin)
decalx_par_caractere=7, --[[ nombre de pixel à décaler en x par nombre de caractères à afficher (txtavanttxt+valeur+txtaprestxt)
pour maintenir le texte centré, ou bien pour qu'il se décale dans dans un sens ou l'autre.]]
rotationtexte=0, --angle de rotation du texte (même fonctionnement que pour la jauge)
paramscouleur= {--paramètres des couleurs utilisé pour afficher le texte (unie, lineaire, radial, variable). Attention les variables ne sont pas les mêmes celon le type.
typecouleurs='unie',basecouleur=couleur_txt_CPU_1,valeuralpha=1.0 --[[ typecouleurs = unies/lineaire/radial/variable
basecouleur= couleur au format 0x000000 (spécifique à unie et variable)
valeuralpha= valeur comprise entre 0.0 et 1.0 (0=invisible, 1=opaque)]]
},
-- Paramètres du titre de la jauge
optitrecouleur='DIFFERENCE', -- optionnel: operateurcouleur utilisé si absent
titretexte='Core 3', -- Texte affiché comme titre.
policetitre='Play', -- optionnel: policetexte utilisé si absent
tailletitre=30, -- optionnel: tailletexte utilisé si absent
positiontitrexyz={30,-5,0}, -- optionnel: {0,0,0} si absent
rotationtitre=-90, -- optionnel: 0 si absent
titre_style1='normal', -- optionnel: texte_style1 utilisé si absent
titre_style2='gras', -- optionnel: texte_style2 utilisé si absent
paramscouleurtitre={ -- optionnel: paramscouleur utilisé si absent
typecouleurs='unie',basecouleur=couleur_txt_CPU_2,valeuralpha=0.8
}
},
paramslist={ -- Liste des paramètres appliqué à chacune des 6 faces de la jauge
--[[face arriere ]] {
-- Paramètres pour la face de la jauge
fillface=true,traceface=true, --fillface: affichage de la face. --traceface: affichage des contours de la face.
operateurcouleur='OVER', --même effet que pour le texte.
paramscouleurfill= { -- paramètre des couleurs pour la face
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
--[[ listcouleurs: liste des couleurs utilisé pour le dégrade au format {0x000000,0x000000,...} (spécifique à lineaire et radial)
listalphas: liste des valeurs de transparence pour chaque couleur spécifié dans listcouleurs (spécifique à lineaire et radial)
coordspattern: coordonnées définissant le sens de tracé du dégradé,'auto' signifie celon le sens de axe_degrade.
ex format des coordonnées lineaire: {x0=0,y0=100,x1=50,y1=200}
ex format des coordonnées radial: {x0=150,y0=150,radius0=50,x1=150,y1=150,radius1=70}
axe_degrade:1,2,3 ou 4 (sens du dégradé si coordspattern='auto') << uniquement pour lineaire
offsetlist (optionnel): positionnement des couleurs entre x0y0 et x1y1 -format: {0.0,1.0} << option spécifique à lineaire et radial
si l'option est absente, les couleurs sont réparties équitablement(ex pour 5 couleurs {0.0,0.25,0.5,0.75,1.0} sera utilisé.)
]]
},
paramscouleurtrace= { -- paramètre des couleurs pour le tracé du contour de la face
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= { -- paramètre du tracé du contour
taille=0, -- épaisseur du trait (il est possible d'utilisé une valeur inféreur à 1)
typeligne='round', -- forme utilisé pour débuter et terminer le tracé (round,square,butt)
typejointure='round' -- forme utilisé lors d'une croisement de ligne (round,square,bevel)
},
-- Paramètres pour la face du conteneur de la jauge (mêmes options que pour la face de la jauge)
-- Conseil: utilisé une valeur alpha très faible.
fillfond=true, tracefond=true,
operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.1,0.1,0.1},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.2, typeligne='round', typejointure='round'}
},
--[[face gauche ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_2,listalphas={0.1,0.1,0.1},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.2, typeligne='round', typejointure='round'}
},
--[[face haut ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='variable',basecouleur=couleur_varie_CPU_1,couleurseuil=couleur_varie_CPU_2,valeuralpha=0.5
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='unie',basecouleur=couleur_face_CPU_2,valeuralpha=0.1
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.5, typeligne='round', typejointure='round'}
},
--[[face devant ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.3,0.3,0.3},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=1, typeligne='round', typejointure='round'}
},
--[[face bas ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='unie',basecouleur=couleur_face_CPU_1,valeuralpha=0.5
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='unie',basecouleur=couleur_face_CPU_1,valeuralpha=0.1
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.5, typeligne='round', typejointure='round'}
},
--[[face droite ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_3,listalphas={0.3,0.3,0.3},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=1.0, typeligne='round', typejointure='round'}
}
}
},
{
--valeurfixe=50, -- permet de bloquer la valeur de la jauge (pratique pour faire des tests)
surfacetype='jauge_pointdefuite', -- ne pas modifier / ou modifier le script car c la seule option possible dans cette version
group='CPU', -- Pour le grouper les jauges (voir plus haut grouplist)
posx=360,posy=0,posz=0, -- position X,Y et Z de la jauge (valeur ajouter à celle spécifié dans grouplist)
couche=1, -- pour changer l'ordre d'affichage/superposition des jauges sans avoir à déplacer la liste des paramètres de chaque jauge.
dimensions={40,0,40}, --[[taille x, y, z de la jauge (la taille Z affiché dépend de la profondeur maximum et de la distance par rapport au point de fuite.
Mettre une valeur sur l'axe de la face mobile, revient à déplacer la position 0 (par ex pour afficher des valeurs négative) ]]
facemobile='haut', -- sens de remplissage de la jauge (avant, arriere, gauche, droite, haut, bas)
amplitude=2, -- définit la taille de la jauge (valeur maximum * amplitude) >> à modifier car pas pratique ^^ <<
rotation=0, -- angle de rotation de la jauge pour le positionnement (rotation uniquement autour de l'axe z)
ordreface={1,2,3,4,5,6}, --[[ 1=arriere, 2=gauche, haut=3, avant=4, bas=5, droite=6 (ordre d'afichage des faces de la jauge)
à modifier selon les faces visible de la jauge]]
fond_sur_jauge={false,false,false,true,true,true}, --[[ ordre d'affichage entre les parois du conteneur (fond) et celle de la jauge.
true signifie que la parois du conteneur est dessigner par dessus celle de la jauge.
l'ordre correspondant à celui définit plus haut.
ex: si ordreface={4,3,1,5,6,2}, la première valeur de fond_sur_jauge correspond à la face 4 (avant)]]
-- données
name='cpu', -- commande utilisé par conky \ exemple pour name='cpu' et arg='cpu0'
arg='cpu4', -- paramètre utilisé dans la commande précédente / correspond à: ${cpu cpu0}
vmax=100, -- valeur maximum possible
--pointdefuitex=750, --décommenter pour remplacer la valeur de la variable global pointdefuitex (pour corriger l'effet de perspective si nécessaire)
--pointdefuitey=300, --décommenter pour remplacer la valeur de la variable global pointdefuitey (pour corriger l'effet de perspective si nécessaire)
--profondeur=1500, --décommenter pour remplacer la valeur de la variable global profondeur (pour corriger l'effet de perspective si nécessaire)
paramstexte={ voirtexte=true, --affichage des valeurs ou non
textemobile=true,--la position du texte suit le remplissage de la jauge
voirtitre=true, --afficher un titre (un texte fixe)
-- Paramètres du texte (valeurs) de la jauge
operateurcouleur='OVER', --opérateur utilisé pour la superposition des couleurs
txtavanttxt='', -- texte affiché devant la valeur
txtaprestxt='%',-- texte afiché après la valeur
tailletexte=25, -- taille du texte
policetexte='Play',--police du texte
texte_style1='normal', -- (normal / italique / oblique)
texte_style2='gras', -- (normal / gras)
positiontxtxyz={80,15,0},--position du texte (pour ajuster au besoin)
decalx_par_caractere=7, --[[ nombre de pixel à décaler en x par nombre de caractères à afficher (txtavanttxt+valeur+txtaprestxt)
pour maintenir le texte centré, ou bien pour qu'il se décale dans dans un sens ou l'autre.]]
rotationtexte=0, --angle de rotation du texte (même fonctionnement que pour la jauge)
paramscouleur= {--paramètres des couleurs utilisé pour afficher le texte (unie, lineaire, radial, variable). Attention les variables ne sont pas les mêmes celon le type.
typecouleurs='unie',basecouleur=couleur_txt_CPU_1,valeuralpha=1.0 --[[ typecouleurs = unies/lineaire/radial/variable
basecouleur= couleur au format 0x000000 (spécifique à unie et variable)
valeuralpha= valeur comprise entre 0.0 et 1.0 (0=invisible, 1=opaque)]]
},
-- Paramètres du titre de la jauge
optitrecouleur='DIFFERENCE', -- optionnel: operateurcouleur utilisé si absent
titretexte='Core 4', -- Texte affiché comme titre.
policetitre='Play', -- optionnel: policetexte utilisé si absent
tailletitre=30, -- optionnel: tailletexte utilisé si absent
positiontitrexyz={30,-5,0}, -- optionnel: {0,0,0} si absent
rotationtitre=-90, -- optionnel: 0 si absent
titre_style1='normal', -- optionnel: texte_style1 utilisé si absent
titre_style2='gras', -- optionnel: texte_style2 utilisé si absent
paramscouleurtitre={ -- optionnel: paramscouleur utilisé si absent
typecouleurs='unie',basecouleur=couleur_txt_CPU_2,valeuralpha=0.8
}
},
paramslist={ -- Liste des paramètres appliqué à chacune des 6 faces de la jauge
--[[face arriere ]] {
-- Paramètres pour la face de la jauge
fillface=true,traceface=true, --fillface: affichage de la face. --traceface: affichage des contours de la face.
operateurcouleur='OVER', --même effet que pour le texte.
paramscouleurfill= { -- paramètre des couleurs pour la face
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
--[[ listcouleurs: liste des couleurs utilisé pour le dégrade au format {0x000000,0x000000,...} (spécifique à lineaire et radial)
listalphas: liste des valeurs de transparence pour chaque couleur spécifié dans listcouleurs (spécifique à lineaire et radial)
coordspattern: coordonnées définissant le sens de tracé du dégradé,'auto' signifie celon le sens de axe_degrade.
ex format des coordonnées lineaire: {x0=0,y0=100,x1=50,y1=200}
ex format des coordonnées radial: {x0=150,y0=150,radius0=50,x1=150,y1=150,radius1=70}
axe_degrade:1,2,3 ou 4 (sens du dégradé si coordspattern='auto') << uniquement pour lineaire
offsetlist (optionnel): positionnement des couleurs entre x0y0 et x1y1 -format: {0.0,1.0} << option spécifique à lineaire et radial
si l'option est absente, les couleurs sont réparties équitablement(ex pour 5 couleurs {0.0,0.25,0.5,0.75,1.0} sera utilisé.)
]]
},
paramscouleurtrace= { -- paramètre des couleurs pour le tracé du contour de la face
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= { -- paramètre du tracé du contour
taille=0, -- épaisseur du trait (il est possible d'utilisé une valeur inféreur à 1)
typeligne='round', -- forme utilisé pour débuter et terminer le tracé (round,square,butt)
typejointure='round' -- forme utilisé lors d'une croisement de ligne (round,square,bevel)
},
-- Paramètres pour la face du conteneur de la jauge (mêmes options que pour la face de la jauge)
-- Conseil: utilisé une valeur alpha très faible.
fillfond=true, tracefond=true,
operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.1,0.1,0.1},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.2, typeligne='round', typejointure='round'}
},
--[[face gauche ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_2,listalphas={0.1,0.1,0.1},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.2, typeligne='round', typejointure='round'}
},
--[[face haut ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='variable',basecouleur=couleur_varie_CPU_1,couleurseuil=couleur_varie_CPU_2,valeuralpha=0.5
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='unie',basecouleur=couleur_face_CPU_2,valeuralpha=0.1
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.5, typeligne='round', typejointure='round'}
},
--[[face devant ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.3,0.3,0.3},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=1, typeligne='round', typejointure='round'}
},
--[[face bas ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='unie',basecouleur=couleur_face_CPU_1,valeuralpha=0.5
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='unie',basecouleur=couleur_face_CPU_1,valeuralpha=0.1
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.5, typeligne='round', typejointure='round'}
},
--[[face droite ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_3,listalphas={0.3,0.3,0.3},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=1.0, typeligne='round', typejointure='round'}
}
}
},
{
--valeurfixe=50, -- permet de bloquer la valeur de la jauge (pratique pour faire des tests)
surfacetype='jauge_pointdefuite', -- ne pas modifier / ou modifier le script car c la seule option possible dans cette version
group='CPU', -- Pour le grouper les jauges (voir plus haut grouplist)
posx=480,posy=0,posz=0, -- position X,Y et Z de la jauge (valeur ajouter à celle spécifié dans grouplist)
couche=1, -- pour changer l'ordre d'affichage/superposition des jauges sans avoir à déplacer la liste des paramètres de chaque jauge.
dimensions={40,0,40}, --[[taille x, y, z de la jauge (la taille Z affiché dépend de la profondeur maximum et de la distance par rapport au point de fuite.
Mettre une valeur sur l'axe de la face mobile, revient à déplacer la position 0 (par ex pour afficher des valeurs négative) ]]
facemobile='haut', -- sens de remplissage de la jauge (avant, arriere, gauche, droite, haut, bas)
amplitude=2, -- définit la taille de la jauge (valeur maximum * amplitude) >> à modifier car pas pratique ^^ <<
rotation=0, -- angle de rotation de la jauge pour le positionnement (rotation uniquement autour de l'axe z)
ordreface={1,2,3,4,5,6}, --[[ 1=arriere, 2=gauche, haut=3, avant=4, bas=5, droite=6 (ordre d'afichage des faces de la jauge)
à modifier selon les faces visible de la jauge]]
fond_sur_jauge={false,false,false,true,true,true}, --[[ ordre d'affichage entre les parois du conteneur (fond) et celle de la jauge.
true signifie que la parois du conteneur est dessigner par dessus celle de la jauge.
l'ordre correspondant à celui définit plus haut.
ex: si ordreface={4,3,1,5,6,2}, la première valeur de fond_sur_jauge correspond à la face 4 (avant)]]
-- données
name='cpu', -- commande utilisé par conky \ exemple pour name='cpu' et arg='cpu0'
arg='cpu0', -- paramètre utilisé dans la commande précédente / correspond à: ${cpu cpu0}
vmax=100, -- valeur maximum possible
--pointdefuitex=750, --décommenter pour remplacer la valeur de la variable global pointdefuitex (pour corriger l'effet de perspective si nécessaire)
--pointdefuitey=300, --décommenter pour remplacer la valeur de la variable global pointdefuitey (pour corriger l'effet de perspective si nécessaire)
--profondeur=1500, --décommenter pour remplacer la valeur de la variable global profondeur (pour corriger l'effet de perspective si nécessaire)
paramstexte={ voirtexte=true, --affichage des valeurs ou non
textemobile=true,--la position du texte suit le remplissage de la jauge
voirtitre=true, --afficher un titre (un texte fixe)
-- Paramètres du texte (valeurs) de la jauge
operateurcouleur='OVER', --opérateur utilisé pour la superposition des couleurs
txtavanttxt='', -- texte affiché devant la valeur
txtaprestxt='%',-- texte afiché après la valeur
tailletexte=25, -- taille du texte
policetexte='Play',--police du texte
texte_style1='normal', -- (normal / italique / oblique)
texte_style2='gras', -- (normal / gras)
positiontxtxyz={80,15,0},--position du texte (pour ajuster au besoin)
decalx_par_caractere=7, --[[ nombre de pixel à décaler en x par nombre de caractères à afficher (txtavanttxt+valeur+txtaprestxt)
pour maintenir le texte centré, ou bien pour qu'il se décale dans dans un sens ou l'autre.]]
rotationtexte=0, --angle de rotation du texte (même fonctionnement que pour la jauge)
paramscouleur= {--paramètres des couleurs utilisé pour afficher le texte (unie, lineaire, radial, variable). Attention les variables ne sont pas les mêmes celon le type.
typecouleurs='unie',basecouleur=couleur_txt_CPU_1,valeuralpha=1.0 --[[ typecouleurs = unies/lineaire/radial/variable
basecouleur= couleur au format 0x000000 (spécifique à unie et variable)
valeuralpha= valeur comprise entre 0.0 et 1.0 (0=invisible, 1=opaque)]]
},
-- Paramètres du titre de la jauge
optitrecouleur='DIFFERENCE', -- optionnel: operateurcouleur utilisé si absent
titretexte='Core All', -- Texte affiché comme titre.
policetitre='Play', -- optionnel: policetexte utilisé si absent
tailletitre=30, -- optionnel: tailletexte utilisé si absent
positiontitrexyz={30,-5,0}, -- optionnel: {0,0,0} si absent
rotationtitre=-90, -- optionnel: 0 si absent
titre_style1='normal', -- optionnel: texte_style1 utilisé si absent
titre_style2='gras', -- optionnel: texte_style2 utilisé si absent
paramscouleurtitre={ -- optionnel: paramscouleur utilisé si absent
typecouleurs='unie',basecouleur=couleur_txt_CPU_2,valeuralpha=0.8
}
},
paramslist={ -- Liste des paramètres appliqué à chacune des 6 faces de la jauge
--[[face arriere ]] {
-- Paramètres pour la face de la jauge
fillface=true,traceface=true, --fillface: affichage de la face. --traceface: affichage des contours de la face.
operateurcouleur='OVER', --même effet que pour le texte.
paramscouleurfill= { -- paramètre des couleurs pour la face
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
--[[ listcouleurs: liste des couleurs utilisé pour le dégrade au format {0x000000,0x000000,...} (spécifique à lineaire et radial)
listalphas: liste des valeurs de transparence pour chaque couleur spécifié dans listcouleurs (spécifique à lineaire et radial)
coordspattern: coordonnées définissant le sens de tracé du dégradé,'auto' signifie celon le sens de axe_degrade.
ex format des coordonnées lineaire: {x0=0,y0=100,x1=50,y1=200}
ex format des coordonnées radial: {x0=150,y0=150,radius0=50,x1=150,y1=150,radius1=70}
axe_degrade:1,2,3 ou 4 (sens du dégradé si coordspattern='auto') << uniquement pour lineaire
offsetlist (optionnel): positionnement des couleurs entre x0y0 et x1y1 -format: {0.0,1.0} << option spécifique à lineaire et radial
si l'option est absente, les couleurs sont réparties équitablement(ex pour 5 couleurs {0.0,0.25,0.5,0.75,1.0} sera utilisé.)
]]
},
paramscouleurtrace= { -- paramètre des couleurs pour le tracé du contour de la face
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= { -- paramètre du tracé du contour
taille=0, -- épaisseur du trait (il est possible d'utilisé une valeur inféreur à 1)
typeligne='round', -- forme utilisé pour débuter et terminer le tracé (round,square,butt)
typejointure='round' -- forme utilisé lors d'une croisement de ligne (round,square,bevel)
},
-- Paramètres pour la face du conteneur de la jauge (mêmes options que pour la face de la jauge)
-- Conseil: utilisé une valeur alpha très faible.
fillfond=true, tracefond=true,
operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.1,0.1,0.1},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.2, typeligne='round', typejointure='round'}
},
--[[face gauche ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_2,listalphas={0.1,0.1,0.1},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.2, typeligne='round', typejointure='round'}
},
--[[face haut ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='variable',basecouleur=couleur_varie_CPU_1,couleurseuil=couleur_varie_CPU_2,valeuralpha=0.5
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='unie',basecouleur=couleur_face_CPU_2,valeuralpha=0.1
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.5, typeligne='round', typejointure='round'}
},
--[[face devant ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.3,0.3,0.3},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=1, typeligne='round', typejointure='round'}
},
--[[face bas ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='unie',basecouleur=couleur_face_CPU_1,valeuralpha=0.5
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='unie',basecouleur=couleur_face_CPU_1,valeuralpha=0.1
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=0.5, typeligne='round', typejointure='round'}
},
--[[face droite ]] {
fillface=true,traceface=true, operateurcouleur='OVER',
paramscouleurfill= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_1,listalphas={0.9,0.7,0.5},coordspattern='auto', axe_degrade=2
},
paramscouleurtrace= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=1.0
},
paramsligne= {taille=0.5, typeligne='round', typejointure='round'},
fillfond=true, tracefond=true, operateurcouleurfond='OVER',
paramscouleurfillfond= {
typecouleurs='lineaire',listcouleurs=couleurs_degrade_CPU_3,listalphas={0.3,0.3,0.3},coordspattern='auto', axe_degrade=2
},
paramscouleurtracefond= {
typecouleurs='unie',basecouleur=couleur_bordure_CPU_1,valeuralpha=0.5
},
paramslignefond= {taille=1.0, typeligne='round', typejointure='round'}
}
}
}
}
function draw_interface(cr,value,pt)
local w,h=conky_window.width,conky_window.height
local surfacetype=pt['surfacetype']
local vmax=pt['vmax']
if surfacetype=='jauge_pointdefuite' then
local paramslist=pt['paramslist']
local originalparamslist
if paramslist == nil then
paramslist = defautparamslist
originalparamslist = paramslist
end
local amplitude=pt['amplitude']
local group=pt['group']
local positiongroup=grouplist[group]
local posx=pt['posx']+positiongroup[1]
local posy=pt['posy']+positiongroup[2]
local posz=pt['posz']+positiongroup[3]
local pfxy={pointdefuitex,pointdefuitey}
local prf=profondeur
local paramstexte=pt['paramstexte']
local voirtexte=paramstexte['voirtexte']
local origine=true
local dimensions=pt['dimensions']
local facemobile=pt['facemobile']
local listcoord
local coordsp1
local coordsp2
local coordsp3
local coordsp4
local rotation=pt['rotation']
local valeurnegative=false
local valeury=false
local valeurz=false
local ordreface=pt['ordreface']
local fond_sur_jauge=pt['fond_sur_jauge']
if facemobile == 'droite' then
valeury=false
valeurz=false
valeurnegative=false
listcoord={
{0,0,dimensions[3],true, dimensions[1],0,dimensions[3],false, dimensions[1],dimensions[2],dimensions[3],false, 0,dimensions[2],dimensions[3],true},-- x
{0,0,dimensions[3],true, 0,0,0,true, 0,dimensions[2],0,true, 0,dimensions[2],dimensions[3],true}, -- <-
{0,0,dimensions[3],true, dimensions[1],0,dimensions[3],false, dimensions[1],0,0,false, 0,0,0,true},-- ^
{0,0,0,true, dimensions[1],0,0,false, dimensions[1],dimensions[2],0,false, 0,dimensions[2],0,true}, -- o
{0,dimensions[2],0,true, dimensions[1],dimensions[2],0,false, dimensions[1],dimensions[2],dimensions[3],false, 0,dimensions[2],dimensions[3],true},-- v
{dimensions[1],0,0,false, dimensions[1],0,dimensions[3],false, dimensions[1],dimensions[2],dimensions[3],false, dimensions[1],dimensions[2],0,false}-- ->
}
elseif facemobile == 'gauche' then
valeury=false
valeurz=false
valeurnegative=true
listcoord={
{0,0,dimensions[3],false, dimensions[1],0,dimensions[3],true, dimensions[1],dimensions[2],dimensions[3],true, 0,dimensions[2],dimensions[3],false},-- x
{0,0,dimensions[3],false, 0,0,0,false, 0,dimensions[2],0,false, 0,dimensions[2],dimensions[3],false}, -- <-
{0,0,dimensions[3],false, dimensions[1],0,dimensions[3],true, dimensions[1],0,0,true, 0,0,0,false},-- ^
{0,0,0,false, dimensions[1],0,0,true, dimensions[1],dimensions[2],0,true, 0,dimensions[2],0,false}, -- o
{0,dimensions[2],0,false, dimensions[1],dimensions[2],0,true, dimensions[1],dimensions[2],dimensions[3],true, 0,dimensions[2],dimensions[3],false},-- v
{dimensions[1],0,0,true, dimensions[1],0,dimensions[3],true, dimensions[1],dimensions[2],dimensions[3],true, dimensions[1],dimensions[2],0,true}-- ->
}
elseif facemobile == 'haut' then
valeury=true
valeurz=false
valeurnegative=true
listcoord={
{0,0,dimensions[3],false, dimensions[1],0,dimensions[3],false, dimensions[1],dimensions[2],dimensions[3],true, 0,dimensions[2],dimensions[3],true},-- x
{0,0,dimensions[3],false, 0,0,0,false, 0,dimensions[2],0,true, 0,dimensions[2],dimensions[3],true}, -- <-
{0,0,dimensions[3],false, dimensions[1],0,dimensions[3],false, dimensions[1],0,0,false, 0,0,0,false},-- ^
{0,0,0,false, dimensions[1],0,0,false, dimensions[1],dimensions[2],0,true, 0,dimensions[2],0,true}, -- o
{0,dimensions[2],0,true, dimensions[1],dimensions[2],0,true, dimensions[1],dimensions[2],dimensions[3],true, 0,dimensions[2],dimensions[3],true},-- v
{dimensions[1],0,0,false, dimensions[1],0,dimensions[3],false, dimensions[1],dimensions[2],dimensions[3],true, dimensions[1],dimensions[2],0,true}-- ->
}
elseif facemobile == 'bas' then
valeury=true
valeurz=false
valeurnegative=false
listcoord={
{0,0,dimensions[3],true, dimensions[1],0,dimensions[3],true, dimensions[1],dimensions[2],dimensions[3],false, 0,dimensions[2],dimensions[3],false},-- x
{0,0,dimensions[3],true, 0,0,0,true, 0,dimensions[2],0,false, 0,dimensions[2],dimensions[3],false}, -- <-
{0,0,dimensions[3],true, dimensions[1],0,dimensions[3],true, dimensions[1],0,0,true, 0,0,0,true},-- ^
{0,0,0,true, dimensions[1],0,0,true, dimensions[1],dimensions[2],0,false, 0,dimensions[2],0,false}, -- o
{0,dimensions[2],0,false, dimensions[1],dimensions[2],0,false, dimensions[1],dimensions[2],dimensions[3],false, 0,dimensions[2],dimensions[3],false},-- v
{dimensions[1],0,0,true, dimensions[1],0,dimensions[3],true, dimensions[1],dimensions[2],dimensions[3],false, dimensions[1],dimensions[2],0,false}-- ->
}
elseif facemobile == 'arriere' then
valeury=false
valeurz=true
valeurnegative=false
listcoord={
{0,0,dimensions[3],false, dimensions[1],0,dimensions[3],false, dimensions[1],dimensions[2],dimensions[3],false, 0,dimensions[2],dimensions[3],false},-- x
{0,0,dimensions[3],false, 0,0,0,true, 0,dimensions[2],0,true, 0,dimensions[2],dimensions[3],false}, -- <-
{0,0,dimensions[3],false, dimensions[1],0,dimensions[3],false, dimensions[1],0,0,true, 0,0,0,true},-- ^
{0,0,0,true, dimensions[1],0,0,true, dimensions[1],dimensions[2],0,true, 0,dimensions[2],0,true}, -- o
{0,dimensions[2],0,true, dimensions[1],dimensions[2],0,true, dimensions[1],dimensions[2],dimensions[3],false, 0,dimensions[2],dimensions[3],false},-- v
{dimensions[1],0,0,true, dimensions[1],0,dimensions[3],false, dimensions[1],dimensions[2],dimensions[3],false, dimensions[1],dimensions[2],0,true}-- ->
}
elseif facemobile == 'avant' then
valeury=false
valeurz=true
valeurnegative=true
listcoord={
{0,0,dimensions[3],true, dimensions[1],0,dimensions[3],true, dimensions[1],dimensions[2],dimensions[3],true, 0,dimensions[2],dimensions[3],true},-- x
{0,0,dimensions[3],true, 0,0,0,false, 0,dimensions[2],0,false, 0,dimensions[2],dimensions[3],true}, -- <-
{0,0,dimensions[3],true, dimensions[1],0,dimensions[3],true, dimensions[1],0,0,false, 0,0,0,false},-- ^
{0,0,0,false, dimensions[1],0,0,false, dimensions[1],dimensions[2],0,false, 0,dimensions[2],0,false}, -- o
{0,dimensions[2],0,false, dimensions[1],dimensions[2],0,false, dimensions[1],dimensions[2],dimensions[3],true, 0,dimensions[2],dimensions[3],true},-- v
{dimensions[1],0,0,false, dimensions[1],0,dimensions[3],true, dimensions[1],dimensions[2],dimensions[3],true, dimensions[1],dimensions[2],0,false}-- ->
}
end
if pt['pointdefuitex'] ~= nil then
pfxy[1]=pt['pointdefuitex']
end
if pt['pointdefuitey'] ~= nil then
pfxy[2]=pt['pointdefuitey']
end
if pt['profondeur'] ~= nil then
prf=pt['profondeur']
end
if pt['valeurfixe'] ~= nil then
value=pt['valeurfixe']
end
local i1=1
pfxy=rotation_forme(cr,pfxy,{posx,posy,posz},rotation)
for i, v in ipairs(ordreface) do
local paramsface=paramslist[v]
local fillface=paramsface['fillface']
local traceface=paramsface['traceface']
local fillfond=paramsface['fillfond']
local tracefond=paramsface['tracefond']
local listcoordface=listcoord[v]
local tmpcx1=0
local tmpcy1=0
local tmpcx2=0
local tmpcy2=0
local tmpcx3=0
local tmpcy3=0
local tmpcx4=0
local tmpcy4=0
local function trace_face_jauge()
tmpcx1=0
tmpcy1=0
tmpcx2=0
tmpcy2=0
tmpcx3=0
tmpcy3=0
tmpcx4=0
tmpcy4=0
while i1 < 16 do
local cx=listcoordface[i1]
local cy=listcoordface[i1+1]
local cz=listcoordface[i1+2]+posz
local pointfixe=listcoordface[i1+3]
local cxfond=listcoordface[i1]
local cyfond=listcoordface[i1+1]
local czfond=listcoordface[i1+2]+posz
if pointfixe == false then
if valeurz then
if valeurnegative then
cz=(listcoordface[i1+2]-value*amplitude)+posz
czfond=(listcoordface[i1+2]-vmax*amplitude)+posz
else
cz=(listcoordface[i1+2]+value*amplitude)+posz
czfond=(listcoordface[i1+2]+vmax*amplitude)+posz
end
else
if valeury then
if valeurnegative then
cy=cy-value*amplitude
cyfond=cyfond-vmax*amplitude
else
cy=cy+value*amplitude
cyfond=cyfond+vmax*amplitude
end
else
if valeurnegative then
cx=cx-value*amplitude
cxfond=cxfond-vmax*amplitude
else
cx=cx+value*amplitude
cxfond=cxfond+vmax*amplitude
end
end
end
end
local cxy={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,cx,cy,cz)}
local cxyfond={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,cxfond,cyfond,czfond)}
if i1==1 then
tmpcx1=cxyfond[1]
tmpcy1=cxyfond[2]
end
if i1==5 then
tmpcx2=cxyfond[1]
tmpcy2=cxyfond[2]
end
if i1==9 then
tmpcx3=cxyfond[1]
tmpcy3=cxyfond[2]
end
if i1==13 then
tmpcx4=cxyfond[1]
tmpcy4=cxyfond[2]
end
if origine then
cairo_new_path(cr)
cairo_move_to(cr,cxy[1],cxy[2])
origine=false
else
cairo_line_to(cr,cxy[1],cxy[2])
end
i1=i1+4
if i1>13 then
coordsp1={tmpcx1+(tmpcx4-tmpcx1)/2,tmpcy1+(tmpcy4-tmpcy1)/2,tmpcx2+(tmpcx3-tmpcx2)/2,tmpcy2+(tmpcy3-tmpcy2)/2}
coordsp2={tmpcx1+(tmpcx2-tmpcx1)/2,tmpcy1+(tmpcy2-tmpcy1)/2,tmpcx4+(tmpcx3-tmpcx4)/2,tmpcy4+(tmpcy3-tmpcy4)/2}
local lstx={tmpcx1,tmpcx2,tmpcx3,tmpcx4}
local lsty={tmpcy1,tmpcy2,tmpcy3,tmpcy4}
table.sort(lstx)
table.sort(lsty)
coordsp3={lstx[1],0,lstx[4],0}
coordsp4={0,lsty[1],0,lsty[4]}
end
end
i1=1
local paramscouleurfill = paramsface['paramscouleurfill']
local paramscouleurtrace = paramsface['paramscouleurtrace']
local opcouleur=paramsface['operateurcouleur']
local paramsligne=paramsface['paramsligne']
set_mode_fusion(cr,opcouleur)
cairo_close_path(cr)
local patternauto = false
if paramscouleurfill['coordspattern'] == 'auto' then
patternauto = true
if paramscouleurfill['axe_degrade'] == 1 then
paramscouleurfill['coordspattern'] = {x0=coordsp1[1], y0=coordsp1[2], x1=coordsp1[3], y1=coordsp1[4]}
elseif paramscouleurfill['axe_degrade'] == 2 then
paramscouleurfill['coordspattern'] = {x0=coordsp2[1], y0=coordsp2[2], x1=coordsp2[3], y1=coordsp2[4]}
elseif paramscouleurfill['axe_degrade'] == 3 then
paramscouleurfill['coordspattern'] = {x0=coordsp3[1], y0=coordsp3[2], x1=coordsp3[3], y1=coordsp3[4]}
elseif paramscouleurfill['axe_degrade'] == 4 then
paramscouleurfill['coordspattern'] = {x0=coordsp4[1], y0=coordsp4[2], x1=coordsp4[3], y1=coordsp4[4]}
end
end
if fillface and traceface then
set_couleurs(cr,paramscouleurfill,vmax,value)
cairo_fill_preserve(cr)
set_trace(cr,paramsligne)
set_couleurs(cr,paramscouleurtrace,vmax,value)
cairo_stroke(cr)
elseif fillface then
set_couleurs(cr,paramscouleurfill,vmax,value)
cairo_fill(cr)
elseif traceface then
set_couleurs(cr,paramscouleurtrace,vmax,value)
set_trace(cr,paramsligne)
cairo_stroke(cr)
end
if patternauto then
paramscouleurfill['coordspattern'] = 'auto'
end
origine=true
end
local function trace_face_fond()
tmpcx1=0
tmpcy1=0
tmpcx2=0
tmpcy2=0
tmpcx3=0
tmpcy3=0
tmpcx4=0
tmpcy4=0
if fillfond or tracefond then
local pointsface={{0,0},{0,0},{0,0},{0,0}}
local ipoint=1
while i1 < 16 do
local cx=listcoordface[i1]
local cy=listcoordface[i1+1]
local cz=listcoordface[i1+2]+posz
local pointfixe=listcoordface[i1+3]
if pointfixe == false then
if valeurz then
if valeurnegative then
cz=(listcoordface[i1+2]-vmax*amplitude)+posz
else
cz=(listcoordface[i1+2]+vmax*amplitude)+posz
end
else
if valeury then
if valeurnegative then
cy=cy-vmax*amplitude
else
cy=cy+vmax*amplitude
end
else
if valeurnegative then
cx=cx-vmax*amplitude
else
cx=cx+vmax*amplitude
end
end
end
end
local cxy={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,cx,cy,cz)}
if i1==1 then
tmpcx1=cxy[1]
tmpcy1=cxy[2]
end
if i1==5 then
tmpcx2=cxy[1]
tmpcy2=cxy[2]
end
if i1==9 then
tmpcx3=cxy[1]
tmpcy3=cxy[2]
end
if i1==13 then
tmpcx4=cxy[1]
tmpcy4=cxy[2]
end
if origine then
cairo_new_path(cr)
cairo_move_to(cr,cxy[1],cxy[2])
origine=false
else
cairo_line_to(cr,cxy[1],cxy[2])
end
i1=i1+4
pointsface[ipoint]=cxy
ipoint=ipoint+1
if i1>13 then
local lstx={tmpcx1,tmpcx2,tmpcx3,tmpcx4}
local lsty={tmpcy1,tmpcy2,tmpcy3,tmpcy4}
table.sort(lstx)
table.sort(lsty)
coordsp1={tmpcx1+(tmpcx4-tmpcx1)/2,tmpcy1+(tmpcy4-tmpcy1)/2,tmpcx2+(tmpcx3-tmpcx2)/2,tmpcy2+(tmpcy3-tmpcy2)/2}
coordsp2={tmpcx1+(tmpcx2-tmpcx1)/2,tmpcy1+(tmpcy2-tmpcy1)/2,tmpcx4+(tmpcx3-tmpcx4)/2,tmpcy4+(tmpcy3-tmpcy4)/2}
coordsp3={lstx[1],0,lstx[4],0}
coordsp4={0,lsty[1],0,lsty[4]}
end
end
i1=1
ipoint=1
local paramscouleurfillfond = paramsface['paramscouleurfillfond']
local paramscouleurtracefond = paramsface['paramscouleurtracefond']
local opcouleurfond=paramsface['operateurcouleurfond']
local paramslignefond=paramsface['paramslignefond']
set_mode_fusion(cr,opcouleurfond)
cairo_close_path(cr)
local patternauto = false
if paramscouleurfillfond['coordspattern'] == 'auto' then
if paramscouleurfillfond['axe_degrade'] == 1 then
paramscouleurfillfond['coordspattern'] = {x0=coordsp1[1], y0=coordsp1[2], x1=coordsp1[3], y1=coordsp1[4]}
elseif paramscouleurfillfond['axe_degrade'] == 2 then
paramscouleurfillfond['coordspattern'] = {x0=coordsp2[1], y0=coordsp2[2], x1=coordsp2[3], y1=coordsp2[4]}
elseif paramscouleurfillfond['axe_degrade'] == 3 then
paramscouleurfillfond['coordspattern'] = {x0=coordsp3[1], y0=coordsp3[2], x1=coordsp3[3], y1=coordsp3[4]}
elseif paramscouleurfillfond['axe_degrade'] == 4 then
paramscouleurfillfond['coordspattern'] = {x0=coordsp4[1], y0=coordsp4[2], x1=coordsp4[3], y1=coordsp4[4]}
end
patternauto = true
end
if fillfond and tracefond then
set_couleurs(cr,paramscouleurfillfond)
cairo_fill_preserve(cr)
set_trace(cr,paramslignefond)
set_couleurs(cr,paramscouleurtracefond)
cairo_stroke(cr)
elseif fillfond then
set_couleurs(cr,paramscouleurfillfond)
cairo_fill(cr)
elseif tracefond then
set_couleurs(cr,paramscouleurtracefond)
set_trace(cr,paramslignefond)
cairo_stroke(cr)
end
if patternauto then
paramscouleurfillfond['coordspattern'] = 'auto'
end
origine=true
end
end
-- a faire: regrouper en une seule fonction trace_face_fond() et trace_face_jauge()
if fond_sur_jauge[i] then
trace_face_jauge()
trace_face_fond()
else
trace_face_fond()
trace_face_jauge()
end
tmpcx1=0
tmpcy1=0
tmpcx2=0
tmpcy2=0
tmpcx3=0
tmpcy3=0
tmpcx4=0
tmpcy4=0
end
pfxy=rotation_forme(cr,pfxy,{posx,posy,posz},-rotation)
if paramstexte['voirtexte'] then
local optxtcouleur=paramstexte['operateurcouleur']
local textemobile=paramstexte['textemobile']
local txtavanttxt=paramstexte['txtavanttxt']
local txtaprestxt=paramstexte['txtaprestxt']
local tailletexte=paramstexte['tailletexte']
local policetexte=paramstexte['policetexte']
local positiontxtxyz=paramstexte['positiontxtxyz']
local rotationtexte=paramstexte['rotationtexte']
local couleurstexte=paramstexte['paramscouleur']
local texte_style1=paramstexte['texte_style1']
local texte_style2=paramstexte['texte_style2']
local decalx_par_caractere=0
if paramstexte['decalx_par_caractere'] ~= nil then
decalx_par_caractere=paramstexte['decalx_par_caractere']
end
local posxytxt
if textemobile then
if facemobile == 'droite' then
posxytxt={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,positiontxtxyz[1]+value*amplitude,positiontxtxyz[2],posz+positiontxtxyz[3])}
elseif facemobile == 'gauche' then
posxytxt={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,positiontxtxyz[1]-value*amplitude,positiontxtxyz[2],posz+positiontxtxyz[3])}
elseif facemobile == 'haut' then
posxytxt={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,positiontxtxyz[1],positiontxtxyz[2]-value*amplitude,posz+positiontxtxyz[3])}
elseif facemobile == 'bas' then
posxytxt={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,positiontxtxyz[1],positiontxtxyz[2]+value*amplitude,posz+positiontxtxyz[3])}
elseif facemobile == 'arriere' then
posxytxt={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,positiontxtxyz[1],positiontxtxyz[2],posz+positiontxtxyz[3]+(value*amplitude))}
elseif facemobile == 'avant' then
posxytxt={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,positiontxtxyz[1],positiontxtxyz[2],posz+(positiontxtxyz[3]-value*amplitude))}
end
else
posxytxt={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,positiontxtxyz[1],positiontxtxyz[2],posz+positiontxtxyz[3])}
end
pfxy=rotation_forme(cr,pfxy,{posxytxt[1],posxytxt[2],0},rotationtexte)
local texteavoir = txtavanttxt .. value .. txtaprestxt
cairo_move_to(cr,posxytxt[1]-(decalx_par_caractere*string.len(texteavoir)),posxytxt[2])
set_couleurs(cr,couleurstexte,vmax,value)
set_mode_fusion(cr,optxtcouleur)
set_font_texte(cr,policetexte,texte_style1,texte_style2)
cairo_set_font_size(cr, tailletexte)
cairo_show_text(cr, texteavoir)
pfxy=rotation_forme(cr,pfxy,{posxytxt[1],posxytxt[2],0},-rotationtexte)
end
if paramstexte['voirtitre'] then
local titretexte=paramstexte['titretexte']
local tailletitre
local policetitre
local rotationtitre=0
local positiontitrexyz={0,0,0}
local couleurstitre
local optitrecouleur
local titre_style1
local titre_style2
if paramstexte['tailletitre'] ~= nil then
tailletitre=paramstexte['tailletitre']
else
tailletitre=paramstexte['tailletexte']
end
if paramstexte['policetitre'] ~= nil then
policetitre=paramstexte['policetitre']
else
policetitre=paramstexte['policetexte']
end
if paramstexte['titre_style1'] ~= nil then
titre_style1=paramstexte['titre_style1']
else
titre_style1=paramstexte['texte_style1']
end
if paramstexte['titre_style2'] ~= nil then
titre_style2=paramstexte['titre_style2']
else
titre_style2=paramstexte['texte_style2']
end
if paramstexte['positiontitrexyz'] ~= nil then positiontitrexyz=paramstexte['positiontitrexyz'] end
if paramstexte['rotationtitre'] ~= nil then rotationtitre=paramstexte['rotationtitre'] end
if paramstexte['paramscouleurtitre'] ~= nil then
couleurstitre=paramstexte['paramscouleurtitre']
else
couleurstitre=paramstexte['paramscouleur']
end
if paramstexte['optitrecouleur'] ~= nil then
optitrecouleur=paramstexte['optitrecouleur']
else
optitrecouleur=paramstexte['operateurcouleur']
end
local posxytxt
posxytxt={coordonnees_xyz(prf,pfxy[1],pfxy[2],posx,posy,posz,positiontitrexyz[1],positiontitrexyz[2],posz+positiontitrexyz[3])}
pfxy=rotation_forme(cr,pfxy,{posxytxt[1],posxytxt[2],0},rotationtitre)
cairo_move_to(cr,posxytxt[1],posxytxt[2])
set_couleurs(cr,couleurstitre,vmax,value)
set_mode_fusion(cr,optitrecouleur)
set_font_texte(cr,policetitre,titre_style1,titre_style2)
cairo_set_font_size(cr, tailletitre)
cairo_show_text(cr, titretexte)
pfxy=rotation_forme(cr,pfxy,{posxytxt[1],posxytxt[2],0},-rotationtitre)
end
end
end
function rgb_to_r_g_b(colour,alpha)
return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
end
function rotation_forme(cr,pfxy,posxyz,angle)
if angle ~= 0 then
cairo_translate (cr,posxyz[1],posxyz[2])
cairo_rotate(cr, angle*math.pi/180)
cairo_translate (cr,-posxyz[1],-posxyz[2])
local angle_s=0
local px1=0
local px2=0
local py1=0
local py2=0
local limitex=false
local limitey=false
if pfxy[2] > posxyz[2] then
py2=pfxy[2]
py1=posxyz[2]
limitey=false
elseif pfxy[2] < posxyz[2] then
py1=pfxy[2]
py2=posxyz[2]
limitey=true
end
if pfxy[1] > posxyz[1] then
px2=pfxy[1]
px1=posxyz[1]
limitex=false
elseif pfxy[1] < posxyz[1] then
px1=pfxy[1]
px2=posxyz[1]
limitex=true
end
local rayonpf=math.sqrt((px2-px1)*(px2-px1)+(py2-py1)*(py2-py1))
local ry=0
local rx=0
if limitex then
rx=-(px2-px1)
else
rx=(px2-px1)
end
if limitey then
ry=(py2-py1)
else
ry=-(py2-py1)
end
angle_s=math.atan2(ry,rx)
pfxy[1]=posxyz[1]+rayonpf*math.cos(-angle_s-angle*math.pi/180)
pfxy[2]=posxyz[2]+rayonpf*math.sin(-angle_s-angle*math.pi/180)
end
return pfxy
end
function set_font_texte(cr,police,fstyle,fweight)
local font_style
local font_weight
if fstyle == 'normal' then
font_style=CAIRO_FONT_SLANT_NORMAL
elseif fstyle == 'italique' then
font_style=CAIRO_FONT_SLANT_ITALIC
elseif fstyle == 'oblique' then
font_style=CAIRO_FONT_SLANT_OBLIQUE
end
if fweight == 'normal' then
font_weight=CAIRO_FONT_WEIGHT_NORMAL
elseif fweight == 'gras' then
font_weight=CAIRO_FONT_WEIGHT_BOLD
end
cairo_select_font_face(cr, police,font_style,font_weight)
end
function set_trace(cr, paramsligne)
local ligne
local jointure
local dasharray=paramsligne['decoupe_trait']
if paramsligne['typeligne'] == 'round' then
ligne=CAIRO_LINE_CAP_ROUND
elseif paramsligne['typeligne'] == 'square' then
ligne=CAIRO_LINE_CAP_SQUARE
else
ligne=CAIRO_LINE_CAP_BUTT
end
if paramsligne['typejointure'] == 'round' then
jointure=CAIRO_LINE_JOIN_ROUND
elseif paramsligne['typejointure'] == 'bevel' then
jointure=CAIRO_LINE_JOIN_BEVEL
else
jointure=CAIRO_LINE_JOIN_MITER
end
if dasharray ~= nil then
--cairo_set_dash(cr,dasharray,table.getn(dasharray),1)
cairo_set_dash(cr,dasharray,#dasharray,1)
end
cairo_set_line_join(cr, jointure)
cairo_set_line_cap(cr, ligne)
cairo_set_line_width(cr,paramsligne['taille'])
end
function set_mode_fusion(cr,modefusion)
if modefusion == 'OVER' then cairo_set_operator(cr,CAIRO_OPERATOR_OVER)
elseif modefusion == 'SOURCE' then cairo_set_operator(cr,CAIRO_OPERATOR_SOURCE)
elseif modefusion == 'XOR' then cairo_set_operator(cr,CAIRO_OPERATOR_XOR)
elseif modefusion == 'ADD' then cairo_set_operator(cr,CAIRO_OPERATOR_ADD)
elseif modefusion == 'SATURATE' then cairo_set_operator(cr,CAIRO_OPERATOR_SATURATE)
elseif modefusion == 'LIGHTEN' then cairo_set_operator(cr,CAIRO_OPERATOR_LIGHTEN)
elseif modefusion == 'HSL_HUE' then cairo_set_operator(cr,CAIRO_OPERATOR_HSL_HUE)
elseif modefusion == 'HSL_SATURATION' then cairo_set_operator(cr,CAIRO_OPERATOR_HSL_SATURATION)
elseif modefusion == 'HSL_COLOR' then cairo_set_operator(cr,CAIRO_OPERATOR_HSL_COLOR)
elseif modefusion == 'HSL_LUMINOSITY' then cairo_set_operator(cr,CAIRO_OPERATOR_HSL_LUMINOSITY)
elseif modefusion == 'CLEAR' then cairo_set_operator(cr,CAIRO_OPERATOR_CLEAR)
elseif modefusion == 'DARKEN' then cairo_set_operator(cr,CAIRO_OPERATOR_DARKEN)
elseif modefusion == 'OUT' then cairo_set_operator(cr,CAIRO_OPERATOR_OUT)
elseif modefusion == 'IN' then cairo_set_operator(cr,CAIRO_OPERATOR_IN)
elseif modefusion == 'ATOP' then cairo_set_operator(cr,CAIRO_OPERATOR_ATOP)
elseif modefusion == 'MULTIPLY' then cairo_set_operator(cr,CAIRO_OPERATOR_MULTIPLY)
elseif modefusion == 'DEST' then cairo_set_operator(cr,CAIRO_OPERATOR_DEST)
elseif modefusion == 'DEST_OVER' then cairo_set_operator(cr,CAIRO_OPERATOR_DEST_OVER)
elseif modefusion == 'DEST_IN' then cairo_set_operator(cr,CAIRO_OPERATOR_DEST_IN)
elseif modefusion == 'DEST_OUT' then cairo_set_operator(cr,CAIRO_OPERATOR_DEST_OUT)
elseif modefusion == 'DEST_ATOP' then cairo_set_operator(cr,CAIRO_OPERATOR_DEST_ATOP)
elseif modefusion == 'SCREEN' then cairo_set_operator(cr,CAIRO_OPERATOR_SCREEN)
elseif modefusion == 'OVERLAY' then cairo_set_operator(cr,CAIRO_OPERATOR_OVERLAY)
elseif modefusion == 'COLOR_DODGE' then cairo_set_operator(cr,CAIRO_OPERATOR_COLOR_DODGE)
elseif modefusion == 'COLOR_BURN' then cairo_set_operator(cr,CAIRO_OPERATOR_COLOR_BURN)
elseif modefusion == 'HARD_LIGHT' then cairo_set_operator(cr,CAIRO_OPERATOR_HARD_LIGHT)
elseif modefusion == 'SOFT_LIGHT' then cairo_set_operator(cr,CAIRO_OPERATOR_SOFT_LIGHT)
elseif modefusion == 'DIFFERENCE' then cairo_set_operator(cr,CAIRO_OPERATOR_DIFFERENCE)
elseif modefusion == 'EXCLUSION' then cairo_set_operator(cr,CAIRO_OPERATOR_EXCLUSION)
else cairo_set_operator(cr,CAIRO_OPERATOR_OVER) end
end
function set_couleurs(cr,paramscouleurs,vmax,value)
local typecouleurs=paramscouleurs['typecouleurs']
if vmax == nil then vmax=0 end
if value == nil then value=0 end
if typecouleurs=='variable' then
local vtemp3=(paramscouleurs['basecouleur'] % 0x100)
local vtemp2=(paramscouleurs['basecouleur'] - vtemp3) % 0x10000
local vtemp1=paramscouleurs['basecouleur'] - vtemp2 - vtemp3
local vc1=vtemp1 / 256 / 256
local vc2=vtemp2 / 256
local vc3=vtemp3
local vcstemp3=(paramscouleurs['couleurseuil'] % 0x100)
local vcstemp2=(paramscouleurs['couleurseuil'] - vcstemp3) % 0x10000
local vcstemp1=paramscouleurs['couleurseuil'] - vcstemp2 - vcstemp3
local vcs1=vcstemp1 / 256 / 256
local vcs2=vcstemp2 / 256
local vcs3=vcstemp3
local cmod1=(vc1-vcs1)/vmax*value
local cmod2=(vc2-vcs2)/vmax*value
local cmod3=(vc3-vcs3)/vmax*value
local newcouleur=math.floor((vc1-cmod1))*256*256 + math.floor((vc2-cmod2))*256 +math.floor(vc3-cmod3)
cairo_set_source_rgba(cr,rgb_to_r_g_b(newcouleur,paramscouleurs['valeuralpha']))
elseif typecouleurs == 'unie' then
cairo_set_source_rgba(cr,rgb_to_r_g_b(paramscouleurs['basecouleur'],paramscouleurs['valeuralpha']))
elseif typecouleurs == 'lineaire' then
local i=1
--local nbrecouleur = table.getn(paramscouleurs['listcouleurs'])
local nbrecouleur = #paramscouleurs['listcouleurs']
local coords=paramscouleurs['coordspattern']
local degradpattern = cairo_pattern_create_linear(coords['x0'], coords['y0'], coords['x1'], coords['y1'])
local listcouleurs=paramscouleurs['listcouleurs']
local listalphas=paramscouleurs['listalphas']
local offsetlist=paramscouleurs['offsetlist']
while i < nbrecouleur+1 do
local offsetc=0
if offsetlist == nil then
offsetc = (1/(nbrecouleur-1))*(i-1)
else
offsetc=offsetlist[i]
end
cairo_pattern_add_color_stop_rgba(degradpattern,offsetc,rgb_to_r_g_b(listcouleurs[i], listalphas[i]))
i=i+1
end
cairo_set_source(cr,degradpattern)
cairo_pattern_destroy(degradpattern)
elseif typecouleurs == 'radial' then
local i=1
local coords=paramscouleurs['coordspattern']
local degradpattern = cairo_pattern_create_radial(coords['x0'], coords['y0'], coords['radius0'], coords['x1'], coords['y1'], coords['radius1'])
local listcouleurs=paramscouleurs['listcouleurs']
-- local nbrecouleur = table.getn(listcouleurs)
local nbrecouleur = #listcouleurs
local listalphas=paramscouleurs['listalphas']
local offsetlist=paramscouleurs['offsetlist']
while i < nbrecouleur+1 do
local offsetc=0.0
if offsetlist == nil then
offsetc = (1/(nbrecouleur-1))*(i-1)
else
offsetc=offsetlist[i]
end
cairo_pattern_add_color_stop_rgba(degradpattern,offsetc,rgb_to_r_g_b(listcouleurs[i], listalphas[i]))
i=i+1
end
cairo_set_source(cr,degradpattern)
cairo_pattern_destroy(degradpattern)
end
end
function coordonnees_xyz(prf,pfx,pfy,posx,posy,posz,cx,cy,cz)
local vx=pfx - (posx+cx)
local vy=pfy - (posy+cy)
if (posz+cz) ~= 0 then
local rapport_profondeurx=vx/prf
local tx=(posz+cz)*rapport_profondeurx
local tmpy=vx/tx
local ty=vy/tmpy
if vx == 0 then
rapport_profondeurx=vy/prf
ty=(posz+cz)*rapport_profondeurx
tx=0
end
return posx+cx+tx, posy+cy+ty
else
return posx+cx, posy+cy
end
end
function init_variable()
local function setup_interface(cr,pt)
local str=''
local value=0
if pt['name'] == '' then
value = 0
else
str=string.format('${%s %s}',pt['name'],pt['arg'])
str=conky_parse(str)
value=tonumber(str)
if value == nil then value = 0 end
end
draw_interface(cr,value,pt)
end
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 > 0 then
while num_couche<nbre_couche_max do
for i in pairs(params_elements) do
local params = params_elements[i]
if params['couche'] == num_couche then
setup_interface(cr,params)
end
end
num_couche = num_couche + 1
end
num_couche = 0
end
for i in pairs(params_elements) do
local params = params_elements[i]
if params['couche'] > nbre_couche_max then
nbre_couche_max = params['couche']
end
end
nbre_couche_max = nbre_couche_max + 1
cairo_surface_destroy(cs)
cairo_destroy(cr)
end
function conky_main()
init_variable()
end
Tout est dans tout et réciproquement....
Hors ligne
#1523 Le 03/02/2017, à 11:24
- Solmarek
Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes
name='cpu', -- commande utilisé par conky \ exemple pour name='cpu' et arg='cpu0'
arg='cpu1', -- paramètre utilisé dans la commande précédente / correspond à: ${cpu cpu0}
Concernant ces deux lignes, en faite au début j'avais utilisé cpu0, mais je me suis dit que la jauge ne bougerait presque pas, du coup j'ai changé pour le premier core.
c'est pour çà que j'ai rajouté 2 commentaires séparés par un \ et / ^^
Du coup après avoir testé avec tes quatres core + cpu. tu penses que ce script est trop lourd pour être utilisé dans conky ?
Hors ligne
#1524 Le 03/02/2017, à 11:38
- chepioq
Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes
Personnellement je trouve que cela n'est pas vraiment lourd, avec un top je vois que cela ne prend qu'entre 3% et 4% d'utilisation CPU, et que 0.2% en utilisation mémoire.
Tout est dans tout et réciproquement....
Hors ligne
#1525 Le 03/02/2017, à 11:49
- Solmarek
Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes
Oki, ben je vais continuer de l'améliorer alors.
Je m'étais arrêté à la simplification de l'ordre des faces en voyant le nombre de condition imbriquées qu'il me fallait pour éviter d'avoir à définir soit même cette ordre en fonction de la position des jauges.
je vous posterais le résultat final quand j'aurais finit, par contre ça risque de prendre du temps.
P.S: si certains ont des idées pour simplifier certaine partie je suis preneur ^^
Hors ligne