Utiliser Mageia

Conky -bases et +

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Dernière mise à jour : 28/09/2013 à 20h36
Conky



Suite à une certaine demande je vais essayer de faire un tuto simple pour avoir un conky correct . Les Modos pourront mettre en page vu que cela n'est qu'une ébauche .Si de grands spécialiste es conky passe dans le coin ,n'hésitez-pas à modifier et à y apporter vos astuces.



Du simple:



meteo_conky



au compliquer avec plusieurs:



multi_conky



ou avec du lua:



conky_monde







Les chemins ainsi que les images des conkys seront toujours les miens, donc il faudra les modifier en fonction de votre configuration .Pour la partie des conkys avant TEXT c'est toujours la même (elle fonctionne parfaitement chez moi sur Mageia 2 et 3 x64 ,seul gap_x= - gap_y= changent ).

Je ne crée pas de conky je part toujours d'un conkyrc trouvé sur le net ,que je modifie à ma sauce ou j'ajoute la partie qui me plais et je la modifie pour ma configuration.




  • Installer conky
  • Créer son conkyrc
  • Multi conky
  • Le lua
  • Quelques adresses utiles







Installer conky





Ici je ne vais pas m'attarder , donc



CCM - installer des logiciels - dans recherche on tape:



conky ,on installe



lm-sensors , on installe avec les dépendances(pour les températures)



hddtemp ,pour les disques durs









Créer son conkyrc





Au premier lancement de conky : ALT-F2 on tape :conky



Il est tout moche avec un fond noir et il clignotte. Pouravoir un conky un peu correct ,nous allons créer un fichier qui



va s'appeler .conkyrc à placer dans votre Home .



Chez moi : /home/romuald/



1380355048







