ou bien il ya aussi une autre manière de lancer son conky . C'est de mettre par exemple conky -c /home/user/.conky/conkyrc dans le .bash_profile
Bonjour,
j'aurai des questions concernant l'utilisation objet NVIDIA dans conky:
j'ai commencé par installer la libXNVCtrl:
 yum install libXNVCtrl.x86_64
Modules complémentaires chargés : langpacks, presto, refresh-packagekit, remove-
                                : with-leaves
Configuration du processus d'installation
Résolution des dépendances
--> Lancement de la transaction de test
---> Package libXNVCtrl.x86_64 0:169.12-5.fc15 will be installé
--> Résolution des dépendances terminée

Dépendances résolues

================================================================================
 Paquet             Architecture   Version                 Dépôt          Taille
================================================================================
Installation:
 libXNVCtrl         x86_64         169.12-5.fc15           fedora          20 k

Résumé de la transaction
================================================================================
Installation de     1 paquet(s)

Taille totale des téléchargements : 20 k
Taille d'installation : 40 k
Est-ce correct [o/N] : o
Téléchargement des paquets :
Setting up and reading Presto delta metadata
Processing delta metadata
Package(s) data still to download: 20 k
libXNVCtrl-169.12-5.fc15.x86_64.rpm                      |  20 kB     00:00     
Lancement de rpm_check_debug
Lancement de la transaction de test
Transaction de test réussie
Lancement de la transaction
  Installation  : libXNVCtrl-169.12-5.fc15.x86_64                           1/1 

Installé:
  libXNVCtrl.x86_64 0:169.12-5.fc15  
mais quand j'aoujoute une ligne pour afficher la température du GPU :
${color 0066FF}${nvidia temp}°
je n'est rien qui s'affiche.... qu'elle est la syntax pour appeller les données nvidia ?
Et une autre question pour la route, c'est pour le réseaux: Puis-je avoir l'ensemble des interfaces sur le même 'graph'/'compteur' comme sur le moniteur-system ??
comment as tu installé le paquet conky ?
Si c'est par yum, ce paquet n'a pas l'option nvidia, pour l'avoir il faut le compiler à partir des sources avec l'option --enable nvidia.
@chepioq
Installer avec yum install, j'avais pas trop envie de me le compiler en fait !!
Donc s'il faut j'abandone l'idée de la temp. nvidia mais si je veux celle du processeur il me renvoit 0° ou N/A°...
${color 0066FF}${acpitemp}°
là il me renvoit 0°
${color 0066FF}${apcupsd_temp}°
et ici N/A°
coRe wrote:@chepioq
Installer avec yum install, j'avais pas trop envie de me le compiler en fait !!
Donc s'il faut j'abandone l'idée de la temp. nvidia mais si je veux celle du processeur il me renvoit 0° ou N/A°...
${color 0066FF}${acpitemp}°
là il me renvoit 0°
${color 0066FF}${apcupsd_temp}°
et ici N/A°
Pour la température du CPU, j'ai utilisé :
${color grey}Température CPU: $color${hwmon temp 1} C°
teutates wrote:
coRe wrote:@chepioq
Installer avec yum install, j'avais pas trop envie de me le compiler en fait !!
Donc s'il faut j'abandone l'idée de la temp. nvidia mais si je veux celle du processeur il me renvoit 0° ou N/A°...
${color 0066FF}${acpitemp}°
là il me renvoit 0°
${color 0066FF}${apcupsd_temp}°
et ici N/A°
Pour la température du CPU, j'ai utilisé :
${color grey}Température CPU: $color${hwmon temp 1} C°
@teutates
yes, çà fonctionne merci. Donc à ma sauce çà donne:
${color 0066FF}${font Caviar Dreams:size=8}Température CPU: ${color FFFFFF}${hwmon temp 1} C°
Pour la température de ta carte nvidia, est ce que tu utilises les drivers nvidia ?
Dans ce cas tu peux récupérer la température avec nvidia-settings;
nvidia-settings -q GPUCoreTemp -t
Cela te renverra la température de ta carte, chez moi cela donne :
[dominique@localhost ~]$ nvidia-settings -q GPUCoreTemp -t
67
oui j'utilise le akmod-nvidia donc cette commande fonctionne très bien dans le terminal!
j'ai trouver pour l'intégrer à conky:
${color 0066FF}${font Caviar Dreams:size=8}Température GPU: ${color FFFFFF}${exec nvidia-settings -q GPUCoreTemp -t} C°

Et en plus c'est beau !!! :hammer:

Du coup merci bien !! :pint: Santé !! :-D
coRe wrote: ${color 0066FF}${font Caviar Dreams:size=8}Température GPU: ${color FFFFFF}${exec nvidia-settings -q GPUCoreTemp -t} C°
Bon je pinaille surement (c'est du à mon passage dans l'équipe de traduction de fedora...), mais en français il y a un espace insécable avant les deux points... (et après aussi d’ailleurs.).
On m'en a fait la remarque tellement souvent, que je ne pouvais pas le laisser passer... :lol: :lol: :lol:
5 jours plus tard
Ca c'est Shaiton qui t'as marqué :lol:
Petit conky fait vite-fait :


Le conky_rc :
background yes
update_interval 1
 
cpu_avg_samples 2
net_avg_samples 2

override_utf8_locale yes

double_buffer yes
no_buffers yes

text_buffer_size 2048
imlib_cache_size 0

own_window true
own_window_type normal
own_window_transparent yes
own_window_hints undecorated,sticky,skip_taskbar,skip_pager,below

border_inner_margin 0
border_outer_margin 0
stippled_borders 0

minimum_size 1920 1080
maximum_width 1920
 
alignment top_right
gap_x 0
gap_y 0

draw_shades yes
default_shade_color 000000
draw_outline no
draw_borders no
draw_graph_borders no

use_xft yes
xftfont Geosans Light:size=10
xftalpha 0.4

lua_load ~/.conky/conky_PapsOu/conky.lua
lua_load ~/.conky/conky_PapsOu/conky_text.lua

lua_draw_hook_pre main_rings
lua_draw_hook_post draw_text

