Bonsoir tout le monde.
Avec l'aide précieuse de wlourf d'ubuntu.fr je suis parvenu à faire ce calendrier qui affiche les phases de la lune.
Il y a un script lua pour le calendrier, largement pompé sur un calendrier de olgmen, sur ubuntu.ru, et pour l'image de la lune un petit script qui récupère l'image (mise à jour toutes les heures) sur le site de static.die.net, et qui l'affiche avec la fonction image de conky. (j'utilise conky 1.8.0)
Pour le calendrier vous pouvez changer la police d'affichage des messages et des jours (ici newpushkin et monaco, que j'ai mis dans un dossier font dans le tarball, si vous voulez les installer).

Vous pouvez télécharger ce conky ici; http://sd-1.archive-host.com/membres/up/138795649635992281/newconkytar.gz

Vous aurez bien à adapter les différents chemins à votre configuration.
Voili-voilou..
Qu'en pensez-vous?
8 jours plus tard


Nouvelle version de mon conky calendrier lunaire.
Je l'ai refait car avec la transparence du nouveau conky 1.8.0 et own_window_argb_visual yes, l'image de la lune était transparente et pas très jolie.
D'abord j'ai tout regroupé dans un dossier dans mon ~/.conkyrc, que j'ai nommé conky 14.
J'ai fait, avec l'aide de wlourf, un script lua:
square_to_round.lua
--[[ SQUARE_TO_ROUND WIDGET by Wlourf (07 April 2010, version 1.0.1)
http://u-scripts.blogspot.com/

This widget display a rounded image on your conky from a square image only.

Parameters are
filename        --nom de l'image carrée en entrée
xc,yc           --coordonnées du centre de l'image ronde par rapport au coin en haut à gauche de la fenêtre conky
radius           --rayon du cercle final
angle           --angle de rotation de l'image
radius_crop       --dans l'image carrée, pourcentage du cercle à extraire par rapport au côté du carré(1-100)
period       --converti l'image de carré à rond toutes les  'period' secondes

]]

require 'cairo'
require 'imlib2'

function convert_square(fileIn,fileOut,radius,angle,radius_crop)
    --convert Input file from jpg to png, scale it and rotate it
    local imageInput = imlib_load_image(fileIn)
    local out_size = radius*2/(radius_crop/100)
    imlib_context_set_image(imageInput)
    w = imlib_image_get_width();
    h = imlib_image_get_height();
    imlib_image_set_format("png")
    buffer = imlib_create_image(out_size,out_size);
    imlib_context_set_image(buffer);

    imlib_blend_image_onto_image(imageInput, 0, 
                                               0, 0, w, h, 
                                               0,0, out_size,out_size)
    rot_img=imlib_create_rotated_image(angle*math.pi/180)
    imlib_context_set_image(rot_img)  
    imlib_save_image(fileOut)
    imlib_free_image()
    
    imlib_context_set_image(buffer)
    imlib_free_image()
    imlib_context_set_image(imageInput)
    imlib_free_image()
end

function crop_square_to_round(filename,xc,yc,radius)
    local surface = cairo_image_surface_create_from_png(filename)
    local img_w = cairo_image_surface_get_width (surface);
    
    local cw,ch = conky_window.width, conky_window.height
    local cs=cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, cw,ch)
    local cr=cairo_create(cs)
    cairo_translate(cr,xc-img_w/2,yc-img_w/2)
    cairo_arc (cr, img_w/2,img_w/2, radius, 0, 2*math.pi)
    cairo_clip (cr)
    cairo_new_path (cr)    
    cairo_set_source_surface (cr, surface, 0, 0)

    cairo_paint (cr)
    cairo_destroy(cr)
    cairo_surface_destroy (cs)
    cairo_surface_destroy (surface)
    
end

function display_round(filename,xc,yc,radius,angle,radius_crop,period)
    if conky_window == nil then return end

    if tonumber(conky_parse('${updates}')) <2  then return end
    local filepng = filename .. ".png"
    local actual_time  = os.time()
    
    if last_time == nil then last_time=0 end
    local actual_img = io.open(filepng,"r")    
    if  last_time+period < actual_time or last_time == 0 or actual_img == nil then
        print ('convert image ' .. filename)
        convert_square(filename,filepng,radius,angle,radius_crop)
        last_time=actual_time
    end
    crop_square_to_round(filepng,xc,yc,radius)
    io.close()
end


--[[END OF SQUARE TO ROUND WIDGET]]

function conky_main(filename)
    if conky_window == nil then return end
    display_round(filename,
                58,90,55,  --xc,yc,radius
                5,            --angle
                98,           --radius_crop (1-100)
                3600        --period
    )
end
J'ai ensuite fait un script qui va télécharger l'image de la lune:
get_image.sh
#!/bin/sh
dir="/home/dominique/.conkyrc/conky14/moon-phase"
mkdir -p $dir
cd $dir
wget http://static.die.net/moon/576.jpg -O "$dir/moon.jpg"
Ensuite je voulais afficher les quatre principales phase de la lune, j'ai donc créé un fichier texte:
calendar.txt
0406;Dernier quartier
0414;Nouvelle lune
0421;Premier quartier
0428;Pleine lune
0505;Dernier quartier
0513;Nouvelle lune
0520;Premier quartier
0527;Pleine lune
0604;Dernier quartier
0612;Nouvelle lune
0618;Premier quartier
0626;Pleine lune
0704;Dernier quartier
0711;Nouvelle lune
0718;Premier quartier
0725;Pleine lune
0802;Dernier quartier
0809;Nouvelle lune
0816;Premier quartier
0824;Pleine lune
0901;Dernier quartier
0908;Nouvelle lune
0915;Premier quartier
0923;Pleine lune
0930;Dernier quartier
1007;Nouvelle lune
1014;Premier quartier
1022;Pleine lune
1030;Dernier quartier
1105;Nouvelle lune
1113;Premier quartier
1121;Pleine lune
1128;Dernier quartier
1205;Nouvelle lune
1213;Premier quartier
1221;Pleine lune
1227;Dernier quartier
Et avec l'aide de proxy (encore merci) qui m'a fait un script pour l'afficher:
#!/bin/bash

DATE=$(date +"%m%d")
LINE=$(grep ${DATE} /home/dominique/.conkyrc/conky14/calendar.txt)
if [ -z "${LINE}" ] ; then
   MOON=""
else
   MOON=$(echo ${LINE} | cut -d ';' -f2)
fi