Ouvrir ce fichier avec Kwrite ou autre et y mettre ceci (ce qui est en rouge sera à supprimer





Caché :


background yes

use_xft yes

xftfont DejaVu Sans Mono:size=8

xftalpha 1

update_interval 1.0

total_run_times 0

own_window yes

own_window_transparent yes

own_window_argb_visual yes

own_window_type normal

own_window_hints undecorated,below,skip_taskbar,skip_pager

double_buffer yes

minimum_size 150 5 largeur du conky

maximum_width 150 largeur du texte

text_buffer_size 256

draw_shades no

draw_outline no

draw_borders yes

draw_graph_borders no

default_color white

default_outline_color white

alignment top_right droite _left gauche _middle milieu

gap_x 900 position horizontale

gap_y 690 position verticale

no_buffers yes

uppercase no

cpu_avg_samples 2

override_utf8_locale yes

#

color1 white

#

color2 cacaca

#

color3 cornflowerblue

#

color4 626262

#

color5 929292

#

color6 828282

#cornflowerblue




Ceci est pour la configuration du conky





Sauter une ligne



ajouter



TEXT



sauter une ligne



puis ceci (c'est un petit conky leger):



Caché :
${font Sans:size=8}${color3}Kernel: ${color2}$kernel

${color3}Uptime: ${color2}$uptime

${color3}Processus: ${color2}$processes${color3}${alignr}En cours: ${color2} $running_processes

${color3}KDE: ${color2}4.8.5

${color3}${hr}

${alignc}CPU

${goto 85}${color4}${cpugraph cpu0 20,160}

${voffset -20}${color3}Core 1:${color2} ${cpu cpu0}%${color2}${goto 250}${freq_g 1} GHz${goto 320}${exec expr `cat /sys/class/hwmon/hwmon1/device/temp1_input` / 1000}°C${goto 360}${color4}${execbar expr `cat /sys/class/hwmon/hwmon1/device/temp1_input` / 1000}

${goto 85}${color4}${cpugraph cpu1 20,160}

${voffset -20}${color3}Core 2:${color2} ${cpu cpu1}%${color2}${goto 250}${freq_g 2} GHz${goto 320}${exec expr `cat /sys/class/hwmon/hwmon1/device/temp2_input` / 1000}°C${goto 360}${color4}${execbar expr `cat /sys/class/hwmon/hwmon1/device/temp2_input` / 1000}

${goto 85}${color4}${cpugraph cpu2 20,160}

${voffset -20}${color3}Core 3:${color2} ${cpu cpu2}%${color2}${goto 250}${freq_g 3} GHz${goto 320}${exec expr `cat /sys/class/hwmon/hwmon1/device/temp1_input` / 1000}°C${goto 360}${color4}${execbar expr `cat /sys/class/hwmon/hwmon1/device/temp1_input` / 1000}

${goto 85}${color4}${cpugraph cpu3 20,160}

${voffset -20}${color3}Core 4:${color2} ${cpu cpu3}%${color2}${goto 250}${freq_g 4} GHz${goto 320}${exec expr `cat /sys/class/hwmon/hwmon1/device/temp2_input` / 1000}°C${goto 360}${color4}${execbar expr `cat /sys/class/hwmon/hwmon1/device/temp2_input` / 1000}





Laisser une ligne de libre à la fin du conkyrc



Cela donnera ceci:



1380355674



A chaque fois que vous rajoutez ou modifiez votre conkyrc et que vous enregistrez le conky va s'effacer et réapparaitre avec les modifications .



S'il y a des problème ou que le conky ne se lance plus (mauvaises variables)



ALT F2 killall conky



ALT F2 conky





Multi conky





Créer un dossier dans votre Home nommé



.conky ( c'est dans ce dossier que l'on va mettre tous les conky que l'on souhaite avoir.)



1380383252

créer un dossier par conky et lui donner un nom (c'est plus propre et plus clair )



dans ce dossier y mettre le conkyrc souhaité ou plusieurs ainsi que les scripts et les luas qui vont avec.







Exemple chez moi pour avoir ceci :



1380382810



.conky



full



conkyrc 1



conkyrc 2



conkyrc3



1380383055





Après chaque création du conkyrc correspondant nous allons le lancer avec une konsole.



Code BASH :
conky -c ~/.conky/full/conkyrc1




faire pareil pour conkyrc2 et conkyrc3



Maintenant nous allons faire un script pour les lancer au démarrage (sur ma mageia 3 ce script ne fonctionne pas mais sur la 2 c'est top)



1380384084



Dans mon home créer un dossier nommé



.bin



dans ce dossier



créer un fichier .sh et le rendre exécutable (comme sur l'image)



ouvrir avec kwrite ou autre et y mettre ceci:



killall conky

sleep 10

conky -c ~/.conky/full/conkyrc1 &

conky -c ~/.conky/full/conkyrc2 &

conky -c ~/.conky/full/conkyrc3 &



exit




et enfin l'ajouter au démarrage.



le lua





Un script en lua permet de rajouter de la couleur ,des cercles et pleins de choses à un conky .



1380390434



Pour ce faire celui-ci ,dans notre dossier .conky créons un dossier nommé tous (toujours chez moi )



dans ce dossier : tous nous allons y mettre un conkyrc nommé : tous ainsi qu'un deuxième fichier nommé tous.lua



1380391219



kwrite ou autre et on ouvre le fichier tous pour y mettre ceci (ce qui est en rouge est à supprimer)





Caché :




background yes

use_xft yes

xftfont Sans:size=10

xftalpha 1

update_interval 1.0

total_run_times 0

own_window yes

own_window_transparent no

own_window_color 000000

own_window_argb_visual yes

own_window_argb_value 0

own_window_type normal

own_window_hints undecorated,below,skip_taskbar,skip_pager

double_buffer yes

minimum_size 1000

maximum_width 1000

text_buffer_size 1024

draw_shades no

draw_outline no

draw_borders no

draw_graph_borders no

default_color white

default_outline_color white

alignment top_left

gap_x 330

gap_y 10

no_buffers yes

uppercase no

cpu_avg_samples 2

override_utf8_locale yes

#

color1 white

#

color2 orange

#

color3 6495ee

#

color4 green

#cornflowerblue

color5 red

color6 yellow

# Lua Load

#lua_load ~/.conky/draw_bg.lua

#lua_draw_hook_pre draw_bg

#lua_load ~/.conky/conky_grey.lua

#lua_draw_hook_pre main

lua_load ~/.conky/tous/tous.lua chemin du .lua

lua_draw_hook_post main_rings ordre de lancement si demande de plusieurs lua



TEXT





${color4}${goto 68}${cpu cpu0}%${Goto 188}${cpu cpu1}% ${color4}${goto 308}$memperc% ${color4}${goto 430}${fs_used_perc /}% ${color4}${goto 550}${fs_used_perc /home}% ${color4}${goto 660}${downspeedf wlan0}k/s ${color5}${goto 780}${upspeedf wlan0}k/s



${color3}${goto 60}${voffset -10}Core 1 ${color3}${goto 180}Core 2 ${color3}${goto 299} Ram ${color3}${goto 410} /Racine ${color3}${goto 530} /Home ${color3}${goto 650} /Down ${color3}${goto 780} /Up${goto 885}${voffset 15}${color ff8000}${font Sans:size=12}${time %H}${color 00ff00}${time :%M}${color 6495EE}${time :%S}

${font Sans:size=10}${voffset -10}${goto 415}${color2}${fs_used /}${goto 535}${fs_used /home}

${color5}${goto 68}${voffset 4}${font Sans:size=10}${exec expr `cat /sys/class/hwmon/hwmon1/device/temp2_input` / 1000}°C${color5}${goto 188}${exec expr `cat /sys/class/hwmon/hwmon1/device/temp3_input` / 1000}°C ${color5}${goto 312}${swapperc}% ${goto 415}${color2}${fs_size /}${goto 535}${fs_size /home}${goto 655}${color4}${totaldown wlan0}${goto 775}${color5}${totalup wlan0}





${color1}PROCESSUS ${goto 400}INTERNET ${goto 700} GPU ${goto 890} ORDINATEUR

${color3}NOM ${goto 210}CPU ${goto 260}RAM ${color3}${goto 340}URL NB PORTS OUVERTS:${tcp_portmon 1 65535 count}

${color1} ${top name 1} ${goto 200}${top cpu 1} ${goto 250}${top mem 1} ${color2}${goto 340}${tcp_portmon 1 65535 rip 1}${goto 455}${tcp_portmon 1 65535 rport 1} ${goto 600}${color3}Carte Graphique: ${color2}${execi 1800 nvidia-settings -q gpus |grep '0] (' | cut -d '(' -f 2,2 | sed -e 's/.\{1\}$//'} ${goto 860}${font Sans:size=8}${color3}Kernel: ${color2}3.8.18

${color1} ${top name 2} ${goto 200}${top cpu 2} ${goto 250}${top mem 2} ${color2}${goto 340}${tcp_portmon 1 65535 rip 2}${goto 455}${tcp_portmon 1 65535 rport 2} ${goto 600}${color3}Pilote NVidia: ${color2}${execi 1800 nvidia-settings -q NvidiaDriverVersion -t} ${goto 860}${color3}Uptime:${color2} $uptime

${color1} ${top name 3} ${goto 200}${top cpu 3} ${goto 250}${top mem 3} ${color2}${goto 340}${tcp_portmon 1 65535 rip 3}${goto 455}${tcp_portmon 1 65535 rport 3} ${goto 600}${color3}Température GPU: ${color2}${exec nvidia-settings -q gpucoretemp | grep '):' | awk '{print $4}'}°C ${goto 860}${color3}KDE: ${color2}${exec expr ` konsole -v | grep KDE | cut -d":" -f2 | sed s/" "/""/`}

${color1} ${top name 4} ${goto 200}${top cpu 4} ${goto 250}${top mem 4} ${color2}${goto 340}${tcp_portmon 1 65535 rip 4}${goto 455}${tcp_portmon 1 65535 rport 4} ${goto 600}${color3}Fréquence gpu: ${color2}${execi 60 nvidia-settings -query 0/GPUCurrentClockFreqs |grep Attribute |awk '{print $4}' |cut -c1-7} Mhz

${color1} ${top name 5} ${goto 200}${top cpu 5} ${goto 250}${top mem 5} ${color2}${goto 340}${tcp_portmon 1 65535 rip 5}${goto 455}${tcp_portmon 1 65535 rport 5}





Faire pareil pour le .lua et y mettre ceci ( attention un script lua c'est long ,il peut avoir jusqu'a plus de 1000 lignes



Caché :




--[[

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)

]]



require 'cairo'



function conky_main_rings()



if (os.date("%l"))=='12' then

heure=(os.date("%M")/60)

else

heure=(os.date("%l"))+(os.date("%M")/60)

end



-- START PARAMETERS HERE

local rings_settings={



{

name="cpu",

arg="cpu0",

max=100,

xc=80,

yc=80,

radius=57,

thickness=5,

gap_sectors=2,

sectors=10,

bg_colour1={{0,0x999999,0},{0.5,0x999999,0.3}, {1,0x999999,0}},

fg_colour1={{0,0x00FF00,0},{0.5,0x00FF00,1}, {1,0x00FF00,0}},

fg_colour2={{0,0X00FF00,0},{0.5,0x00FF00,1}, {1,0x00FF00,0}},

bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},

},

{

name="exec",

arg="exec expr `cat /sys/class/hwmon/hwmon1/device/temp2_input` / 1000",

max=100,

xc=80,

yc=80,

radius=53,

thickness=5,

gap_sectors=2,

sectors=10,

bg_colour1={{0,0x999999,0},{0.5,0x999999,0.3}, {1,0x999999,0}},

fg_colour1={{0,0xFF0000,0},{0.5,0xFF0000,1}, {1,0xFF0000,0}},

fg_colour2={{0,0XFF0000,0},{0.5,0xFF0000,1}, {1,0xFF0000,0}},

bd_colour1={{0,0XFF0000,1},{0.5,0xFF0000,1}, {1,0xFF0000,1}},

},

{

name="cpu",

arg="cpu1",

max=100,

xc=200,

yc=80,

radius=57,

thickness=5,

gap_sectors=2,

sectors=10,

bg_colour1={{0,0x999999,0},{0.5,0x999999,0.3}, {1,0x999999,0}},

fg_colour1={{0,0x00FF00,0},{0.5,0x00FF00,1}, {1,0x00FF00,0}},

fg_colour2={{0,0X00FF00,0},{0.5,0x00FF00,1}, {1,0x00FF00,0}},

bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},

},

{

name="exec",

arg="exec expr `cat /sys/class/hwmon/hwmon1/device/temp3_input` / 1000",

max=100,

xc=200,

yc=80,

radius=53,

thickness=5,

gap_sectors=2,

sectors=10,

bg_colour1={{0,0x999999,0},{0.5,0x999999,0.3}, {1,0x999999,0}},

fg_colour1={{0,0xFF0000,0},{0.5,0xFF0000,1}, {1,0xFF0000,0}},

fg_colour2={{0,0XFF0000,0},{0.5,0xFF0000,1}, {1,0xFF0000,0}},

bd_colour1={{0,0XFF0000,1},{0.5,0xFF0000,1}, {1,0xFF0000,1}},

},

{

name="memperc",

arg="",

max=100,

xc=320,

yc=80,

radius=57,

thickness=5,

gap_sectors=2,

sectors=10,

bg_colour1={{0,0x999999,0},{0.5,0x999999,0.3}, {1,0x999999,0}},

fg_colour1={{0,0x00FF00,0},{0.5,0x00FF00,1}, {1,0x00FF00,0}},

fg_colour2={{0,0X00FF00,0},{0.5,0x00FF00,1}, {1,0x00FF00,0}},

bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},

},

{

name="swapperc",

arg="",

max=100,

xc=320,

yc=80,

radius=53,

thickness=5,

gap_sectors=2,

sectors=10,

bg_colour1={{0,0x999999,0},{0.5,0x999999,0.3}, {1,0x999999,0}},

fg_colour1={{0,0xFF0000,0},{0.5,0xFF0000,1}, {1,0xFF0000,0}},

fg_colour2={{0,0XFF0000,0},{0.5,0xFF0000,1}, {1,0xFF0000,0}},

bd_colour1={{0,0XFF0000,1},{0.5,0xFF0000,1}, {1,0xFF0000,1}},

},

{

name="fs_used_perc",

arg="/",

max=100,

xc=440,

yc=80,

radius=57,

thickness=5,

gap_sectors=2,

sectors=10,

bg_colour1={{0,0x999999,0},{0.5,0x999999,0.3}, {1,0x999999,0}},

fg_colour1={{0,0x00FF00,0},{0.5,0x00FF00,1}, {1,0x00FF00,0}},

fg_colour2={{0,0X00FF00,0},{0.5,0x00FF00,1}, {1,0x00FF00,0}},

bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},

},

{

name="fs_used_perc",

arg="/home",

max=100,

xc=560,

yc=80,

radius=57,

thickness=5,

gap_sectors=2,

sectors=10,

bg_colour1={{0,0x999999,0},{0.5,0x999999,0.3}, {1,0x999999,0}},

fg_colour1={{0,0x00FF00,0},{0.5,0x00FF00,1}, {1,0x00FF00,0}},

fg_colour2={{0,0X00FF00,0},{0.5,0x00FF00,1}, {1,0x00FF00,0}},

bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},

},

{

name="downspeedf",

arg="eth0",

max=500,

xc=680,

yc=80,

radius=57,

thickness=5,

gap_sectors=2,

sectors=10,

bg_colour1={{0,0x999999,0},{0.5,0x999999,0.3}, {1,0x999999,0}},

fg_colour1={{0,0x00FF00,0},{0.5,0x00FF00,1}, {1,0x00FF00,0}},

fg_colour2={{0,0X00FF00,0},{0.5,0x00FF00,1}, {1,0x00FF00,0}},

bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},

},

{

name="upspeedf",

arg="eth0",

max=100,

xc=800,

yc=80,

radius=57,

thickness=5,

gap_sectors=2,

sectors=10,

bg_colour1={{0,0x999999,0},{0.5,0x999999,0.3}, {1,0x999999,0}},

fg_colour1={{0,0xFF0000,0},{0.5,0xFF0000,1}, {1,0xFF0000,0}},

fg_colour2={{0,0XFF0000,0},{0.5,0xFF0000,1}, {1,0xFF0000,0}},

bd_colour1={{0,0XFF0000,1},{0.5,0xFF0000,1}, {1,0xFF0000,1}},

},

{

name="",

arg=heure,

max=11.99,

xc=920,

yc=80,

radius=57,

thickness=5,

gap_sectors=5,

sectors=12,

bg_colour1={{0,0x999999,0},{0.5,0x999999,0.3}, {1,0x999999,0}},

fg_colour1={{0,0xFF8000,0},{0.5,0xFF8000,1}, {1,0xFF8000,0}},

fg_colour2={{0,0XFF8000,0},{0.5,0xFF8000,1}, {1,0xFF8000,0}},

bd_colour1={{0,0XFF8000,1},{0.5,0xFF8000,1}, {1,0xFF8000,1}},

},

{

name="",

arg=(os.date("%M"))+(os.date("%S")/60),

max=59.99,

xc=920,

yc=80,

radius=50,

thickness=5,

start_angle=0,

end_angle=360,

gap_sectors=1,

sectors=60,

fill_sector=false,

bg_colour1={{0,0x999999,0},{0.5,0x999999,0.3}, {1,0x999999,0}},

fg_colour1={{0,0X00FF00,0},{0.5,0X00FF00,1}, {1,0X00FF00,1}},

fg_colour2={{0,0x00FF00,0},{0.5,0x00FF00,1}, {1,0x00FF00,0}},

bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},

},

