Contenu | Rechercher | Menus

Annonce

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

À propos de l'équipe du forum.

#1001 Le 24/06/2015, à 14:52

Didier-T

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

ricorde a écrit :
Didier-T a écrit :

sa dépend ricorde,
s'il s’agit de deux écrans physique il faut lancer deux conky avec des positions différentes
si non il doit apparaître dans tous les espaces virtuel

peux tu me dire comment lancer 2 conky avec positions différents
merci

Bonjour ricorde,
en fait, je suis certain que tu sait déjà le faire, parfois on cherche a ce compliquer la vie.

tu crée une copie de ton conky dans un second répertoire et tu modifie avant TEXT

alignment 
gap_x 
gap_y 

de manière a le placer la ou il te convient.

A+,
Didier.

Hors ligne

#1002 Le 24/06/2015, à 20:33

Ferod

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

Didier-T a écrit :

Bonjour Ferod et tous,
je me suis un laché sur ton conky, désolé big_smile
voici le lien vers le pack

parmi les changement nous avons la disparition des deux scripts météo écrit en bash, j'ai écrit un script lua pour les remplacer les infos sont toujours prise au même endroit (en fait, c'est plus un portage vers lua)
pour clementine j'ai écrit deux scripts :
        - un en python à lancer au démarrage de l'ordinateur, il sert de démon et écrit dans l'espace temporaire les informations concernant la lecture de clementine (dans mon cas cette espace est un disque virtuel).
        - un en lua qui vas chercher les informations mise a disposition par le script python.

cher moi le conky ne consomme quasiment plus de ressource système ~12 Mo entre 0 et 5 % de processeur (intel core 2 duo @2.66Ghz)
et le démon pour clementine ~7 Mo  ~0% pendant la lecture monte à ~5% au changement de titre.

pour l'utilisation il te faudra modifier .conkyrc et script.lua (les chemins et le département pour la météo).

Wouah ! big_smile T'as pris le temps de dormir et de manger quand même hein ?! tongue
J'ai pas encore testé. Mais le fait que tu ais réussit à tous mettre dans un conky me plait beaucoup. Moi qui avait enfin réussit à recréer mon script lua de A à Z et que je le maitrisais il va falloir que je reparte de 0. Mais c'est comme ça qu'on apprend.
Une petite question sur les modifs que t'as faites (y'en aura sûrement d'autres) : t'as tout passé en lua parce que tu penses que c'est ça qui consommait beaucoup de ressource ? Bon je vais regarder un peu plus en détail tout ça...
PS : j'ai ajouté les phases de la lune à côté de l'heure de levé et de coucher du soleil.

Un gros merci pour ton aide ! smile

Edit : ça y'est je viens de l'installer. big_smile
Bon il ne faut pas oublier de rendre executable tous les scripts lua sinon ça marche pas... Mais évidemment maintenant je me pose des tas de questions...
- J'aimerai supprimer les décimales pour la pression. J'ai modifié la ligne 131 de meteo.lua pour qu'elle devienne :

r = math.floor(cc["main"]["pressure"])

Ca ne donne pas ce que je veux. Je vais attendre de voir un peu demain ce que ça donnera au démarrage. Peut être que ça n'a pas été réactuallsé.
- J'aimerai afficher la vitesse du vent en km/h donc il faut que je la multiplie par 3.6 (et là aussi sans les décimales) mais j'aimerai faire la multiplication avant d'arrondir pour ne pas perdre trop de précision. Il faut que je le fasse dans meteo.lua ou script.lua ?
- Pour le playing_clementine.py j'avais écrété le nombre de caractère de l'album et de la piste pour pas que ça dépasse du conky. Ca n'a plus l'air effectif.
- comment on le lance au démarrage le python ? J'ai modifié mon lanceur conky.  Maintenant j'ai ça :
Exec=sh -c "python ~/.conky/playing_clementine.py ; sleep 5 ; conky -c ~/.conkyrc ;"
Je verrai si ça marche demain

Il faut que je refasse mon script pour afficher la phase de la lune.

Dernière modification par Ferod (Le 24/06/2015, à 22:37)


"When I was in the military, they gave me a medal for killing
two men, and a descharge for loving one !" Leonard Matlovich

Hors ligne

#1003 Le 24/06/2015, à 20:53

Didier-T

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

Bonsoir Ferod,
en fait avec conky il vaut mieux employer lua car les script sont chargé en mémoire, donc il ne sont interprété qu'une fois, c'est aussi ce qui a motivé mon choix pour le démon qui surveille clementine.
Le fait de ne lancer les scripts qu'une fois fait chuter la consommation processeur car il n'a plus a décoder le code et a l’interpréter.

Le pire ennemi du conky est le script bash. Un script bash sa passe son temps a appeler d'autres programmes pour exécuter des taches, du coup ton conky ne consomme pas grand chose, mais ton processeur est très sollicité (par les processus lancé par le bash).

Hors ligne

#1004 Le 24/06/2015, à 22:12

ricorde

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

Merci Didier-T
j'ai un soucis que je n'arrive pas a regler j'ai changer la valeur du rafraîchissement elle etait sur 1 j'ai essayer 0 et bien d'autre mais au bout d'un certain temps le conky devient trouble je poste une image
conky / extra / 8

Merci d'avance

Dernière modification par ricorde (Le 24/06/2015, à 22:15)


Processeur : Intel Core i7-3930K 3200.0 MHz Socket R (LGA2011-0)    Carte graphique : GIGABYTE GeForce GTX 680    Carte mére : ASUS SABERTOOTH X79   Memory : Kingston DDR3 SDRAM 666.7 MHz 2 fois 8 Go

Hors ligne

#1005 Le 24/06/2015, à 22:29

Didier-T

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

en générale un conky qui devient trouble est un conky lancé plusieurs fois.
sa arrive assé facilement sous xfce avec l'option "enregistrer la session pour la prochaine utilisation"

vérifie dans ton gestionnaire de tache

Hors ligne

#1006 Le 25/06/2015, à 00:14

ricorde

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

Bien vu apparemment c'est ça
Merci Didier-T

En faite ca recommence il redevient floue ?

Dernière modification par ricorde (Le 25/06/2015, à 00:22)


Processeur : Intel Core i7-3930K 3200.0 MHz Socket R (LGA2011-0)    Carte graphique : GIGABYTE GeForce GTX 680    Carte mére : ASUS SABERTOOTH X79   Memory : Kingston DDR3 SDRAM 666.7 MHz 2 fois 8 Go

Hors ligne

#1007 Le 25/06/2015, à 09:16

Didier-T

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

Bonjour ricorde,
si tu n'as qu'une instance de ton conky lancé, je ne vois pas d'ou sa peut venir.

Désolé de ne pouvoir aider plus.

Hors ligne

#1008 Le 25/06/2015, à 10:57

Didier-T

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