echo ${MOON}
Et pour finir le conkyrc qui va avec (nommé chez moi conkyrc14:
# -- Conky settings -- #
background no
update_interval 10

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

# -- Window specifications -- #

own_window yes
#own_window_type normal
own_window_transparent yes
own_window_hints undecorate,sticky,skip_taskbar,skip_pager,below
own_window_argb_visual yes
own_window_colour FFFFFF
own_window_title square to round

border_inner_margin 0
border_outer_margin 0

minimum_size 300 150

alignment tr
gap_y 30
gap_x 50

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

# -- Text settings -- #
use_xft yes
xftfont Santana:size=12
xftalpha 0

uppercase no

default_color 000000
text_buffer_size 2048 
imlib_cache_size 0 
#--- LUA ---
lua_load ~/.conkyrc/conky14/square_to_round.lua
lua_draw_hook_pre main /home/dominique/.conkyrc/conky14/moon-phase/moon.jpg

TEXT
${execpi 3600 ~/.conkyrc/conky14/get_image.sh}                       
${goto 155}${font Monaco:size=18}${color #0000ff}${execi 1800 date +%^B | cut -c1}${font Monaco:size=10}${color #0F4C5D}${execi 1800 date +%B | cut -c2-}
${goto 105}${color #0F4C5D}${font Monaco:size=9}${execpi 60 DJS=`date +%_d`; cal | sed '/./!d' | sed '1d'  | sed 's/$/                     /' | fold -w 21 | sed -n '/^.\{21\}/p' | sed 's/^/${goto 105} /' | sed /" $DJS "/s/" $DJS "/" "'${color #FF000C}'"$DJS"'${color #0000ff}'" "/}
${font newpushkin:size=14}${execpi 3600 ~/.conkyrc/conky14/name-phase.sh}
Ouffff.... c'était un peu long mais je suis assez satisfait du résultat.
7 jours plus tard
Un zenith à 13h37 ! Avoue, t'as fait exprès ! :lol:
C'est pas mal ça, à voir. 🙂 (parce qu'avec tous mes conky, j'ai plus beaucoup de place sur mon bureau...:-P)
6 jours plus tard


Calendrier conky avec un script lua.
L'avantage du lua sur la ligne de commande habituelle est qu'on peut choisir la police que l'on veut, le calendrier est bien aligné.
Avec la commande classique, si la police n'est pas à chasse fixe, les chiffres ne sont pas bien alignés.
J'ai mis toutes les explications dans un fichier read_me dans le tarball.


Mise à jour du calendrier, surtout une simplification du code et une façon plus aisé de changer la police et les couleurs

==EDIT2==

Mise à jour, possibilité de choisir la taille de sa police, ce qui peut être intéressant avec des polices du type Space Age, qui a une largeur de fonte importantes.
Exemple avec la taille à 0.7


==EDIT3==

Mise à jour, j'ai enfin réussi à aligner les chiffres...
lien pour le téléchargement: http://sd-1.archive-host.com/membres/up/138795649635992281/calendrier-lua-6tar.gz
13 jours plus tard
Bonsoir, j'aimerai savoir si qlq'un possède le fichier conky.conf à l'emplacement suivant /etc/conky/ je tourne sous Fedora 11 avec laptop Asus X77vn
Chez moi le fichier conky.conf est à l'emplacement /usr/local/etc/conky/
# Conky, a system monitor, based on torsmo
#
# Any original torsmo code is licensed under the BSD license
#
# All code written since the fork of torsmo is licensed under the GPL
#
# Please see COPYING for details
#
# Copyright (c) 2004, Hannu Saransaari and Lauri Hakkarainen
# Copyright (c) 2005-2010 Brenden Matthews, Philip Kovacs, et. al. (see AUTHORS)
# All rights reserved.
#
# 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, either version 3 of the License, or
# (at your option) any later version.
#
# 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, see <http://www.gnu.org/licenses/>.
#

alignment top_left
background no
border_width 1
cpu_avg_samples 2
default_color white
default_outline_color white
default_shade_color white
draw_borders no
draw_graph_borders yes
draw_outline no
draw_shades no
use_xft yes
xftfont DejaVu Sans Mono:size=12
gap_x 5
gap_y 60
minimum_size 5 5
net_avg_samples 2
no_buffers yes
out_to_console no
out_to_stderr no
extra_newline no
own_window yes
own_window_class Conky
own_window_type desktop
stippled_borders 0
update_interval 1.0
uppercase no
use_spacer none
show_graph_scale no
show_graph_range no

TEXT
${scroll 16 $nodename - $sysname $kernel on $machine | }
$hr
${color grey}Uptime:$color $uptime
${color grey}Frequency (in MHz):$color $freq
${color grey}Frequency (in GHz):$color $freq_g
${color grey}RAM Usage:$color $mem/$memmax - $memperc% ${membar 4}
${color grey}Swap Usage:$color $swap/$swapmax - $swapperc% ${swapbar 4}
${color grey}CPU Usage:$color $cpu% ${cpubar 4}
${color grey}Processes:$color $processes  ${color grey}Running:$color $running_processes
$hr
${color grey}File systems:
 / $color${fs_used /}/${fs_size /} ${fs_bar 6 /}
${color grey}Networking:
Up:$color ${upspeed eth0} ${color grey} - Down:$color ${downspeed eth0}
$hr
${color grey}Name              PID   CPU%   MEM%
${color lightgrey} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${color lightgrey} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${color lightgrey} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
${color lightgrey} ${top name 4} ${top pid 4} ${top cpu 4} ${top mem 4}
Quelle distribution as-tu? D'autres personnes ont-elles ce fichier localisé à un endroit différent? Comment as-tu installé conky? Ligne de commande "yum install conky" ou autre? Possèdes-tu le fichier .conkyrc ? Je n'en possède aucun.
j'utilise Fedora 12, j'ai installé conky par yum install conky, puis ensuite par compilation, car certaines options ne sont pas activées par défaut dans la version de fedora.
Pour le .conkyrc je ne souviens plus si c'est moi qui l'ai créé (je le traine depuis la Fc5 dans mon home...).
Tu devrais lire un bon tutoriel sur comment installer et utiliser conky.( avec google tu devrai en trouver ...)
Si tu as des soucis n'hésites pas à nous poser tes question.
chepioq wrote:j'utilise Fedora 12, j'ai installé conky par yum install conky, puis ensuite par compilation, car certaines options ne sont pas activées par défaut dans la version de fedora.
Pour le .conkyrc je ne souviens plus si c'est moi qui l'ai créé (je le traine depuis la Fc5 dans mon home...).
Tu devrais lire un bon tutoriel sur comment installer et utiliser conky.( avec google tu devrai en trouver ...)
Si tu as des soucis n'hésites pas à nous poser tes question.
tu peux lancer cette commande en root:
find / -name conky.conf
je viens d'essayer sur mon desktop "Fedora 12" et ce fichier se trouve bien dans /etc/conky
Je me demande dès lors si tu n'as pas raison, il faut créer un .conkyrc dans son /home/user et paramétrer celui-ci afin qu'il prenne le dessus sur conky.conf
chez moi
[root@localhost ~]# find / -name conky.conf
/home/dominique/Téléchargement/conky-1.8.0/data/conky.conf
/usr/local/etc/conky/conky.conf
Mais tu n'es pas obligé de créer un .conkyrc, pour lancer un conky il suffit simplement de faire la commande conky -c suivi de l'emplacement ou est ton fichier de conky.
Par exemple dans ton cas cela serai
conky -c /etc/conky/conky.conf
Le fait d'avoir un dossier .conkyrc à l'avantage de regrouper tout tes conkyrc au même endroit (il doit en avoir une bonne quinzaine dans mon dossier).
Et tu les lances avec
conky -c ~/.conkyrc/conkyrc1
conky -c ~/.conkyrc/conkyrc2
etc...
Après c'est à toi de configurer ton conky pour qu'il te donne ce que tu désires, il y a pleins d'exemples sur le net.
14 jours plus tard
Salut les conkystador ^^

j'suis tombé sur ce fil par hasard, et ben je me suis fait un conky tiens !
s'en est un sans prétentions inspiré par le wiki puis par vous tous (pfff 12 pages lues quand même...), c'est un concentré de ce que j'ai trouvé de mieux ici-même.

sans plus attendre, le .conkyrc : (pour fedora13)
use_xft no
on_bottom yes
draw_shades no
update_interval 0.2
double_buffer yes
no_buffer yes
minimum_size 200 500
maximum_wipth 200 500
stippled_borders 4
border_margin 10
default_color #white
alignment top_right
gap_x 5
gap_y 35
cpu_avg_samples 2
net_avg_samples 2
use_spacer right
background yes
override_utf8_locale yes
own_window_type normal

own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager

TEXT
${color #FFFFFF}      $nodename - $sysname $kernel
$stippled_hr

${color #FFFFFF}Uptime:$color $uptime ${color #FFFFFF}- Load:$color $loadavg
${color #FFFFFF}Temperature process:${hwmon temp 1}C
${color #FFFFFF}Temperature disque: ${execi 10 hddtemp -n /dev/sda} C
${color #FFFFFF}Adaptateur:${color #FFFFFF}${acpiacadapter}
${color #FFFFFF}${tail /proc/acpi/battery/BAT0/state 3}
${color #FFFFFF}Batterie: ${color #FFFFFF}$battery${battery_bar BAT0}
$color$stippled_hr

${color #FFFFFF}Frequence CPU:$freq MHz
${color #FFFFFF}Usage CPU: $color$cpu%${cpubar}
${color #FFFFFF}Core 1:${cpu cpu1}% ${alignr}${cpubar cpu1 6,100}
${color #FFFFFF}Core 2:${cpu cpu2}% ${alignr}${cpubar cpu2 6,100}
${color #FFFFFF}Core 3:${cpu cpu3}% ${alignr}${cpubar cpu3 6,100}
${color #FFFFFF}Core 4:${cpu cpu4}% ${alignr}${cpubar cpu4 6,100}
${color #FFFFFF}Core 5:${cpu cpu5}% ${alignr}${cpubar cpu5 6,100}
${color #FFFFFF}Core 6:${cpu cpu6}% ${alignr}${cpubar cpu6 6,100}
${color #FFFFFF}Core 7:${cpu cpu7}% ${alignr}${cpubar cpu7 6,100}
${color #FFFFFF}Core 8:${cpu cpu8}% ${alignr}${cpubar cpu8 6,100}
$color$stippled_hr

${color #FFFFFF}Usage RAM:${color #FFFFFF} $mem / $memmax - $memperc% ${membar}
${color #FFFFFF}Usage Swap:${color #FFFFFF} $swap/ $swapmax - $swapperc%  ${swapbar}
${color #FFFFFF}Systeme fichier    ${color #FFFFFF}${fs_used /} / ${fs_size /}${alignr}${color #FFFFFF}${fs_bar 6,120 /}
${color #FFFFFF}Nemesis            ${color #FFFFFF}${fs_used /home} / ${fs_size /home}${alignr}${color #FFFFFF}${fs_bar 6,120 /home}
${color #FFFFFF}Temporaire         ${color #FFFFFF}${fs_used /usr/tmp} / ${fs_size /usr/tmp}${alignr}${color #FFFFFF}${fs_bar 6,120 /usr/tmp}
$color$stippled_hr

${color #FFFFFF}Processus:$color $processes ${color #FFFFFF}Running:$color ${color #FFFFFF} $running_processes
${color #FFFFFF}CPU usage${color #FFFFFF}             PID    CPU%   MEM%
${color #FFFFFF} ${top name 1}        ${color #FFFFFF}${top pid 1} ${top cpu 1} ${top mem 1}
${color #FFFFFF} ${top name 2}        ${color #FFFFFF}${top pid 2} ${top cpu 2} ${top mem 2}
${color #FFFFFF} ${top name 3}        ${color #FFFFFF}${top pid 3} ${top cpu 3} ${top mem 3}
${color #FFFFFF}Mem usage
${color #FFFFFF} ${top_mem name 1}        ${color #FFFFFF}${top_mem pid 1} ${top_mem cpu 1} ${top_mem mem 1}
${color #FFFFFF} ${top_mem name 2}        ${color #FFFFFF}${top_mem pid 2} ${top_mem cpu 2} ${top_mem mem 2}
${color #FFFFFF} ${top_mem name 3}        ${color #FFFFFF}${top_mem pid 3} ${top_mem cpu 3} ${top_mem mem 3}
$color$stippled_hr

${if_existing /proc/net/route eth0}${color #FFFFFF}Ethernet : $color${addr eth0}
${color #FFFFFF}Up:  ${upspeed eth0}/s TotalUp:$color${totalup eth0} $alignr${upspeedgraph eth0 6,60 ffffff ffffff}
${color #FFFFFF}Down:${downspeed eth0}/s TotalDown:$color${totaldown eth0} $alignr${downspeedgraph eth0 6,60 ffffff ffffff}
${color #FFFFFF}IP Locale:$color${addr eth0}$endif

${if_existing /proc/net/route wlan0 00000000}${color #FFFFFF}Wi-Fi : $color${wireless_bitrate wlan0}
${color #FFFFFF}Up:  ${upspeed wlan0}/s TotalUp:  $color${totalup wlan0}$alignr${upspeedgraph wlan0 6,60 ffffff ffffff}
${color #FFFFFF}Down:${downspeed wlan0}/s TotalDown:$color${totaldown wlan0}$alignr${downspeedgraph wlan0 6,60 ffffff ffffff}
${color #FFFFFF}SSID:$color${wireless_essid wlan0} Signal:${wireless_link_qual wlan0}%${color #FFFFFF}${wireless_link_bar wlan0}
${color #FFFFFF}MAC:$color${wireless_ap wlan0}
${color #FFFFFF}IP Locale:$color${addr wlan0}$endif
avec ça, c'est un ATH d'avion de chasse mon pc !
je suis conky ^^ (conquis)
pour montrer une capture d'écran, on héberge ou sa photo, y a des bons coin sympas ?

edit : conky mis à jour pour fedora13
Et bien voici mon premier conky, sobre, pas fini de travailler la couleur et les polices, (jamais commencé d'ailleurs)
toutes les infos utiles visibles en un coup d'oeil, fonctionnel, comme un cockpit d'avion.

EDIT : capture mise à jour avec le conky plus haut
4 mois plus tard
Salut à tous.

J'ai parcouru le "petit" sujet et je voulait participer en vous montrant ma réalisation.

Donc fond d'écran + conky + lua + tilda pour obtenir le tout.

Si certain veulent obtenir le tout, je posterai sur le forum (Tout est configurer pour passer sur un écran en 1366*768)

Joli bureau, avec les conky bien intégrés...
Dommage que la couleurs des textes dans tilda ne soit pas assortie.
Mais c'est peut être configurable?...
Sympa le bureau, j'adore tes indicateurs de régime des CPUs en forme de disque, se sont les même pour les avions de lignes biréacteurs sauf que c'est le régime des réacteurs 😉
Enfin bref, peux-tu poster le conky des CPUs s'il te plait ? :-D
Je post dés demain. Je n'est pas accés à mon pc pour le moment 🙂
Joli bureau, avec les conky bien intégrés...
Dommage que la couleurs des textes dans tilda ne soit pas assortie.
Mais c'est peut être configurable?...
Oui, c'est tout à fait paramétrable. Mais comme je ne l'affiche que quant je m'en sert ( elle peut se rendre invisible). Ce n'est pas gênant 🙂


Bonjour,
J'avais déjà posté ce conky (page 9 post#221), mais je me suis aperçu, au fil du temps, que cela ne m'affichai pas toujours les bonnes infos.
Je pense que cela est du au fait que le programme calendar date un peu et que la liste des saints n'est plus à jour.

Maintenant, je récupère directement les saints du jour à partir du site nominis.cef.fr, au format html, et après quelques transformations (merci Pikachu pour son aide), j'ai les bonne infos.

Script saint_du_jour.sh, qui récupère et transforme les données:
#!/bin/bash
wget http://nominis.cef.fr/ -O ~/.conkyrc/saint.html
iconv -f ISO-8859-1 -t UTF-8 ~/.conkyrc/saint.html -o ~/.conkyrc/saint1.html
cat ~/.conkyrc/saint1.html | sed -n '/Bonne/,/Saints/ {//d;p}' | sed -e :a -e 's/<[^>]*>//g;/</N;//ba' | sed '/^$/d' |sed "s/\([[:lower:]]\)\([[:upper:]]\)/\1 \2/g" | awk '{print $1}' | sed '$!N;s/\n/ /'| sed '$!N;s/\n/ /'
exit 0
Et le conkyrc qui va avec:
background no
font 6x10
use_xft yes
xftfont MgOpen Modata L:size=7:bold
#xftalpha 0.8
update_interval 3600
total_run_times 0
own_window yes
own_window_type normal
own_window_transparent yes
own_window_argb_visual yes
#own_window_colour SteelBlue4
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
double_buffer yes
minimum_size 350 40
draw_shades no
draw_outline no
draw_borders no
alignment top_right
gap_x 30
gap_y 222
no_buffers yes
uppercase no
cpu_avg_samples 2
net_avg_samples 2
override_utf8_locale yes
use_spacer right
text_buffer_size 1024


# Couleurs
color3 cf1c00 #rouge
color2 11B3F8 #bleu clair
color1 176e88 #bleu


TEXT
${font MgOpen Modata : pixelsize=12}${color1}Saints${font}
${color3}${voffset -5}${hr}
${color1}Aujourd'hui, bonne fête aux ${color2}${execp ~/.conkyrc/saint_du_jour.sh}

Le script utilise beaucoup de sed, et je pense qu'il n'est pas forcément optimisé, mais je n'ai pas pu (ou su) faire mieux...
Alors, voila les conkys que j'utilise (un conky par onglet).

D'abord la partie commune de tout mes conky
# Utiliser sa propre fenetre ?
own_window yes

# Type de fenetre : normal, desktop, dock ou override
own_window_type override

# Pseudo transparence (yes/no) et options: undecorated,below,above,sticky,skip_taskbar/pager
own_window_transparent yes
own_window_hints undecorated,below,skip_pager

# Utiliser Xft (polices lissées etc)
use_xft yes

# Police a utiliser : use_xft doit etre a "yes"
xftfont Veteran Typewriter:size=9
xftalpha 1

# Taux de raffraichissement de la fenetre (en secondes)
update_interval 1

# Nombres de rafraichissement avant fermeture : 0 pour infini
total_run_times 0

# Emplacement top_right ou tr, middle_right ou mr, bottom_right ou br. Donc: tl, tr, tm, bl, br, bm, ml, mr.
alignment top_left

# Couleurs par defaut
default_color grey
default_shade_color black
default_outline_color black

draw_shades no

#rouge
color1 C10206
#gris
color2 4A4A29



# Pour eviter le clignotement
double_buffer yes

# Soustraire les mémoires tampons de la mémoire utiliser ?
no_buffers yes

# Tout le texte en majuscule ?
uppercase no

# Pour affichier les caracteres speciaux
override_utf8_locale yes

# Fonctionne uniquement avec la police Monospace
use_spacer none

L'onglet general :
# Largeur maximum
maximum_width 426
# Taille minimum de la fenetre, largeur puis hauteur
minimum_size 426 76

# Ecart avec le bord: x= gauche/droit y= haut/bas
gap_x 154
gap_y 112

TEXT
${color2}$alignc$nodename - $sysname $kernel
${color2}Uptime:${color1} $uptime $alignr${color2}Charge:${color1} $loadavg
${color2}Threads : ${color1} $processes $alignr${color2}En cours : ${color1} $running_processes
${hr}
${color2}RAM :${color1}$mem/$memmax - $memperc% ${color1}${membar}
${color2}Swap :${color1}$swap/$swapmax - $swapperc% ${color1}${swapbar}
Onglet CPU :
# Largeur maximum
maximum_width 405
# Taille minimum de la fenetre, largeur puis hauteur
minimum_size 405 112
# Ecart avec le bord: x= gauche/droit y= haut/bas
gap_x 15
gap_y 456

# -- Lua Load -- #
lua_load ~/Documents/allDesktop/scripts/cpu/rings.lua
lua_draw_hook_pre ring_stats

TEXT
${voffset 12}${goto 20}${color2}Core 1 : ${color1}${cpu cpu1} %$alignr${cpugraph cpu1 20,330 B79C9B C10206}
${voffset 28}${goto 20}${color2}Core 1 : ${color1}${cpu cpu2} %$alignr${cpugraph cpu2 20,330 B79C9B C10206}
Onglet Horloge :
# Largeur maximum
maximum_width 1000
# Taille minimum de la fenetre, largeur puis hauteur
minimum_size 290 290

# Ecart avec le bord: x= gauche/droit y= haut/bas
gap_x 480
gap_y 200

# -- Lua Load -- #
lua_load ~/Documents/allDesktop/scripts/horloge/rings.lua
lua_draw_hook_pre ring_stats

TEXT
${voffset 65}${goto 90}${color1}${time %A %d %B %G}
${voffset 130}${goto 175}${color1}${time %T}
Onglet Reseau :
# Largeur maximum
maximum_width 428
# Taille minimum de la fenetre, largeur puis hauteur
minimum_size 428 126

# Ecart avec le bord: x= gauche/droit y= haut/bas
gap_x 780
gap_y 560

draw_graph_borders no

TEXT
${if_up wlan0}${color2}IP Locale : ${color1}${addr wlan0} $alignr${color2}IP Publique : ${color1}${execi 1800 
~/Documents/allDesktop/conky/ip.sh}
${color2}IP Passerelle : ${color1}$gw_ip $alignr${color2}Interface Passerelle : ${color1}$gw_iface
${color2}Download : ${color1}${alignc}${totaldown wlan0} $alignr${downspeed wlan0} k/s
${downspeedgraph wlan0 B79C9B C10206 650}
${color2}Upload : ${color1}${alignc}${totalup wlan0} $alignr${upspeed wlan0} k/s
${upspeedgraph wlan0 B79C9B C10206 100}$endif
Onglet Température :
# Largeur maximum
maximum_width 426
# Taille minimum de la fenetre, largeur puis hauteur
minimum_size 126 25

# Ecart avec le bord: x= gauche/droit y= haut/bas
gap_x 395
gap_y 709

TEXT
${color2}CPU : $alignr${color1}${acpitemp}C
${color2}Disque Dur : $alignr${color1}${exec hddtemp /dev/sda | awk '{ print $4}' | sed "s/"°"/""/g"}
Et voila, pour les scripts LUA, c'est les scripts bien connu qui permette de tracer des cercles. La police utilisé est trouvable sur dafont.
Si certains veulent s'amuser à modifier tout pour d'autre taille d'écran, je peux fournir le wallpaper en .xcf.

Voili voilou 🙂 Le plus chiant la dedans restant à bien disposer les conky pour coller avec le wallpaper :p
5 jours plus tard
Salut à tous, voici mon dernier conky (avec Lua)


(en grand c'est plus clair : http://pix.toile-libre.org/upload/original/1285252701.png )

le conky rc :
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

own_window false
own_window_type desktop
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 320 300
maximum_width 320
 
alignment top_left
gap_x 5
gap_y 450

draw_shades yes
default_shade_color 000000
draw_outline no
draw_borders no
draw_graph_borders no

use_xft yes
xftfont Sans:size=10
xftalpha 0.4

uppercase no

default_color 9B9B9B

#Rouge sombre
color1 671010

#Gris foncé
color2 1F1F1F

#Gris clair (defaut)
color3 9B9B9B

lua_load ~/.conky/conky_simple_hexagone.lua
lua_draw_hook_pre ring_stats

TEXT
${font Sans:size=10}${image ~/.conky/conky_bg.png -p 0,0 -f 86400} ${alignc}${color3}          ${cpu cpu2}% 
                          ${cpu cpu1}%${color1}${alignc}       CPU${alignr}${color3}${cpu cpu2}%                 
${alignc}${voffset -3}${color3}       ${cpugraph cpu0 20,80 671010 671010}
                 ${color3}$mem${alignr}${color3}$fs_used          
                      ${color1}RAM${alignr}${color1}HDD               
               ${color3}$memmax${alignr}${color3}$fs_size       
${voffset 5}
${alignc}      $kernel
${voffset -12}                
                      ${color1}${font Marlett:size=20}t${alignr}u${font Sans:size=10}  
                  ${voffset -10}${color3}${upspeedf eth0} k ${alignr}${downspeedf eth0} k          
                      ${voffset 0}${upspeedgraph eth0 10,30 671010 671010 -l}${color3}${alignr}${downspeedgraph eth0 10,30 671010 671010 -l}               
                 ${addr eth0}${alignr}${execi 1800 ~/.conky/.conky_ip_publique.sh}          


${alignc}${voffset -2}${time %d} ${font Sans:size=16}${voffset -4}${time %H:%M}${font Sans:size=10}${voffset -3} ${time %m}
le .lua
--[[
Ring Meters by londonali1010 (2009)

This script draws percentage meters as rings. It is fully customisable; all options are described in the 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/rings-v1.2.lua
    lua_draw_hook_pre ring_stats
    
Changelog:
+ v1.2 -- Added option for the ending angle of the rings (07.10.2009)
+ v1.1 -- Added options for the starting angle of the rings, and added the "max" variable, to allow for variables that output a numerical value rather than a percentage (29.09.2009)
+ v1.0 -- Original release (28.09.2009)
]]

settings_table = {
    {
        name='cpu',
        arg='cpu1',
        max=100,
        bg_colour=0x1F1F1F,
        bg_alpha=1,
        fg_colour=0x671010,
        fg_alpha=1,
        x=180, y=469,
        radius=60,
        thickness=5,
        start_angle=-90,
        end_angle=90
    },
    {
        name='cpu',
        arg='cpu2',
        max=100,
        bg_colour=0x1F1F1F,
        bg_alpha=1,
        fg_colour=0x671010,
        fg_alpha=1,
        x=180, y=469,
        radius=50,
        thickness=5,
        start_angle=-90,
        end_angle=90
    },
    {
        name='cpu',
        arg='cpu0',
        max=100,
        bg_colour=0x1F1F1F,
        bg_alpha=1,
        fg_colour=0x671010,
        fg_alpha=1,
        x=180, y=469,
        radius=20,
        thickness=21,
        start_angle=-90,
        end_angle=90
    },

    {
        name='time',
        arg='%I.%M',
        max=12,
        bg_colour=0x1F1F1F,
        bg_alpha=1,
        fg_colour=0x671010,
        fg_alpha=1,
        x=180, y=725,
        radius=17,
        thickness=34,
        start_angle=0,
        end_angle=360
    },
    {
        name='time',
        arg='%M',
        max=60,
        bg_colour=0x1F1F1F,
        bg_alpha=1,
        fg_colour=0x671010,
        fg_alpha=1,
        x=180, y=725,
        radius=44,
        thickness=15,
        start_angle=0,
        end_angle=360
    },
    {
        name='time',
        arg='%S',
        max=60,
        bg_colour=0x1F1F1F,
        bg_alpha=1,
        fg_colour=0x671010,
        fg_alpha=1,
        x=180, y=725,
        radius=55,
        thickness=3,
        start_angle=0,
        end_angle=360
    },
    {
        name='memperc',
        arg='',
        max=100,
        bg_colour=0x1F1F1F,
        bg_alpha=1,
        fg_colour=0x671010,
        fg_alpha=1,
        x=78, y=540,
        radius=55,
        thickness=5,
        start_angle=30,
        end_angle=210
    },
    {
        name='fs_free_perc',
        arg='/',
        max=100,
        bg_colour=0x671010,
        bg_alpha=1,
        fg_colour=0x1F1F1F,
        fg_alpha=1,
        x=281, y=540,
        radius=55,
        thickness=5,
        start_angle=150,
        end_angle=330
    },
    {
        name='upspeedf',
        arg='eth0',
        max=300,
        bg_colour=0x000000,
        bg_alpha=0.2,
        fg_colour=0x671010,
        fg_alpha=1,
        x=78, y=660,
        radius=55,
        thickness=5,
        start_angle=-30,
        end_angle=150
    },
    {
        name='downspeedf',
        arg='eth0',
        max=1000,
        bg_colour=0x000000,
        bg_alpha=0.2,
        fg_colour=0x671010,
        fg_alpha=1,
        x=281, y=660,
        radius=55,
        thickness=5,
        start_angle=210,
        end_angle=390
    },
}

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 conky_ring_stats()
    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

    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
end
le conky_ip_publique.sh (je ne me souvient plus où j'ai pompé la commande... sorry)
#!/bin/bash
# voir ip derriere routeur

wget http://checkip.dyndns.org/ -O - -o /dev/null | cut -d: -f 2 | cut -d\< -f 1 > ip
cat ip
et le fichier image qui sert de background sur conky : http://pix.toile-libre.org/upload/original/1285252883.png
PapsOu, ton bureau me fait penser à WipeOut Pulse, dans le genre futuriste...
Je connaissait que le nom de ce jeu. En fait, je me suis plus inspiré de Resonance Of Fate (le système de découverte des map avec des cellules énergétique en forme d'hexagone)
Le wallpaper je l'ai fait from scratch avec GIMP (mis à part le logo et le texte de Fedora). Ensuite je me suis cassé la tronche avec le conky + lua pour tout positionner au poil de fion près. J'ai mal aux yeux à force de coller mon pif sur lécran pour vérifier que tout est nickel :-D
13 jours plus tard
Voila enfin un conky basé sur le logo Fedora. voici le rendu sur mon bureau :




donc j'ai trois fichiers : le conkyrc « conky_fedora » :
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

own_window false
own_window_type desktop
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 250 250
maximum_width 250
 
alignment top_left
gap_x 100
gap_y 400

draw_shades yes
default_shade_color 000000
draw_outline no
draw_borders no
draw_graph_borders no

use_xft yes
xftfont LCDMono2:size=10
xftalpha 0.4

uppercase no

default_color 9B9B9B

#Rouge sombre
color1 671010

#Gris foncé
color2 1F1F1F

#Gris clair (defaut)
color3 9B9B9B

lua_load ~/.conky/conky_fedora/conky_fedora.lua
lua_load ~/.conky/conky_fedora/conky_fedora_text.lua

lua_draw_hook_pre main_rings
lua_draw_hook_post draw_text

TEXT
${image ~/.conky/conky_fedora/bg.png -p 0,0 -f 86400}
les anneaux lua (piqué l'original sur le forum Ubuntu-fr) « conky_fedora.lua » :
--[[ RINGS with SECTORS widget
    v1.0 by wlourf (08.08.2010)
    this widget draws a ring with differents effects 
    http://u-scripts.blogspot.com/2010/08/rings-sectors-widgets.html
    
To call the script in a conky, use, before TEXT
    lua_load /path/to/the/script/rings.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:
xc,yc        - coordinates of the center of the ring,
              default = middle of the conky window
radius        - external radius of the ring, in pixels,
              default = quarter of the width of the conky window
thickness    - thickness of the ring, in pixels, default = 10 pixels
start_angle    - starting angle of the ring, in degrees, value can be negative,
              default = 0 degree
end_angle    - ending angle of the ring, in degrees,
              value must be greater than start_angle, default = 360 degrees
sectors        - number of sectors in the ring, default = 10
gap_sectors - gap between two sectors, in pixels, default = 1 pixel
cap            - the way to close a sector, available values are
                "p" for parallel , default value 
                "r" for radial (follow the radius)
inverse_arc    - if set to true, arc will be anticlockwise, default=false
border_size    - size of the border, in pixels, default = 0 pixel i.e. no border
fill_sector    - if set to true, each sector will be completely filled,
              default=false, this parameter is inoperate if sectors=1
background    - if set to false, background will not be drawn, default=true
foreground    - if set to false, foreground will not be drawn, default=true

Colours tables below are defined into braces :
{position in the gradient (0 to 1), colour in hexadecimal, alpha (0 to 1)}
example for a single colour table : 
{{0,0xFFAA00,1}} position parameter doesn't matter
example for a two-colours table : 
{{0,0xFFAA00,1},{1,0x00AA00,1}} or {{0.5,0xFFAA00,1},{1,0x00AA00,1}}
example for a three-colours table : 
{{0,0xFFAA00,1},{0.5,0xFF0000,1},{1,0x00AA00,1}}

bg_colour1    - colour table for background,
              default = {{0,0x00ffff,0.1},{0.5,0x00FFFF,0.5},{1,0x00FFFF,0.1}}
fg_colour1    - colour table for foreground,
              default = {{0,0x00FF00,0.1},{0.5,0x00FF00,1},{1,0x00FF00,0.1}}
bd_colour1    - colour table for border,
              default = {{0,0xFFFF00,0.5},{0.5,0xFFFF00,1},{1,0xFFFF00,0.5}}              

Seconds tables for radials gradients :
bg_colour2    - second colour table for background, default = no second colour
fg_colour2    - second colour table for foreground, default = no second colour
bd_colour2    - second colour table for border, default = no second colour

v1.0 (08 Aug. 2010) original release

]]


require 'cairo'
function conky_main_rings()
-- START PARAMETERS HERE
rings_settings={

    {
    --seconds
    name="time",
    arg="%S",
    max=60,
    xc=162,
    yc=468,
    radius=25,
    thickness=5,
    start_angle=-115,
    end_angle=205,
    sectors=29,
    gap_sectors=1,
    fill_sector=true,
    bg_colour1={{0,0x000000,0.3},{0.5,0xFFFFFF,0.4}, {1,0x000000,0.3}},
    fg_colour1={{0,0X5E0000,0.1},{0.5,0xFFFFFF,0.5}, {1,0x5E0000,0.1}},
    fg_colour2={{0,0X5E0000,0.5},{0.5,0xE67373,1}, {1,0x5E0000,0.5}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },

    {
    --cpu0
    name="cpu",
    arg="cpu0",
    max=100,
    xc=171,
    yc=578,
    radius=47,
    thickness=6,
    start_angle=-150,
    end_angle=-3,
    sectors=10,
    inverse_arc=true,
    bg_colour1={{0,0x999999,0},{0.5,0x999999,1}, {1,0x999999,0}},
    fg_colour1={{0,0XFFFFFF,0},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,0}},
    fg_colour2={{0,0X5E0000,0},{0.5,0x5E0000,1}, {1,0x5E0000,0}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },

    {
    --cpu1
    name="cpu",
    arg="cpu1",
    max=100,
    xc=171,
    yc=578,
    radius=54,
    thickness=6,
    start_angle=-153,
    end_angle=-3,
    sectors=30,
    inverse_arc=true,
    bg_colour1={{0,0x999999,0},{0.5,0x999999,1}, {1,0x999999,0}},
    fg_colour1={{0,0XFFFFFF,0},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,0}},
    fg_colour2={{0,0X5E0000,0},{0.5,0x5E0000,1}, {1,0x5E0000,0}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },
    
    {
    --cpu2
    name="cpu",
    arg="cpu2",
    max=100,
    xc=171,
    yc=578,
    radius=40,
    thickness=6,
    start_angle=-150,
    end_angle=-3,
    sectors=20,
    inverse_arc=true,
    bg_colour1={{0,0x999999,0},{0.5,0x999999,1}, {1,0x999999,0}},
    fg_colour1={{0,0XFFFFFF,0},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,0}},
    fg_colour2={{0,0X5E0000,0},{0.5,0x5E0000,1}, {1,0x5E0000,0}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },

    {
    --ram
    name="memperc",
    arg="",
    max=100,
    xc=263,
    yc=488,
    radius=54,
    thickness=20,
    start_angle=25,
    end_angle=170,
    sectors=20,
    bg_colour1={{0,0x999999,0},{0.5,0x999999,1}, {1,0x999999,0}},
    fg_colour1={{0,0XFFFFFF,0},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,0}},
    fg_colour2={{0,0X5E0000,0},{0.5,0x5E0000,1}, {1,0x5E0000,0}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },
        
    {
    --right half ring 5 : download speed
    name="downspeedf",
    arg="eth0",
    max=1500,
    xc=171,
    yc=576,
    radius=60,
    thickness=28,
    start_angle=90,
    end_angle=180,
    sectors=20,
    fill_sector=true,
    gap_sectors=1,
    bg_colour1={{0,0x999999,0},{0.5,0x999999,1}, {1,0x111111,0.2}},
    fg_colour1={{0,0XE67373,0},{0.5,0x5E0000,1}, {1,0x5E0000,0.2}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },
    
    
    {
    --left half ring 5 : upload speed
    name="upspeedf",
    arg="eth0",
    max=400,
    xc=263,
    yc=490,
    radius=60,
    thickness=28,
    start_angle=270,
    end_angle=360,
    sectors=20,
    fill_sector=true,
    gap_sectors=1,
    bg_colour1={{0,0x111111,0.2},{0.5,0x999999,1}, {1,0x999999,0}},
    fg_colour1={{0,0X5E0000,0.2},{0.5,0x5E0000,1}, {1,0xE67373,0}},
    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    
et enfin le texte (via lua également) « conky_fedora_text.lua » :
--[[TEXT WIDGET v1.3 by Wlourf 25/06/2010
This widget can drawn texts set in the "text_settings" table with some parameters
http://u-scripts.blogspot.com/2010/06/text-widget.html

The parameters (all optionals) are :
text        - text to display, default = "Conky is good for you"
              use conky_parse to display conky value ie text=conly_parse("${cpu cpu1}")
            - coordinates below are relative to top left corner of the conky window
x           - x coordinate of first letter (bottom-left), default = center of conky window
y           - y coordinate of first letter (bottom-left), default = center of conky window
h_align        - horizontal alignement of text relative to point (x,y), default="l"
              available values are "l": left, "c" : center, "r" : right
v_align        - vertical alignment of text relative to point (x,y), default="b"
              available values "t" : top, "m" : middle, "b" : bottom
font_name   - name of font to use, default = Free Sans
font_size   - size of font to use, default = 14
italic      - display text in italic (true/false), default=false
oblique     - display text in oblique (true/false), default=false (I don' see the difference with italic!)
bold        - display text in bold (true/false), default=false
angle       - rotation of text in degrees, default = 0 (horizontal)
colour      - table of colours for text, default = plain white {{1,0xFFFFFF,1}}
              this table contains one or more tables with format {P,C,A}
              P=position of gradient (0 = beginning of text, 1= end of text)
              C=hexadecimal colour 
              A=alpha (opacity) of color (0=invisible,1=opacity 100%)
              Examples :
              for a plain color {{1,0x00FF00,0.5}}
              for a gradient with two colours {{0,0x00FF00,0.5},{1,0x000033,1}}
              or {{0.5,0x00FF00,1},{1,0x000033,1}} -with this one, gradient will start in the middle of the text
              for a gradient with three colours {{0,0x00FF00,0.5},{0.5,0x000033,1},{1,0x440033,1}}
              and so on ...
orientation    - in case of gradient, "orientation" defines the starting point of the gradient, default="ww"
              there are 8 available starting points : "nw","nn","ne","ee","se","ss","sw","ww"
              (n for north, w for west ...)
              theses 8 points are the 4 corners + the 4 middles of text's outline
              so a gradient "nn" will go from "nn" to "ss" (top to bottom, parallele to text)
              a gradient "nw" will go from "nw" to "se" (left-top corner to right-bottom corner)
radial        - define a radial gradient (if present at the same time as "orientation", "orientation" will have no effect)
              this parameter is a table with 6 numbers : {xa,ya,ra,xb,yb,rb}
              they define two circle for the gradient :
              xa, ya, xb and yb are relative to x and y values above
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
skew_x,skew_y    - skew text around x or y axis
              

Needs conky 1.8.0 

To call this script in the conkyrc, in before-TEXT section:
    lua_load /path/to/the/lua/script/text.lua
    lua_draw_hook_pre draw_text
 
v1.0    07/06/2010, Original release
v1.1    10/06/2010    Add "orientation" parameter
v1.2    15/06/2010  Add "h_align", "v_align" and "radial" parameters
v1.3    25/06/2010  Add "reflection_alpha", "reflection_length", "reflection_scale", 
                    "skew_x" et "skew_y"


]]
require 'cairo'

function conky_draw_text()
    --BEGIN OF PARAMETRES
    text_settings={

        {
            text=conky_parse("${time %H:%M}"),
            font_name="LCDMono2",
            font_size=18,
            h_align="c",
            bold=true,
            x=157,
            y=483,
            angle=-45,
            orientation="nn",
            colour={{0,0X5E0000,0.5},{0.5,0x5E0000,0.3}, {1,0x5E0000,0.5}},
        },
        
        {
            text=conky_parse("${cpu cpu0}"),
            font_name="LCDMono2",
            font_size=14,
            h_align="c",
            bold=true,
            angle=-45,
            x=123,
            y=634,
            colour={{0,0XE67373,0.5},{0.5,0xE67373,1}, {1,0xE67373,0.5}},
        },
        {
            text=conky_parse("${cpu cpu1}"),
            font_name="LCDMono2",
            font_size=12,
            h_align="c",
            bold=true,
            angle=-45,
            x=116,
            y=620,
            orientation="nn",
            colour={{0,0X5E0000,0.5},{0.5,0x5E0000,1}, {1,0x5E0000,0.5}},
        },

        {
            text=conky_parse("${cpu cpu2}"),
            font_name="LCDMono2",
            font_size=12,
            h_align="c",
            bold=true,
            angle=-45,
            x=134,
            y=642,
            orientation="nn",
            colour={{0,0X5E0000,0.5},{0.5,0x5E0000,1}, {1,0x5E0000,0.5}},
        },
        
        {
            text=conky_parse("$mem"),
            font_name="LCDMono2",
            font_size=14,
            h_align="c",
            bold=true,
            angle=-45,
            x=320,
            y=530,
            colour={{0,0X5E0000,0.5},{0.5,0x5E0000,1}, {1,0x5E0000,0.5}},
        },    

        {
            text="u",
            font_name="Marlett",
            font_size=26,
            h_align="c",
            bold=true,
            x=157,
            y=635,
            colour={{0,0XE67373,0.5},{0.5,0xE67373,1}, {1,0xE67373,0.5}},
        },

        {
            text=conky_parse("${downspeedf eth0} k"),
            font_name="LCDMono2",
            font_size=14,
            h_align="c",
            bold=true,
            x=225,
            y=626,
            angle=-45,
            colour={{0,0XE67373,0.5},{0.5,0xE67373,1}, {1,0xE67373,0.5}},
        },
        {
            text="t",
            font_name="Marlett",
            font_size=26,
            h_align="c",
            bold=true,
            x=270,
            y=458,
            colour={{0,0XE67373,0.5},{0.5,0xE67373,1}, {1,0xE67373,0.5}},
        },

        {
            text=conky_parse("${upspeedf eth0} k"),
            font_name="LCDMono2",
            font_size=14,
            h_align="r",
            bold=true,
            x=245,
            y=416,
            angle=-45,
            colour={{0,0X5E0000,0.5},{0.5,0x5E0000,1}, {1,0x5E0000,0.5}},
        },

        {
            text=conky_parse("$uptime"),
            font_name="LCDMono2",
            font_size=14,
            h_align="r",
            bold=true,
            x=255,
            y=539,
            colour={{0,0X5E0000,0.5},{0.5,0x5E0000,1}, {1,0x5E0000,0.5}},
        },    
    }
    
 
           
    
    
--------------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
Bon pour changer les couleurs, à part du rechercher/remplacer + modif de l' image d'arrière plan, ça risque d'être un peu long :-D
pfiou Papsou on t'arrête plus avec lua !! super intégration en tout cas bravo !
MErci ! J'ai un peu de temps libre au boulot, donc je m'occupe :-P
@PapsOu
C'est très bien fait et bien intégré au bureau...
Tu vas dire que je chipote, mais n'y aurait-il pas un moyen d'avoir les chiffres qui épousent les formes du logo?
chepioq wrote:@PapsOu
C'est très bien fait et bien intégré au bureau...
Tu vas dire que je chipote, mais n'y aurait-il pas un moyen d'avoir les chiffres qui épousent les formes du logo?
Bah écoute, c'était à la base ma première idée, j'ai essayé "skew_x,skew_y" mais le résultat n'était pas au rendez-vous (étant donné que ça veut dire "pencher").

En tout cas ce doit être très certainement possible, seulement je ne sais pas comment le faire.

Je chercherai à l'occasion, histoire de peaufiner ce petit conky.

Si quelqu'un à ce petit tuyau, je suis preneur :-P
7 jours plus tard
@PapsOu
Pour le texte en courbe, j'ai trouvé ici: http://crunchbanglinux.org/forums/post/55708/#p55708 post 892.
Tel quel, il fonctionne avec une erreur, je te met la version qui fonctionne sans problème:
--[[circlewriting by mrpeachy (2010)]]
require 'cairo'
function addzero100(num)
if num==nil then num=0 end
if tonumber(num) < 10 then
return "00" .. num
elseif tonumber(num) <100 then
return "0" .. num
else
return num
end
end
function string:split(delimiter)
local result = { }
local from  = 1
local delim_from, delim_to = string.find( self, delimiter, from  )
while delim_from do
table.insert( result, string.sub( self, from , delim_from-1 ) )
from  = delim_to + 1
delim_from, delim_to = string.find( self, delimiter, from  )
end
table.insert( result, string.sub( self, from  ) )
return result
end
function circlewriting(cr, text, font, fsize, radi, horiz, verti, tred, tgreen, tblue, talpha, start, finish, var1)
local inum=string.len(text)
range=finish
deg=(finish-start)/(inum-1)
degrads=1*(math.pi/180)
local textcut=string.gsub(text, ".", "%1@@@")
texttable=string.split(textcut, "@@@")
for i = 1,inum do
ival=i
interval=(degrads*(start+(deg*(i-1))))+var1
interval2=degrads*(start+(deg*(i-1)))
txs=0+radi*(math.sin(interval))
tys=0-radi*(math.cos(interval))
cairo_select_font_face (cr, font, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
cairo_set_font_size (cr, fsize);
cairo_set_source_rgba (cr, tred, tgreen, tblue, talpha);
cairo_move_to (cr, txs+horiz, tys+verti);
cairo_rotate (cr, interval2)
cairo_show_text (cr, (texttable[i]))
cairo_rotate (cr, -interval2)
end
end
function circlewritingdown(cr, text, font, fsize, radi, horiz, verti, tred, tgreen, tblue, talpha, start, finish, var1)
local inum=string.len(text)
deg=(start-finish)/(inum-1)
degrads=1*(math.pi/180)
local textcut=string.gsub(text, ".", "%1@@@")
texttable=string.split(textcut, "@@@")
for i = 1,inum do
ival=i
interval=(degrads*(start-(deg*(i-1))))+var1
interval2=degrads*(start-(deg*(i-1)))
txs=0+radi*(math.sin(interval))
tys=0-radi*(math.cos(interval))
cairo_select_font_face (cr, font, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
cairo_set_font_size (cr, fsize);
cairo_set_source_rgba (cr, tred, tgreen, tblue, talpha);
cairo_move_to (cr, txs+horiz, tys+verti);
cairo_rotate (cr, interval2+(180*math.pi/180))
cairo_show_text (cr, (texttable[i]))
cairo_rotate (cr, -interval2-(180*math.pi/180))
end
end
function conky_draw_text()
local updates=conky_parse('${updates}')
update_num=tonumber(updates)
if update_num > 5 then
if conky_window==nil then return end
local w=conky_window.width
local h=conky_window.height
local cs=cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, w, h)
cr=cairo_create(cs)



--circlewriting variable
cpu=tonumber(conky_parse('${cpu}'))
--text must be in quotes
text=("CPU " .. (addzero100(cpu)) .. "%") 
--font name must be in quotes
font="White Rabbit"
fontsize=18
radius=80
positionx=100
positiony=150
colorred=1
colorgreen=1
colorblue=1
coloralpha=1
--to set start and finish values for circlewriting, if the text will cross 0 degrees then you must calculate for 360+finish degrees
--eg if you want to go from 270 to 90, then you will input 270 to 450.  Finish has to be greater than start.
start=0
finish=120
letterposition=0
circlewriting(cr, text, font, fontsize, radius, positionx, positiony, colorred, colorgreen, colorblue, coloralpha, start, finish, letterposition)

--circlewritingdown variables
mem=tonumber(conky_parse('${memperc}'))
--text must be in quotes
text=("MEMORY " .. (addzero100(mem)) .. "%")
--font name must be in quotes
font="White Rabbit"
fontsize=18
radius=90
positionx=230
positiony=270
colorred=1
colorgreen=1
colorblue=1
coloralpha=1
--to set start and finish values for circlewritingdown, if the text will cross 0 degrees then you must calculate for 0-finish degrees
--eg if you want to go from 90 to 270, then you will input 90 to -90.  Start has to be greater than finish
start=300
finish=180
letterposition=0
circlewritingdown(cr, text, font, fontsize, radius, positionx, positiony, colorred, colorgreen, colorblue, coloralpha, start, finish, letterposition)

--circlewritingdown variable
hdd=tonumber(conky_parse('${fs_used_perc /}'))
--text must be in quotes
text=("FILESYS " .. (addzero100(hdd)) .. "%") 
--font name must be in quotes
font="White Rabbit"
fontsize=18
radius=80
positionx=260
positiony=280
colorred=1
colorgreen=1
colorblue=1
coloralpha=1
--to set start and finish values for circlewritingdown, if the text will cross 0 degrees then you must calculate for 0-finish degrees
--eg if you want to go from 90 to 270, then you will input 90 to -90.  Start has to be greater than finish
start=180
finish=0
letterposition=0.06
circlewritingdown(cr, text, font, fontsize, radius, positionx, positiony, colorred, colorgreen, colorblue, coloralpha, start, finish, letterposition)

--circlewriting variables
swap=tonumber(conky_parse('${swapperc}'))
--text must be in quotes
text=("SWAP " .. (addzero100(swap)) .. "% ") 
--font name must be in quotes
font="White Rabbit"
fontsize=18
radius=60
positionx=105
positiony=130
colorred=1
colorgreen=1
colorblue=1
coloralpha=1
--to set start and finish values for circlewriting, if the text will cross 0 degrees then you must calculate for 360+finish degrees
--eg if you want to go from 270 to 90, then you will input 270 to 450.  Finish has to be greater than start.
start=200
finish=340
letterposition=0
circlewriting(cr, text, font, fontsize, radius, positionx, positiony, colorred, colorgreen, colorblue, coloralpha, start, finish, letterposition)


end
end

Je ne sais pas si tu pourra l'intégrer à ton script lua, mais cela ne devrai pas trop poser de soucis...
Ah super merci, c'est ce qu'il me fallait. Maintenant reste à savoir comment charger plus de deux fichiers .lua. Ou sinon je vais me casser la tronche à merger les deux main function, mais c'est pas gagné. Je regarde ça de plus près dans la semaine

Un grand merci à toi chepioq !
Merci pour la technique. Seulement, je vais devoir me creuser le crane pour faire fonctionner les trois script en parallèle (j'ai une erreur : attempt to call a nil value) bref, je crois que les script entrent en conflit.

Je vais tenter, dans un premier temps de bien comprendre le code pour le texte courbé, et ensuite essayer de l'intégrer au lua texte que j'utilise actuellement (voir mon post #292).

Aller hop, au boulot !

Merci encore chepioq !
Bon du coup j'ai réussi à modifier un peu les script de texte courbé, seulement le rendu n'est pas au rendez-vous, ça ne me plait pas trop. Je garderai donc cette version :


Quand il me restera un peu de temps libre, je ferai une même version mais avec les bleus officiels de Fedora
6 jours plus tard
Bon, comme prévu, voici la version bleu façon Fedora de ce même conky.



L'image de fond (le logo Fedora) :
Les trois scripts :

le conky_fedora (le conkyrc en gros) :
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

own_window false
own_window_type desktop
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 250 250
maximum_width 250
 
alignment top_left
gap_x 100
gap_y 370

draw_shades yes
default_shade_color 000000
draw_outline no
draw_borders no
draw_graph_borders no

use_xft yes
xftfont LCDMono2:size=10
xftalpha 0.4

lua_load ~/.conky/conky_fedora/conky_fedora_bleu.lua
lua_load ~/.conky/conky_fedora/conky_fedora_text_bleu.lua

lua_draw_hook_pre main_rings
lua_draw_hook_post draw_text

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

    {
    --seconds
    name="time",
    arg="%S",
    max=60,
    xc=262,
    yc=458,
    radius=28,
    thickness=5,
    start_angle=-115,
    end_angle=205,
    sectors=29,
    gap_sectors=1,
    fill_sector=true,
    bg_colour1={{0,0x000000,0},{0.5,0x000000,0.1}, {1,0x000000,0}},
    fg_colour1={{0,0X294172,0.3},{0.5,0xFFFFFF,0.7}, {1,0x294172,0.3}},
    fg_colour2={{0,0X294172,0.4},{0.5,0x294172,0.7}, {1,0x294172,0.4}},
    bd_colour1={{0,0X000000,1},{0.5,0x000000,1}, {1,0x000000,1}},
    },

    {
    --cpu0
    name="cpu",
    arg="cpu0",
    max=100,
    xc=171,
    yc=548,
    radius=46,
    thickness=4,
    start_angle=-150,
    end_angle=-3,
    sectors=8,
    inverse_arc=true,
    bg_colour1={{0,0x000000,0.2},{0.5,0x000000,0.2}, {1,0x000000,0.2}},
    fg_colour1={{0,0XFFFFFF,0.7},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,0.7}},
    fg_colour2={{0,0X294172,0.7},{0.5,0x294172,1}, {1,0x294172,0.7}},
    bd_colour1={{0,0X000000,1},{0.5,0x000000,1}, {1,0x000000,1}},
    },

    {
    --cpu1
    name="cpu",
    arg="cpu1",
    max=100,
    xc=171,
    yc=548,
    radius=57,
    thickness=10,
    start_angle=-150,
    end_angle=-3,
    sectors=16,
    inverse_arc=true,
    bg_colour1={{0,0x000000,0.2},{0.5,0x000000,0.1}, {1,0x000000,0}},
    fg_colour1={{0,0XFFFFFF,0.7},{0.5,0xFFFFFF,0.5}, {1,0xFFFFFF,0.1}},
    fg_colour2={{0,0X294172,0.7},{0.5,0x294172,1}, {1,0x294172,0.5}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },
    
    {
    --cpu2
    name="cpu",
    arg="cpu2",
    max=100,
    xc=171,
    yc=548,
    radius=41,
    thickness=10,
    start_angle=-150,
    end_angle=-3,
    sectors=16,
    inverse_arc=true,
    bg_colour1={{0,0x000000,0},{0.5,0x000000,0.1}, {1,0x000000,0.2}},
    fg_colour1={{0,0XFFFFFF,0.1},{0.5,0xFFFFFF,0.5}, {1,0xFFFFFF,0.7}},
    fg_colour2={{0,0X294172,0.5},{0.5,0x294172,1}, {1,0x294172,0.7}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },

    {
    --ram
    name="memperc",
    arg="",
    max=100,
    xc=263,
    yc=459,
    radius=43,
    thickness=12,
    start_angle=30,
    end_angle=177,
    sectors=20,
    inverse_arc=true,
    bg_colour1={{0,0x000000,0},{0.5,0x000000,0.1}, {1,0x000000,0.2}},
    fg_colour1={{0,0XFFFFFF,0.1},{0.5,0xFFFFFF,0.5}, {1,0xFFFFFF,0.7}},
    fg_colour2={{0,0X294172,0.1},{0.5,0x294172,0.7}, {1,0x294172,1}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },

    {
    --fs_used
    name="fs_used_perc",
    arg="/",
    max=100,
    xc=263,
    yc=459,
    radius=56,
    thickness=12,
    start_angle=30,
    end_angle=177,
    sectors=20,
    inverse_arc=true,
    bg_colour1={{0,0x000000,0.2},{0.5,0x000000,0.1}, {1,0x000000,0}},
    fg_colour1={{0,0XFFFFFF,0.7},{0.5,0xFFFFFF,0.5}, {1,0xFFFFFF,0.1}},
    fg_colour2={{0,0X294172,1},{0.5,0x294172,0.7}, {1,0x294172,0.3}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },
        
    {
    --download speed
    name="downspeedf",
    arg="eth0",
    max=1500,
    xc=171,
    yc=546,
    radius=60,
    thickness=28,
    start_angle=90,
    end_angle=180,
    sectors=20,
    fill_sector=true,
    gap_sectors=1,
    bg_colour1={{0,0x000000,0},{0.5,0x333333,0.5}, {1,0x111111,0.2}},
    fg_colour1={{0,0X294172,0},{0.5,0x294172,1}, {1,0x294172,0.2}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },
    
    
    {
    --upload speed
    name="upspeedf",
    arg="eth0",
    max=400,
    xc=263,
    yc=460,
    radius=60,
    thickness=28,
    start_angle=270,
    end_angle=360,
    sectors=20,
    fill_sector=true,
    gap_sectors=1,
    bg_colour1={{0,0x111111,0.2},{0.5,0x333333,0.5}, {1,0x000000,0}},
    fg_colour1={{0,0X294172,0.2},{0.5,0x294172,1}, {1,0x294172,0}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },

    {
    --Top cpu 1
    name="top cpu",
    arg="1",
    max=100,
    xc=226,
    yc=496,
    radius=138,
    thickness=11,
    start_angle=-90,
    end_angle=-45,
    sectors=25,
    inverse_arc=false,
    bg_colour1={{0,0x000000,0},{0.5,0x000000,0}, {1,0x000000,0}},
    fg_colour1={{0,0XFFFFFF,0.7},{0.5,0xFFFFFF,0.5}, {1,0xFFFFFF,0.3}},
    fg_colour2={{0,0X294172,0.7},{0.5,0x294172,0.5}, {1,0x294172,0.3}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },

    {
    --Top cpu 2
    name="top cpu",
    arg="2",
    max=100,
    xc=226,
    yc=496,
    radius=149,
    thickness=11,
    start_angle=-90,
    end_angle=-45,
    sectors=25,
    inverse_arc=false,
    bg_colour1={{0,0x000000,0},{0.5,0x000000,0}, {1,0x000000,0}},
    fg_colour1={{0,0XFFFFFF,0.6},{0.5,0xFFFFFF,0.4}, {1,0xFFFFFF,0.2}},
    fg_colour2={{0,0X294172,0.6},{0.5,0x294172,0.4}, {1,0x294172,0.2}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },
    
    {
    --Top cpu 3
    name="top cpu",
    arg="3",
    max=100,
    xc=226,
    yc=496,
    radius=160,
    thickness=11,
    start_angle=-90,
    end_angle=-45,
    sectors=25,
    inverse_arc=false,
    bg_colour1={{0,0x000000,0},{0.5,0x000000,0}, {1,0x000000,0}},
    fg_colour1={{0,0XFFFFFF,0.4},{0.5,0xFFFFFF,0.2}, {1,0xFFFFFF,0}},
    fg_colour2={{0,0X294172,0.4},{0.5,0x294172,0.2}, {1,0x294172,0}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },

    {
    --Top mem 1
    name="top mem",
    arg="1",
    max=100,
    xc=125,
    yc=596,
    radius=35,
    thickness=11,
    start_angle=-90,
    end_angle=-180,
    sectors=8,
    inverse_arc=true,
    bg_colour1={{0,0x000000,0},{0.5,0x000000,0}, {1,0x000000,0}},
    fg_colour1={{0,0XFFFFFF,0.7},{0.5,0xFFFFFF,0.5}, {1,0xFFFFFF,0.3}},
    fg_colour2={{0,0X294172,0.7},{0.5,0x294172,0.5}, {1,0x294172,0.3}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },

    {
    --Top mem 2
    name="top mem",
    arg="2",
    max=100,
    xc=125,
    yc=596,
    radius=46,
    thickness=11,
    start_angle=-90,
    end_angle=-180,
    sectors=8,
    inverse_arc=true,
    bg_colour1={{0,0x000000,0},{0.5,0x000000,0}, {1,0x000000,0}},
    fg_colour1={{0,0XFFFFFF,0.6},{0.5,0xFFFFFF,0.4}, {1,0xFFFFFF,0.2}},
    fg_colour2={{0,0X294172,0.6},{0.5,0x294172,0.4}, {1,0x294172,0.2}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },
    
    {
    --Top mem 3
    name="top mem",
    arg="3",
    max=100,
    xc=125,
    yc=596,
    radius=57,
    thickness=11,
    start_angle=-90,
    end_angle=-180,
    sectors=8,
    inverse_arc=true,
    bg_colour1={{0,0x000000,0},{0.5,0x000000,0}, {1,0x000000,0}},
    fg_colour1={{0,0XFFFFFF,0.4},{0.5,0xFFFFFF,0.2}, {1,0xFFFFFF,0}},
    fg_colour2={{0,0X294172,0.4},{0.5,0x294172,0.2}, {1,0x294172,0}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },

    {
    --Battery
    name="battery_percent",
    arg="",
    max=100,
    xc=225,
    yc=495,
    radius=157,
    thickness=32,
    start_angle=-45,
    end_angle=180,
    sectors=100,
    inverse_arc=true,
    bg_colour1={{0,0XFFFFFF,0.7},{0.5,0xFFFFFF,0.4}, {1,0xFFFFFF,0}},
    fg_colour2={{0,0X294172,0.7},{0.5,0x294172,0.4}, {1,0x294172,0}},
    fg_colour1={{0,0X294172,0.7},{0.5,0x294172,0.4}, {1,0x294172,0}},
    bd_colour1={{0,0X00FF00,0.3},{0.5,0x00FF00,0.2}, {1,0x00FF00,0}},
    },
}
--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
et conky_fedora_text_bleu.lua (les valeurs textuelles):

Vous aurez besoin des polices StyleBats, LCDMono2 et OpenLogos (disponibles sur DaFont)
require 'cairo'
function conky_draw_text()
    --BEGIN OF PARAMETRES
    text_settings={


        {
            text="B",
            font_name="StyleBats",
            font_size=40,
            h_align="c",
            orientation="ww",
            angle=-90,
            x=185,
            y=551,
            colour={{0,0X3C6EB4,0.1},{0.5,0x3C6EB4,0.3}, {1,0x3C6EB4,0.5}},
        },

        {
            text=conky_parse("${time %d}   ${time %m}"),
            font_name="LCDMono2",
            font_size=12,
            h_align="l",
            x=166,
            y=561,
            angle=-45,
            orientation="nn",
            colour={{0,0XFFFFFF,0.5},{0.5,0xFFFFFF,0.3}, {1,0x3C6EB4,0.5}},
        },

        {
            text=conky_parse("${time %H:%M}"),
            font_name="LCDMono2",
            font_size=18,
            h_align="c",
            bold=true,
            x=260,
            y=470,
            angle=-45,
            orientation="nn",
            colour={{0,0XFFFFFF,0.5},{0.5,0xFFFFFF,0.3}, {1,0x3C6EB4,0.5}},
        },
        
        {
            text=conky_parse("${cpu cpu0}"),
            font_name="LCDMono2",
            font_size=10,
            h_align="r",
            bold=true,
            x=182,
            y=508,
            colour={{0,0X294172,0.5},{0.5,0x294172,1}, {1,0x294172,0.5}},
        },

        {
            text=conky_parse("${cpu cpu1}"),
            font_name="LCDMono2",
            font_size=10,
            h_align="r",
            bold=true,
            x=206,
            y=503,
            orientation="nn",
            colour={{0,0X294172,0.5},{0.5,0x294172,1}, {1,0x294172,0.5}},
        },

        {
            text=conky_parse("${cpu cpu2}"),
            font_name="LCDMono2",
            font_size=10,
            h_align="r",
            bold=true,
            x=206,
            y=512,
            orientation="nn",
            colour={{0,0X294172,0.5},{0.5,0x294172,1}, {1,0x294172,0.5}},
        },    

        {
            text="D",
            font_name="StyleBats",
            font_size=28,
            h_align="c",
            x=187,
            y=515,
            orientation="nn",
            colour={{0,0X3C6EB4,0.5},{0.5,0x3C6EB4,1}, {1,0x3C6EB4,0.5}},
        },    

        {
            text=conky_parse("$memperc"),
            font_name="LCDMono2",
            font_size=10,
            h_align="r",
            bold=true,
            orientation="nn",
            x=248,
            y=499,
            colour={{0,0X294172,0.5},{0.5,0x294172,1}, {1,0x294172,0.5}},
        },

        {
            text=conky_parse("$fs_used_perc"),
            font_name="LCDMono2",
            font_size=10,
            h_align="r",
            bold=true,
            orientation="nn",
            x=248,
            y=516,
            colour={{0,0X294172,0.5},{0.5,0x294172,1}, {1,0x294172,0.5}},
        },

        {
            text="W",
            font_name="StyleBats",
            font_size=26,
            h_align="c",
            x=240,
            y=503,
            angle=90,
            orientation="nn",
            colour={{0,0X3C6EB4,0.5},{0.5,0x3C6EB4,1}, {1,0x3C6EB4,0.5}},
        },

        {
            text="R",
            font_name="StyleBats",
            font_size=22,
            h_align="c",
            angle=90,
            x=150,
            y=595,
            colour={{0,0X3C6EB4,0.5},{0.5,0x3C6EB4,1}, {1,0x3C6EB4,0.5}},
        },

        {
            text=conky_parse("${downspeedf eth0}"),
            font_name="LCDMono2",
            font_size=14,
            h_align="l",
            bold=true,
            x=222,
            y=544,
            angle=-90,
            colour={{0,0X294172,0.5},{0.5,0x294172,1}, {1,0x294172,0.5}},
        },

        {
            text="R",
            font_name="StyleBats",
            font_size=22,
            h_align="c",
            angle=-90,
            x=284,
            y=411,
            colour={{0,0X3C6EB4,0.5},{0.5,0x3C6EB4,1}, {1,0x3C6EB4,0.5}},
        },

        {
            text=conky_parse("${upspeedf eth0}"),
            font_name="LCDMono2",
            font_size=14,
            h_align="r",
            bold=true,
            x=223,
            y=462,
            angle=-90,
            colour={{0,0X294172,0.5},{0.5,0x294172,1}, {1,0x294172,0.5}},
        },

        {
            text=conky_parse("$uptime"),
            font_name="LCDMono2",
            font_size=14,
            h_align="c",
            bold=true,
            orientation="nn",
            angle=-45,
            x=290,
            y=570,
            colour={{0,0XAAAAAA,0.2},{0.5,0xCCCCCC,0.5}, {1,0xAAAAAA,0.2}},
        },    

        {
            text=conky_parse("$kernel"),
            font_name="LCDMono2",
            font_size=12,
            h_align="c",
            bold=true,
            orientation="nn",
            angle=-45,
            x=280,
            y=550,
            colour={{0,0XAAAAAA,0.2},{0.5,0xCCCCCC,0.5}, {1,0xAAAAAA,0.2}},
        },    


        {
            text="t",
            font_name="OpenLogos",
            font_size=90,
            h_align="c",
            v_align="m",
            x=155,
            y=445,
            angle=-45,
            orientation="nn",
            colour={{0,0X294172,0.1},{0.5,0x294172,0.1}, {1,0x294172,0.1}},
        },

        {
            text=conky_parse("${top name 1}"),
            font_name="LCDMono2",
            font_size=12,
            h_align="r",
            bold=true,
            orientation="nn",
            angle=-90,
            x=100,
            y=500,
            colour={{0,0X294172,0.3},{0.5,0x294172,0.5}, {1,0x294172,0.3}},
        },    

        {
            text=conky_parse("${top name 2}"),
            font_name="LCDMono2",
            font_size=12,
            h_align="r",
            bold=true,
            orientation="nn",
            angle=-90,
            x=89,
            y=500,
            colour={{0,0X6C86AD,0.4},{0.5,0x6C86AD,0.6}, {1,0x6C86AD,0.4}},
        },    

        {
            text=conky_parse("${top name 3}"),
            font_name="LCDMono2",
            font_size=12,
            h_align="r",
            bold=true,
            orientation="nn",
            angle=-90,
            x=78,
            y=500,
            colour={{0,0XFFFFFF,0.2},{0.5,0xFFFFFF,0.5}, {1,0xFFFFFF,0.2}},
        },

        {
            text=conky_parse("${battery_time}"),
            font_name="LCDMono2",
            font_size=14,
            h_align="c",
            bold=true,
            orientation="nn",
            angle=0,
            x=175,
            y=640,
            colour={{0,0XFFFFFF,0.1},{0.5,0xFFFFFF,0.3}, {1,0xFFFFFF,0.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
[edit] Petit changement de couleur pour les jauges CPU TOP{1 à 3} RAM BATTERY et FS_USED
Mec, je ne sais pas comment tu as fait ça… Mais bravo en tout cas, c'est très beau et très bien fait, trop bien fait ! Jamais je n'aurais pensé cela possible… Je vais l'adopter je le sens, c'est trop beau.
Renault wrote:Mec, je ne sais pas comment tu as fait ça… Mais bravo en tout cas, c'est très beau et très bien fait, trop bien fait ! Jamais je n'aurais pensé cela possible… Je vais l'adopter je le sens, c'est trop beau.
Merci des compliments ! Ne pas oublier qu'il faut conky v1.8 (donc le compiler sois-même pour que les scripts lua fonctionnent)

J'ai réussi à faire ça en tâtonnant, en bidouillant les paramètres de configuration des anneaux. Et chaque jour, je modifie des détails (j'ai pas encore mis à jour le post, mais ça ne saurai tarder)

Maintenant pour rigoler, faudrai que je fasse pareil pour les logos des autres distro (genre Ubuntu, Arch, Debian) se serai sympa.
4 jours plus tard
Comme prévu, la dernière mise à jour de ce conky. Au taf, ça donne ça avec le wallpaper de F14 (mais sous F12...)


Donc le background :
Vous pouvez toujours garder la précédente version (sans l'extension bleu_transparente)

le conky_rc :
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

own_window false
own_window_type desktop
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 250 250
maximum_width 250
 
alignment top_left
gap_x 1100
gap_y 500

draw_shades yes
default_shade_color 000000
draw_outline no
draw_borders no
draw_graph_borders no

use_xft yes
xftfont LCDMono2:size=10
xftalpha 0.4

lua_load ~/.conky/conky_fedora/conky_fedora_bleu.lua
lua_load ~/.conky/conky_fedora/conky_fedora_text_bleu.lua

lua_draw_hook_pre main_rings
lua_draw_hook_post draw_text

TEXT
${image ~/.conky/conky_fedora/bg_bleu.png -p 0,0 -f 86400}
le script lua pour les anneaux (j'ai remis la paternité histoire d'être « propre ») :
--[[ RINGS with SECTORS widget
    v1.0 by wlourf (08.08.2010)
    this widget draws a ring with differents effects 
    http://u-scripts.blogspot.com/2010/08/rings-sectors-widgets.html
    v1.0 (08 Aug. 2010) original release
]]
require 'cairo'
function conky_main_rings()
-- START PARAMETERS HERE
    
    --Gap conky window
    gap_conky_x=1100
    gap_conky_y=500

rings_settings={

    {
    --seconds
    name="time",
    arg="%S",
    max=60,
    xc=196,
    yc=88,
    radius=27,
    thickness=10,
    start_angle=-115,
    end_angle=205,
    sectors=30,
    gap_sectors=2,
    fill_sector=true,
    bg_colour1={{0,0x000000,0},{0.5,0x000000,0.1}, {1,0x000000,0}},
    fg_colour1={{0,0XFFFFFF,0},{0.7,0xFFFFFF,0.2}, {1,0xFFFFFF,0.5}},
    fg_colour2={{0,0XFFFFFF,0},{0.7,0xFFFFFF,0.2}, {1,0xFFFFFF,0.5}},
    bd_colour1={{0,0X000000,1},{0.5,0x000000,1}, {1,0x000000,1}},
    },

    {
    --cpu0
    name="cpu",
    arg="cpu0",
    max=100,
    xc=105,
    yc=178,
    radius=46,
    thickness=4,
    start_angle=-150,
    end_angle=-3,
    sectors=10,
    inverse_arc=true,
    bg_colour1={{0,0x000000,0.2},{0.5,0x000000,0.2}, {1,0x000000,0.2}},
    fg_colour1={{0,0XFFFFFF,0.7},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,0.7}},
    fg_colour2={{0,0XFFFFFF,0.7},{0.5,0xD6E0EF,1}, {1,0xFFFFFF,0.7}},
    --fg_colour2={{0,0X294172,0.7},{0.5,0x294172,1}, {1,0x294172,0.7}},
    bd_colour1={{0,0X000000,1},{0.5,0x000000,1}, {1,0x000000,1}},
    },

    {
    --cpu1
    name="cpu",
    arg="cpu1",
    max=100,
    xc=105,
    yc=178,
    radius=57,
    thickness=10,
    start_angle=-150,
    end_angle=-3,
    sectors=20,
    inverse_arc=true,
    bg_colour1={{0,0x000000,0.2},{0.5,0x000000,0.1}, {1,0x000000,0}},
    fg_colour1={{0,0XFFFFFF,0.7},{0.5,0xFFFFFF,0.5}, {1,0xFFFFFF,0.1}},
    fg_colour2={{0,0XD6E0EF,0.7},{0.5,0xFFFFFF,0.5}, {1,0xFFFFFF,0.1}},
    --fg_colour2={{0,0X294172,0.7},{0.5,0x294172,1}, {1,0x294172,0.5}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },
    
    {
    --cpu2
    name="cpu",
    arg="cpu2",
    max=100,
    xc=105,
    yc=178,
    radius=41,
    thickness=10,
    start_angle=-150,
    end_angle=-3,
    sectors=20,
    inverse_arc=true,
    bg_colour1={{0,0x000000,0},{0.5,0x000000,0.1}, {1,0x000000,0.2}},
    fg_colour1={{0,0XFFFFFF,0.1},{0.5,0xFFFFFF,0.5}, {1,0xFFFFFF,0.7}},
    fg_colour2={{0,0XFFFFFF,0.1},{0.5,0xFFFFFF,0.5}, {1,0xD6E0EF,0.7}},
    --fg_colour2={{0,0X294172,0.5},{0.5,0x294172,1}, {1,0x294172,0.7}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },

    {
    --ram
    name="memperc",
    arg="",
    max=100,
    xc=197,
    yc=89,
    radius=41,
    thickness=10,
    start_angle=30,
    end_angle=177,
    sectors=20,
    inverse_arc=true,
    bg_colour1={{0,0x000000,0},{0.5,0x000000,0.1}, {1,0x000000,0.2}},
    fg_colour1={{0,0XFFFFFF,0.1},{0.5,0xFFFFFF,0.5}, {1,0xFFFFFF,0.7}},
    fg_colour2={{0,0XFFFFFF,0.1},{0.5,0xFFFFFF,0.5}, {1,0xD6E0EF,0.7}},
    --fg_colour2={{0,0X294172,0.1},{0.5,0x294172,0.7}, {1,0x294172,1}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },

    {
    --load avg
    name="loadavg",
    arg="1",
    max=3,
    xc=197,
    yc=89,
    radius=46,
    thickness=4,
    start_angle=30,
    end_angle=177,
    sectors=10,
    inverse_arc=true,
    bg_colour1={{0,0x000000,0.2},{0.5,0x000000,0.2}, {1,0x000000,0.2}},
    fg_colour1={{0,0XFFFFFF,0.7},{0.5,0xFFFFFF,1}, {1,0xFFFFFF,0.7}},
    fg_colour2={{0,0XFFFFFF,0.7},{0.5,0xD6E0EF,1}, {1,0xFFFFFF,0.7}},
    --fg_colour2={{0,0X294172,0.1},{0.5,0x294172,0.7}, {1,0x294172,1}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },

    {
    --fs_used
    name="fs_used_perc",
    arg="/",
    max=100,
    xc=197,
    yc=89,
    radius=57,
    thickness=10,
    start_angle=30,
    end_angle=177,
    sectors=20,
    inverse_arc=true,
    bg_colour1={{0,0x000000,0.2},{0.5,0x000000,0.1}, {1,0x000000,0}},
    fg_colour1={{0,0XFFFFFF,0.7},{0.5,0xFFFFFF,0.5}, {1,0xFFFFFF,0.1}},
    fg_colour2={{0,0XD6E0EF,0.7},{0.5,0xFFFFFF,0.5}, {1,0xFFFFFF,0.1}},
    --fg_colour2={{0,0X294172,1},{0.5,0x294172,0.7}, {1,0x294172,0.3}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },
        
    {
    --download speed
    name="downspeedf",
    arg="eth0",
    max=1500,
    xc=105,
    yc=176,
    radius=60,
    thickness=28,
    start_angle=90,
    end_angle=180,
    sectors=15,
    fill_sector=true,
    gap_sectors=1,
    bg_colour1={{0,0x000000,0},{0.7,0x333333,0.3}, {1,0x111111,0.1}},
    fg_colour1={{0,0X294172,0},{0.7,0x294172,1}, {1,0x294172,0.2}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },
    
    
    {
    --upload speed
    name="upspeedf",
    arg="eth0",
    max=400,
    xc=197,
    yc=90,
    radius=60,
    thickness=28,
    start_angle=270,
    end_angle=360,
    sectors=15,
    fill_sector=true,
    gap_sectors=1,
    bg_colour1={{0,0x111111,0.1},{0.3,0x333333,0.3}, {1,0x000000,0}},
    fg_colour1={{0,0X294172,0.2},{0.3,0x294172,1}, {1,0x294172,0}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },

    {
    --Top cpu 1
    name="top cpu",
    arg="1",
    max=100,
    xc=59,
    yc=226,
    radius=35,
    thickness=11,
    start_angle=-90,
    end_angle=-180,
    sectors=10,
    inverse_arc=true,
    bg_colour1={{0,0x000000,0},{0.5,0x000000,0}, {1,0x000000,0}},
    fg_colour1={{0,0XD6E0EF,0.8},{0.5,0xFFFFFF,0.5}, {1,0xFFFFFF,0.3}},
    fg_colour2={{0,0XD6E0EF,0.8},{0.5,0xFFFFFF,0.5}, {1,0xFFFFFF,0.3}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },

    {
    --Top cpu 2
    name="top cpu",
    arg="2",
    max=100,
    xc=59,
    yc=226,
    radius=46,
    thickness=11,
    start_angle=-90,
    end_angle=-180,
    sectors=10,
    inverse_arc=true,
    bg_colour1={{0,0x000000,0},{0.5,0x000000,0}, {1,0x000000,0}},
    fg_colour1={{0,0XD6E0EF,0.6},{0.5,0xFFFFFF,0.4}, {1,0xFFFFFF,0.2}},
    fg_colour2={{0,0XD6E0EF,0.6},{0.5,0xFFFFFF,0.4}, {1,0xFFFFFF,0.2}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },
    
    {
    --Top cpu 3
    name="top cpu",
    arg="3",
    max=100,
    xc=59,
    yc=226,
    radius=57,
    thickness=11,
    start_angle=-90,
    end_angle=-180,
    sectors=10,
    inverse_arc=true,
    bg_colour1={{0,0x000000,0},{0.5,0x000000,0}, {1,0x000000,0}},
    fg_colour1={{0,0XD6E0EF,0.4},{0.5,0xFFFFFF,0.2}, {1,0xFFFFFF,0}},
    fg_colour2={{0,0XD6E0EF,0.4},{0.5,0xFFFFFF,0.2}, {1,0xFFFFFF,0}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },

    {
    --Battery
    name="battery_percent",
    arg="",
    max=100,
    xc=159,
    yc=125,
    radius=140,
    thickness=15,
    start_angle=-90,
    end_angle=180,
    sectors=100,
    inverse_arc=true,
    bg_colour1={{0,0X294172,0.5},{0.5,0x294172,0.2}, {1,0x294172,0}},
    fg_colour2={{0,0XD6E0EF,0.5},{0.5,0xFFFFFF,0.2}, {1,0xFFFFFF,0}},
    fg_colour1={{0,0XD6E0EF,0.5},{0.5,0xFFFFFF,0.2}, {1,0xFFFFFF,0}},
    bd_colour1={{0,0X00FF00,0.3},{0.5,0x00FF00,0.2}, {1,0x00FF00,0}},
    },
}
--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+gap_conky_x),(t.yc+gap_conky_y))
    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    
et le script lua du texte :
--[[ RINGS with SECTORS widget
    v1.0 by wlourf (08.08.2010)
    this widget draws a ring with differents effects 
    http://u-scripts.blogspot.com/2010/08/rings-sectors-widgets.html
    v1.0 (08 Aug. 2010) original release
]]
require 'cairo'
function conky_draw_text()
    --BEGIN OF PARAMETRES

    --Gap conky window
    gap_conky_x=1100
    gap_conky_y=500

        text_settings={


        {
            text="B",
            font_name="StyleBats",
            font_size=40,
            h_align="c",
            orientation="ww",
            angle=90,
            x=101,
            y=167,
            colour={{0,0X3C6EB4,0.1},{0.5,0x3C6EB4,0.3}, {1,0x3C6EB4,0.5}},
        },

        {
            text=conky_parse("${time %d}     ${time %m}"),
            font_name="DS-Digital",
            font_size=18,
            h_align="l",
            x=94,
            y=198,
            angle=-45,
            orientation="nn",
            colour={{0,0XFFFFFF,0.5},{0.5,0xFFFFFF,0.3}, {1,0x3C6EB4,0.5}},
        },

        {
            text=conky_parse("${time %H:%M}"),
            font_name="DS-Digital",
            font_size=22,
            h_align="c",
            bold=false,
            x=196,
            y=98,
            angle=-45,
            orientation="nn",
            colour={{0,0XFFFFFF,0.5},{0.5,0xFFFFFF,0.3}, {1,0x3C6EB4,0.5}},
        },

        {
            text="i",
            font_name="StyleBats",
            font_size=28,
            h_align="c",
            x=114,
            y=145,
            orientation="nn",
            colour={{0,0X3C6EB4,0.3},{0.5,0x3C6EB4,0.3}, {1,0x3C6EB4,0.3}},
        },    

        {
            text="Y",
            font_name="StyleBats",
            font_size=26,
            h_align="c",
            x=174,
            y=133,
            angle=90,
            orientation="nn",
            colour={{0,0X3C6EB4,0.3},{0.5,0x3C6EB4,0.3}, {1,0x3C6EB4,0.3}},
        },

        {
            text="R",
            font_name="StyleBats",
            font_size=22,
            h_align="c",
            angle=90,
            x=84,
            y=225,
            colour={{0,0X3C6EB4,0.3},{0.5,0x3C6EB4,0.3}, {1,0x3C6EB4,0.3}},
        },

        {
            text=conky_parse("${downspeedf eth0}"),
            font_name="DS-Digital",
            font_size=14,
            h_align="l",
            bold=false,
            x=156,
            y=174,
            angle=-90,
            colour={{0,0X294172,0.5},{0.5,0x294172,1}, {1,0x294172,0.5}},
        },

        {
            text="R",
            font_name="StyleBats",
            font_size=22,
            h_align="c",
            angle=-90,
            x=218,
            y=41,
            colour={{0,0X3C6EB4,0.3},{0.5,0x3C6EB4,0.3}, {1,0x3C6EB4,0.3}},
        },

        {
            text=conky_parse("${upspeedf eth0}"),
            font_name="DS-Digital",
            font_size=14,
            h_align="r",
            bold=false,
            x=157,
            y=92,
            angle=-90,
            colour={{0,0X294172,0.5},{0.5,0x294172,1}, {1,0x294172,0.5}},
        },

        {
            text=conky_parse("$uptime"),
            font_name="DS-Digital",
            font_size=20,
            h_align="c",
            bold=false,
            orientation="nn",
            angle=-45,
            x=224,
            y=200,
            colour={{0,0XAAAAAA,0.2},{0.5,0xCCCCCC,0.5}, {1,0xAAAAAA,0.2}},
        },    

        {
            text=conky_parse("$kernel"),
            font_name="DS-Digital",
            font_size=18,
            h_align="c",
            bold=false,
            orientation="nn",
            angle=-45,
            x=214,
            y=180,
            colour={{0,0XAAAAAA,0.2},{0.5,0xCCCCCC,0.5}, {1,0xAAAAAA,0.2}},
        },    
        
        {
            text="FC12",
            font_name="DS-Digital",
            font_size=50,
            h_align="c",
            v_align="m",
            x=94,
            y=70,
            angle=-45,
            bold="true",
            orientation="nn",
            colour={{0,0X294172,0.3},{0.5,0x294172,0.1}, {1,0x294172,0.3}},
        },
        
        {
            text=conky_parse("${top name 1}"),
            font_name="DS-Digital",
            font_size=16,
            h_align="l",
            bold=false,
            orientation="nn",
            angle=-90,
            x=34,
            y=225,
            colour={{0,0X294172,0.3},{0.5,0x294172,0.5}, {1,0x294172,0.3}},
        },    

        {
            text=conky_parse("${top name 2}"),
            font_name="DS-Digital",
            font_size=16,
            h_align="l",
            bold=false,
            orientation="nn",
            angle=-90,
            x=23,
            y=225,
            colour={{0,0X294172,0.2},{0.5,0x294172,0.3}, {1,0x294172,0.2}},
        },    

        {
            text=conky_parse("${top name 3}"),
            font_name="DS-Digital",
            font_size=16,
            h_align="l",
            bold=false,
            orientation="nn",
            angle=-90,
            x=12,
            y=225,
            colour={{0,0XFFFFFF,0.2},{0.5,0xFFFFFF,0.3}, {1,0xFFFFFF,0.2}},
        },

        {
            text=conky_parse("${battery_time}"),
            font_name="DS-Digital",
            font_size=18,
            h_align="r",
            bold=false,
            orientation="nn",
            angle=-45,
            x=139,
            y=66,
            colour={{0,0XFFFFFF,0.3},{0.5,0xFFFFFF,0.6}, {1,0xFFFFFF,0.3}},
        },

        {
            text=conky_parse("${battery}"),
            font_name="DS-Digital",
            font_size=18,
            h_align="r",
            bold=false,
            orientation="nn",
            angle=0,
            x=156,
            y=263,
            colour={{0,0XFFFFFF,0},{0.5,0xFFFFFF,0.3}, {1,0xFFFFFF,0.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+gap_conky_x),(t.y+gap_conky_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
La petite nouveauté, j'ai rajouté deux variables (gap_conky_x et y) pour spécifier le décalage de la fenêtre conky (histoire que, si vous voulez décaler votre conky, vous ayez que deux variables à changer. C'est mieux que se retaper toutes les coordonnées pour tous les éléments).

J'ai également changé de police pour la typo LCD : DS-Digital (dispo sur DaFont). Ce qui fait juste StyleBats et DS-Digital à installer.

Pour ceux qui veulent approfondir les scripts originaux, faites un tour sur le site du développer du script, y a pleins d'exemples (je viens même de découvrir l'histoire des bordures d'anneaux :-P )

J'ai commencé un conky avec le logo Ubuntu, mais je manque cruellement d'inspiration... Donc ça va très probablement passer à la trappe... 🙂