{

name="time",

arg="%S",

max=60,

xc=920,

yc=80,

radius=43,

thickness=5,

start_angle=0,

end_angle=360,

sectors=60,

fill_sector=false,

bg_colour1={{0,0x999999,0},{0.5,0x999999,0.3}, {1,0x999999,0}},

fg_colour1={{1,0X6495EE,1},{1,0x6495EE,1}, {1,0x6495EE,1}},

fg_colour2={{1,0X6495EE,1},{1,0x6495EE,1}, {1,0x6495EE,1}},

bd_colour1={{0,0X6495EE,1},{0.5,0x6495EE,1}, {1,0x6495EE,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)

local cr=cairo_create(cs)



if tonumber(conky_parse('${updates}'))>3 then

for i in pairs(rings_settings) do

draw_ring(cr,rings_settings[i])

end

end



cairo_destroy(cr)

end







function draw_ring(cr, t)



local function rgba_to_r_g_b_a(tcolour)

local 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



if t.draw_me == true then t.draw_me = nil end

if t.draw_me ~= nil and conky_parse(tostring(t.draw_me)) ~= "1" then return end

--initialize table

setup(t)



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

local angleA = ((t.end_angle-t.start_angle)/t.sectors)*math.pi/180

--value of a sector :

local valueA = t.max/t.sectors

--first angle of a sector :

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

local tcolor

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

local b0,b1

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

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

local d0,d1

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




Pour voir si cela fonctionne :



Code BASH :
conky -c ~/.conky/tous/tous




Voila maintenant il ne vous reste plus qu'a joué avec les variables, gap_x ,gap_y pour vous faire du conky sur mesure.



Quelques adresses utiles





http://conky.sourceforge.net/



http://forum.ubuntu-fr.org/viewtopic.php?id=1229761&p=1



http://conky.sourceforge.net/config_settings.html



Ils y en pleins d'autres.





Voila si vous avez des problèmes venez ici vous y trouverez de l'aide.