TEXT
${image ~/.conky/conky_PapsOu/bg.png -p 0,0 -f 86400}
Les anneaux lua :
require 'cairo'
function conky_main_rings()
-- START PARAMETERS HERE
rings_settings={

    {
    --cpu1
    name="cpu",
    arg="cpu1",
    max=100,
    xc=100,
    yc=100,
    radius=25,
    thickness=5,
    start_angle=0,
    end_angle=360,
    sectors=20,
    inverse_arc=false,
    bg_colour1={{0,0x000000,1},{0.5,0x000000,1}, {1,0x000000,1}},
    fg_colour1={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },
    
    {
    --cpu2
    name="cpu",
    arg="cpu2",
    max=100,
    xc=150,
    yc=100,
    radius=25,
    thickness=5,
    start_angle=0,
    end_angle=360,
    sectors=20,
    inverse_arc=false,
    bg_colour1={{0,0x000000,1},{0.5,0x000000,1}, {1,0x000000,1}},
    fg_colour1={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },

    {
    --cpu3
    name="cpu",
    arg="cpu3",
    max=100,
    xc=100,
    yc=150,
    radius=25,
    thickness=5,
    start_angle=0,
    end_angle=360,
    sectors=20,
    inverse_arc=false,
    bg_colour1={{0,0x000000,1},{0.5,0x000000,1}, {1,0x000000,1}},
    fg_colour1={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },

    {
    --cpu4
    name="cpu",
    arg="cpu4",
    max=100,
    xc=150,
    yc=150,
    radius=25,
    thickness=5,
    start_angle=0,
    end_angle=360,
    sectors=20,
    inverse_arc=false,
    bg_colour1={{0,0x000000,1},{0.5,0x000000,1}, {1,0x000000,1}},
    fg_colour1={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },
    {
    --ram
    name="memperc",
    arg="",
    max=100,
    xc=125,
    yc=300,
    radius=50,
    thickness=10,
    start_angle=0,
    end_angle=360,
    sectors=20,
    inverse_arc=false,
    bg_colour1={{0,0x000000,1},{0.5,0x000000,1}, {1,0x000000,1}},
    fg_colour1={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },

    {
    --fs_used
    name="fs_used_perc",
    arg="/",
    max=100,
    xc=100,
    yc=450,
    radius=25,
    thickness=5,
    start_angle=0,
    end_angle=360,
    sectors=20,
    inverse_arc=false,
    bg_colour1={{0,0x000000,1},{0.5,0x000000,1}, {1,0x000000,1}},
    fg_colour1={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },

    {
    --fs_used
    name="fs_used_perc",
    arg="/home",
    max=100,
    xc=150,
    yc=450,
    radius=25,
    thickness=5,
    start_angle=0,
    end_angle=360,
    sectors=20,
    inverse_arc=false,
    bg_colour1={{0,0x000000,1},{0.5,0x000000,1}, {1,0x000000,1}},
    fg_colour1={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },
    {
    --download speed
    name="downspeedf",
    arg="p10p1",
    max=300,
    xc=120,
    yc=550,
    radius=50,
    thickness=10,
    start_angle=0,
    end_angle=-180,
    sectors=10,
    fill_sector=false,
    inverse_arc=true,
    gap_sectors=1,
    bg_colour1={{0,0x000000,1},{0.5,0x000000,1}, {1,0x000000,1}},
    fg_colour1={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },
    
    
    {
    --upload speed
    name="upspeedf",
    arg="p10p1",
    max=40,
    xc=130,
    yc=550,
    radius=50,
    thickness=10,
    start_angle=0,
    end_angle=180,
    sectors=10,
    fill_sector=false,
    gap_sectors=1,
    bg_colour1={{0,0x000000,1},{0.5,0x000000,1}, {1,0x000000,1}},
    fg_colour1={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },

    {
    --Top cpu 1
    name="top cpu",
    arg="1",
    max=100,
    xc=125,
    yc=700,
    radius=50,
    thickness=5,
    start_angle=0,
    end_angle=-270,
    sectors=15,
    inverse_arc=false,
    inverse_arc=true,
    gap_sectors=2,
    bg_colour1={{0,0x000000,1},{0.5,0x000000,1}, {1,0x000000,1}},
    fg_colour1={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },

    {
    --Top cpu 2
    name="top cpu",
    arg="2",
    max=100,
    xc=125,
    yc=700,
    radius=40,
    thickness=5,
    start_angle=0,
    end_angle=-270,
    sectors=15,
    inverse_arc=false,
    inverse_arc=true,
    gap_sectors=2,
    bg_colour1={{0,0x000000,1},{0.5,0x000000,1}, {1,0x000000,1}},
    fg_colour1={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },
    
    {
    --Top cpu 3
    name="top cpu",
    arg="3",
    max=100,
    xc=125,
    yc=700,
    radius=30,
    thickness=5,
    start_angle=0,
    end_angle=-270,
    sectors=15,
    inverse_arc=false,
    inverse_arc=true,
    gap_sectors=2,
    bg_colour1={{0,0x000000,1},{0.5,0x000000,1}, {1,0x000000,1}},
    fg_colour1={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },

}
--END OF PARAMETERS HERE

--main function

    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)
    cr=cairo_create(cs)

    if tonumber(conky_parse('${updates}'))>3 then
        for i in pairs(rings_settings) do
            draw_ring(rings_settings[i])
        end
    end

    cairo_destroy(cr)

end




function draw_ring(t)

    local function rgba_to_r_g_b_a(tcolour)
        colour,alpha=tcolour[2],tcolour[3]
        return ((colour / 0x10000) % 0x100) / 255., 
            ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
    end
            
            
    local function calc_delta(tcol1,tcol2)
        --calculate deltas P R G B A to table_colour 1

        for x = 1, #tcol1 do
            tcol1[x].dA    = 0
            tcol1[x].dP = 0
             tcol1[x].dR = 0
            tcol1[x].dG = 0
            tcol1[x].dB = 0
            if tcol2~=nil and #tcol1 == #tcol2 then
                local r1,g1,b1,a1 = rgba_to_r_g_b_a(tcol1[x])
                local r2,g2,b2,a2 = rgba_to_r_g_b_a(tcol2[x])
                tcol1[x].dP = (tcol2[x][1]-tcol1[x][1])/t.sectors
                 tcol1[x].dR = (r2-r1)/t.sectors
                tcol1[x].dG = (g2-g1)/t.sectors
                tcol1[x].dB = (b2-b1)/t.sectors
                tcol1[x].dA = (a2-a1)/t.sectors        
                
            end
        end
        
        return tcol1
    end

    --check values
    local function setup(t)
        if t.name==nil and t.arg==nil then 
            print ("No input values ... use parameters 'name'" +
                " with 'arg' or only parameter 'arg' ") 
            return
        end

        if t.max==nil then
            print ("No maximum value defined, use 'max'")
            print ("for name=" .. t.name)
            print ("with arg=" .. t.arg)
            return
        end
        if t.name==nil then t.name="" end
        if t.arg==nil then t.arg="" end

        if t.xc==nil then t.xc=conky_window.width/2 end
        if t.yc==nil then t.yc=conky_window.height/2 end
        if t.thickness ==nil then t.thickness = 10 end
        if t.radius ==nil then t.radius =conky_window.width/4 end
        if t.start_angle==nil then t.start_angle =0 end
        if t.end_angle==nil then t.end_angle=360 end
        if t.bg_colour1==nil then 
            t.bg_colour1={{0,0x00ffff,0.1},{0.5,0x00FFFF,0.5},{1,0x00FFFF,0.1}}
        end
        if t.fg_colour1==nil then
            t.fg_colour1={{0,0x00FF00,0.1},{0.5,0x00FF00,1},{1,0x00FF00,0.1}}
        end
        if t.bd_colour1==nil then
            t.bd_colour1={{0,0xFFFF00,0.5},{0.5,0xFFFF00,1},{1,0xFFFF00,0.5}}
        end
        if t.sectors==nil then t.sectors=10 end
        if t.gap_sectors==nil then t.gap_sectors=1 end 
        if t.fill_sector==nil then t.fill_sector=false end
        if t.sectors==1 then t.fill_sector=false end
        if t.border_size==nil then t.border_size=0 end
        if t.cap==nil then t.cap="p" end
        --some checks
        if t.thickness>t.radius then t.thickness=t.radius*0.1 end
        t.int_radius = t.radius-t.thickness

        --check colors tables 
        for i=1, #t.bg_colour1 do 
            if #t.bg_colour1[i]~=3 then t.bg_colour1[i]={1,0xFFFFFF,0.5} end
        end
        for i=1, #t.fg_colour1 do 
            if #t.fg_colour1[i]~=3 then t.fg_colour1[i]={1,0xFF0000,1} end
        end
        for i=1, #t.bd_colour1 do 
            if #t.bd_colour1[i]~=3 then t.bd_colour1[i]={1,0xFFFF00,1} end
        end
    
        if t.bg_colour2~=nil then
            for i=1, #t.bg_colour2 do 
                if #t.bg_colour2[i]~=3 then t.bg_colour2[i]={1,0xFFFFFF,0.5} end
            end
        end
        if t.fg_colour2~=nil then
            for i=1, #t.fg_colour2 do 
                if #t.fg_colour2[i]~=3 then t.fg_colour2[i]={1,0xFF0000,1} end
            end
        end
        if t.bd_colour2~=nil then
            for i=1, #t.bd_colour2 do 
                if #t.bd_colour2[i]~=3 then t.bd_colour2[i]={1,0xFFFF00,1} end
            end
        end     
        
        if t.start_angle>=t.end_angle then
         local tmp_angle=t.end_angle
         t.end_angle= t.start_angle
         t.start_angle = tmp_angle
         -- print ("inversed angles")
            if t.end_angle-t.start_angle>360 and t.start_angle>0 then
                t.end_angle=360+t.start_angle
                print ("reduce angles")
            end
        
            if t.end_angle+t.start_angle>360 and t.start_angle<=0 then
                t.end_angle=360+t.start_angle
                print ("reduce angles")
            end
        
            if t.int_radius<0 then t.int_radius =0 end
            if t.int_radius>t.radius then
                local tmp_radius=t.radius
                t.radius=t.int_radius
                t.int_radius=tmp_radius
                print ("inversed radius")
            end
            if t.int_radius==t.radius then
                t.int_radius=0
                print ("int radius set to 0")
            end 
        end
        
        t.fg_colour1 = calc_delta(t.fg_colour1,t.fg_colour2)
        t.bg_colour1 = calc_delta(t.bg_colour1,t.bg_colour2)
        t.bd_colour1 = calc_delta(t.bd_colour1,t.bd_colour2)
    end
    
    --initialize table
    setup(t)
    --[[grid
    h=conky_window.height
    w=conky_window.width
    cairo_set_source_rgba(cr,1,1,1,1)
    cairo_set_line_width(cr,0.5)
    cairo_move_to(cr,0,t.yc)
    cairo_line_to(cr,w,t.yc)
    cairo_stroke(cr)
    cairo_move_to(cr,t.xc,0)
    cairo_line_to(cr,t.xc,h)
    cairo_stroke(cr)
    cairo_move_to(cr,t.xc,t.yc)
    cairo_line_to(cr,t.xc+200*math.sin(math.pi/4),t.yc-200*math.cos(math.pi/4))
    cairo_stroke(cr)
    cairo_move_to(cr,0,t.yc-t.radius)
    cairo_line_to(cr,w,t.yc-t.radius)
    cairo_stroke(cr)
    cairo_move_to(cr,0,t.yc-t.int_radius)
    cairo_line_to(cr,w,t.yc-t.int_radius)
    cairo_stroke(cr)
    cairo_move_to(cr,0,t.yc-t.gap_sectors)
    cairo_line_to(cr,w,t.yc-t.gap_sectors)
    cairo_stroke(cr)
    cairo_set_source_rgba(cr,1,0,0,0.5)
    cairo_arc(cr,t.xc,t.yc,t.radius,0,2*math.pi)
    cairo_stroke(cr)
    cairo_arc(cr,t.xc,t.yc,t.int_radius,0,2*math.pi)    
    cairo_stroke(cr)    
    cairo_set_source_rgba(cr,0,1,0,1)    
    cairo_move_to(cr,t.xc+t.gap_sectors,t.yc-t.gap_sectors)
    cairo_line_to(cr,t.xc+400*math.sin(math.pi/4),t.yc-400*math.cos(math.pi/4))
    cairo_stroke(cr)
    --END GRID
    ]]
    
    --initialize cairo context
    cairo_save(cr)
    cairo_translate(cr,t.xc,t.yc)
    cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND)
    cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND)

    --get value
    local value = 0
    if t.name ~="" then
        value = tonumber(conky_parse(string.format('${%s %s}', t.name, t.arg)))
    else
        value = tonumber(t.arg)
    end
    if value==nil then value =0 end

    --initialize sectors
    --angle of a sector :
    angleA = ((t.end_angle-t.start_angle)/t.sectors)*math.pi/180
    --value of a sector : 
    valueA = t.max/t.sectors
    --first angle of a sector : 
    lastAngle = t.start_angle*math.pi/180


    local function draw_sector(type_arc,angle0,angle,valpc, idx)
     
        --this function draws a portion of arc
         --type of arc, angle0 = strating angle, angle= angle of sector,
         --valpc = percentage inside the sector, idx = sctor number #
         if type_arc=="bg" then         --background
             if valpc==1 then return end
             tcolor=t.bg_colour1
         elseif type_arc=="fg" then    --foreground
             if valpc==0 then return end
             tcolor=t.fg_colour1
         elseif type_arc=="bd" then    --border
             tcolor=t.bd_colour1
         end 

        --angles equivalents to gap_sector
        local ext_delta=math.atan(t.gap_sectors/(2*t.radius))
        local int_delta=math.atan(t.gap_sectors/(2*t.int_radius))

        --angles of arcs
        local ext_angle=(angle-ext_delta*2)*valpc
        local int_angle=(angle-int_delta*2)*valpc

        --define colours to use for this sector
        if #tcolor==1 then 
            --plain color
            local vR,vG,vB,vA = rgba_to_r_g_b_a(tcolor[1])
            cairo_set_source_rgba(cr,vR+tcolor[1].dR*idx,
                                    vG+tcolor[1].dG*idx,
                                    vB+tcolor[1].dB*idx,
                                    vA+tcolor[1].dA*idx    )
        else
            --radient color
            local pat=cairo_pattern_create_radial(0,0,t.int_radius,0,0,t.radius)
            for i=1, #tcolor do
                local vP,vR,vG,vB,vA = tcolor[i][1], rgba_to_r_g_b_a(tcolor[i])
                cairo_pattern_add_color_stop_rgba (pat, 
                                    vP+tcolor[i].dP*idx,
                                    vR+tcolor[i].dR*idx,
                                    vG+tcolor[i].dG*idx,
                                    vB+tcolor[i].dB*idx,
                                    vA+tcolor[i].dA*idx    )
            end
            cairo_set_source (cr, pat)
            cairo_pattern_destroy(pat)
        end

        --start drawing
         cairo_save(cr)
        --x axis is parrallel to start of sector
        cairo_rotate(cr,angle0-math.pi/2)

        local ri,re = t.int_radius ,t.radius

        --point A 
        local angle_a
    
        if t.cap == "p" then 
            angle_a = int_delta
            if t.inverse_arc and type_arc ~="bg" then
                angle_a = angle-int_angle-int_delta
            end
            if not(t.inverse_arc) and type_arc =="bg" then
                angle_a = int_delta+int_angle
            end
        else --t.cap=="r"
            angle_a = ext_delta
            if t.inverse_arc and type_arc~="bg" then
                angle_a = angle-ext_angle-ext_delta
            end
            if not(t.inverse_arc) and type_arc=="bg" then
                angle_a = ext_delta+ext_angle
            end
        end
        local ax,ay = ri*math.cos(angle_a),ri*math.sin(angle_a)


        --point B
        local angle_b = ext_delta
        if t.cap == "p" then 
            if t.inverse_arc and type_arc ~="bg" then
                angle_b = angle-ext_angle-ext_delta
            end
            if not(t.inverse_arc) and type_arc=="bg" then
                angle_b = ext_delta+ext_angle
            end
        else
            if t.inverse_arc and type_arc ~="bg" then
                angle_b = angle-ext_angle-ext_delta
            end
            if not(t.inverse_arc) and type_arc=="bg" then
                angle_b = ext_delta+ext_angle
            end
        end
        local bx,by = re*math.cos(angle_b),re*math.sin(angle_b)

        -- EXTERNAL ARC B --> C
        if t.inverse_arc then
            if type_arc=="bg" then
                b0,b1= ext_delta, angle-ext_delta-ext_angle
            else
                b0,b1= angle-ext_angle-ext_delta, angle-ext_delta
            end
        else
            if type_arc=="bg" then
                b0,b1= ext_delta+ext_angle, angle-ext_delta
            else
                b0,b1= ext_delta, ext_angle+ext_delta
            end
        end
        
        ---POINT D
        local angle_c 
        if t.cap == "p" then 
            angle_d = angle-int_delta
            if t.inverse_arc and type_arc=="bg" then
                angle_d = angle-int_delta-int_angle    
            end
            if not(t.inverse_arc) and type_arc~="bg" then
                angle_d=int_delta+int_angle
            end
        else
            angle_d = angle-ext_delta
            if t.inverse_arc and type_arc=="bg" then
                angle_d =angle-ext_delta-ext_angle
            end
            if not(t.inverse_arc) and type_arc~="bg" then
                angle_d = ext_angle+ext_delta
            end
        end
        local dx,dy = ri*math.cos(angle_d),ri*math.sin(angle_d)
        
        -- INTERNAL ARC D --> A
        if t.cap=="p" then    
            if t.inverse_arc then    
                if type_arc=="bg" then
                    d0,d1= angle-int_delta-int_angle,int_delta
                else
                    d0,d1= angle-int_delta, angle- int_angle-int_delta
                end
            else
                if type_arc=="bg" then
                    d0,d1= angle-int_delta, int_delta+int_angle
                else
                    d0,d1= int_delta+int_angle, int_delta
                end
            end
        else
            if t.inverse_arc then    
                if type_arc=="bg" then    
                    d0,d1= angle-ext_delta-ext_angle,ext_delta
                else
                    d0,d1= angle-ext_delta, angle- ext_angle-ext_delta
                end
            else
                if type_arc=="bg" then    
                    d0,d1= angle-ext_delta,ext_delta+ext_angle
                else    
                    d0,d1= ext_angle+ext_delta, ext_delta
                end
            end            
        end
            
        --draw sector
        cairo_move_to(cr,ax,ay)
        cairo_line_to(cr,bx,by)
        cairo_arc(cr,0,0,re,b0,b1)
        cairo_line_to(cr,dx,dy) 
        cairo_arc_negative(cr,0,0,ri,d0,d1)
         cairo_close_path (cr);

        --stroke or fill sector
         if type_arc=="bd" then
             cairo_set_line_width(cr,t.border_size)
             cairo_stroke(cr)
         else
             cairo_fill(cr)
         end

         cairo_restore(cr)

     end
    --draw sectors
    local n0,n1,n2 = 1,t.sectors,1
    if t.inverse_arc then n0,n1,n2 = t.sectors,1,-1 end
    local index = 0
    for i = n0,n1,n2 do 
        index = index +1
        local valueZ=1
        local cstA, cstB = (i-1),i
        if t.inverse_arc then cstA,cstB = (t.sectors-i), (t.sectors-i+1) end
        
        if value>valueA *cstA and value<valueA*cstB then
            if not t.fill_sector then
                valueZ = (value-valueA*cstA)/valueA
            end
        else
            if value<valueA*cstB then valueZ=0 end
        end
        
        local start_angle= lastAngle+(i-1)*angleA
        if t.foreground ~= false then 
            draw_sector("fg",start_angle,angleA,valueZ, index)
        end
        if t.background ~= false then 
            draw_sector("bg",start_angle,angleA,valueZ, i)
        end
        if t.border_size>0 then draw_sector("bd",start_angle,angleA,1, i) end
    end

    cairo_restore(cr)
end


--[[END OF RING-SECTORS WIDGET]]


function axis(ctx,alpha)
    cairo_set_line_width(ctx,1)
    cairo_set_source_rgba(ctx,1,0,0,alpha)
    cairo_move_to(ctx,0,0)
    cairo_line_to(ctx,150,0)
    cairo_stroke(ctx)
    cairo_set_source_rgba(ctx,0,1,0,alpha)
    cairo_move_to(ctx,0,0)
    cairo_line_to(ctx,0,150)
    cairo_stroke(ctx)
end
Les textes lua :
require 'cairo'
function conky_draw_text()
    --BEGIN OF PARAMETRES
    text_settings={

        {
            text=conky_parse("${cpu cpu1}"),
            font_name="Geosans Light",
            font_size=10,
            h_align="c",
        v_align="m",
            bold=true,
            x=100,
            y=100,
            colour={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
        },

        {
            text=conky_parse("${cpu cpu2}"),
            font_name="Geosans Light",
            font_size=10,
            h_align="c",
        v_align="m",
            bold=true,
            x=150,
            y=100,
            colour={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
        },

        {
            text=conky_parse("${cpu cpu3}"),
            font_name="Geosans Light",
            font_size=10,
            h_align="c",
        v_align="m",
            bold=true,
            x=100,
            y=150,
            orientation="nn",
            colour={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
        },

        {
            text=conky_parse("${cpu cpu4}"),
            font_name="Geosans Light",
            font_size=10,
            h_align="c",
        v_align="m",
            bold=true,
            x=150,
            y=150,
            orientation="nn",
            colour={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
        },     

        {
            text=conky_parse("$mem"),
            font_name="Geosans Light",
            font_size=10,
            h_align="c",
            v_align="m",
            bold=true,
            orientation="nn",
            x=125,
            y=290,
            colour={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
        },

{
            text=conky_parse("$memmax"),
            font_name="Geosans Light",
            font_size=10,
            h_align="c",
            v_align="m",
            bold=true,
            orientation="nn",
            x=125,
            y=310,
            colour={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
        },

        {
            text="/",
            font_name="Geosans Light",
            font_size=10,
            h_align="c",
            v_align="m",
            bold=true,
            orientation="nn",
            x=100,
            y=450,
            colour={{0,0X000000,1},{0.5,0x000000,1}, {1,0x000000,1}},
        },

        {
            text="/home",
            font_name="Geosans Light",
            font_size=10,
            h_align="c",
            v_align="m",
            bold=true,
            orientation="nn",
            x=150,
            y=450,
            colour={{0,0X000000,1},{0.5,0x000000,1}, {1,0x000000,1}},
        },

        {
            text=conky_parse("${downspeedf p10p1} K/s"),
            font_name="Geosans Light",
            font_size=12,
            h_align="c",
            v_align="m",
            bold=true,
            x=100,
            y=550,
            angle=-90,
            colour={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
        },

        {
            text=conky_parse("${upspeedf p10p1} K/s"),
            font_name="Geosans Light",
            font_size=12,
            h_align="c",
            v_align="m",
            bold=true,
            x=150,
            y=550,
            angle=90,
            colour={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
        },

        {
            text=conky_parse("${top name 1}"),
            font_name="Geosans Light",
            font_size=10,
            h_align="l",
            bold=true,
            orientation="nn",
            angle=0,
            x=130,
            y=655,
            colour={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
        },    

        {
            text=conky_parse("${top name 2}"),
            font_name="Geosans Light",
            font_size=10,
            h_align="l",
            bold=true,
            orientation="nn",
            angle=0,
            x=130,
            y=665,
            colour={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
        },    

        {
            text=conky_parse("${top name 3}"),
            font_name="Geosans Light",
            font_size=10,
            h_align="l",
            bold=true,
            orientation="nn",
            angle=0,
            x=130,
            y=675,
            colour={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
        },

    }
    
    
--------------END OF PARAMETERES----------------
    if conky_window == nil then return end
    if tonumber(conky_parse("$updates"))<3 then return end
       
    local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, conky_window.width, conky_window.height)

    for i,v in pairs(text_settings) do    
        cr = cairo_create (cs)
        display_text(v)
        cairo_destroy(cr)
    end
    
    cairo_surface_destroy(cs)
    


end

function rgb_to_r_g_b2(tcolour)
    colour,alpha=tcolour[2],tcolour[3]
    return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
end

function display_text(t)

    local function set_pattern()
        --this function set the pattern
        if #t.colour==1 then 
            cairo_set_source_rgba(cr,rgb_to_r_g_b2(t.colour[1]))
        else
            local pat
            
            if t.radial==nil then
                local pts=linear_orientation(t,te)
                pat = cairo_pattern_create_linear (pts[1],pts[2],pts[3],pts[4])
            else
                pat = cairo_pattern_create_radial (t.radial[1],t.radial[2],t.radial[3],t.radial[4],t.radial[5],t.radial[6])
            end
        
            for i=1, #t.colour do
                cairo_pattern_add_color_stop_rgba (pat, t.colour[i][1], rgb_to_r_g_b2(t.colour[i]))
            end
            cairo_set_source (cr, pat)
        end
    end
    
    --set default values if needed
    if t.text==nil then t.text="Conky is good for you !" end
    if t.x==nil then t.x = conky_window.width/2 end
    if t.y==nil then t.y = conky_window.height/2 end
    if t.colour==nil then t.colour={{1,0xFFFFFF,1}} end
    if t.font_name==nil then t.font_name="Free Sans" end
    if t.font_size==nil then t.font_size=14 end
    if t.angle==nil then t.angle=0 end
    if t.italic==nil then t.italic=false end
    if t.oblique==nil then t.oblique=false end
    if t.bold==nil then t.bold=false end
    if t.radial ~= nil then
        if #t.radial~=6 then 
            print ("error in radial table")
            t.radial=nil 
        end
    end
    if t.orientation==nil then t.orientation="ww" end
    if t.h_align==nil then t.h_align="l" end
    if t.v_align==nil then t.v_align="b" end    
    if t.reflection_alpha == nil then t.reflection_alpha=0 end
    if t.reflection_length == nil then t.reflection_length=1 end
    if t.reflection_scale == nil then t.reflection_scale=1 end
    if t.skew_x==nil then t.skew_x=0 end
    if t.skew_y==nil then t.skew_y=0 end    
    cairo_translate(cr,t.x,t.y)
    cairo_rotate(cr,t.angle*math.pi/180)
    cairo_save(cr)       
     
 

    local slant = CAIRO_FONT_SLANT_NORMAL
    local weight =CAIRO_FONT_WEIGHT_NORMAL
    if t.italic then slant = CAIRO_FONT_SLANT_ITALIC end
    if t.oblique then slant = CAIRO_FONT_SLANT_OBLIQUE end
    if t.bold then weight = CAIRO_FONT_WEIGHT_BOLD end
    
    cairo_select_font_face(cr, t.font_name, slant,weight)
 
    for i=1, #t.colour do    
        if #t.colour[i]~=3 then 
            print ("error in color table")
            t.colour[i]={1,0xFFFFFF,1} 
        end
    end

    local matrix0 = cairo_matrix_t:create()
    skew_x,skew_y=t.skew_x/t.font_size,t.skew_y/t.font_size
    cairo_matrix_init (matrix0, 1,skew_y,skew_x,1,0,0)
    cairo_transform(cr,matrix0)
    cairo_set_font_size(cr,t.font_size)
    te=cairo_text_extents_t:create()
    cairo_text_extents (cr,t.text,te)
    
    set_pattern()


            
    mx,my=0,0
    
    if t.h_align=="c" then
        mx=-te.width/2
    elseif t.h_align=="r" then
        mx=-te.width
    end
    if t.v_align=="m" then
        my=-te.height/2-te.y_bearing
    elseif t.v_align=="t" then
        my=-te.y_bearing
    end
    cairo_move_to(cr,mx,my)
    
    cairo_show_text(cr,t.text)

     
        
        
   if t.reflection_alpha ~= 0 then 
        local matrix1 = cairo_matrix_t:create()
        cairo_set_font_size(cr,t.font_size)

        cairo_matrix_init (matrix1,1,0,0,-1*t.reflection_scale,0,(te.height+te.y_bearing+my)*(1+t.reflection_scale))
        cairo_set_font_size(cr,t.font_size)
        te=cairo_text_extents_t:create()
        cairo_text_extents (cr,t.text,te)
        
                
        cairo_transform(cr,matrix1)
        set_pattern()
        cairo_move_to(cr,mx,my)
        cairo_show_text(cr,t.text)

        local pat2 = cairo_pattern_create_linear (0,
                                        (te.y_bearing+te.height+my),
                                        0,
                                        te.y_bearing+my)
        cairo_pattern_add_color_stop_rgba (pat2, 0,1,0,0,1-t.reflection_alpha)
        cairo_pattern_add_color_stop_rgba (pat2, t.reflection_length,0,0,0,1)    
        
        
        cairo_set_line_width(cr,1)
        dy=te.x_bearing
        if dy<0 then dy=dy*(-1) end
        cairo_rectangle(cr,mx+te.x_bearing,te.y_bearing+te.height+my,te.width+dy,-te.height*1.05)
        cairo_clip_preserve(cr)
        cairo_set_operator(cr,CAIRO_OPERATOR_CLEAR)
        --cairo_stroke(cr)
        cairo_mask(cr,pat2)
        cairo_pattern_destroy(pat2)
        cairo_set_operator(cr,CAIRO_OPERATOR_OVER)
    end
    
end


function linear_orientation(t,te)
    local w,h=te.width,te.height
    local xb,yb=te.x_bearing,te.y_bearing
    
    if t.h_align=="c" then
        xb=xb-w/2
    elseif t.h_align=="r" then
        xb=xb-w
       end    
    if t.v_align=="m" then
        yb=-h/2
    elseif t.v_align=="t" then
        yb=0
       end    
       
    if t.orientation=="nn" then
        p={xb+w/2,yb,xb+w/2,yb+h}
    elseif t.orientation=="ne" then
        p={xb+w,yb,xb,yb+h}
    elseif t.orientation=="ww" then
        p={xb,h/2,xb+w,h/2}
    elseif vorientation=="se" then
        p={xb+w,yb+h,xb,yb}
    elseif t.orientation=="ss" then
        p={xb+w/2,yb+h,xb+w/2,yb}
    elseif vorientation=="ee" then
        p={xb+w,h/2,xb,h/2}        
    elseif t.orientation=="sw" then
        p={xb,yb+h,xb+w,yb}
    elseif t.orientation=="nw" then
        p={xb,yb,xb+w,yb+h}
    end
    return p
end
et le background :
9 jours plus tard
Mon dernier conky plus sobre, plus en adéquation avec le thème utilisé pour gnome-shell.


conky_rc
background yes
update_interval 1
 
cpu_avg_samples 2
net_avg_samples 2

override_utf8_locale yes

double_buffer yes
no_buffers yes

text_buffer_size 2048
imlib_cache_size 0

own_window true
own_window_type normal
own_window_transparent yes
own_window_hints undecorated,sticky,skip_taskbar,skip_pager,below

border_inner_margin 0
border_outer_margin 0
stippled_borders 0

minimum_size 1920 1080
maximum_width 1920
 
alignment top_left
gap_x 0
gap_y 0

draw_shades yes
default_shade_color 000000
draw_outline no
draw_borders no
draw_graph_borders no

use_xft yes
xftfont Geosans Light:size=10
xftalpha 1

lua_load ~/.conky/conky_bar/conky_bar.lua
lua_load ~/.conky/conky_bar/conky_bar_txt.lua

lua_draw_hook_pre main_bars
lua_draw_hook_post draw_text

TEXT
${image ~/.conky/conky_bar/bg.png -p 0,0 -f 86400}
conky_bar.lua
--[[ BARGRAPH WIDGET
    v2.1 by wlourf (07 Jan. 2011)
    this widget draws a bargraph with different effects 
    http://u-scripts.blogspot.com/2010/07/bargraph-widget.html
    
To call the script in a conky, use, before TEXT
    lua_load /path/to/the/script/bargraph.lua
    lua_draw_hook_pre main_rings
and add one line (blank or not) after TEXT

    
Parameters are :
3 parameters are mandatory
name    - the name of the conky variable to display, for example for {$cpu cpu0}, just write name="cpu"
arg        - the argument of the above variable, for example for {$cpu cpu0}, just write arg="cpu0"
          arg can be a numerical value if name=""
max        - the maximum value the above variable can reach, for example, for {$cpu cpu0}, just write max=100
    
Optional parameters:
x,y        - coordinates of the starting point of the bar, default = middle of the conky window
cap        - end of cap line, ossibles values are r,b,s (for round, butt, square), default="b"
          http://www.cairographics.org/samples/set_line_cap/
angle    - angle of rotation of the bar in degress, default = 0 (i.e. a vertical bar)
          set to 90 for an horizontal bar
skew_x    - skew bar around x axis, default = 0
skew_y    - skew bar around y axis, default = 0
blocks  - number of blocks to display for a bar (values >0) , default= 10
height    - height of a block, default=10 pixels
width    - width of a block, default=20 pixels
space    - space between 2 blocks, default=2 pixels
angle_bar    - this angle is used to draw a bar on a circular way (ok, this is no more a bar !) default=0
radius        - for cicular bars, internal radius, default=0
              with radius, parameter width has no more effect.

Colours below are defined into braces {colour in hexadecimal, alpha}
fg_colour    - colour of a block ON, default= {0x00FF00,1}
bg_colour    - colour of a block OFF, default = {0x00FF00,0.5}
alarm        - threshold, values after this threshold will use alarm_colour colour , default=max
alarm_colour - colour of a block greater than alarm, default=fg_colour
smooth        - (true or false), create a gradient from fg_colour to bg_colour, default=false 
mid_colour    - colours to add to gradient, with this syntax {position into the gradient (0 to1), colour hexa, alpha}
              for example, this table {{0.25,0xff0000,1},{0.5,0x00ff00,1},{0.75,0x0000ff,1}} will add
              3 colurs to gradient created by fg_colour and alarm_colour, default=no mid_colour
led_effect    - add LED effects to each block, default=no led_effect
              if smooth=true, led_effect is not used
              possibles values : "r","a","e" for radial, parallelel, perdendicular to the bar (just try!)
              led_effect has to be used with theses colours :
fg_led        - middle colour of a block ON, default = fg_colour
bg_led        - middle colour of a block OFF, default = bg_colour
alarm_led    - middle colour of a block > ALARM,  default = alarm_colour

reflection parameters, not avaimable for circular bars
reflection_alpha    - add a reflection effect (values from 0 to 1) default = 0 = no reflection
                      other values = starting opacity
reflection_scale    - scale of the reflection (default = 1 = height of text)
reflection_length   - length of reflection, define where the opacity will be set to zero
                      calues from 0 to 1, default =1
reflection            - position of reflection, relative to a vertical bar, default="b"
                      possibles values are : "b","t","l","r" for bottom, top, left, right
draw_me     - if set to false, text is not drawn (default = true or 1)
              it can be used with a conky string, if the string returns 1, the text is drawn :
              example : "${if_empty ${wireless_essid wlan0}}${else}1$endif",

v1.0 (10 Feb. 2010) original release
v1.1 (13 Feb. 2010) numeric values can be passed instead conky stats with parameters name="", arg = numeric_value    
v1.2 (28 Feb. 2010) just renamed the widget to bargraph
v1.3 (03 Mar. 2010) added parameters radius & angle_bar to draw the bar in a circular way
v2.0 (12 Jul. 2010) rewrite script + add reflection effects and parameters are now set into tables
v2.1 (07 Jan. 2011) Add draw_me parameter and correct memory leaks, thanks to "Creamy Goodness"

--      This program is free software; you can redistribute it and/or modify
--      it under the terms of the GNU General Public License as published by
--      the Free Software Foundation version 3 (GPLv3)
--     
--      This program is distributed in the hope that it will be useful,
--      but WITHOUT ANY WARRANTY; without even the implied warranty of
--      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--      GNU General Public License for more details.
--     
--      You should have received a copy of the GNU General Public License
--      along with this program; if not, write to the Free Software
--      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
--      MA 02110-1301, USA.        

]]

require 'cairo'

----------------START OF PARAMETERS ----------
function conky_main_bars()
    local bars_settings={    
        {
            name="cpu",
            arg="cpu1",
            max=100,
            alarm=80,
            bg_colour={0x000000,0.25},
            fg_colour={0xffffff,1},
            alarm_colour={0xff0000,1},
            x=10,y=60,
            angle=90,
            blocks=50,
            height=2,width=6,
            space=1,
            draw_me=true,
            
        },    
        {
            name="cpu",
            arg="cpu2",
            max=100,
            alarm=80,
            bg_colour={0x000000,0.25},
            fg_colour={0xffffff,1},
            alarm_colour={0xff0000,1},
            x=10,y=70,
            angle=90,
            blocks=50,
            height=2,width=6,
            space=1,
            draw_me=true,
        },

        {
            name="cpu",
            arg="cpu3",
            max=100,
            alarm=80,
            bg_colour={0x000000,0.25},
            fg_colour={0xffffff,1},
            alarm_colour={0xff0000,1},
            x=10,y=80,
            angle=90,
            blocks=50,
            height=2,width=6,
            space=1,
            draw_me=true,
        },

        {
            name="cpu",
            arg="cpu4",
            max=100,
            alarm=80,
            bg_colour={0x000000,0.25},
            fg_colour={0xffffff,1},
            alarm_colour={0xff0000,1},
            x=10,y=90,
            angle=90,
            blocks=50,
            height=2,width=6,
            space=1,
            draw_me=true,
        },    
            
        {
            name="fs_used_perc",
            arg="/",
            max=100,
            alarm=80,
            bg_colour={0x000000,0.25},
            fg_colour={0xffffff,1},
            alarm_colour={0xff0000,1},
            x=10,y=130,
            angle=90,
            blocks=40,
            height=2,width=6,
            space=1,
            draw_me=true,
        },    

        {
            name="fs_used_perc",
            arg="/home",
            max=100,
            alarm=80,
            bg_colour={0x000000,0.25},
            fg_colour={0xffffff,1},
            alarm_colour={0xff0000,1},
            x=10,y=141,
            angle=90,
            blocks=40,
            height=2,width=6,
            space=1,
            draw_me=true,
        },    

        {
            name="memperc",
            arg="",
            max=100,
            alarm=80,
            bg_colour={0x000000,0.15},
            fg_colour={0xffffff,1},
            alarm_colour={0xff0000,1},
            x=11,y=155,
            angle=90,
            blocks=24,
            height=4,width=8,
            space=1,
            draw_me=true,
        },        

        {
            name="downspeedf",
            arg="p10p1",
            max=300,
            alarm=250,
            bg_colour={0x000000,0.25},
            fg_colour={0xffffff,1},
            alarm_colour={0xFF0000,1},
            blocks=50,
            x=10,y=190,
            height=2,width=6,
            space=1,
            angle=90,
            draw_me=true,
        },        
            
        {
            name="upspeedf",
            arg="p10p1",
            max=30,
            alarm=25,
            bg_colour={0x000000,0.25},
            fg_colour={0xffffff,1},
            alarm_colour={0xFF0000,1},
            blocks=50,
            x=10,y=200,
            height=2,width=6,    
            space=1,
            angle=90,
            draw_me=true,
        },    

        {
            name="top cpu 1",
            arg="/home",
            max=100,
            alarm=80,
            bg_colour={0x000000,0.25},
            fg_colour={0xffffff,1},
            alarm_colour={0xff0000,1},
            x=10,y=231,
            angle=90,
            blocks=40,
            height=2,width=6,
            space=1,
            draw_me=true,
        },
        {
            name="top cpu 2",
            arg="/home",
            max=100,
            alarm=80,
            bg_colour={0x000000,0.25},
            fg_colour={0xffffff,1},
            alarm_colour={0xff0000,1},
            x=10,y=241,
            angle=90,
            blocks=40,
            height=2,width=6,
            space=1,
            draw_me=true,
        },
        {
            name="top cpu 3",
            arg="/home",
            max=100,
            alarm=80,
            bg_colour={0x000000,0.25},
            fg_colour={0xffffff,1},
            alarm_colour={0xff0000,1},
            x=10,y=251,
            angle=90,
            blocks=40,
            height=2,width=6,
            space=1,
            draw_me=true,
        },                
    }
    
-----------END OF PARAMETERS--------------


    
    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)
    
    cr = cairo_create(cs)    
    --prevent segmentation error when reading cpu state
    if tonumber(conky_parse('${updates}'))>3 then
        for i in pairs(bars_settings) do
            
            draw_multi_bar_graph(bars_settings[i])
            
        end
    end
    cairo_destroy(cr)
    cairo_surface_destroy(cs)
    cr=nil

end



function draw_multi_bar_graph(t)
    cairo_save(cr)
    --check values
    if t.draw_me == true then t.draw_me = nil end
    if t.draw_me ~= nil and conky_parse(tostring(t.draw_me)) ~= "1" then return end    
    if t.name==nil and t.arg==nil then 
        print ("No input values ... use parameters 'name' with 'arg' or only parameter 'arg' ") 
        return
    end
    if t.max==nil then
        print ("No maximum value defined, use 'max'")
        return
    end
    if t.name==nil then t.name="" end
    if t.arg==nil then t.arg="" end

    --set default values    
    if t.x == nil        then t.x = conky_window.width/2 end
    if t.y == nil        then t.y = conky_window.height/2 end
    if t.blocks == nil    then t.blocks=10 end
    if t.height == nil    then t.height=10 end
    if t.angle == nil     then t.angle=0 end
    t.angle = t.angle*math.pi/180
    --line cap style
    if t.cap==nil        then t.cap = "b" end
    local cap="b"
    for i,v in ipairs({"s","r","b"}) do 
        if v==t.cap then cap=v end
    end
    local delta=0
    if t.cap=="r" or t.cap=="s" then delta = t.height end
    if cap=="s" then     cap = CAIRO_LINE_CAP_SQUARE
    elseif cap=="r" then
        cap = CAIRO_LINE_CAP_ROUND
    elseif cap=="b" then
        cap = CAIRO_LINE_CAP_BUTT
    end
    --end line cap style
    --if t.led_effect == nil    then t.led_effect="r" end
    if t.width == nil    then t.width=20 end
    if t.space == nil    then t.space=2 end
    if t.radius == nil    then t.radius=0 end
    if t.angle_bar == nil    then t.angle_bar=0 end
    t.angle_bar = t.angle_bar*math.pi/360 --halt angle
    
    --colours
    if t.bg_colour == nil     then t.bg_colour = {0x00FF00,0.5} end
    if #t.bg_colour~=2         then t.bg_colour = {0x00FF00,0.5} end
    if t.fg_colour == nil     then t.fg_colour = {0x00FF00,1} end
    if #t.fg_colour~=2         then t.fg_colour = {0x00FF00,1} end
    if t.alarm_colour == nil     then t.alarm_colour = t.fg_colour end
    if #t.alarm_colour~=2         then t.alarm_colour = t.fg_colour end

    if t.mid_colour ~= nil then    
        for i=1, #t.mid_colour do    
            if #t.mid_colour[i]~=3 then 
                print ("error in mid_color table")
                t.mid_colour[i]={1,0xFFFFFF,1} 
            end
        end
    end
    
    if t.bg_led ~= nil and #t.bg_led~=2    then t.bg_led = t.bg_colour end
    if t.fg_led ~= nil and #t.fg_led~=2    then t.fg_led = t.fg_colour end
    if t.alarm_led~= nil and #t.alarm_led~=2 then t.alarm_led = t.fg_led end
    
    if t.led_effect~=nil then
        if t.bg_led == nil then t.bg_led = t.bg_colour end
        if t.fg_led == nil     then t.fg_led = t.fg_colour end
        if t.alarm_led == nil  then t.alarm_led = t.fg_led end
    end
    

    if t.alarm==nil then t.alarm = t.max end --0.8*t.max end
    if t.smooth == nil then t.smooth = false end

    if t.skew_x == nil then 
        t.skew_x=0 
    else
        t.skew_x = math.pi*t.skew_x/180    
    end
    if t.skew_y == nil then 
        t.skew_y=0
    else
        t.skew_y = math.pi*t.skew_y/180    
    end
    
    if t.reflection_alpha==nil then t.reflection_alpha=0 end
    if t.reflection_length==nil then t.reflection_length=1 end
    if t.reflection_scale==nil then t.reflection_scale=1 end
    
    --end of default values
    

     local function rgb_to_r_g_b(col_a)
        return ((col_a[1] / 0x10000) % 0x100) / 255., ((col_a[1] / 0x100) % 0x100) / 255., (col_a[1] % 0x100) / 255., col_a[2]
    end
    
    
    --functions used to create patterns

    local function create_smooth_linear_gradient(x0,y0,x1,y1)
        local pat = cairo_pattern_create_linear (x0,y0,x1,y1)
        cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(t.fg_colour))
        cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(t.alarm_colour))
        if t.mid_colour ~=nil then
            for i=1, #t.mid_colour do
                cairo_pattern_add_color_stop_rgba (pat, t.mid_colour[i][1], rgb_to_r_g_b({t.mid_colour[i][2],t.mid_colour[i][3]}))
            end
        end
        return pat
    end

    local function create_smooth_radial_gradient(x0,y0,r0,x1,y1,r1)
        local pat =  cairo_pattern_create_radial (x0,y0,r0,x1,y1,r1)
        cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(t.fg_colour))
        cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(t.alarm_colour))
        if t.mid_colour ~=nil then
            for i=1, #t.mid_colour do
                cairo_pattern_add_color_stop_rgba (pat, t.mid_colour[i][1], rgb_to_r_g_b({t.mid_colour[i][2],t.mid_colour[i][3]}))
            end
        end
        return pat
    end
    
    local function create_led_linear_gradient(x0,y0,x1,y1,col_alp,col_led)
        local pat = cairo_pattern_create_linear (x0,y0,x1,y1) ---delta, 0,delta+ t.width,0)
        cairo_pattern_add_color_stop_rgba (pat, 0.0, rgb_to_r_g_b(col_alp))
        cairo_pattern_add_color_stop_rgba (pat, 0.5, rgb_to_r_g_b(col_led))
        cairo_pattern_add_color_stop_rgba (pat, 1.0, rgb_to_r_g_b(col_alp))
        return pat
    end

    local function create_led_radial_gradient(x0,y0,r0,x1,y1,r1,col_alp,col_led,mode)
        local pat = cairo_pattern_create_radial (x0,y0,r0,x1,y1,r1)
        if mode==3 then
            cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(col_alp))                
            cairo_pattern_add_color_stop_rgba (pat, 0.5, rgb_to_r_g_b(col_led))
            cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(col_alp))                
        else
            cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(col_led))
            cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(col_alp))                
        end
        return pat
    end






    local function draw_single_bar()
        --this fucntion is used for bars with a single block (blocks=1) but 
        --the drawing is cut in 3 blocks : value/alarm/background
        --not zvzimzblr for circular bar
        local function create_pattern(col_alp,col_led,bg)
            local pat
            
            if not t.smooth then
                if t.led_effect=="e" then
                    pat = create_led_linear_gradient (-delta, 0,delta+ t.width,0,col_alp,col_led)
                elseif t.led_effect=="a" then
                    pat = create_led_linear_gradient (t.width/2, 0,t.width/2,-t.height,col_alp,col_led)
                elseif  t.led_effect=="r" then
                    pat = create_led_radial_gradient (t.width/2, -t.height/2, 0, t.width/2,-t.height/2,t.height/1.5,col_alp,col_led,2)
                else
                    pat = cairo_pattern_create_rgba  (rgb_to_r_g_b(col_alp))
                end
            else
                if bg then
                    pat = cairo_pattern_create_rgba  (rgb_to_r_g_b(t.bg_colour))
                else
                    pat = create_smooth_linear_gradient(t.width/2, 0, t.width/2,-t.height)
                end
            end
            return pat
        end
        
        local y1=-t.height*pct/100
        local y2,y3
        if pct>(100*t.alarm/t.max) then 
            y1 = -t.height*t.alarm/100
            y2 = -t.height*pct/100
            if t.smooth then y1=y2 end
        end
        
        if t.angle_bar==0 then
        
            --block for fg value
            local pat = create_pattern(t.fg_colour,t.fg_led,false)
            cairo_set_source(cr,pat)
            cairo_rectangle(cr,0,0,t.width,y1)
            cairo_fill(cr)
            cairo_pattern_destroy(pat)
        
            -- block for alarm value            
            if not t.smooth and y2 ~=nil then 
                pat = create_pattern(t.alarm_colour,t.alarm_led,false)
                cairo_set_source(cr,pat)
                cairo_rectangle(cr,0,y1,t.width,y2-y1)
                cairo_fill(cr)
                y3=y2
                cairo_pattern_destroy(pat)
            else
                y2,y3=y1,y1
            end
            -- block for bg value
            cairo_rectangle(cr,0,y2,t.width,-t.height-y3)
            pat = create_pattern(t.bg_colour,t.bg_led,true)
            cairo_set_source(cr,pat)
            cairo_pattern_destroy(pat)
            cairo_fill(cr)
        end        
    end  --end single bar
    





    local function draw_multi_bar()
        --function used for bars with 2 or more blocks
        for pt = 1,t.blocks do 
            --set block y
            local y1 = -(pt-1)*(t.height+t.space)
            local light_on=false
            
            --set colors
            local col_alp = t.bg_colour
            local col_led = t.bg_led
            if pct>=(100/t.blocks) or pct>0 then --ligth on or not the block
                if pct>=(pcb*(pt-1))  then 
                    light_on = true
                    col_alp = t.fg_colour
                    col_led = t.fg_led
                    if pct>=(100*t.alarm/t.max) and (pcb*pt)>(100*t.alarm/t.max) then 
                        col_alp = t.alarm_colour 
                        col_led = t.alarm_led 
                    end
                end
            end

            --set colors
            --have to try to create gradients outside the loop ?
            local pat 
            
            if not t.smooth then
                if t.angle_bar==0 then
                    if t.led_effect=="e" then
                        pat = create_led_linear_gradient (-delta, 0,delta+ t.width,0,col_alp,col_led)
                    elseif t.led_effect=="a" then
                        pat = create_led_linear_gradient (t.width/2, -t.height/2+y1,t.width/2,0+t.height/2+y1,col_alp,col_led)                    
                    elseif  t.led_effect=="r" then
                        pat = create_led_radial_gradient (t.width/2, y1, 0, t.width/2,y1,t.width/1.5,col_alp,col_led,2)    
                    else
                        pat = cairo_pattern_create_rgba  (rgb_to_r_g_b(col_alp))
                    end
                else
                     if t.led_effect=="a"  then
                         pat = create_led_radial_gradient (0, 0, t.radius+(t.height+t.space)*(pt-1),
                                                         0, 0, t.radius+(t.height+t.space)*(pt),                         
                                             col_alp,col_led,3)    
                    else
                        pat = cairo_pattern_create_rgba  (rgb_to_r_g_b(col_alp))                    
                    end
                    
                end
            else
                
                if light_on then
                    if t.angle_bar==0 then
                        pat = create_smooth_linear_gradient(t.width/2, t.height/2, t.width/2,-(t.blocks-0.5)*(t.height+t.space))
                    else
                        pat = create_smooth_radial_gradient(0, 0, (t.height+t.space),  0,0,(t.blocks+1)*(t.height+t.space),2)
                    end
                else        
                    pat = cairo_pattern_create_rgba  (rgb_to_r_g_b(t.bg_colour))
                end
            end
            cairo_set_source (cr, pat)
            cairo_pattern_destroy(pat)

            --draw a block
            if t.angle_bar==0 then
                cairo_move_to(cr,0,y1)
                cairo_line_to(cr,t.width,y1)
            else        
                cairo_arc( cr,0,0,
                    t.radius+(t.height+t.space)*(pt)-t.height/2,
                     -t.angle_bar -math.pi/2 ,
                     t.angle_bar -math.pi/2)
            end
            cairo_stroke(cr)
        end    
    end
    
    
    
    
    local function setup_bar_graph()
        --function used to retrieve the value to display and to set the cairo structure
        if t.blocks ~=1 then t.y=t.y-t.height/2 end
        
        local value = 0
        if t.name ~="" then
            value = tonumber(conky_parse(string.format('${%s %s}', t.name, t.arg)))
            --$to_bytes doesn't work when value has a decimal point,
            --https://garage.maemo.org/plugins/ggit/browse.php/?p=monky;a=commitdiff;h=174c256c81a027a2ea406f5f37dc036fac0a524b;hp=d75e2db5ed3fc788fb8514121f67316ac3e5f29f
            --http://sourceforge.net/tracker/index.php?func=detail&aid=3000865&group_id=143975&atid=757310
            --conky bug?
            --value = (conky_parse(string.format('${%s %s}', t.name, t.arg)))
            --if string.match(value,"%w") then
            --    value = conky_parse(string.format('${to_bytes %s}',value))
            --end
        else
            value = tonumber(t.arg)
        end

        if value==nil then value =0 end
        
        pct = 100*value/t.max
        pcb = 100/t.blocks
        
        cairo_set_line_width (cr, t.height)
        cairo_set_line_cap  (cr, cap)
        cairo_translate(cr,t.x,t.y)
        cairo_rotate(cr,t.angle)

        local matrix0 = cairo_matrix_t:create()
        tolua.takeownership(matrix0)
        cairo_matrix_init (matrix0, 1,t.skew_y,t.skew_x,1,0,0)
        cairo_transform(cr,matrix0)

    
        
        --call the drawing function for blocks
        if t.blocks==1 and t.angle_bar==0 then
            draw_single_bar()
            if t.reflection=="t" or t.reflection=="b" then cairo_translate(cr,0,-t.height) end
        else
            draw_multi_bar()
        end

        --dot for reminder
        --[[
        if t.blocks ~=1 then
            cairo_set_source_rgba(cr,1,0,0,1)
            cairo_arc(cr,0,t.height/2,3,0,2*math.pi)
            cairo_fill(cr)
        else
            cairo_set_source_rgba(cr,1,0,0,1)
            cairo_arc(cr,0,0,3,0,2*math.pi)
            cairo_fill(cr)
        end]]
        
        --call the drawing function for reflection and prepare the mask used        
        if t.reflection_alpha>0 and t.angle_bar==0 then
            local pat2
            local matrix1 = cairo_matrix_t:create()
            tolua.takeownership(matrix1)
            if t.angle_bar==0 then
                pts={-delta/2,(t.height+t.space)/2,t.width+delta,-(t.height+t.space)*(t.blocks)}
                if t.reflection=="t" then
                    cairo_matrix_init (matrix1,1,0,0,-t.reflection_scale,0,-(t.height+t.space)*(t.blocks-0.5)*2*(t.reflection_scale+1)/2)
                    pat2 = cairo_pattern_create_linear (t.width/2,-(t.height+t.space)*(t.blocks),t.width/2,(t.height+t.space)/2)
                elseif t.reflection=="r" then
                    cairo_matrix_init (matrix1,-t.reflection_scale,0,0,1,delta+2*t.width,0)
                    pat2 = cairo_pattern_create_linear (delta/2+t.width,0,-delta/2,0)
                elseif t.reflection=="l" then
                    cairo_matrix_init (matrix1,-t.reflection_scale,0,0,1,-delta,0)
                    pat2 = cairo_pattern_create_linear (-delta/2,0,delta/2+t.width,-0)
                else --bottom
                    cairo_matrix_init (matrix1,1,0,0,-1*t.reflection_scale,0,(t.height+t.space)*(t.reflection_scale+1)/2)
                    pat2 = cairo_pattern_create_linear (t.width/2,(t.height+t.space)/2,t.width/2,-(t.height+t.space)*(t.blocks))
                end
            end
            cairo_transform(cr,matrix1)

            if t.blocks==1 and t.angle_bar==0 then
                draw_single_bar()
                cairo_translate(cr,0,-t.height/2) 
            else
                draw_multi_bar()
            end
            
            
            cairo_set_line_width(cr,0.01)
            cairo_pattern_add_color_stop_rgba (pat2, 0,0,0,0,1-t.reflection_alpha)
            cairo_pattern_add_color_stop_rgba (pat2, t.reflection_length,0,0,0,1)
            if t.angle_bar==0 then
                cairo_rectangle(cr,pts[1],pts[2],pts[3],pts[4])
            end
            cairo_clip_preserve(cr)
            cairo_set_operator(cr,CAIRO_OPERATOR_CLEAR)
            cairo_stroke(cr)
            cairo_mask(cr,pat2)
            cairo_pattern_destroy(pat2)
            cairo_set_operator(cr,CAIRO_OPERATOR_OVER)
            
        end --reflection
        pct,pcb=nil
    end --setup_bar_graph()
    
    --start here !
    setup_bar_graph()
    cairo_restore(cr)
end
conky_bar_txt.lua
require 'cairo'
function conky_draw_text()
    --BEGIN OF PARAMETRES
    text_settings={


        {
            text=conky_parse("${exec cat /etc/fedora-release}"),
            font_name="MgOpen Modata",
            font_size=16,
            h_align="l",
        bold=true,
            x=5,
            y=25,
            colour={{0,0X4D4D4D,1},{0.5,0x4D4D4D,1}, {1,0x4D4D4D,1}},
        },
        {
            text=conky_parse("${KERNEL} | ${uptime}"),
            font_name="MgOpen Modata",
            font_size=11,
            h_align="l",
            x=15,
            y=42,
            colour={{0,0X4D4D4D,1},{0.5,0x4D4D4D,1}, {1,0x4D4D4D,1}},
        },

        {
            text=conky_parse("Core 1 - ${cpu cpu1} %"),
            font_name="Geosans Light",
            font_size=11,
            h_align="l",
            x=165,
            y=65,
            colour={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
        },

        {
            text=conky_parse("Core 2 - ${cpu cpu2} %"),
            font_name="Geosans Light",
            font_size=11,
            h_align="l",
            x=165,
            y=76,
            colour={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
        },

        {
            text=conky_parse("Core 3 - ${cpu cpu3} %"),
            font_name="Geosans Light",
            font_size=11,
            h_align="l",
            x=165,
            y=87,
            colour={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
        },

        {
            text=conky_parse("Core 4 - ${cpu cpu4} %"),
            font_name="Geosans Light",
            font_size=11,
            h_align="l",
            x=165,
            y=98,
            colour={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
        },

        {
            text=conky_parse("/         - ${fs_used /}"),
            font_name="Geosans Light",
            font_size=11,
            h_align="l",
            x=140,
            y=136,
            orientation="nn",
            colour={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
        },

        {
            text=conky_parse("/home  - ${fs_used /home}"),
            font_name="Geosans Light",
            font_size=11,
            h_align="l",
            x=140,
            y=147,
            orientation="nn",
            colour={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
        },     

        {
            text=conky_parse("RAM  - $mem"),
            font_name="Geosans Light",
            font_size=11,
            h_align="l",
            orientation="nn",
            x=140,
            y=162,
            colour={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
        },

        {
            text=conky_parse("${downspeedf p10p1} K/s"),
            font_name="Geosans Light",
            font_size=11,
            h_align="l",
            x=170,
            y=195,
            colour={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
        },

        {
            text=conky_parse("${upspeedf p10p1} K/s"),
            font_name="Geosans Light",
            font_size=11,
            h_align="l",
            x=170,
            y=207,
            colour={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
        },

        {
            text=conky_parse("${top name 1}"),
            font_name="Geosans Light",
            font_size=11,
            h_align="l",
            orientation="nn",
            x=140,
            y=234,
            colour={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
        },    

        {
            text=conky_parse("${top name 2}"),
            font_name="Geosans Light",
            font_size=11,
            h_align="l",
            orientation="nn",
            x=140,
            y=246,
            colour={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
        },
        {
            text=conky_parse("${top name 3}"),
            font_name="Geosans Light",
            font_size=11,
            h_align="l",
            orientation="nn",
            x=140,
            y=258,
            colour={{0,0XFFFFFF,1},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,1}},
        },    

    }
    
    
--------------END OF PARAMETERES----------------
    if conky_window == nil then return end
    if tonumber(conky_parse("$updates"))<3 then return end
       
    local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, conky_window.width, conky_window.height)

    for i,v in pairs(text_settings) do    
        cr = cairo_create (cs)
        display_text(v)
        cairo_destroy(cr)
    end
    
    cairo_surface_destroy(cs)
    


end

function rgb_to_r_g_b2(tcolour)
    colour,alpha=tcolour[2],tcolour[3]
    return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
end

function display_text(t)

    local function set_pattern()
        --this function set the pattern
        if #t.colour==1 then 
            cairo_set_source_rgba(cr,rgb_to_r_g_b2(t.colour[1]))
        else
            local pat
            
            if t.radial==nil then
                local pts=linear_orientation(t,te)
                pat = cairo_pattern_create_linear (pts[1],pts[2],pts[3],pts[4])
            else
                pat = cairo_pattern_create_radial (t.radial[1],t.radial[2],t.radial[3],t.radial[4],t.radial[5],t.radial[6])
            end
        
            for i=1, #t.colour do
                cairo_pattern_add_color_stop_rgba (pat, t.colour[i][1], rgb_to_r_g_b2(t.colour[i]))
            end
            cairo_set_source (cr, pat)
        end
    end
    
    --set default values if needed
    if t.text==nil then t.text="Conky is good for you !" end
    if t.x==nil then t.x = conky_window.width/2 end
    if t.y==nil then t.y = conky_window.height/2 end
    if t.colour==nil then t.colour={{1,0xFFFFFF,1}} end
    if t.font_name==nil then t.font_name="Free Sans" end
    if t.font_size==nil then t.font_size=14 end
    if t.angle==nil then t.angle=0 end
    if t.italic==nil then t.italic=false end
    if t.oblique==nil then t.oblique=false end
    if t.bold==nil then t.bold=false end
    if t.radial ~= nil then
        if #t.radial~=6 then 
            print ("error in radial table")
            t.radial=nil 
        end
    end
    if t.orientation==nil then t.orientation="ww" end
    if t.h_align==nil then t.h_align="l" end
    if t.v_align==nil then t.v_align="b" end    
    if t.reflection_alpha == nil then t.reflection_alpha=0 end
    if t.reflection_length == nil then t.reflection_length=1 end
    if t.reflection_scale == nil then t.reflection_scale=1 end
    if t.skew_x==nil then t.skew_x=0 end
    if t.skew_y==nil then t.skew_y=0 end    
    cairo_translate(cr,t.x,t.y)
    cairo_rotate(cr,t.angle*math.pi/180)
    cairo_save(cr)       
     
 

    local slant = CAIRO_FONT_SLANT_NORMAL
    local weight =CAIRO_FONT_WEIGHT_NORMAL
    if t.italic then slant = CAIRO_FONT_SLANT_ITALIC end
    if t.oblique then slant = CAIRO_FONT_SLANT_OBLIQUE end
    if t.bold then weight = CAIRO_FONT_WEIGHT_BOLD end
    
    cairo_select_font_face(cr, t.font_name, slant,weight)
 
    for i=1, #t.colour do    
        if #t.colour[i]~=3 then 
            print ("error in color table")
            t.colour[i]={1,0xFFFFFF,1} 
        end
    end

    local matrix0 = cairo_matrix_t:create()
    skew_x,skew_y=t.skew_x/t.font_size,t.skew_y/t.font_size
    cairo_matrix_init (matrix0, 1,skew_y,skew_x,1,0,0)
    cairo_transform(cr,matrix0)
    cairo_set_font_size(cr,t.font_size)
    te=cairo_text_extents_t:create()
    cairo_text_extents (cr,t.text,te)
    
    set_pattern()


            
    mx,my=0,0
    
    if t.h_align=="c" then
        mx=-te.width/2
    elseif t.h_align=="r" then
        mx=-te.width
    end
    if t.v_align=="m" then
        my=-te.height/2-te.y_bearing
    elseif t.v_align=="t" then
        my=-te.y_bearing
    end
    cairo_move_to(cr,mx,my)
    
    cairo_show_text(cr,t.text)

     
        
        
   if t.reflection_alpha ~= 0 then 
        local matrix1 = cairo_matrix_t:create()
        cairo_set_font_size(cr,t.font_size)

        cairo_matrix_init (matrix1,1,0,0,-1*t.reflection_scale,0,(te.height+te.y_bearing+my)*(1+t.reflection_scale))
        cairo_set_font_size(cr,t.font_size)
        te=cairo_text_extents_t:create()
        cairo_text_extents (cr,t.text,te)
        
                
        cairo_transform(cr,matrix1)
        set_pattern()
        cairo_move_to(cr,mx,my)
        cairo_show_text(cr,t.text)

        local pat2 = cairo_pattern_create_linear (0,
                                        (te.y_bearing+te.height+my),
                                        0,
                                        te.y_bearing+my)
        cairo_pattern_add_color_stop_rgba (pat2, 0,1,0,0,1-t.reflection_alpha)
        cairo_pattern_add_color_stop_rgba (pat2, t.reflection_length,0,0,0,1)    
        
        
        cairo_set_line_width(cr,1)
        dy=te.x_bearing
        if dy<0 then dy=dy*(-1) end
        cairo_rectangle(cr,mx+te.x_bearing,te.y_bearing+te.height+my,te.width+dy,-te.height*1.05)
        cairo_clip_preserve(cr)
        cairo_set_operator(cr,CAIRO_OPERATOR_CLEAR)
        --cairo_stroke(cr)
        cairo_mask(cr,pat2)
        cairo_pattern_destroy(pat2)
        cairo_set_operator(cr,CAIRO_OPERATOR_OVER)
    end
    
end


function linear_orientation(t,te)
    local w,h=te.width,te.height
    local xb,yb=te.x_bearing,te.y_bearing
    
    if t.h_align=="c" then
        xb=xb-w/2
    elseif t.h_align=="r" then
        xb=xb-w
       end    
    if t.v_align=="m" then
        yb=-h/2
    elseif t.v_align=="t" then
        yb=0
       end    
       
    if t.orientation=="nn" then
        p={xb+w/2,yb,xb+w/2,yb+h}
    elseif t.orientation=="ne" then
        p={xb+w,yb,xb,yb+h}
    elseif t.orientation=="ww" then
        p={xb,h/2,xb+w,h/2}
    elseif vorientation=="se" then
        p={xb+w,yb+h,xb,yb}
    elseif t.orientation=="ss" then
        p={xb+w/2,yb+h,xb+w/2,yb}
    elseif vorientation=="ee" then
        p={xb+w,h/2,xb,h/2}        
    elseif t.orientation=="sw" then
        p={xb,yb+h,xb+w,yb}
    elseif t.orientation=="nw" then
        p={xb,yb,xb+w,yb+h}
    end
    return p
end
et le bg :
24 jours plus tard
Salut !

Voir ce tuto m'a donné envie de m'y mettre !! :-D

J'ai donc installé conky avec le thème Lua 2011 que j'ai un peu modifié en prenant des idées à droite à gauche. La police utilisée est DS9 Computer, que l'on trouve dans le pack LCARS

La partie CPU affiche la charge de 4 coeurs + la charge globale

Certains reconnaîtrons des petits bouts de scripts 😉

EDIT: Refonte du thème avec logo Fedora (à renommer en fedora-logo.png), nouvelles couleurs, Charge CPUs et Températures CPU + GPU 8-)



.conky_rc
# 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_transparent yes
own_window_type normal
own_window_hints undecorate,sticky,skip_taskbar,skip_pager,below

border_inner_margin 0
border_outer_margin 0

minimum_size 200 250
maximum_width 220

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 1

uppercase no

temperature_unit celsius


default_color FFFFFF

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

TEXT
${image ~/.conky/fedora-logo.png -p 29,110 -s 120x120}
${voffset -10}${color 2D7DB3}${font DS9 Computer:size=26}${time %A}${font}${voffset -4}${alignr 61}${color FFFFFF}${font DS9 Computer:size=48}${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 2D7DB3}${hr}
${voffset 170}

${color 2D7DB3}${font DS9 Computer:size=14}${goto 142}${voffset 28}CPU
${color FFFFFF}${goto 142}${voffset -40}${cpu cpu0}%

${color FFFFFF}${font DS9 Computer:size=12}${goto 35}${voffset -2}${memperc}%
${color 2D7DB3}${goto 21}${voffset -3}RAM
${color FFFFFF}${goto 64}${voffset 23}${swapperc}%${alignr}${color 2D7DB3}CPU: ${color FFFFFF}${hwmon temp 1} C${font caviar dreams:size=12}°
${color 2D7DB3}${goto 46}${voffset -3}${font DS9 Computer:size=12}SWAP ${alignr}${color 2D7DB3}GPU: ${color FFFFFF}${exec nvidia-settings -q GPUCoreTemp -t} C${font caviar dreams:size=12}°
${color FFFFFF}${font DS9 Computer:size=12}${goto 85}${voffset 24}${fs_used_perc /}%
${color 2D7DB3}${goto 72}${voffset -3}DISK
${color FFFFFF}${goto 127}${voffset 28}NET
${color FF6600}${goto 142}${font DS9 Computer:size=12}${voffset -3}UP > ${color FFFFFF}${alignr}${upspeedf p128p1}
${color 339900}${goto 142}${font DS9 Computer:size=12}${voffset -5}DL > ${color FFFFFF}${alignr}${downspeedf p128p1}

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

${color 2D7DB3}${font DS9 Computer:size=12}${alignr}${nodename}
${color 2D7DB3}${font DS9 Computer:size=12}${alignr}${kernel}

${color 2D7DB3}${font DS9 Computer:size=12}${alignr}IP Locale: ${color FFFFFF}${addrs p128p1}
${color 2D7DB3}${font DS9 Computer:size=12}${alignr}IP Publique: ${color FFFFFF}${texeci 25000 dig +short myip.opendns.com @resolver1.opendns.com}
clock_rings.lua
--[[
Clock Rings by Linux Mint (2011) reEdited by despot77 then by DooM2a

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=0x2D7DB3,
        -- "fg_alpha" is the alpha value of the indicator part of the ring.
        fg_alpha=0.5,
        -- "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=90, y=170,
        -- "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=0x2D7DB3,
        fg_alpha=0.6,
        x=90, y=170,
    sectors=4,
    inverse_arc=false,
        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=0x2D7DB3,
        fg_alpha=0.7,
        x=90, y=170,
        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=0x2D7DB3,
        fg_alpha=0.8,
        x=90, y=170,
        radius=70,
        thickness=5,
        start_angle=45,
        end_angle=225
    },
    {
        name='time',
        arg='%m',
        max=12,
        bg_colour=0xffffff,
        bg_alpha=0.1,
        fg_colour=0x2D7DB3,
        fg_alpha=1,
        x=90, y=170,
        radius=76,
        thickness=5,
        start_angle=-135,
        end_angle=45
    },
    {
        name='cpu',
        arg='cpu0',
        max=90,
        bg_colour=0xffffff,
        bg_alpha=0.2,
        fg_colour=0x2D7DB3,
        fg_alpha=1,
        x=157, y=305,
        radius=48,
        thickness=6,
        start_angle=-135,
        end_angle=135
    },

    {
        name='cpu',
        arg='cpu1',
        max=90,
        bg_colour=0xffffff,
        bg_alpha=0.1,
        fg_colour=0x844798,
        fg_alpha=0.8,
        x=157, y=305,
        radius=40,
        thickness=6,
        start_angle=-45,
        end_angle=90
    },

 {
        name='cpu',
        arg='cpu2',
        max=90,
        bg_colour=0xffffff,
        bg_alpha=0.1,
        fg_colour=0xCB0C29,
        fg_alpha=0.8,
        x=157, y=305,
        radius=33,
        thickness=6,
        start_angle=45,
        end_angle=180
    },

 {
        name='cpu',
        arg='cpu3',
        max=90,
        bg_colour=0xffffff,
        bg_alpha=0.1,
        fg_colour=0x49A835,
        fg_alpha=0.8,
        x=157, y=305,
        radius=40,
        thickness=6,
        start_angle=135,
        end_angle=270
    },

 {
        name='cpu',
        arg='cpu4',
        max=90,
        bg_colour=0xffffff,
        bg_alpha=0.1,
        fg_colour=0xFF6600,
        fg_alpha=0.8,
        x=157, y=305,
        radius=33,
        thickness=6,
        start_angle=225,
        end_angle=360
    },

    {
        name='memperc',
        arg='',
        max=90,
        bg_colour=0xffffff,
        bg_alpha=0.2,
        fg_colour=0x2D7DB3,
        fg_alpha=0.8,
        x=50, y=340,
        radius=25,
        thickness=5,
        start_angle=-90,
        end_angle=180
    },
    {
        name='swapperc',
        arg='',
        max=90,
        bg_colour=0xffffff,
        bg_alpha=0.2,
        fg_colour=0x2D7DB3,
        fg_alpha=0.8,
        x=75, y=400,
        radius=25,
        thickness=5,
        start_angle=-90,
        end_angle=180
    },
    {
        name='fs_used_perc',
        arg='/',
        max=90,
        bg_colour=0xffffff,
        bg_alpha=0.2,
        fg_colour=0x2D7DB3,
        fg_alpha=0.8,
        x=100, y=460,
        radius=25,
        thickness=5,
        start_angle=-90,
        end_angle=180
    },
        {
        name='downspeedf',
        arg='p128p1',
        max=550,
        bg_colour=0xffffff,
        bg_alpha=0.2,
        fg_colour=0x339900,
        fg_alpha=0.8,
        x=140, y=520,
        radius=27,
        thickness=7,
        start_angle=-180,
        end_angle=90
    },
        {
        name='upspeedf',
        arg='p128p1',
        max=90,
        bg_colour=0xffffff,
        bg_alpha=0.2,
        fg_colour=0xff6600,
        fg_alpha=0.8,
        x=140, y=520,
        radius=20,
        thickness=5,
        start_angle=-180,
        end_angle=90
    },
}

-- 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=90
clock_y=170

show_seconds=false

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 - remove -- symbols to display hours's line
    
    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 - remove -- symbols to display minute's line
    
    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 essayé toutes les commandes possibles et imaginables pour afficher la température CPU sans aucun résultat...
Une idée ?

EDIT: Problème résolu avec :
# yum install lm_sensors
# sensors-detect
4 mois plus tard
le lua ds conky, c'est sûr c'est fun et joli mais tous les scripts que j'ai vu ont des fuites mémoires !
Le pire étant le fameux rings meter dont plein se sont inspirés. (1 Mo de RAM ttes les x minutes je sais plus combien mais x est petit)

En tout cas ,je suis dégouté, weather.com stop son service gratuit d'api xml. Dans 3 jours, bye bye conkyforcast 😢
DaWeed wrote:le lua ds conky, c'est sûr c'est fun et joli mais tous les scripts que j'ai vu ont des fuites mémoires !
Le pire étant le fameux rings meter dont plein se sont inspirés. (1 Mo de RAM ttes les x minutes je sais plus combien mais x est petit)

En tout cas ,je suis dégouté, weather.com stop son service gratuit d'api xml. Dans 3 jours, bye bye conkyforcast 😢
Bonjour,
Si tu veux utiliser la métro avec conky, il y a une solution qui se passe de weather.com sur le forum ubuntu : http://forum.ubuntu-fr.org/viewtopic.php?pid=6803141#p6803141

Je n'ai pas essayé (j'utilise le plasmoid yaWP avec KDE), mais si cela peut t'aider...
Salut Chepioq,

merci pour l'infos, j'essaierai de creuser çà quand j'aurais un peu de temps à perdre 😉
Pour l'instant, conkyforecast fonctionne encore :p
7 mois plus tard
Salut,
Pour les scripts qui lancent conky, ce qui revient le plus souvent:
--------------
killall conky
sleep n
conky -c ~/.conkyrc
---------------
Pourquoi le "killall conky"? C'est pour assurer une seule instance de conky.
Imaginons qu'un utilisateur ferme sa session, qu'un autre ouvre la sienne, le "killall conky" est insuffisant car n'ayant pas les droits nécessaires pour killer une eventuelle instance de conky du premier utisateur.

comment remédier à cela?
3 mois plus tard
Edit: Je me suis tromper de post 🙁
6 jours plus tard
Heldwin wrote:donc on pourrait supposer que son conky soit terminé avec la fermeture de sa session graphique non ?
Normalement oui, mais pour une raison que j'ignore ce n'est pas le cas. Quand le 2ème utilisateur ouvre une session, il a 2 conky qui se superposent, le sien + celui du 1er utilisateur qui a fermé sasession.