Bonjour Ferod et tous ceux qui seront intéressé,
j'ai effectué une batterie d'essais sur les scripts posté hier.
et bien le résultat était pas folichon, fuite de mémoire sur le conky, pour ce test je passe le rafraîchissement à 0.1 seconde note l'heure de début la quantité de mémoire utilisé (indiquer dans le gestionnaire de tache) et je regarde 1 ou 2 heure après s'il y  a une évolution, pour le coup je suis passé de 10Mo à + de 40Mo au bout de 2h00 (sa équivaut à 20h00 d'utilisation normal).
j'ai aussi réussi a faire dysfonctionné le démon a défaut de le planter, en lançant le démon avant Clementine.

les scripts sont corrigés.
le conky utilise 11Mo de mémoire et entre 0 et 4% de processeur si Clementine est lancé on augmente de 1%.
le démon utilise 7Mo de mémoire et entre 0 et 2% de processeur indépendamment de la lecture si Clementine n'est pas lancé 0%.

le lien vers le pack reste inchangé

pour les curieux voici les scripts

playing_clementine.py

#!/usr/bin/env python2
#-*- coding: ascii -*-
#
# playing_clementine.py
# Script creer sur la base de anowplaying.py
# par Didier-T
#
# pour utilisation avec conky
#

import dbus, optparse, shutil, commands
import unicodedata
from time import sleep


class maj:
    def __init__(self):
        '''Get system bus'''
        bus = dbus.SessionBus()
        try:
            self.amarok = bus.get_object('org.mpris.clementine', '/Player')
        except:
            self.amarok=None
            return
        self.amarokdict = self.amarok.GetMetadata()
        self.holdtitle=""
        self.holdcover=""

    def unaccent(self, str):
        return unicodedata.normalize('NFKD', str).encode('ascii', 'ignore')

    def init_ok(self):
        if self.amarok is not None:
            return 0
        else:
            return 1

    def maj(self):
        temp = {}
        ret = {}
        cpos = mt = mtime = etime = rtime = progress = None

        if self.amarokdict.has_key('mtime'):
            try :
                cpos = self.amarok.PositionGet()/1000
            except:
                self.amarok=None
                return

            mt = self.amarokdict['mtime']/1000
            mtime = str(mt/60)+":"+str(mt%60) if mt%60>9 else str(mt/60)+":0"+str(mt%60)
            etime = str(cpos/60)+":"+str(cpos%60) if cpos%60>9 else str(cpos/60)+":0"+str(cpos%60)
            rtime = str((mt-cpos)/60)+":"+str((mt-cpos)%60) if (mt-cpos)%60>9 else str((mt-cpos)/60)+":0"+str((mt-cpos)%60)
            progress= float(cpos)/float(mt)*100

        if etime is not None:
            temp["etime"]=etime
        if rtime is not None:
            temp["rtime"]=rtime
        if mtime is not None:
            temp["mtime"]=mtime
        if progress is not None:
            temp["progress"]=progress

        try :
            self.amarokdict = self.amarok.GetMetadata()
        except:
            self.amarok=None
            return

        if self.amarokdict.has_key('artist') :
            ret["artist"] = self.unaccent(self.amarokdict['artist'][0:50])
        if self.amarokdict.has_key('title'):
            ret["title"] = self.unaccent(self.amarokdict['title'][0:50])
        if self.amarokdict.has_key('album'):
            ret["album"] = self.unaccent(self.amarokdict['album'][0:35])
        if self.amarokdict.has_key('genre'):
            ret["genre"] = self.unaccent(self.amarokdict['genre'][0:50])
        if self.amarokdict.has_key('year'):
            ret["year"] = str(self.amarokdict['year'])
        if self.amarokdict.has_key('tracknumber'):
            ret["tracknumber"] = str(self.amarokdict['tracknumber'])
        if self.amarokdict.has_key('audio-bitrate'):
            ret["bitrate"] = str(self.amarokdict['audio-bitrate'])
        if self.amarokdict.has_key('audio-samplerate'):
            ret["samplerate"] = str(self.amarokdict['audio-samplerate'])

        if self.amarokdict.has_key('arturl'):
            cover = self.amarokdict['arturl']
            if cover != "" and self.holdcover != cover :
                self.holdcover=cover
                try :
                    shutil.copyfile(cover.replace('file://', ''), "/tmp/jaquet.jpg")
                except Exception, e:
                    print e

        if self.holdtitle != ret["title"] :
            self.holdtitle = ret["title"]
            fiche = open("/tmp/clem_play", "w")
            fiche.write(str(ret))
            fiche.close()

        fiche = open("/tmp/clem_temp", "w")
        fiche.write(str(temp))
        fiche.close()


def demonise(init):
    x=0
    while 1 :
        '''Check if clementine is running'''
        output = commands.getoutput('ps -A')
        if 'clementine' in output:
            if init==1 :
                miseajour=maj()
                init=miseajour.init_ok()
            else:
                init=miseajour.init_ok()
                if init==0:
                    miseajour.maj()

        sleep(1)


if __name__ == '__main__':
    demonise(1)

playing_clementine.lua

-- Biliothèque de récupération de donées clementine pour conky
-- Ecrit par Didier-T
-- Du forum ubuntu.fr
-- Pour les besoins d'un conky créer par Ferod
-- Le 23/06/2015


local json = require('json')
local math = require('math')
local tonumber = tonumber
local assert = assert
local os = require('os')
local io = require('io')
local dermodif = nil
local info_titre, time_titre
module("playing_clementine")

do
    function info(recherche)
        local function exec(cmd)
            local cmd=cmd.." > /tmp/exec.log"
            local e=os.execute(cmd)
            local file=assert(io.open("/tmp/exec.log", "r"))
            local r=file:read()
            assert(file:close())
            return r
        end
        --Vérifier l'existence d'un fichier
        local 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
        if existe("/tmp/clem_play") then
            local dermodif2=exec("date -r /tmp/clem_play '+%s'")
            if dermodif == nil or dermodif ~= dermodif2 then
                dermodif=dermodif2
                local file = assert(io.open("/tmp/clem_play", "rb") )
                local line = file:read()
                info_titre = json.decode(line)
                assert(file:close())
            end
        end
        if existe("/tmp/clem_temp") then
            local dermodif4=exec("date -r /tmp/clem_temp '+%s'")
            if dermodif3 == nil or dermodif3 ~= dermodif4 then
                dermodif3=dermodif4
                local file = assert(io.open("/tmp/clem_temp", "rb") )
                local line = file:read()
                time_titre = json.decode(line)
                assert(file:close())
            end
        end

        if info_titre==nil or time_titre==nil then
            return
        elseif recherche=="artiste" then
            return info_titre["artist"] or "N/A"
        elseif recherche=="titre" then
            return info_titre["title"] or "N/A"
        elseif recherche=="album" then
            return info_titre["album"] or "N/A"
        elseif recherche=="genre" then
            return info_titre["genre"] or "N/A"
        elseif recherche=="annee" then
            return info_titre["year"] or "N/A"
        elseif recherche=="tracknumber" then
            return info_titre["tracknumber"] or "N/A"
        elseif recherche=="bitrate" then
            return info_titre["bitrate"] or "N/A"
        elseif recherche=="samplerate" then
            return info_titre["samplerate"] or "N/A"
        elseif recherche=="temp_passe" then
            return time_titre["etime"] or "0"
        elseif recherche=="temp_restant" then
            return time_titre["rtime"] or "0"
        elseif recherche=="temp_titre" then
            return time_titre["mtime"] or "0"
        elseif recherche=="avancement" then
            return time_titre["progress"] or "0"
        else
            return "Non affecté"
        end
    end
end

meteo.lua

-- Biliothèque météo simple pour conky
-- Ecrit par Didier-T
-- Du forum ubuntu.fr
-- Pour les besoins d'un conky créer par Ferod
-- Le 23/06/2015


local json = require('json')
local math = require('math')
local tonumber = tonumber
local assert = assert
local os = require('os')
local io = require('io')
local cc, sj, r
local print = print
local tostring = tostring
module("meteo")

-- utiliser le code postal pour trouver la ville

do
    function maj(code_postal, periode)
        periode=periode or "all"
        code_postal=code_postal or "75000"

        local function curl(url)
            local cmd="curl -o /tmp/curl.log -s ".."\""..url.."\""
            local e=os.execute(cmd)
            local file=assert(io.open("/tmp/curl.log", "r"))
            local r=file:read()
            assert(file:close())
            return r, (e==0 or e==true)
        end
        local function cond_cour(code_postal)
            local r,e=curl("http://api.openweathermap.org/data/2.5/weather?q="..code_postal..",fr&mode=json&units=metric&lang=fr")
            local ret=json.decode(r)
            ret["weather"][1]["id"]=tostring(ret["weather"][1]["id"]):gsub("200", "i"):gsub("201", "i"):gsub("202", "i"):gsub("230", "i"):gsub("231", "i"):gsub("232", "i"):gsub("906", "i"):
                                        gsub("210", "f"):gsub("211", "f"):gsub("212", "f"):
                                        gsub("221", "W"):gsub("731", "W"):gsub("900","W"):
                                        gsub("300", "G"):gsub("301", "G"):gsub("302", "G"):gsub("310", "G"):gsub("311", "G"):gsub("312", "G"):gsub("321", "G"):
                                        gsub("500", "g"):gsub("501", "g"):gsub("520", "g"):
                                        gsub("502", "h"):gsub("503", "h"):gsub("504", "h"):gsub("521", "h"):gsub("522", "h"):
                                        gsub("511", "k"):gsub("600", "k"):gsub("601", "k"):gsub("611", "k"):gsub("621", "k"):
                                        gsub("602", "j"):
                                        gsub("701", "J"):gsub("711", "J"):
                                        gsub("721", "I"):
                                        gsub("741", "F"):
                                        gsub("800", "C"):
                                        gsub("801", "b"):
                                        gsub("802", "c"):
                                        gsub("803", "d"):
                                        gsub("804", "e"):
                                        gsub("901", "V"):gsub("902", "V"):
                                        gsub("903", "x"):
                                        gsub("904", "z"):
                                        gsub("905", "v")
            return ret
        end
        local function sept_jour(code_postal)
            local r,e=curl("http://api.openweathermap.org/data/2.5/forecast/daily?q="..code_postal..",fr&mode=json&units=metric&cnt=7&lang=fr")
            local ret=json.decode(r)
            for jour=1, 7 do
                ret["list"][jour]["weather"][1]["id"]=tostring(ret["list"][jour]["weather"][1]["id"]):
                                                    gsub("200", "i"):gsub("201", "i"):gsub("202", "i"):gsub("230", "i"):gsub("231", "i"):gsub("232", "i"):gsub("906", "i"):
                                                    gsub("210", "f"):gsub("211", "f"):gsub("212", "f"):
                                                    gsub("221", "W"):gsub("731", "W"):gsub("900","W"):
                                                    gsub("300", "G"):gsub("301", "G"):gsub("302", "G"):gsub("310", "G"):gsub("311", "G"):gsub("312", "G"):gsub("321", "G"):
                                                    gsub("500", "g"):gsub("501", "g"):gsub("520", "g"):
                                                    gsub("502", "h"):gsub("503", "h"):gsub("504", "h"):gsub("521", "h"):gsub("522", "h"):
                                                    gsub("511", "k"):gsub("600", "k"):gsub("601", "k"):gsub("611", "k"):gsub("621", "k"):
                                                    gsub("602", "j"):
                                                    gsub("701", "J"):gsub("711", "J"):
                                                    gsub("721", "I"):
                                                    gsub("741", "F"):
                                                    gsub("800", "C"):
                                                    gsub("801", "b"):
                                                    gsub("802", "c"):
                                                    gsub("803", "d"):
                                                    gsub("804", "e"):
                                                    gsub("901", "V"):gsub("902", "V"):
                                                    gsub("903", "x"):
                                                    gsub("904", "z"):
                                                    gsub("905", "v")
            end

            return ret
        end

        if periode=="all" then
            cc=cond_cour(code_postal)
            sj=sept_jour(code_postal)
        elseif periode=="cc" then
            cc=cond_cour(code_postal)
        else
            sj=sept_jour(code_postal)
        end
    end

    function info(valeur, jour)
        jour=tonumber(jour) or 0

        if jour==0 then
            if valeur=="lon" then
                r = cc["coord"]["lon"]
            elseif valeur=="lat" then
                r = cc["coord"]["lat"]
            elseif valeur=="pays" then
                r = cc["sys"]["country"]
            elseif valeur=="leve_soleil" then
                r = cc["sys"]["sunrise"]
            elseif valeur=="coucher_soleil" then
                r = cc["sys"]["sunset"]
            elseif valeur=="meteo_id" then
                r = cc["weather"][1]["id"]
            elseif valeur=="meteo_main" then
                r = cc["weather"][1]["main"]
            elseif valeur=="meteo_description" then
                r = cc["weather"][1]["description"]
            elseif valeur=="meteo_icone" then
                r = cc["weather"][1]["icon"]
            elseif valeur=="temp" then
                r = math.floor(cc["main"]["temp"])
            elseif valeur=="temp_min" then
                r = math.floor(cc["main"]["temp_min"])
            elseif valeur=="temp_max" then
                r = math.floor(cc["main"]["temp_max"])
            elseif valeur=="pression" then
                r = math.floor(cc["main"]["pressure"])
            elseif valeur=="sea_level" then
                r = cc["main"]["sea_level"]
            elseif valeur=="grnd_level" then
                r = cc["main"]["grnd_level"]
            elseif valeur=="humidite" then
                r = cc["main"]["humidity"]
            elseif valeur=="vent_vitesse" then
                r = math.floor(cc["wind"]["speed"])
            elseif valeur=="vent_direction" then
                r = cc["wind"]["deg"]
            elseif valeur=="couverture_nuageuse" then
                r = cc["clouds"]["all"]
            elseif valeur=="pluie_court_terme" then
                if cc["rain"] ~= nil then
                    r = cc["rain"]["3h"]
                else
                    r = 0
                end
            elseif valeur=="date" then
                r = cc["dt"]
            elseif valeur=="ville" then
                r = cc["name"]
            else
                r = valeur.." n'éxiste pas"
            end
        else
            if valeur=="date" then
                r = sj["list"][jour]["dt"]
            elseif valeur=="temp_jour" then
                r = math.floor(sj["list"][jour]["temp"]["day"])
            elseif valeur=="temp_min" then
                r = math.floor(sj["list"][jour]["temp"]["min"])
            elseif valeur=="temp_max" then
                r = math.floor(sj["list"][jour]["temp"]["max"])
            elseif valeur=="temp_nuit" then
                r = math.floor(sj["list"][jour]["temp"]["night"])
            elseif valeur=="temp_soir" then
                r = math.floor(sj["list"][jour]["temp"]["eve"])
            elseif valeur=="temp_matin" then
                r = math.floor(sj["list"][jour]["temp"]["morn"])
            elseif valeur=="pression" then
                r = sj["list"][jour]["pressure"]
            elseif valeur=="humidite" then
                r = sj["list"][jour]["humidity"]
            elseif valeur=="meteo_id" then
                r = sj["list"][jour]["weather"][1]["id"]
            elseif valeur=="meteo_main" then
                r = sj["list"][jour]["weather"][1]["main"]
            elseif valeur=="meteo_description" then
                r = sj["list"][jour]["weather"][1]["description"]
            elseif valeur=="meteo_icone" then
                r = sj["list"][jour]["weather"][1]["icon"]
            elseif valeur=="vent_vitesse" then
                r = math.floor(sj["list"][jour]["speed"])
            elseif valeur=="vent_direction" then
                r = sj["list"][jour]["deg"]
            elseif valeur=="couverture_nuageuse" then
                r = sj["list"][jour]["clouds"]
            elseif valeur=="pluviometrie" then
                r = sj["list"][jour]["rain"] or 0
            else
                r = valeur.." "..jour.." n'éxiste pas"
            end
        end
        return r
    end

end

script.lua

--this is a lua script for use in conky
require 'cairo'
require 'os'
local meteo=require('meteo')
local play=require('playing_clementine')

-- Parametre a modifier
local chemin="~/.conky/conky-perso/Monochrome" -- répertoire ou ce trouve vos scripts
local departement="95100" -- indiquer le département pour la météo
local disque_1="/home"
local disque_2="/"
local disque_3="~"

--[[
###################################################################################################
#  Ne pas faire de modification après cette ligne (sauf si vous savez ce que vous faite), Merci.  #
###################################################################################################
]]--
local home = os.getenv("HOME")
chemin=string.gsub(chemin,"~",home)
disque_1=string.gsub(disque_1,"~",home)
disque_2=string.gsub(disque_2,"~",home)
disque_3=string.gsub(disque_3,"~",home)
local nb_coeur=tonumber(conky_parse("${exec cat /proc/cpuinfo | grep processor | wc -l}"))
local Clementine
local T00=0
local T0=0
local T=0
local cr, T1, T2
local demon=1

-- Partie Fonctions
local function draw_circle(alpha,progress,x_center,y_center,radius,epaisseur)
    cairo_set_source_rgba(cr,1,1,1,alpha)
    cairo_set_line_width(cr,epaisseur)
    cairo_arc(cr, x_center, y_center, radius, 0-math.pi/2, progress * 2 * math.pi / 100 - math.pi/2)
    cairo_stroke(cr)
end

local function draw_circle_gauge(alpha,nb_gauge,angle_step,angle_step_ink,x_center,y_center,radius,epaisseur)
    cairo_set_source_rgba(cr,1,1,1,alpha)
    cairo_set_line_width(cr,epaisseur)
    local angle_step_rad=angle_step*math.pi/180
    local angle_step_ink_rad=angle_step_ink*math.pi/180
    local i = 1
    local angle=-math.pi/2
    while i <= nb_gauge do
        cairo_arc(cr, x_center, y_center, radius, angle, angle + angle_step_ink_rad)
        angle=angle+angle_step_rad
        cairo_stroke(cr)
        i = i+1
    end

end

local function draw_line(alpha,progress,x_ligne,y_ligne,longueur,epaisseur)
    progress=progress or 0
    local red,green,blue=1,1,1
    cairo_set_source_rgba (cr,1,1,1,alpha)
    cairo_set_line_width (cr, epaisseur)
    cairo_set_dash(cr,1.,0,1)
    cairo_move_to (cr, x_ligne, y_ligne)
    cairo_line_to (cr, x_ligne+((progress/100)*longueur), y_ligne)
    cairo_stroke (cr)
end

local function draw_dash_line(alpha,progress,x_ligne,y_ligne,longueur,epaisseur)
    local red,green,blue=1,1,1
    cairo_set_source_rgba (cr,1,1,1,alpha)
    cairo_set_line_width (cr, epaisseur)
    cairo_set_dash(cr,5.,1,0)
    cairo_move_to (cr, x_ligne, y_ligne)
    cairo_line_to (cr, x_ligne+longueur*progress/100, y_ligne)
    cairo_stroke (cr)
end

local function draw_scale(alpha,x_ligne,y_ligne,nb_step,long_step_ink,long_step,epaisseur)
    local red,green,blue=1,1,1
    cairo_set_source_rgba (cr,1,1,1,alpha)
    cairo_set_line_width (cr, epaisseur)
    local i = 1
    local x_step=x_ligne
    while i <= nb_step do
        cairo_move_to (cr, x_step, y_ligne)
        cairo_line_to (cr, x_step+long_step_ink,y_ligne)
        cairo_stroke (cr)
        x_step=x_step + long_step
        i=i+1
    end
end

local function affiche_texte(police,taille,x,y,alpha,texte)
    local red,green,blue,alpha=1,1,1,alpha
    cairo_select_font_face (cr, police, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL)
    cairo_set_font_size (cr, taille)
    cairo_set_source_rgba (cr,red,green,blue,alpha)
    cairo_move_to (cr,x,y)
    cairo_show_text (cr,texte)
    cairo_stroke (cr)
end

-- Partie script
function graph_line(Maj)
    if Maj==1 then
        -- Températures
        T1=tonumber(conky_parse("${exec sensors | awk ' $2==\"0:\" {print $3}' | cut -c 2-3}"))
        T2=tonumber(conky_parse("${exec sensors | awk ' $2==\"1:\" {print $3}' | cut -c 2-3}"))
    end

    -- Utilisation Disque
    local used_perc1=tonumber(conky_parse("${fs_used_perc "..disque_1.."}"))
    local used_perc2=tonumber(conky_parse("${fs_used_perc "..disque_2.."}"))
    local used_perc3=tonumber(conky_parse("${fs_used_perc "..disque_3.."}"))
    -- A chaque cycle
    -- Heure
    local heure=tonumber(conky_parse("${time %I}"))
    local minute=tonumber(conky_parse("${time %M}"))
    local seconde=tonumber(conky_parse("${time %S}"))
    -- Utilisation CPU
    local cpu={}
    for i = 1,nb_coeur do
        cpu[i]=tonumber(conky_parse("${cpu cpu"..i.."}"))
    end
    -- UP Down
    local ratio_upload=tonumber(conky_parse("${upspeedf eth0}")/55*100)
    local ratio_download=tonumber(conky_parse("${downspeedf eth0}")/302*100)
    -- Clementine
    Clementine=play.info("avancement") --conky_parse("${execi 5 python2 "..chemin.."/anowplaying.py -p}")

    -- Horloge
    draw_circle(0.2,100,200,48,20,2)
    draw_circle(0.2,100,200,48,25,2)
    if heure == 12 then
        heure = 0
    end
    local prog_seconde=seconde/60
    local prog_minute=(minute+prog_seconde)/60
    local prog_heure=(heure+prog_minute)/12
    draw_circle(1.,prog_minute*100,200,48,25,2)
    draw_circle(1.,prog_heure*100,200,48,20,2)
    draw_circle_gauge(1,12,30,2,200,48,20,2)
    draw_circle_gauge(1,12,30,2,200,48,25,2)
    draw_circle_gauge(1,seconde,6,2,200,48,30,2)

    --CPU & RAM
    local y_img_4 = 219
    draw_scale(0.5,153,y_img_4+32,36,1,5,3)
    draw_scale(1,153,y_img_4+32,8,1,25,6)
    local t1=T1-30
    local t2=T2-30
    if t1<0 then
        t1 = 0
    end
    if t2<0 then
        t2 = 0
    end
    draw_line(t1/35,(t1/70)*100,153,y_img_4+31,176,2)
    draw_line(t2/35,(t2/70)*100,153,y_img_4+33,176,2)

    for i = 1,nb_coeur do
        if cpu[i] == nil then cpu[i]=0 end
    end
    draw_line(0.2,100,180,y_img_4+49,150,2)
    local ratio_barre=(150/nb_coeur)

    -- calcul pour affichage barre ratio cpu
    local x1 = {}
    x1[1]=180 -- début barre cpu1
    for i = 1,nb_coeur do
        x1[i+1]=x1[i]+cpu[i]/100*ratio_barre
    end

    -- affichage barre occupation cpu
    local ratio_trans=(0.8/nb_coeur)
    for i = 1,nb_coeur do
        draw_line(1-(i-1)*ratio_trans,cpu[i],x1[i],y_img_4+49,ratio_barre,2)
    end

    draw_line(0.2,100,180,y_img_4+72,150,2)
    local mem_perc=tonumber(conky_parse("${memperc}"))
    draw_line(1,mem_perc,180,y_img_4+72,150,2)

    --utilisation disque :
    local y_img_5 = 292
    draw_line(0.2,100,160,y_img_5+33,170,2)
    draw_line(1,used_perc1,160,y_img_5+33,170,2)

    draw_line(0.2,100,160,y_img_5+53,170,2)
    draw_line(1,used_perc2,160,y_img_5+53,170,2)

    draw_line(0.2,100,160,y_img_5+83,170,2)
    draw_line(1,used_perc3,160,y_img_5+73,170,2)

    --upload
    local y_img_6 = 365
    draw_line(0.2,100,170,y_img_6+33,160,2)
    draw_line(1,ratio_upload,170,y_img_6+33,160,2)
    --download
    draw_line(0.2,100,170,y_img_6+48,160,2)
    draw_line(1,ratio_download,170,y_img_6+48,160,2)

    -- lecture musique
    if Clementine ~= nil then
        local y_img_7 = 438
        draw_line(0.2,100,100,y_img_7+70,230,2)
        local progress=tonumber(Clementine)
        draw_line(1,progress,100,y_img_7+70,230,2)
    end
end

function display_text(Maj)
    local h_leve=os.date("%H:%M", meteo.info("leve_soleil"))--conky_parse("${exec "..chemin.."/meteo_display.sh current 1}")
    local h_couche=os.date("%H:%M", meteo.info("coucher_soleil"))--conky_parse("${exec "..chemin.."/meteo_display.sh current 2}")
    local meteo_act=meteo.info("meteo_description")--conky_parse("${exec "..chemin.."/meteo_display.sh current 8}")
    local pression=meteo.info("pression")--conky_parse("${exec "..chemin.."/meteo_display.sh pression 1}").." hPa"
    local temp_act=meteo.info("temp")--conky_parse("${exec "..chemin.."/meteo_display.sh current 3}")
    local text_meteo=meteo.info("meteo_id")--conky_parse("${exec "..chemin.."/meteo_display.sh meteo 1}")
    local humidite=meteo.info("humidite")--conky_parse("${exec "..chemin.."/meteo_display.sh current 6}")
    local speed=meteo.info("vent_vitesse")--conky_parse("${exec "..chemin.."/meteo_display.sh current 7}")
    local precipitation=meteo.info("pluie_court_terme")--conky_parse("${exec "..chemin.."/meteo_display.sh current 9}")
    local temp_min=meteo.info("temp_min", 1)--conky_parse("${exec "..chemin.."/meteo_display.sh current 4}")
    local temp_max=meteo.info("temp_max", 1)--conky_parse("${exec "..chemin.."/meteo_display.sh current 5}")
    local semaine_meteo_2=meteo.info("meteo_id", 2)--conky_parse("${exec "..chemin.."/meteo_display.sh meteo 2}")
    local semaine_meteo_3=meteo.info("meteo_id", 3)--conky_parse("${exec "..chemin.."/meteo_display.sh meteo 3}")
    local semaine_meteo_4=meteo.info("meteo_id", 4)--conky_parse("${exec "..chemin.."/meteo_display.sh meteo 4}")
    local semaine_meteo_5=meteo.info("meteo_id", 5)--conky_parse("${exec "..chemin.."/meteo_display.sh meteo 5}")
    local semaine_meteo_6=meteo.info("meteo_id", 6)--conky_parse("${exec "..chemin.."/meteo_display.sh meteo 6}")
    local semaine_meteo_7=meteo.info("meteo_id", 7)--conky_parse("${exec "..chemin.."/meteo_display.sh meteo 7}")
    -- affichage du jour
    local semaine_jour_2=os.date("%a", meteo.info("date", 2))--conky_parse("${exec "..chemin.."/meteo_display.sh jour 2}")
    local semaine_jour_3=os.date("%a", meteo.info("date", 3))--conky_parse("${exec "..chemin.."/meteo_display.sh jour 3}")
    local semaine_jour_4=os.date("%a", meteo.info("date", 4))--conky_parse("${exec "..chemin.."/meteo_display.sh jour 4}")
    local semaine_jour_5=os.date("%a", meteo.info("date", 5))--conky_parse("${exec "..chemin.."/meteo_display.sh jour 5}")
    local semaine_jour_6=os.date("%a", meteo.info("date", 6))--conky_parse("${exec "..chemin.."/meteo_display.sh jour 6}")
    local semaine_jour_7=os.date("%a", meteo.info("date", 7))--conky_parse("${exec "..chemin.."/meteo_display.sh jour 7}")
    -- prévision température jour
    local semaine_temp_2=meteo.info("temp_jour", 2)--conky_parse("${exec "..chemin.."/meteo_display.sh temperature 2}").."°C"
    local semaine_temp_3=meteo.info("temp_jour", 3)--conky_parse("${exec "..chemin.."/meteo_display.sh temperature 3}").."°C"
    local semaine_temp_4=meteo.info("temp_jour", 4)--conky_parse("${exec "..chemin.."/meteo_display.sh temperature 4}").."°C"
    local semaine_temp_5=meteo.info("temp_jour", 5)--conky_parse("${exec "..chemin.."/meteo_display.sh temperature 5}").."°C"
    local semaine_temp_6=meteo.info("temp_jour", 6)--conky_parse("${exec "..chemin.."/meteo_display.sh temperature 6}").."°C"
    local semaine_temp_7=meteo.info("temp_jour", 7)--conky_parse("${exec "..chemin.."/meteo_display.sh temperature 7}").."°C"

    local espace1=conky_parse("${fs_used_perc "..disque_1.."}").."%"
    local espace2=conky_parse("${fs_used_perc "..disque_2.."}").."%"
    local espace3=conky_parse("${fs_used_perc "..disque_3.."}").."%"
    local esp_used1=conky_parse("${fs_used "..disque_1.."}")
    local esp_used2=conky_parse("${fs_used "..disque_2.."}")
    local esp_used3=conky_parse("${fs_used "..disque_3.."}")
    local esp_free1=conky_parse("${fs_free "..disque_1.."}")
    local esp_free2=conky_parse("${fs_free "..disque_2.."}")
    local esp_free3=conky_parse("${fs_free "..disque_3.."}")


    local cpu=conky_parse("${cpu cpu0}")

    local y_img_1 = 0
    --[[###########################################
        Heure et Date
    ##############################################]]
    affiche_texte("Ubuntu",11,92,y_img_1+30,1,"J"..conky_parse("${time %j}").." - S"..conky_parse("${time %V}"))
    affiche_texte("Sans",50,85,y_img_1+73,1,"☼")
    affiche_texte("Ubuntu",11,130,y_img_1+50,1,h_leve)
    affiche_texte("Ubuntu",11,130,y_img_1+70,1,h_couche)
    affiche_texte("Ubuntu",12,185,y_img_1+52,1,conky_parse("${time %H:%M}"))     --heure
    affiche_texte("Ubuntu",12,282,y_img_1+34,1,conky_parse("${time %A}"))        --nom du jour
    affiche_texte("Ubuntu",12,282,y_img_1+45,1,conky_parse("${time %B}"))        --nom du mois
    affiche_texte("Ubuntu",32,245,y_img_1+45,1,conky_parse("${time %d}"))        --numeros du jour
    affiche_texte("Ubuntu",32,245,y_img_1+71,1,conky_parse("${time %Y}"))        --année

    --[[###########################################
        Météo actuelle
    ##############################################]]
    local y_img_2 = 73
    affiche_texte("Weather",65,95,y_img_2+77,1,text_meteo)
    --affiche_texte("Weather",65,95,y_img_2+77,1,"g")
    affiche_texte("Ubuntu",11,150,y_img_2+30,1,meteo_act.." - "..temp_act.." - "..pression)

    affiche_texte("Ubuntu",11,150,y_img_2+45,1,pression.." - "..humidite.." hum")
    affiche_texte("Ubuntu",11,150,y_img_2+60,1,"Vent : "..speed)
    affiche_texte("Ubuntu",11,150,y_img_2+75,1,"Pluies : "..precipitation)

    --affiche_texte("Ubuntu",11,150,y_img_2+40,1,"min : "..temp_min.." - max : "..temp_max)
    affiche_texte("Ubuntu",11,310,y_img_2+70,1,temp_min)
    affiche_texte("Ubuntu",11,310,y_img_2+45,1,temp_max)
    affiche_texte("Weather",50,295,y_img_2+75,1,"y")

    --[[###########################################
        prévision météo semaine
    ##############################################]]
    local y_img_3 = 146
    affiche_texte("Weather",50,95,y_img_3+67,1,semaine_meteo_2)
    affiche_texte("Weather",50,135,y_img_3+67,1,semaine_meteo_3)
    affiche_texte("Weather",50,175,y_img_3+67,1,semaine_meteo_4)
    affiche_texte("Weather",50,215,y_img_3+67,1,semaine_meteo_5)
    affiche_texte("Weather",50,255,y_img_3+67,1,semaine_meteo_6)
    affiche_texte("Weather",50,295,y_img_3+67,1,semaine_meteo_7)

    -- affichage du jour
    affiche_texte("Ubuntu",11,100,y_img_3+27,1,semaine_jour_2)
    affiche_texte("Ubuntu",11,140,y_img_3+27,1,semaine_jour_3)
    affiche_texte("Ubuntu",11,180,y_img_3+27,1,semaine_jour_4)
    affiche_texte("Ubuntu",11,220,y_img_3+27,1,semaine_jour_5)
    affiche_texte("Ubuntu",11,260,y_img_3+27,1,semaine_jour_6)
    affiche_texte("Ubuntu",11,300,y_img_3+27,1,semaine_jour_7)

    -- prévision température jour
    affiche_texte("Ubuntu",12,100,y_img_3+74,1,semaine_temp_2)
    affiche_texte("Ubuntu",12,140,y_img_3+74,1,semaine_temp_3)
    affiche_texte("Ubuntu",12,180,y_img_3+74,1,semaine_temp_4)
    affiche_texte("Ubuntu",12,220,y_img_3+74,1,semaine_temp_5)
    affiche_texte("Ubuntu",12,260,y_img_3+74,1,semaine_temp_6)
    affiche_texte("Ubuntu",12,300,y_img_3+74,1,semaine_temp_7)


    --[[###########################################
        CPU Temperature et RAM
    ##############################################]]
    local y_img_4 = 219
    affiche_texte("Ubuntu",13,100,y_img_4+32,1,"Temp :")
    affiche_texte("Ubuntu",13,100,y_img_4+52,1,"CPU    :")
    affiche_texte("Ubuntu",13,100,y_img_4+72,1,"RAM   :")

    affiche_texte("Ubuntu",10,147,y_img_4+26,1,"30°")
    affiche_texte("Ubuntu",10,197,y_img_4+26,1,"50°")
    affiche_texte("Ubuntu",10,247,y_img_4+26,1,"70°")
    affiche_texte("Ubuntu",10,297,y_img_4+26,1,"90°")

    if cpu == nil then cpu=0 end

    affiche_texte("Ubuntu",11,150,y_img_4+52,1,cpu.."%")

    affiche_texte("Ubuntu",11,150,y_img_4+72,1,conky_parse("${memperc}").."%")
    affiche_texte("Ubuntu",11,180,y_img_4+69,1,conky_parse("${mem}"))
    affiche_texte("Ubuntu",11,290,y_img_4+69,0.7,conky_parse("${memeasyfree}"))

    --[[###########################################
        Espace disponible
    ##############################################]]
    local y_img_5 = 292
    affiche_texte("Heydings Icons",18,100,y_img_5+34,1,"H")
    affiche_texte("Heydings Icons",18,100,y_img_5+54,1,"L")
    affiche_texte("Heydings Icons",18,100,y_img_5+74,1,"F")

    affiche_texte("Ubuntu",15,123,y_img_5+33,1,espace1)
    affiche_texte("Ubuntu",15,123,y_img_5+53,1,espace2)
    affiche_texte("Ubuntu",15,123,y_img_5+73,1,espace3)

    affiche_texte("Ubuntu",11,160,y_img_5+30,1,esp_used1)
    affiche_texte("Ubuntu",11,160,y_img_5+50,1,esp_used2)
    affiche_texte("Ubuntu",11,160,y_img_5+70,1,esp_used3)

    affiche_texte("Ubuntu",11,290,y_img_5+30,0.7,esp_free1)
    affiche_texte("Ubuntu",11,290,y_img_5+50,0.7,esp_free2)
    affiche_texte("Ubuntu",11,290,y_img_5+70,0.7,esp_free3)

    --[[###########################################
        Débit internet
    ##############################################]]
    local y_img_6 = 365
    affiche_texte("Deja",18,100,y_img_6+38,1,"↗")
    affiche_texte("Ubuntu",12,120,y_img_6+38,1,conky_parse("${upspeed eth0}"))
    affiche_texte("Deja",18,100,y_img_6+53,1,"↘")
    affiche_texte("Ubuntu",12,120,y_img_6+53,1,conky_parse("${downspeed eth0}"))
    local up_total=conky_parse("${totalup eth0}")
    local down_total=conky_parse("${totaldown eth0}")
    affiche_texte("Ubuntu",12,100,y_img_6+68,1,"Total : "..up_total.." / "..down_total)

    --[[###########################################
        Musique
    ##############################################]]
    if Clementine ~= nil then
        local y_img_7 = 438
        affiche_texte("Ubuntu",11,100,y_img_7+35,1,play.info("album"))--conky_parse("${execi 5 python2 "..chemin.."/anowplaying.py -l}"))
        affiche_texte("Ubuntu",11,100,y_img_7+50,1,play.info("titre"))--conky_parse("${execi 5 python2 "..chemin.."/anowplaying.py -t}"))
        local temp_ecoule=play.info("temp_passe")--conky_parse("${execi 5 python2 "..chemin.."/anowplaying.py -e}")
        local temp_remain=play.info("temp_restant")--conky_parse("${execi 5 python2 "..chemin.."/anowplaying.py -r}")
        affiche_texte("Ubuntu",11,100,y_img_7+65,1,temp_ecoule)
        affiche_texte("Ubuntu",11,310,y_img_7+65,0.7,temp_remain)
    end
end

function conky_main()
    local function exec(cmd)
        local cmd=cmd.." > /tmp/exec.log"
        local e=os.execute(cmd)
        local file=assert(io.open("/tmp/exec.log", "r"))
        local r=file:read("*all")
        assert(file:close())
        return r
    end

    if conky_window == nil then
        return
    end

    if demon==1 then
        local list=exec("ps -sa | awk '{print $NF}'")
        if list:find("playing_clementine.py")~=nil then
            demon=0
        else
            demon=os.execute('python '..chemin..'/playing_clementine.py &')
        end
    end

    local cs = cairo_xlib_surface_create(conky_window.display,
                                         conky_window.drawable,
                                         conky_window.visual,
                                         conky_window.width,
                                         conky_window.height)
    cr = cairo_create(cs)
    local updates=tonumber(conky_parse('${updates}'))

    local interval=30
    local timer=(updates % interval)
    local T1 = os.time()

    -- Gestion mise a jour météo
    if os.difftime(T1, T) >= 300 then
        if os.difftime(T1, T0) >= 3600 then
            meteo.maj(departement, "7jours")
            T0=T1
        end
        meteo.maj(departement, "cc")
        T=T1
    end


    if updates>=5 then
        if os.difftime(T1, T00) >= 30 then
            display_text(1)
            graph_line(1)
            T00=T1
        else
            display_text(0)
            graph_line(0)
        end
    end

    cairo_destroy(cr)
    cairo_surface_destroy(cs)
    cr=nil
end

.conkyrc

######################
# - Conky settings - #
######################
update_interval 1
total_run_times 0
net_avg_samples 1
cpu_avg_samples 1

#imlib_cache_size 0
double_buffer yes
no_buffers yes

#####################
# - Text settings - #
#####################
use_xft yes
xftfont Ubuntu:size=9
override_utf8_locale yes
text_buffer_size 2048

#############################
# - Window specifications - #
#############################
own_window_class Conky
own_window yes
own_window_type normal
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
#own_window_argb_visual yes
#own_window_argb_value 100

alignment tr
gap_x -2
gap_y 180
minimum_size 350 520


default_bar_size 60 10

# - Graphics settings - #
#########################
draw_shades no

default_color ffffff
default_shade_color 1d1d1d
color0 ffffff
color1 ffffff
color2 ffffff

lua_load ~/.conky/conky-perso/Monochrome/script.lua
lua_draw_hook_pre main
TEXT

#---IMAGES----
${image ~/.conky/conky-perso/Monochrome/base.png -p 10,0 -s 339x86}
${image ~/.conky/conky-perso/Monochrome/base.png -p 10,73 -s 339x86}
${image ~/.conky/conky-perso/Monochrome/base.png -p 10,146 -s 339x86}
${image ~/.conky/conky-perso/Monochrome/base.png -p 10,219 -s 339x86}
${image ~/.conky/conky-perso/Monochrome/base.png -p 10,292 -s 339x86}
${image ~/.conky/conky-perso/Monochrome/base.png -p 10,365 -s 339x86}
${image ~/.conky/conky-perso/Monochrome/base.png -p 10,438 -s 339x86}
${image ~/.conky/conky-perso/Monochrome/calendar.png -p 28,20 -s 45x45}
${image ~/.conky/conky-perso/Monochrome/weather.png -p 28,93 -s 45x45}
${image ~/.conky/conky-perso/Monochrome/weather.png -p 28,166 -s 45x45}
${image ~/.conky/conky-perso/Monochrome/emblem-system.png -p 28,239 -s 45x45}
${image ~/.conky/conky-perso/Monochrome/folder.png -p 28,312 -s 45x45}
${image ~/.conky/conky-perso/Monochrome/nm-signal-75.png -p 28,385 -s 45x45}
${image ~/.conky/conky-perso/Monochrome/emblem-sound.png -p 28,458 -s 45x45}

A+,
Didier.

P.S. : j'ai supprimé les décimals de la pression, j'aurais besoins du nombre de carractères max à afficher pour modifier le fichier playing_clementine.lua

P.P.S. : pour l'utilisation il faudra modifier .conkyrc et script.lua (les chemins et le département pour la météo), je n'ai pas besoins de rendre les scripts lua exécutable pour qu'ils fonctionnes cher moi (les joies de l'informatique)

Edit : (sa change des P.S), il n'y a plus besoins de se soucier du lancement de playing_clementine.py, il est gérer automatiquement par script.lua

Dernière modification par Didier-T (Le 25/06/2015, à 11:06)

Hors ligne

#1009 Le 25/06/2015, à 18:52

Ferod

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

Bonjour Didier

Merci d'avoir répondu à mes questions.
- lua executable : c'est moi qui me suis fourvoyé. Je ne suis pas sûr que ça vienne de là.
- Les décimales de la pression c'est ok pour moi.
- pour le titre des oeuvres dans playing_clementine.py je ne pense pas que ça vienne du script. J'ai compté les caractères affiché et c'est bien les 50 qui étaient demandés. J'ai du ne pas faire gaffe à ça. Perso je pense qu'en reduisant à 45 ou 40 ça devrait aller.

Bon sinon j'ai testé la dernière version. C'est bizarre j'ai des erreurs d'execution. Mais pas tout le temps.

sebastien@vivid:~$ conky -c ~/.conkyrc
Conky: llua_load: /home/sebastien/.conky/script.lua:4: module 'meteo' not found:
	no field package.preload['meteo']
	no file './meteo.lua'
	no file '/usr/local/share/lua/5.1/meteo.lua'
	no file '/usr/local/share/lua/5.1/meteo/init.lua'
	no file '/usr/local/lib/lua/5.1/meteo.lua'
	no file '/usr/local/lib/lua/5.1/meteo/init.lua'
	no file '/usr/share/lua/5.1/meteo.lua'
	no file '/usr/share/lua/5.1/meteo/init.lua'
	no file '/usr/lib/conky/libmeteo.so'
	no file './meteo.so'
	no file '/usr/local/lib/lua/5.1/meteo.so'
	no file '/usr/lib/i386-linux-gnu/lua/5.1/meteo.so'
	no file '/usr/lib/lua/5.1/meteo.so'
	no file '/usr/local/lib/lua/5.1/loadall.so'
Conky: desktop window (e00016) is subwindow of root window (294)
Conky: window type - normal
Conky: drawing to created window (0x1a00001)
Conky: drawing to double buffer
Conky: llua_do_call: function conky_main execution failed: attempt to call a nil value

La dernière se répète chaque seconde. On dirait qu'il ne trouve pas le meteo.lua et que du coup il le cherche dans des répertoires génériques.
Hum... On dirait que quand on relance le conky plusieurs fois, il lance plusieurs instance de playing_clementine.py

sebasti+  3989     1  0 19:11 ?        00:00:02 python /home/sebastien/.conky//playing_clementine.py
sebasti+  5658     1  0 19:24 ?        00:00:00 python /home/sebastien/.conky//playing_clementine.py
sebasti+ 11383     1  0 19:00 ?        00:00:02 python /home/sebastien/.conky//playing_clementine.py
sebasti+ 14892     1  0 19:02 ?        00:00:02 python /home/sebastien/.conky//playing_clementine.py
sebasti+ 19100     1  0 19:04 ?        00:00:02 python /home/sebastien/.conky//playing_clementine.py
sebasti+ 19661     1  0 19:04 ?        00:00:02 python /home/sebastien/.conky//playing_clementine.py
sebasti+ 20561     1  0 19:05 ?        00:00:02 python /home/sebastien/.conky//playing_clementine.py
sebasti+ 24420 12880  0 19:32 pts/1    00:00:00 python /home/sebastien/.conky/playing_clementine.py
sebasti+ 26507     1  0 19:07 ?        00:00:02 python /home/sebastien/.conky//playing_clementine.py
sebasti+ 27723     1  0 19:20 ?        00:00:01 python /home/sebastien/.conky//playing_clementine.py
sebasti+ 28204     1  0 19:08 ?        00:00:02 python /home/sebastien/.conky//playing_clementine.py

Je pense que c'est la cause du problème. En tuant les processus et en redémarrant je n'ai plus d'erreur. NB l'adresse du fichier n'est pas bonne mais ça ne semble pas le gêner. Je corrige quand même parce que c'est pas beau.

Sinon j'ai rajouté les unités de pression température et vitesse au fichier script.lua. J'ai aussi changé l'échelle de tempéture CPU. Elle n'a jamais dépassé 65° en ce qui me concerne.

--this is a lua script for use in conky
require 'cairo'
require 'os'
local meteo=require('meteo')
local play=require('playing_clementine')

-- Parametre a modifier
local chemin="~/.conky" -- répertoire ou ce trouve vos scripts (pas de / à la fin)
local departement="31000" -- indiquer le département pour la météo
local disque_1="/home"
local disque_2="/"
local disque_3="/media/Documents"

--[[
###################################################################################################
#  Ne pas faire de modification après cette ligne (sauf si vous savez ce que vous faite), Merci.  #
###################################################################################################
]]--
local home = os.getenv("HOME")
chemin=string.gsub(chemin,"~",home)
disque_1=string.gsub(disque_1,"~",home)
disque_2=string.gsub(disque_2,"~",home)
disque_3=string.gsub(disque_3,"~",home)
local nb_coeur=tonumber(conky_parse("${exec cat /proc/cpuinfo | grep processor | wc -l}"))
local Clementine
local T00=0
local T0=0
local T=0
local cr, T1, T2
local demon=1

-- Partie Fonctions
local function draw_circle(alpha,progress,x_center,y_center,radius,epaisseur)
    cairo_set_source_rgba(cr,1,1,1,alpha)
    cairo_set_line_width(cr,epaisseur)
    cairo_arc(cr, x_center, y_center, radius, 0-math.pi/2, progress * 2 * math.pi / 100 - math.pi/2)
    cairo_stroke(cr)
end

local function draw_circle_gauge(alpha,nb_gauge,angle_step,angle_step_ink,x_center,y_center,radius,epaisseur)
    cairo_set_source_rgba(cr,1,1,1,alpha)
    cairo_set_line_width(cr,epaisseur)
    local angle_step_rad=angle_step*math.pi/180
    local angle_step_ink_rad=angle_step_ink*math.pi/180
    local i = 1
    local angle=-math.pi/2
    while i <= nb_gauge do
        cairo_arc(cr, x_center, y_center, radius, angle, angle + angle_step_ink_rad)
        angle=angle+angle_step_rad
        cairo_stroke(cr)
        i = i+1
    end

end

local function draw_line(alpha,progress,x_ligne,y_ligne,longueur,epaisseur)
    progress=progress or 0
    local red,green,blue=1,1,1
    cairo_set_source_rgba (cr,1,1,1,alpha)
    cairo_set_line_width (cr, epaisseur)
    cairo_set_dash(cr,1.,0,1)
    cairo_move_to (cr, x_ligne, y_ligne)
    cairo_line_to (cr, x_ligne+((progress/100)*longueur), y_ligne)
    cairo_stroke (cr)
end

local function draw_dash_line(alpha,progress,x_ligne,y_ligne,longueur,epaisseur)
    local red,green,blue=1,1,1
    cairo_set_source_rgba (cr,1,1,1,alpha)
    cairo_set_line_width (cr, epaisseur)
    cairo_set_dash(cr,5.,1,0)
    cairo_move_to (cr, x_ligne, y_ligne)
    cairo_line_to (cr, x_ligne+longueur*progress/100, y_ligne)
    cairo_stroke (cr)
end

local function draw_scale(alpha,x_ligne,y_ligne,nb_step,long_step_ink,long_step,epaisseur)
    local red,green,blue=1,1,1
    cairo_set_source_rgba (cr,1,1,1,alpha)
    cairo_set_line_width (cr, epaisseur)
    local i = 1
    local x_step=x_ligne
    while i <= nb_step do
        cairo_move_to (cr, x_step, y_ligne)
        cairo_line_to (cr, x_step+long_step_ink,y_ligne)
        cairo_stroke (cr)
        x_step=x_step + long_step
        i=i+1
    end
end

local function affiche_texte(police,taille,x,y,alpha,texte)
    local red,green,blue,alpha=1,1,1,alpha
    cairo_select_font_face (cr, police, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL)
    cairo_set_font_size (cr, taille)
    cairo_set_source_rgba (cr,red,green,blue,alpha)
    cairo_move_to (cr,x,y)
    cairo_show_text (cr,texte)
    cairo_stroke (cr)
end

-- Partie script
function graph_line(Maj)
    if Maj==1 then
        -- Températures
        T1=tonumber(conky_parse("${exec sensors | awk ' $2==\"0:\" {print $3}' | cut -c 2-3}"))
        T2=tonumber(conky_parse("${exec sensors | awk ' $2==\"1:\" {print $3}' | cut -c 2-3}"))
    end

    -- Utilisation Disque
    local used_perc1=tonumber(conky_parse("${fs_used_perc "..disque_1.."}"))
    local used_perc2=tonumber(conky_parse("${fs_used_perc "..disque_2.."}"))
    local used_perc3=tonumber(conky_parse("${fs_used_perc "..disque_3.."}"))
    -- A chaque cycle
    -- Heure
    local heure=tonumber(conky_parse("${time %I}"))
    local minute=tonumber(conky_parse("${time %M}"))
    local seconde=tonumber(conky_parse("${time %S}"))
    -- Utilisation CPU
    local cpu={}
    for i = 1,nb_coeur do
        cpu[i]=tonumber(conky_parse("${cpu cpu"..i.."}"))
    end
    -- UP Down
    local ratio_upload=tonumber(conky_parse("${upspeedf eth0}")/55*100)
    local ratio_download=tonumber(conky_parse("${downspeedf eth0}")/302*100)
    -- Clementine
    Clementine=play.info("avancement") --conky_parse("${execi 5 python2 "..chemin.."/anowplaying.py -p}")

    -- Horloge
    draw_circle(0.2,100,200,48,20,2)
    draw_circle(0.2,100,200,48,25,2)
    if heure == 12 then
        heure = 0
    end
    local prog_seconde=seconde/60
    local prog_minute=(minute+prog_seconde)/60
    local prog_heure=(heure+prog_minute)/12
    draw_circle(1.,prog_minute*100,200,48,25,2)
    draw_circle(1.,prog_heure*100,200,48,20,2)
    draw_circle_gauge(1,12,30,2,200,48,20,2)
    draw_circle_gauge(1,12,30,2,200,48,25,2)
    draw_circle_gauge(1,seconde,6,2,200,48,30,2)

    --CPU & RAM
    local y_img_4 = 219
    draw_scale(0.5,153,y_img_4+32,36,1,5,3)
    draw_scale(1,153,y_img_4+32,8,1,25,6)
    local t1=T1-30
    local t2=T2-30
    if t1<0 then
        t1 = 0
    end
    if t2<0 then
        t2 = 0
    end
    draw_line(t1/35,(t1/35)*100,153,y_img_4+31,176,2)
    draw_line(t2/35,(t2/35)*100,153,y_img_4+33,176,2)

    for i = 1,nb_coeur do
        if cpu[i] == nil then cpu[i]=0 end
    end
    draw_line(0.2,100,180,y_img_4+49,150,2)
    local ratio_barre=(150/nb_coeur)

    -- calcul pour affichage barre ratio cpu
    local x1 = {}
    x1[1]=180 -- début barre cpu1
    for i = 1,nb_coeur do
        x1[i+1]=x1[i]+cpu[i]/100*ratio_barre
    end

    -- affichage barre occupation cpu
    local ratio_trans=(0.8/nb_coeur)
    for i = 1,nb_coeur do
        draw_line(1-(i-1)*ratio_trans,cpu[i],x1[i],y_img_4+49,ratio_barre,2)
    end

    draw_line(0.2,100,180,y_img_4+72,150,2)
    local mem_perc=tonumber(conky_parse("${memperc}"))
    draw_line(1,mem_perc,180,y_img_4+72,150,2)

    --utilisation disque :
    local y_img_5 = 292
    draw_line(0.2,100,160,y_img_5+33,170,2)
    draw_line(1,used_perc1,160,y_img_5+33,170,2)

    draw_line(0.2,100,160,y_img_5+53,170,2)
    draw_line(1,used_perc2,160,y_img_5+53,170,2)

    draw_line(0.2,100,160,y_img_5+83,170,2)
    draw_line(1,used_perc3,160,y_img_5+73,170,2)

    --upload
    local y_img_6 = 365
    draw_line(0.2,100,170,y_img_6+33,160,2)
    draw_line(1,ratio_upload,170,y_img_6+33,160,2)
    --download
    draw_line(0.2,100,170,y_img_6+48,160,2)
    draw_line(1,ratio_download,170,y_img_6+48,160,2)

    -- lecture musique
    if Clementine ~= nil then
        local y_img_7 = 438
        draw_line(0.2,100,100,y_img_7+70,230,2)
        local progress=tonumber(Clementine)
        draw_line(1,progress,100,y_img_7+70,230,2)
    end
end

function display_text(Maj)
    local h_leve=os.date("%H:%M", meteo.info("leve_soleil"))--conky_parse("${exec "..chemin.."/meteo_display.sh current 1}")
    local h_couche=os.date("%H:%M", meteo.info("coucher_soleil"))--conky_parse("${exec "..chemin.."/meteo_display.sh current 2}")
    local meteo_act=meteo.info("meteo_description")--conky_parse("${exec "..chemin.."/meteo_display.sh current 8}")
    local pression=meteo.info("pression")--conky_parse("${exec "..chemin.."/meteo_display.sh pression 1}").." hPa"
    local temp_act=meteo.info("temp")--conky_parse("${exec "..chemin.."/meteo_display.sh current 3}")
    local text_meteo=meteo.info("meteo_id")--conky_parse("${exec "..chemin.."/meteo_display.sh meteo 1}")
    local humidite=meteo.info("humidite")--conky_parse("${exec "..chemin.."/meteo_display.sh current 6}")
    local speed=meteo.info("vent_vitesse")--conky_parse("${exec "..chemin.."/meteo_display.sh current 7}")
    local precipitation=meteo.info("pluie_court_terme")--conky_parse("${exec "..chemin.."/meteo_display.sh current 9}")
    local temp_min=meteo.info("temp_min", 1)--conky_parse("${exec "..chemin.."/meteo_display.sh current 4}")
    local temp_max=meteo.info("temp_max", 1)--conky_parse("${exec "..chemin.."/meteo_display.sh current 5}")
    local semaine_meteo_2=meteo.info("meteo_id", 2)--conky_parse("${exec "..chemin.."/meteo_display.sh meteo 2}")
    local semaine_meteo_3=meteo.info("meteo_id", 3)--conky_parse("${exec "..chemin.."/meteo_display.sh meteo 3}")
    local semaine_meteo_4=meteo.info("meteo_id", 4)--conky_parse("${exec "..chemin.."/meteo_display.sh meteo 4}")
    local semaine_meteo_5=meteo.info("meteo_id", 5)--conky_parse("${exec "..chemin.."/meteo_display.sh meteo 5}")
    local semaine_meteo_6=meteo.info("meteo_id", 6)--conky_parse("${exec "..chemin.."/meteo_display.sh meteo 6}")
    local semaine_meteo_7=meteo.info("meteo_id", 7)--conky_parse("${exec "..chemin.."/meteo_display.sh meteo 7}")
    -- affichage du jour
    local semaine_jour_2=os.date("%a", meteo.info("date", 2))--conky_parse("${exec "..chemin.."/meteo_display.sh jour 2}")
    local semaine_jour_3=os.date("%a", meteo.info("date", 3))--conky_parse("${exec "..chemin.."/meteo_display.sh jour 3}")
    local semaine_jour_4=os.date("%a", meteo.info("date", 4))--conky_parse("${exec "..chemin.."/meteo_display.sh jour 4}")
    local semaine_jour_5=os.date("%a", meteo.info("date", 5))--conky_parse("${exec "..chemin.."/meteo_display.sh jour 5}")
    local semaine_jour_6=os.date("%a", meteo.info("date", 6))--conky_parse("${exec "..chemin.."/meteo_display.sh jour 6}")
    local semaine_jour_7=os.date("%a", meteo.info("date", 7))--conky_parse("${exec "..chemin.."/meteo_display.sh jour 7}")
    -- prévision température jour
    local semaine_temp_2=meteo.info("temp_jour", 2)--conky_parse("${exec "..chemin.."/meteo_display.sh temperature 2}").."°C"
    local semaine_temp_3=meteo.info("temp_jour", 3)--conky_parse("${exec "..chemin.."/meteo_display.sh temperature 3}").."°C"
    local semaine_temp_4=meteo.info("temp_jour", 4)--conky_parse("${exec "..chemin.."/meteo_display.sh temperature 4}").."°C"
    local semaine_temp_5=meteo.info("temp_jour", 5)--conky_parse("${exec "..chemin.."/meteo_display.sh temperature 5}").."°C"
    local semaine_temp_6=meteo.info("temp_jour", 6)--conky_parse("${exec "..chemin.."/meteo_display.sh temperature 6}").."°C"
    local semaine_temp_7=meteo.info("temp_jour", 7)--conky_parse("${exec "..chemin.."/meteo_display.sh temperature 7}").."°C"

    local espace1=conky_parse("${fs_used_perc "..disque_1.."}").."%"
    local espace2=conky_parse("${fs_used_perc "..disque_2.."}").."%"
    local espace3=conky_parse("${fs_used_perc "..disque_3.."}").."%"
    local esp_used1=conky_parse("${fs_used "..disque_1.."}")
    local esp_used2=conky_parse("${fs_used "..disque_2.."}")
    local esp_used3=conky_parse("${fs_used "..disque_3.."}")
    local esp_free1=conky_parse("${fs_free "..disque_1.."}")
    local esp_free2=conky_parse("${fs_free "..disque_2.."}")
    local esp_free3=conky_parse("${fs_free "..disque_3.."}")


    local cpu=conky_parse("${cpu cpu0}")

    local y_img_1 = 0
    --[[###########################################
        Heure et Date
    ##############################################]]
    affiche_texte("Ubuntu",11,92,y_img_1+30,1,"J"..conky_parse("${time %j}").." - S"..conky_parse("${time %V}"))
    affiche_texte("Sans",50,85,y_img_1+73,1,"☼")
    affiche_texte("Ubuntu",11,130,y_img_1+50,1,h_leve)
    affiche_texte("Ubuntu",11,130,y_img_1+70,1,h_couche)
    affiche_texte("Ubuntu",12,185,y_img_1+52,1,conky_parse("${time %H:%M}"))     --heure
    affiche_texte("Ubuntu",12,282,y_img_1+34,1,conky_parse("${time %A}"))        --nom du jour
    affiche_texte("Ubuntu",12,282,y_img_1+45,1,conky_parse("${time %B}"))        --nom du mois
    affiche_texte("Ubuntu",32,245,y_img_1+45,1,conky_parse("${time %d}"))        --numeros du jour
    affiche_texte("Ubuntu",32,245,y_img_1+71,1,conky_parse("${time %Y}"))        --année

    --[[###########################################
        Météo actuelle
    ##############################################]]
    local y_img_2 = 73
    affiche_texte("Weather",65,95,y_img_2+77,1,text_meteo)
    --affiche_texte("Weather",65,95,y_img_2+77,1,"g")
    affiche_texte("Ubuntu",11,150,y_img_2+30,1,meteo_act.." - "..temp_act.."°C")

    affiche_texte("Ubuntu",11,150,y_img_2+45,1,pression.." hPa - "..humidite.."% hum")
    affiche_texte("Ubuntu",11,150,y_img_2+60,1,"Vent : "..speed.." m/s")
    affiche_texte("Ubuntu",11,150,y_img_2+75,1,"Pluies : "..precipitation)

    --affiche_texte("Ubuntu",11,150,y_img_2+40,1,"min : "..temp_min.." - max : "..temp_max)
    affiche_texte("Ubuntu",11,310,y_img_2+70,1,temp_min.."°C")
    affiche_texte("Ubuntu",11,310,y_img_2+45,1,temp_max.."°C")
    affiche_texte("Weather",50,295,y_img_2+75,1,"y")

    --[[###########################################
        prévision météo semaine
    ##############################################]]
    local y_img_3 = 146
    affiche_texte("Weather",50,95,y_img_3+67,1,semaine_meteo_2)
    affiche_texte("Weather",50,135,y_img_3+67,1,semaine_meteo_3)
    affiche_texte("Weather",50,175,y_img_3+67,1,semaine_meteo_4)
    affiche_texte("Weather",50,215,y_img_3+67,1,semaine_meteo_5)
    affiche_texte("Weather",50,255,y_img_3+67,1,semaine_meteo_6)
    affiche_texte("Weather",50,295,y_img_3+67,1,semaine_meteo_7)

    -- affichage du jour
    affiche_texte("Ubuntu",11,100,y_img_3+27,1,semaine_jour_2)
    affiche_texte("Ubuntu",11,140,y_img_3+27,1,semaine_jour_3)
    affiche_texte("Ubuntu",11,180,y_img_3+27,1,semaine_jour_4)
    affiche_texte("Ubuntu",11,220,y_img_3+27,1,semaine_jour_5)
    affiche_texte("Ubuntu",11,260,y_img_3+27,1,semaine_jour_6)
    affiche_texte("Ubuntu",11,300,y_img_3+27,1,semaine_jour_7)

    -- prévision température jour
    affiche_texte("Ubuntu",12,100,y_img_3+74,1,semaine_temp_2.."°C")
    affiche_texte("Ubuntu",12,140,y_img_3+74,1,semaine_temp_3.."°C")
    affiche_texte("Ubuntu",12,180,y_img_3+74,1,semaine_temp_4.."°C")
    affiche_texte("Ubuntu",12,220,y_img_3+74,1,semaine_temp_5.."°C")
    affiche_texte("Ubuntu",12,260,y_img_3+74,1,semaine_temp_6.."°C")
    affiche_texte("Ubuntu",12,300,y_img_3+74,1,semaine_temp_7.."°C")


    --[[###########################################
        CPU Temperature et RAM
    ##############################################]]
    local y_img_4 = 219
    affiche_texte("Ubuntu",13,100,y_img_4+32,1,"Temp :")
    affiche_texte("Ubuntu",13,100,y_img_4+52,1,"CPU    :")
    affiche_texte("Ubuntu",13,100,y_img_4+72,1,"RAM   :")

    affiche_texte("Ubuntu",10,147,y_img_4+26,1,"30°")
    affiche_texte("Ubuntu",10,197,y_img_4+26,1,"40°")
    affiche_texte("Ubuntu",10,247,y_img_4+26,1,"50°")
    affiche_texte("Ubuntu",10,297,y_img_4+26,1,"60°")

    if cpu == nil then cpu=0 end

    affiche_texte("Ubuntu",11,150,y_img_4+52,1,cpu.."%")

    affiche_texte("Ubuntu",11,150,y_img_4+72,1,conky_parse("${memperc}").."%")
    affiche_texte("Ubuntu",11,180,y_img_4+69,1,conky_parse("${mem}"))
    affiche_texte("Ubuntu",11,290,y_img_4+69,0.7,conky_parse("${memeasyfree}"))

    --[[###########################################
        Espace disponible
    ##############################################]]
    local y_img_5 = 292
    affiche_texte("Heydings Icons",18,100,y_img_5+34,1,"H")
    affiche_texte("Heydings Icons",18,100,y_img_5+54,1,"L")
    affiche_texte("Heydings Icons",18,100,y_img_5+74,1,"F")

    affiche_texte("Ubuntu",15,123,y_img_5+33,1,espace1)
    affiche_texte("Ubuntu",15,123,y_img_5+53,1,espace2)
    affiche_texte("Ubuntu",15,123,y_img_5+73,1,espace3)

    affiche_texte("Ubuntu",11,160,y_img_5+30,1,esp_used1)
    affiche_texte("Ubuntu",11,160,y_img_5+50,1,esp_used2)
    affiche_texte("Ubuntu",11,160,y_img_5+70,1,esp_used3)

    affiche_texte("Ubuntu",11,290,y_img_5+30,0.7,esp_free1)
    affiche_texte("Ubuntu",11,290,y_img_5+50,0.7,esp_free2)
    affiche_texte("Ubuntu",11,290,y_img_5+70,0.7,esp_free3)

    --[[###########################################
        Débit internet
    ##############################################]]
    local y_img_6 = 365
    affiche_texte("Deja",18,100,y_img_6+38,1,"↗")
    affiche_texte("Ubuntu",12,120,y_img_6+38,1,conky_parse("${upspeed eth0}"))
    affiche_texte("Deja",18,100,y_img_6+53,1,"↘")
    affiche_texte("Ubuntu",12,120,y_img_6+53,1,conky_parse("${downspeed eth0}"))
    local up_total=conky_parse("${totalup eth0}")
    local down_total=conky_parse("${totaldown eth0}")
    affiche_texte("Ubuntu",12,100,y_img_6+68,1,"Total : "..up_total.." / "..down_total)

    --[[###########################################
        Musique
    ##############################################]]
    if Clementine ~= nil then
        local y_img_7 = 438
        affiche_texte("Ubuntu",11,100,y_img_7+35,1,play.info("album"))--conky_parse("${execi 5 python2 "..chemin.."/anowplaying.py -l}"))
        affiche_texte("Ubuntu",11,100,y_img_7+50,1,play.info("titre"))--conky_parse("${execi 5 python2 "..chemin.."/anowplaying.py -t}"))
        local temp_ecoule=play.info("temp_passe")--conky_parse("${execi 5 python2 "..chemin.."/anowplaying.py -e}")
        local temp_remain=play.info("temp_restant")--conky_parse("${execi 5 python2 "..chemin.."/anowplaying.py -r}")
        affiche_texte("Ubuntu",11,100,y_img_7+65,1,temp_ecoule)
        affiche_texte("Ubuntu",11,310,y_img_7+65,0.7,temp_remain)
    end
end

function conky_main()
    local function exec(cmd)
        local cmd=cmd.." > /tmp/exec.log"
        local e=os.execute(cmd)
        local file=assert(io.open("/tmp/exec.log", "r"))
        local r=file:read("*all")
        assert(file:close())
        return r
    end

    if conky_window == nil then
        return
    end

    if demon==1 then
        local list=exec("ps -sa | awk '{print $NF}'")
        if list:find("playing_clementine.py")~=nil then
            demon=0
        else
            demon=os.execute('python '..chemin..'/playing_clementine.py &')
        end
    end

    local cs = cairo_xlib_surface_create(conky_window.display,
                                         conky_window.drawable,
                                         conky_window.visual,
                                         conky_window.width,
                                         conky_window.height)
    cr = cairo_create(cs)
    local updates=tonumber(conky_parse('${updates}'))

    local interval=30
    local timer=(updates % interval)
    local T1 = os.time()

    -- Gestion mise a jour météo
    if os.difftime(T1, T) >= 300 then
        if os.difftime(T1, T0) >= 3600 then
            meteo.maj(departement, "7jours")
            T0=T1
        end
        meteo.maj(departement, "cc")
        T=T1
    end


    if updates>=5 then
        if os.difftime(T1, T00) >= 30 then
            display_text(1)
            graph_line(1)
            T00=T1
        else
            display_text(0)
            graph_line(0)
        end
    end

    cairo_destroy(cr)
    cairo_surface_destroy(cs)
    cr=nil
end

Sinon j'ai un dernier petit pb c'est que j'aime changer l'image de base en fonction de mon fond d'écran et de mon thème gnome-shell. Je fais ça avec un script qui vient créer l'image base.png à partir de base_init.png. Je viens de le faire (le script s'est bien déroulé (pas d'erreur), l'image ~/.conky/base.png à bien été modifiées mais par contre le fond du conky n'a pas changé. Ce bug n'est pas lié au pb du playing_clementine.py en double (je viens de faire le test).
pour info j'utilise ce script pour modifier l'image. J'utilise gnome-shell.

#!/bin/bash
image=`gsettings get org.gnome.desktop.background picture-uri | sed -e "s_'__g;s_file://__g"`


RgbHighlight=`convert $image -resize 3x3 -filter cubic -fuzz 15% -brightness-contrast 15% -colorspace RGB -format '%[pixel:s]' info:-`


txRedHighlight=`echo $RgbHighlight | cut -d\( -f2 | cut -d, -f1`
txGreenHighlight=`echo $RgbHighlight | cut -d\( -f2 | cut -d, -f2`
txBlueHighlight=`echo $RgbHighlight | cut -d\( -f2 | cut -d, -f3 | cut -d\) -f1`

txRedBack=$((txRedHighlight*20/45))
txGreenBack=$((txGreenHighlight*20/45))
txBlueBack=$((txBlueHighlight*20/45))

luminance=$(echo "$txRedHighlight * 0.2126 + $txGreenHighlight * 0.7152 + $txBlueHighlight * 0.0722" | bc)
luminance=${luminance%.*}

if [ $luminance -gt 180 ] ; then
    sed -e 's/1,1,1/0,0,0/g' ~/.conky/script_modele.lua > ~/.conky/script.lua

else
    cp ~/.conky/script_modele.lua ~/.conky/script.lua
fi

convert ~/.conky/base_init.png -fuzz 30% -fill "rgb($txRedHighlight,$txGreenHighlight,$txBlueHighlight)" -opaque 'rgb(255,0,0)' ~/.conky/temp.png
convert ~/.conky/temp.png -fuzz 20% -fill "rgb($txRedBack,$txGreenBack,$txBlueBack)" -opaque 'rgb(0,0,255)' ~/.conky/base.png
rm ~/.conky/temp.png

"When I was in the military, they gave me a medal for killing
two men, and a descharge for loving one !" Leonard Matlovich

Hors ligne

#1010 Le 25/06/2015, à 23:16

ricorde

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

Didier-T a écrit :

Bonjour ricorde,
si tu n'as qu'une instance de ton conky lancé, je ne vois pas d'ou sa peut venir.

Désolé de ne pouvoir aider plus.

quand je lance un conky si je clic sur le bureau il disparait j'ai donc changer cette valeur je fais cette precision car ci ce n'est pas la bonne valeur peut etre esse mon probleme ?
own_window_type desktop moi j'ai remplacer destop par own_window_type override        
En faite le problème vient bien de la valeur j'ai changer override pour normal et tout fonctionne très bien
Merci

Dernière modification par ricorde (Le 26/06/2015, à 01:13)


Processeur : Intel Core i7-3930K 3200.0 MHz Socket R (LGA2011-0)    Carte graphique : GIGABYTE GeForce GTX 680    Carte mére : ASUS SABERTOOTH X79   Memory : Kingston DDR3 SDRAM 666.7 MHz 2 fois 8 Go

Hors ligne

#1011 Le 26/06/2015, à 11:02

Didier-T

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

Bonjour Ferod,
Je viens de finir les modifications.

40 caractères max pour les infos de la lecture en cours.
Le message d’erreur était du au fait que le conky ne soit pas lancé depuis le répertoire ou il est stocké, ce soucis est réglé.
Les unité sont remise en place dans l'archive.
Le soucis de changement d'image est réglé, tu verras dans le conky l'option "-n" derrière les infos des images concerné, c'est bien mieux que le" imlib_cache_size 0", et sa veux dire la même chose (sauf que la on cible les images concernées).
Enfin pour le "playing_clementine.py" qui ce lance sans cesse, vérifie s'il n'est pas lancé par le lanceur du conky, si c'est le cas supprime le de ton lanceur, son exécution est géré par le conky (en fait le conky regarde s'il est déjà lancé et le lance si nécessaire).

l'archive est modifier, toujours a la même adresse

Pour info en cherchant une solution pour le répertoire de travail je suis tombé sur un truc sympas pour voir l'heure de la dernière modification d'un fichier (je m'en sert pour Clementine), résultat le conky consomme entre 0 et 2 % de processeur (il dépasse rarement 1%), le reste ne change pas.

A+,
Didier.

P.S. : mon processeur monte assé facilement a 75°c si je le titille un peut trop big_smile

Dernière modification par Didier-T (Le 26/06/2015, à 11:05)

Hors ligne

#1012 Le 26/06/2015, à 17:05

Ferod

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

Didier-T a écrit :

Le soucis de changement d'image est réglé, tu verras dans le conky l'option "-n" derrière les infos des images concerné, c'est bien mieux que le" imlib_cache_size 0", et sa veux dire la même chose (sauf que la on cible les images concernées).

Effectivement. C'est réglé maintenant !

Didier-T a écrit :

Pour info en cherchant une solution pour le répertoire de travail je suis tombé sur un truc sympas pour voir l'heure de la dernière modification d'un fichier (je m'en sert pour Clementine), résultat le conky consomme entre 0 et 2 % de processeur (il dépasse rarement 1%), le reste ne change pas.

la commande stat ? big_smile Oui j'ai appris son existence il y a quelques semaines sur le forum ^^.

Didier-T a écrit :

Enfin pour le "playing_clementine.py" qui ce lance sans cesse, vérifie s'il n'est pas lancé par le lanceur du conky, si c'est le cas supprime le de ton lanceur, son exécution est géré par le conky (en fait le conky regarde s'il est déjà lancé et le lance si nécessaire).

Effectivement j'avais un lanceur au démarrage pour le script que j'aurais du supprimer. C'est OK maintenant. Par contre hier, comme j'avais des bug, j'ai lancer conky et je suis arrivé à 5-6 playing_clementine.py en même temps. Là (j'ai encore eu un "bug" que j'ai résolu) j'ai vérifié avant de le lancer que j'avais pas le playing_clementine.py qui tourne.

Le "bug" que j'ai eu c'est qu'il ne connaisait pas posix. J'ai installé lua-posix et ça roule !

En tout cas ça a été très efficace ! Je suis à 7% de cpu en moyenne alors qu'avant j'étais à 12-15 continuellement. Merci.

Sébastien


"When I was in the military, they gave me a medal for killing
two men, and a descharge for loving one !" Leonard Matlovich

Hors ligne

#1013 Le 26/06/2015, à 17:57

Didier-T

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

Re-bonjour Ferod,
7% de consommation... c'est quoi comme processeur, j'avais vue que  tu gérais 4 cœurs dans script.lua

Tu parle d'un forum ou l'on discute "lua", tu peut m'indiquer le chemin, je suis certain que j'y apprendrais plein de chose (au fait il s’agit bien de posix.stat).

A+,
Didier.

Hors ligne

#1014 Le 27/06/2015, à 08:41

Ferod

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

Bonjour Didier-T
Mon processeur c'est un Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz. Mais attention quand je parle 7% de consommation, je parle du chiffre qui est affiché dans le conky (et qui englobe tout le système), pas de la consommation du conky seul (parce que là je suis à 0 d'après le moniteur système).
Le forum dont je parle c'est bien le forum ubuntu-fr. J'ai vu un sujet où justement la commande "stat" en bash était mentionnée pour obtenir la date de dernière accès (mais il n'y avait aucun rapport avec lua).

Dernière modification par Ferod (Le 27/06/2015, à 08:42)


"When I was in the military, they gave me a medal for killing
two men, and a descharge for loving one !" Leonard Matlovich

Hors ligne

#1015 Le 29/06/2015, à 10:04

ragamatrix

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

Salut à tous !
Je ne sais pas vraiment "coder" mais j'ai récupéré des scripts que j'ai modifié afin de faire un affichage sur le bureau, dans l'esprit "jpdipsy" (qui affichait la météo et autres images. Je suis peut-être un peu hors sujet car ce n'est pas conky mais un script qui fait un affichage sur le bureau avec feh...
Pour l'instant j'utilise ce script pour faire un affichage avec xplanet et un radar sat, mais il peut-être facilement modifiable pour afficher ce que l'on veut comme autre image.
@Didier-T: Dans un post précédent j'ai lu que tu avais parlé des scripts "#!bash" qui consommeraient beaucoup plus de ressources que le "lua" pour l'affichage... Penses-tu qu'il y aurait un intérêt de "traduire" ce script en lua... Est-ce possible ? Ou cela n'a peut-être aucun intérêt ?
Je lance cron pour que ce script soit lancé toutes les 10 minutes:

 */10 * * * * moi /home/moi/.xplanet/xpbg2

1435567567.png
Je poste le script qui pourrait peut-être amélioré, il vous faut xplanet et xplanet-images, imagemagick et feh pour tester. Il faut aussi créer un dossier .xplanet et un fichier xplanet.conf.
Je poste le mien pour inspiration:

[default]                       # Values in this section apply to all bodies unless overridden below.

arc_color=white
arc_thickness=1
bump_scale=3
cloud_gamma=1
cloud_ssec=false
cloud_threshold=90
color={255,255,255}             # fallback color in case an image map isn't found
draw_orbit=false
grid=false
grid1=6
grid2=15
magnify=1
marker_color=red
max_radius_for_label=3
min_radius_for_label=.01
min_radius_for_markers=40
orbit={-.5,.5,2}
orbit_color={255,255,255}       # color for the orbit
random_origin=true
random_target=true
shade=30                        # 0 = black, 100 = same as dayside
text_color={255,0,0}            # color for text (markers & body label)
twilight=6                      # blend the day and night images for
                                # pixels within this many degrees of
                                # the terminator

[sun]
"Sun"
color={255,255,166}
#map=~/.xplanet/images/sunmap.jpg
max_radius_for_label=0
shade=100
########################################################################
[earth]
"Earth"
color={28, 82, 110}
map=~/.xplanet/images/earth_06_2048.jpg
night_map=~/.xplanet/images/earth-night_2048.jpg
#cloud_map=~/.xplanet/images/clouds_2048.jpg
cloud_gamma=1.2
cloud_threshold=123
twilight=11
shade=4
min_radius_for_label=0
#arc_file=~/.xplanet/arcstorm
#marker_file=~/.xplanet/storm

#bump_map=~/.xplanet/images/earth-bumpmap_2048.jpg
#specular_map=earth-specular_2048.jpg
########################################################################
[moon]
"Moon"
color={100, 100, 100}
map=~/.xplanet/images/moon_2048.jpg
#marker_file=moon
#bump_map=~/.xplanet/images/moon-bumpmap_2048.jpg
#font=/home/raphix/.fonts/Aller_Rg.ttf
#text_color={30, 144, 255}
#date_format=%c %Z
#magnify=30
########################################################################
[mars]
"Mars"
color={172, 123, 67}
map=~/.xplanet/images/mars.jpg
min_radius_for_label=0
#marker_file=mars
#magnify=40
[phobos]
"Phobos"

[deimos]
"Deimos"

[jupiter]
"Jupiter"
color={204, 163, 133}
min_radius_for_label=0

[io]
"Io"
color={212, 182, 52}

[europa]
"Europa"
color={140, 140, 140}

[ganymede]
"Ganymede"
color={150, 150, 150}

[callisto]
"Callisto"
color={70, 70, 70}

[saturn]
"Saturn"
color={244, 199, 134}
min_radius_for_label=0
map=~/.xplanet/images/saturn.jpg
#magnify=1
[mimas]
"Mimas"

[enceladus]
"Enceladus"

[tethys]
"Tethys"

[dione]
"Dione"

[rhea]
"Rhea"

[titan]
"Titan"

color={252,94,7}

[hyperion]
"Hyperion"

[iapetus]
"Iapetus"

[phoebe]
"Phoebe"

[uranus]
"Uranus"

color={105, 197, 238}

min_radius_for_label=0

[miranda]
"Miranda"

[ariel]
"Ariel"

[umbriel]
"Umbriel"

[titania]
"Titania"

[oberon]
"Oberon"

[neptune]
"Neptune"
color={95, 133, 232}

min_radius_for_label=0

[triton]
"Triton"

[nereid]
"Nereid"

[pluto]
"Pluto"
color={206, 180, 153}
#bump_map=~/.xplanet/images/plutobump.jpg
min_radius_for_label=0

[charon]
"Charon"

 

le script :
xpbg2:

 #!/bin/bash

export DISPLAY=:0
PREFIX=~/.xplanet/
#Background # Fond
BG=${PREFIX}starmap_gleam.jpg
#Images Montage
MOON=${PREFIX}moonxpbg.png
EARTH=${PREFIX}earthxpbg.png
IMGXP=${PREFIX}montage-xpbg2.png
OUTPUT=xplanetesting.jpg
RSAT=radarxp
tailleRSAT=60
tailledecoupe=400x400
ORIGINE=moon
LOOK_AT=earth

wget -q -O  ${PREFIX}$RSAT.jpg "http://www.meteo-mc.fr/dedie/Images/sat/satireu1.gif"

convert ${PREFIX}$RSAT.jpg -filter Lanczos -crop  $tailledecoupe+140+125\! ${PREFIX}$RSAT.png
convert  ${PREFIX}$RSAT.png \
\( +clone  -alpha extract \
        -draw 'fill black polygon 0,0 0,5 5,0 fill white circle 5,5 5,0' \
        \( +clone -flip \) -compose Multiply -composite \
        \( +clone -flop \) -compose Multiply -composite \
     \) -alpha off -compose CopyOpacity -composite  ${PREFIX}$RSAT.png

convert ${PREFIX}$RSAT.png  -background  black  \( +clone -shadow 60x4+2+2 \) +swap -background none -flatten ${PREFIX}$RSAT.png
rm ${PREFIX}$RSAT.jpg

convert -size 415x415 xc:transparent ${PREFIX}cartouche.png
composite -geometry  +5+5 ${PREFIX}$RSAT.png ${PREFIX}cartouche.png ${PREFIX}cartouche.png
#composite -geometry 200x200+15+500 ${PREFIX}cartouche.png ${PREFIX}${OUTPUT} ${PREFIX}${OUTPUT}
#Taille des objets à régler suivant la résolution du bureau
GEOMETRY=450x450
GEOMETRYMOON=150x150
# 
LONGITUDE=25
LATITUDE=0
#
# Par rapport au Soleil, la Terre fait une rotation complète (360°) en 24 heures, soit 1° toutes les 4 minutes.
# Calculons quelle longitude est face au Soleil (LONGITUDE2)
declare -i HEURES=`date -u "+%X" | awk -F ":" '{print $1}' | sed s/"^0"/""/`
declare -i MINUTES=`date -u "+%X" | awk -F ":" '{print $2}' | sed s/"^0"/""/`
declare -i SECONDES=`date -u "+%X" | awk -F ":" '{print $3}' | sed s/"^0"/""/`
declare -i SEC=$((${HEURES}*3600+${MINUTES}*60+${SECONDES}))
declare -i LONGITUDE2=$(((43200-${SEC})*360/86400+$LONGITUDE))
 
#Annotation pour vérifier si l'image est actualisée
heuremodif=`date +%H`; minmodif=`date +%M`
fonte=White-Rabbit
libelle="last report at: "
#pour le fichier .xml copie l'image de fond->2xplanetesting.jpg
APPEND=2
# ************************************************
# Dans les lignes comprises entre "if" et "fi" ci-après, vous pouvez modifier le paramètre -longitude :
# mettez ${LONGITUDE} si vous désirez avoir une vue de la Terre centrée chez vous ;
# mettez ${LONGITUDE2} si vous désirez avoir une vue de la Terre centrée sur la longitude du zénith (Soleil), et votre latitude.
#Terre
xplanet -conf ${PREFIX}xplanet.conf -num_times 1 -transpng ${EARTH} -body earth -geometry ${GEOMETRY} -origin ${ORIGINE}  -longitude ${LONGITUDE2} -latitude ${LATITUDE} &
# LUNE
xplanet -conf ${PREFIX}xplanet.conf -transpng ${MOON} -body moon -geometry ${GEOMETRYMOON} &
#-fontsize 8 -color DodgerBlue3 -labelpos +45+90
convert -size 650x450 xc:transparent ${IMGXP}
#convert -size 1920x1080 xc:transparent ${IMGXP}
composite -geometry  +200+5 ${EARTH} ${IMGXP} ${IMGXP}
composite -geometry  +5+5 ${MOON} ${IMGXP} ${IMGXP}
#composite -geometry  250x250+25+760 ${PREFIX}cartouche.png ${IMGXP} ${IMGXP}
composite -geometry +950+450 "$IMGXP" "$BG" \
${PREFIX}${OUTPUT}

convert ${PREFIX}${OUTPUT} -gravity southwest -density 150 \
-fill DodgerBlue3 -font $fonte  -pointsize 8 -annotate 0x10+20+50 "$libelle $heuremodif h $minmodif" ${PREFIX}${OUTPUT}

composite -geometry  250x250+20+760 ${PREFIX}cartouche.png ${PREFIX}${OUTPUT} ${PREFIX}${OUTPUT} 

cp ${PREFIX}${OUTPUT} ${PREFIX}${APPEND}${OUTPUT}

#rm ${IMGXP}  
# met à jour le fond d'écran de Gnome ou openbox avec feh ou gconftool
feh --bg-center ${PREFIX}${OUTPUT} 
#&& killall xplanet
#gconftool -t str -s /desktop/gnome/background/picture_filename "$PREFIX$OUTPUT"

Pour une bonne transition des images il faut aussi créer un fichier xpbg2.xml en remplaçant "vous" par votre nom d'utilisateur:

 <background>
while (truth) {
  <static>
    <duration>590.0</duration>
    <file>/home/vous/.xplanet/xplanetesting.jpg</file>
  </static>
  <transition>
    <duration>10.0</duration>
    <from>/home/vous/.xplanet/xplanetesting.jpg</from>
    <to>/home/vous/.xplanet/2xplanetesting.jpg</to>
  </transition>
  <static>
    <duration>590.0</duration>
    <file>/home/vous/.xplanet/2xplanetesting.jpg</file>
  </static>
  <transition>
    <duration>10.0</duration>
    <from>/home/vous/.xplanet/2xplanetesting.jpg</from>
    <to>/home/vous/.xplanet/xplanetesting.jpg</to>
  </transition>
}
</background>

Pour que le script s'initialise correctement et avoir le fond d'écran vous pouvez mettre ces images dans ~/.xplanet ainsi que la fonte White Rabbit (dans ~/.fonts) (vous pouvez mettre celle que vous souhaitez en modifiant le script.
archive
voilà... je crois que c'est tout... big_smile

Dernière modification par ragamatrix (Le 29/06/2015, à 11:04)

Hors ligne

#1016 Le 08/07/2015, à 09:48

loutch

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

smilies%20(204).gif

Voila de mon coté j'ai fait des recherches et avec l'aide de WW j'ai la pochette qui s'affiche dans le conky mais cela ne se fait pas automatiquement.

le conkyrc :

${voffset -30}${font URW Chancery L:style=Bold:size=20}${alignc}Radiotray ${font}
Radio : ${alignc}${font URW Chancery L:style=Bold:size=12}${execi 10 qdbus net.sourceforge.radiotray /net/sourceforge/radiotray net.sourceforge.radiotray.getCurrentRadio}$font
${alignc}${voffset 50}En ce moment :
${font URW Chancery L:style=Bold:size=10}${execi 10 qdbus net.sourceforge.radiotray /net/sourceforge/radiotray getCurrentMetaData| fold -s -w40 }
${execi 10 qdbus net.sourceforge.radiotray /net/sourceforge/radiotray getCurrentMetaData| fold -s -w40 > ~/.conky/radiotray/artiste_titre.txt}
${if_match "${execi 10 qdbus net.sourceforge.radiotray /net/sourceforge/radiotray net.sourceforge.radiotray.getCurrentRadio}" == "RTL"}${lua fDrawImage ~/.conky/radiotray/logos/rtl.png 100 50 50 50}${else}
${if_match "${execi 10 qdbus net.sourceforge.radiotray /net/sourceforge/radiotray net.sourceforge.radiotray.getCurrentRadio}" == "HOTMIX80"}${lua fDrawImage ~/.conky/radiotray/logos/hotmix-80.png 100 50 50 50}${else}
${if_match "${execi 10 qdbus net.sourceforge.radiotray /net/sourceforge/radiotray net.sourceforge.radiotray.getCurrentRadio}" == "MAXI80"}${lua fDrawImage ~/.conky/radiotray/logos/maxi80.png 100 50 50 50}${else}
${if_match "${execi 10 qdbus net.sourceforge.radiotray /net/sourceforge/radiotray net.sourceforge.radiotray.getCurrentRadio}" == "RTL2"}${lua fDrawImage ~/.conky/radiotray/logos/rtl2.png 100 50 50 50}${else}
${if_match "${execi 10 qdbus net.sourceforge.radiotray /net/sourceforge/radiotray net.sourceforge.radiotray.getCurrentRadio}" == "MAGNUM LA RADIO"}${lua fDrawImage ~/.conky/radiotray/logos/magnumradio.png 40 50 150 50}${else}
${if_match "${execi 10 qdbus net.sourceforge.radiotray /net/sourceforge/radiotray net.sourceforge.radiotray.getCurrentRadio}" == "LOUNGERADIO"}${lua fDrawImage ~/.conky/radiotray/logos/image.png 100 50 50 50}${texeci 20 ~/.conky/radiotray/loungeradio/loungeradio.sh}${lua conky_draw_bg 0 50 160 150 150 0x000000 0.99}${image ~/.conky/radiotray/loungeradio/loungeradio.jpg -p 45,155 -s 150x150 -n}${else}
${if_match "${execi 10 qdbus net.sourceforge.radiotray /net/sourceforge/radiotray net.sourceforge.radiotray.getCurrentRadio}" == "RFM"}${lua fDrawImage ~/.conky/radiotray/logos/rfm.png 100 50 50 50}${endif}
${endif}${endif}${endif}${endif}${endif}
${execi 10 ~/.conky/radiotray/pochette.sh}
${lua fDrawImage ~/.conky/radiotray/pochette.png 80 150 100 100}
${voffset -1000}

et le pochette.sh:

#bin/bash

 
titre=$(head -1 ~/.conky/radiotray/artiste_titre.txt)
lienMiniature=$(wget -U'Googlebot-Image/1.0' -qO - "www.google.fr/search?q=$titre\&tbm=isch" | perl -pe 's!.*?<img .*?src="([^"]*)".*!$1!')
wget -qO miniatureGoogleImage $lienMiniature

convert ~/.conky/radiotray/miniatureGoogleImage ~/.conky/radiotray/pochette.png

Pour que cela fonctionne je dois faire un double clic sur le script et alors la pochette change dans dolphin et conky affiche le nouveau png , pourtant le conky appelle bien le script:

${execi 10 ~/.conky/radiotray/pochette.sh}

Merci à tous d'avance .(je suis sure que c'est encore une broutille)


smilies%20(1).gif

Dernière modification par loutch (Le 08/07/2015, à 09:49)

Hors ligne

#1017 Le 08/07/2015, à 10:37

Didier-T

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

bonjour loutch,
a tout hasard tu pourrais essayer ceci

${execi 10 bash ~/.conky/radiotray/pochette.sh}

Hors ligne

#1018 Le 08/07/2015, à 12:01

loutch

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

Re Didier

En fait mon execi  fonctionne .Le script me met la miniatureGoogleImage dans mon home et c'est avec celle-ci que je doit travailler.

le nouveau pochette.sh :

#bin/bash

 
titre=$(head -1 ~/.conky/radiotray/artiste_titre.txt)
lienMiniature=$(wget -U'Googlebot-Image/1.0' -qO - "www.google.fr/search?q=$titre\&tbm=isch" | perl -pe 's!.*?<img .*?src="([^"]*)".*!$1!')
wget -qO miniatureGoogleImage $lienMiniature

convert ~/miniatureGoogleImage ~/.conky/radiotray/pochette.png

@+

Dernière modification par loutch (Le 08/07/2015, à 12:11)

Hors ligne

#1019 Le 08/07/2015, à 23:14

loutch

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

smilies%20(204).gif

Didier serait-il possible que tu me fasse un meteo2.lua raccourci juste la partie permettent d'afficher les images


Merci d'avance et


smilies%20(1).gif

Hors ligne

#1020 Le 13/07/2015, à 15:19

alius

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

Salut !
J'ai installé conky et le script clock_rings_lua mais cela provoque de grosses fuites mémoires !
Pour info au bout de 3jours d'activité conky bouffe 650M de RAM !

Est-ce que quelqu'un sait comment l'en empêcher j'imagine qu'il y avoir une fonction pour libérer la mémoire proprement.
Merci


Alius

Hors ligne

#1021 Le 13/07/2015, à 23:13

Didier-T

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

Bonsoir alius,
tu pourrais nous donner les scripts que tu utilises.

@ loutch,
il me semble l'avoir déjà fait, mais je ne le retrouve pas tongue

edit : c'est bon je l'ai retrouvé.

image.lua

require 'cairo'
home = os.getenv ('HOME')

--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

pour l'utilisation

avant TEXT
lua_load image.lua (avec le chemin qui vas bien)

après TEXT
${lua conky_fDrawImage Image_a_afficher position_x position_y largeur hauteur angle_de_rotation}

l'angle de rotation n'est pas une obligation, tu peux ne rien mettre.

Dernière modification par Didier-T (Le 13/07/2015, à 23:28)

Hors ligne

#1022 Le 14/07/2015, à 10:02

loutch

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

smilies%20(204).gif

Merci Didier et BONNES VACANCES

smilies%20(1).gif

Dernière modification par loutch (Le 14/07/2015, à 10:07)

Hors ligne

#1023 Le 15/07/2015, à 10:16

alius

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

Salut didier-T j'ai un script clock_rings.lua (ci dessous)

--[[
Clock Rings by Linux Mint (2011) reEdited by despot77

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 145 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 (assuming that you save this script to ~/scripts/rings.lua):
    lua_load ~/scripts/clock_rings.lua
    lua_draw_hook_pre clock_rings
    
Changelog:
+ v1.0 -- Original release (30.09.2009)
   v1.1p -- Jpope edit londonali1010 (05.10.2009)
*v 2011mint -- reEdit despot77 (18.02.2011)
]]

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,
        -- "bg_alpha" is the alpha value of the base ring.
        bg_alpha=0.1,
        -- "fg_colour" is the colour of the indicator part of the ring.
        fg_colour=0xFF6600,
        -- "fg_alpha" is the alpha value of the indicator part of the ring.
        fg_alpha=0.2,
        -- "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=150,
        -- "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,
        bg_alpha=0.1,
        fg_colour=0xFF6600,
        fg_alpha=0.4,
        x=100, y=150,
        radius=56,
        thickness=5,
        start_angle=0,
        end_angle=360
    },
    {
        name='time',
        arg='%S',
        max=60,
        bg_colour=0xffffff,
        bg_alpha=0.1,
        fg_colour=0xFF6600,
        fg_alpha=0.6,
        x=100, y=150,
        radius=62,
        thickness=5,
        start_angle=0,
        end_angle=360
    },
    {
        name='time',
        arg='%d',
        max=31,
        bg_colour=0xffffff,
        bg_alpha=0.1,
        fg_colour=0xFF6600,
        fg_alpha=0.8,
        x=100, y=150,
        radius=70,
        thickness=5,
        start_angle=-90,
        end_angle=90
    },
    {
        name='time',
        arg='%m',
        max=12,
        bg_colour=0xffffff,
        bg_alpha=0.1,
        fg_colour=0xFF6600,
        fg_alpha=1,
        x=100, y=150,
        radius=76,
        thickness=5,
        start_angle=-90,
        end_angle=90
    },
    {
        name='cpu',
        arg='cpu0',
        max=100,
        bg_colour=0xffffff,
        bg_alpha=0.2,
        fg_colour=0xFF6600,
        fg_alpha=0.8,
        x=50, y=300,
        radius=25,
        thickness=5,
        start_angle=-90,
        end_angle=180
    },
    {
        name='memperc',
        arg='',
        max=100,
        bg_colour=0xffffff,
        bg_alpha=0.2,
        fg_colour=0xFF6600,
        fg_alpha=0.8,
        x=75, y=350,
        radius=25,
        thickness=5,
        start_angle=-90,
        end_angle=180
    },
    {
        name='swapperc',
        arg='',
        max=100,
        bg_colour=0xffffff,
        bg_alpha=0.2,
        fg_colour=0xFF6600,
        fg_alpha=0.8,
        x=100, y=400,
        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=0xFF6600,
        fg_alpha=0.8,
        x=125, y=450,
        radius=25,
        thickness=5,
        start_angle=-90,
        end_angle=180
    },
        {
        name='downspeedf',
        arg='eth0',
        max=100,
        bg_colour=0xffffff,
        bg_alpha=0.2,
        fg_colour=0x339900,
        fg_alpha=0.8,
        x=150, y=500,
        radius=25,
        thickness=4,
        start_angle=-90,
        end_angle=180
    },
        {
        name='upspeedf',
        arg='eth0',
        max=100,
        bg_colour=0xffffff,
        bg_alpha=0.2,
        fg_colour=0xff6600,
        fg_alpha=0.8,
        x=150, y=500,
        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=150

show_seconds=true

require 'cairo'

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

function draw_ring(cr,t,pt)
    local w,h=conky_window.width,conky_window.height
    
    local xc,yc,ring_r,ring_w,sa,ea=pt['x'],pt['y'],pt['radius'],pt['thickness'],pt['start_angle'],pt['end_angle']
    local bgc, bga, fgc, fga=pt['bg_colour'], pt['bg_alpha'], pt['fg_colour'], pt['fg_alpha']

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

    -- Draw background ring

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

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

function draw_clock_hands(cr,xc,yc)
    local secs,mins,hours,secs_arc,mins_arc,hours_arc
    local xh,yh,xm,ym,xs,ys
    
    secs=os.date("%S")    
    mins=os.date("%M")
    hours=os.date("%I")
        
    secs_arc=(2*math.pi/60)*secs
    mins_arc=(2*math.pi/60)*mins+secs_arc/60
    hours_arc=(2*math.pi/12)*hours+mins_arc/12
        
    -- Draw hour hand
    
    xh=xc+0.7*clock_r*math.sin(hours_arc)
    yh=yc-0.7*clock_r*math.cos(hours_arc)
    cairo_move_to(cr,xc,yc)
    cairo_line_to(cr,xh,yh)
    
    cairo_set_line_cap(cr,CAIRO_LINE_CAP_ROUND)
    cairo_set_line_width(cr,5)
    cairo_set_source_rgba(cr,1.0,1.0,1.0,1.0)
    cairo_stroke(cr)
    
    -- Draw minute hand
    
    xm=xc+clock_r*math.sin(mins_arc)
    ym=yc-clock_r*math.cos(mins_arc)
    cairo_move_to(cr,xc,yc)
    cairo_line_to(cr,xm,ym)
    
    cairo_set_line_width(cr,3)
    cairo_stroke(cr)
    
    -- Draw seconds hand
    
    if show_seconds then
        xs=xc+clock_r*math.sin(secs_arc)
        ys=yc-clock_r*math.cos(secs_arc)
        cairo_move_to(cr,xc,yc)
        cairo_line_to(cr,xs,ys)
    
        cairo_set_line_width(cr,1)
        cairo_stroke(cr)
    end
end

function conky_clock_rings()
    local function setup_rings(cr,pt)
        local str=''
        local value=0
        
        str=string.format('${%s %s}',pt['name'],pt['arg'])
        str=conky_parse(str)
        
        value=tonumber(str)
        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 un peu fouillé dans les references de la librairie cairo et je me demande si il ne faut pas appeler une fonction destroy comme celle là ?

Je met aussi mon .conkyrc mais je pense pas que le problème vienne de là.

# 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

# Window specifications #

own_window yes
own_window_type override
own_window_transparent yes
own_window_hints undecorate,sticky,skip_taskbar,skip_pager,below

border_inner_margin 0
border_outer_margin 0

minimum_size 200 250
maximum_width 200

alignment tr
gap_x 35
gap_y 55

# Graphics settings #
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders no

# Text settings #
use_xft yes
xftfont caviar dreams:size=8
xftalpha 0.5

uppercase no

temperature_unit celsius


default_color FFFFFF

# Lua Load  #
lua_load ~/.conky/clock_rings.lua
lua_draw_hook_pre clock_rings

TEXT
${voffset 8}${color FF6600}${font caviar dreams:size=16}${time %A}${font}${voffset -8}${alignr 50}${color FFFFFF}${font caviar dreams:size=38}${time %e}${font}
${color FFFFFF}${voffset -30}${color FFFFFF}${font caviar dreams:size=18}${time %b}${font}${voffset -3} ${color FFFFFF}${font caviar dreams:size=20}${time %Y}${font}${color FF6600}${hr}
${voffset 140}${font caviar dreams:size=10}${alignr}HOME${font}
${font caviar dreams:size=12}${color FFFFFF}${alignr}${weather http://weather.noaa.gov/pub/data/observations/metar/stations/ LFMO temperature temperature 30} °C${font}
${image ~/.conky/new-ubuntu-logo.png -p 64,125 -s 70x20}

${color FFFFFF}${goto 25}${voffset 35}${cpu cpu0}%
${color FF6600}${goto 25}CPU
${color FFFFFF}${goto 50}${voffset 23}${memperc}%
${color FF6600}${goto 50}RAM
${color FFFFFF}${goto 75}${voffset 23}${swapperc}%
${color FF6600}${goto 75}Swap
${color FFFFFF}${goto 100}${voffset 23}${fs_used_perc /}%
${color FF6600}${goto 100}Disk
${color FFFFFF}${goto 125}${voffset 25}${downspeed wlan0}
${color FFFFFF}${goto 125}${upspeed wlan0}
${color FF6600}${goto 125}Net



${color FFFFFF}${font caviar dreams:size=8}Uptime: ${uptime_short}
${color FFFFFF}${font caviar dreams:size=8}Processes: ${processes}
${color FFFFFF}${font caviar dreams:size=8}Running: ${running_processes}


${color FF6600}${font caviar dreams:size=8}${alignr}${nodename}
${color FF6600}${font caviar dreams:size=8}${alignr}${pre_exec cat /etc/issue.net}  $machine
${color FF6600}${font caviar dreams:size=8}${alignr}Kernel: ${kernel}

Merci par avance


Alius

Hors ligne

#1024 Le 15/07/2015, à 20:56

Didier-T

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

Bonsoir alius,
tu étais sur la bonne voie, voici le script corrigé.

--[[
Clock Rings by Linux Mint (2011) reEdited by despot77

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 145 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 (assuming that you save this script to ~/scripts/rings.lua):
    lua_load ~/scripts/clock_rings.lua
    lua_draw_hook_pre clock_rings

Changelog:
+ v1.0 -- Original release (30.09.2009)
   v1.1p -- Jpope edit londonali1010 (05.10.2009)
*v 2011mint -- reEdit despot77 (18.02.2011)
]]

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,
        -- "bg_alpha" is the alpha value of the base ring.
        bg_alpha=0.1,
        -- "fg_colour" is the colour of the indicator part of the ring.
        fg_colour=0xFF6600,
        -- "fg_alpha" is the alpha value of the indicator part of the ring.
        fg_alpha=0.2,
        -- "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=150,
        -- "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,
        bg_alpha=0.1,
        fg_colour=0xFF6600,
        fg_alpha=0.4,
        x=100, y=150,
        radius=56,
        thickness=5,
        start_angle=0,
        end_angle=360
    },
    {
        name='time',
        arg='%S',
        max=60,
        bg_colour=0xffffff,
        bg_alpha=0.1,
        fg_colour=0xFF6600,
        fg_alpha=0.6,
        x=100, y=150,
        radius=62,
        thickness=5,
        start_angle=0,
        end_angle=360
    },
    {
        name='time',
        arg='%d',
        max=31,
        bg_colour=0xffffff,
        bg_alpha=0.1,
        fg_colour=0xFF6600,
        fg_alpha=0.8,
        x=100, y=150,
        radius=70,
        thickness=5,
        start_angle=-90,
        end_angle=90
    },
    {
        name='time',
        arg='%m',
        max=12,
        bg_colour=0xffffff,
        bg_alpha=0.1,
        fg_colour=0xFF6600,
        fg_alpha=1,
        x=100, y=150,
        radius=76,
        thickness=5,
        start_angle=-90,
        end_angle=90
    },
    {
        name='cpu',
        arg='cpu0',
        max=100,
        bg_colour=0xffffff,
        bg_alpha=0.2,
        fg_colour=0xFF6600,
        fg_alpha=0.8,
        x=50, y=300,
        radius=25,
        thickness=5,
        start_angle=-90,
        end_angle=180
    },
    {
        name='memperc',
        arg='',
        max=100,
        bg_colour=0xffffff,
        bg_alpha=0.2,
        fg_colour=0xFF6600,
        fg_alpha=0.8,
        x=75, y=350,
        radius=25,
        thickness=5,
        start_angle=-90,
        end_angle=180
    },
    {
        name='swapperc',
        arg='',
        max=100,
        bg_colour=0xffffff,
        bg_alpha=0.2,
        fg_colour=0xFF6600,
        fg_alpha=0.8,
        x=100, y=400,
        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=0xFF6600,
        fg_alpha=0.8,
        x=125, y=450,
        radius=25,
        thickness=5,
        start_angle=-90,
        end_angle=180
    },
        {
        name='downspeedf',
        arg='eth0',
        max=100,
        bg_colour=0xffffff,
        bg_alpha=0.2,
        fg_colour=0x339900,
        fg_alpha=0.8,
        x=150, y=500,
        radius=25,
        thickness=4,
        start_angle=-90,
        end_angle=180
    },
        {
        name='upspeedf',
        arg='eth0',
        max=100,
        bg_colour=0xffffff,
        bg_alpha=0.2,
        fg_colour=0xff6600,
        fg_alpha=0.8,
        x=150, y=500,
        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=150

show_seconds=true

require 'cairo'

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


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

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

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

    -- Draw background ring

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

    -- Draw indicator ring

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

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

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

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

    -- Draw hour hand

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

    cairo_set_line_cap(cr,CAIRO_LINE_CAP_ROUND)
    cairo_set_line_width(cr,5)
    cairo_set_source_rgba(cr,1.0,1.0,1.0,1.0)
    cairo_stroke(cr)

    -- Draw minute hand

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

    cairo_set_line_width(cr,3)
    cairo_stroke(cr)

    -- Draw seconds hand

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

        cairo_set_line_width(cr,1)
        cairo_stroke(cr)

    end
end

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

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

        value=tonumber(str)
        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)
    cairo_destroy(cr)
    cairo_surface_destroy(cs)
    cr=nil
end

Hors ligne

#1025 Le 16/07/2015, à 13:58

alius

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

Un grand merci à toi Didier-T, je vais voir ce que ça donne smile


Alius

Hors ligne