Utiliser Mageia

Conky -conkyrc -scripts - partie 1

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Dernière mise à jour : 01/06/2014 à 09h30
Table des matières EN COURS D'ELABORATION







Annexe du tuto <a href="" target="_blank">http://www.mageialinux-online.org/wiki/conky</a>









J'ai crée cette annexe pour partager mes conkyrc scripts fichiers lua et un peu pour avoir une sauvegarde en cas de plantage de mon ordi.



Conky principal





Caché :


background yes

use_xft yes

xftfont URW Chancery L:style=Bold:size=10

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

maximum_width 140

text_buffer_size 1024

draw_shades no

draw_outline no

draw_borders no

draw_graph_borders no

default_color 000000

default_outline_color white

alignment top_right

gap_x 0

gap_y 30

no_buffers yes

uppercase no

cpu_avg_samples 2

override_utf8_locale yes



color 000000



lua_load ~/.conky/blanc/barasmall.lua

lua_draw_hook_pre main_bars #bars pour bargraph rings pour tousv

#lua_load ~/.conky/draw_bg/draw_bg.lua



TEXT

#${lua conky_draw_bg 10 0 0 0 0 0x000000 0.50}



CPU 1

${cpu cpu0}% ${freq_g 1} GHz

Température: ${exec expr `cat /sys/class/hwmon/hwmon2/device/temp1_input` / 1000}°C



CPU 2

${cpu cpu1}% ${freq_g 2}GHz

Température: ${exec expr `cat /sys/class/hwmon/hwmon2/device/temp2_input` / 1000}°C



CPU3

${cpu cpu2}% ${freq_g 3}GHz

Température: ${exec expr `cat /sys/class/hwmon/hwmon2/device/temp3_input` / 1000}°C



CPU4

${cpu cpu3}% ${freq_g 4}GHz

Température: ${exec expr `cat /sys/class/hwmon/hwmon2/device/temp3_input` / 1000}°C



RAM

$memperc%



PARTITION

/racine

${fs_used_perc /}% ${fs_size /}



/home

${fs_used_perc /home}% ${fs_size /home}



RESEAU

Down

${downspeedf wlp2s0}k/s ${totaldown wlp2s0}



Up

${upspeedf wlp2s0}k/s ${totalup wlp2s0}



TEMPERATURES

Carte: ${hwmon 0 temp 1} °C

Disque: ${execi 120 hddtemp -n /dev/sda} °C



Allumé depuis :

$uptime




son lua



Caché :




--[[

BARGRAPH WIDGET

v2.1 by wlourf (07 Jan. 2011)

this widget draws a bargraph with different effects

http://u-scripts.blogspot.com/2010/07/bargraph-widget.html



To call the script in a conky, use, before TEXT

lua_load /path/to/the/script/bargraph.lua

lua_draw_hook_pre main_rings

and add one line (blank or not) after TEXT



Parameters are :

3 parameters are mandatory

name - the name of the conky variable to display, for example for {$cpu cpu0}, just write name="cpu"

arg - the argument of the above variable, for example for {$cpu cpu0}, just write arg="cpu0"

arg can be a numerical value if name=""

max - the maximum value the above variable can reach, for example, for {$cpu cpu0}, just write max=100



Optional parameters:

x,y - coordinates of the starting point of the bar, default = middle of the conky window

cap - end of cap line, ossibles values are r,b,s (for round, butt, square), default="b"

http://www.cairographics.org/samples/set_line_cap/

angle - angle of rotation of the bar in degress, default = 0 (i.e. a vertical bar)

set to 90 for an horizontal bar

skew_x - skew bar around x axis, default = 0

skew_y - skew bar around y axis, default = 0

blocks - number of blocks to display for a bar (values >0) , default= 10

height - height of a block, default=10 pixels

width - width of a block, default=20 pixels

space - space between 2 blocks, default=2 pixels

angle_bar - this angle is used to draw a bar on a circular way (ok, this is no more a bar !) default=0

radius - for cicular bars, internal radius, default=0

with radius, parameter width has no more effect.



Colours below are defined into braces {colour in hexadecimal, alpha}

fg_colour - colour of a block ON, default= {0x00FF00,1}

bg_colour - colour of a block OFF, default = {0x00FF00,0.5}

alarm - threshold, values after this threshold will use alarm_colour colour , default=max

alarm_colour - colour of a block greater than alarm, default=fg_colour

smooth - (true or false), create a gradient from fg_colour to bg_colour, default=false

mid_colour - colours to add to gradient, with this syntax {position into the gradient (0 to1), colour hexa, alpha}

for example, this table {{0.25,0xff0000,1},{0.5,0x00ff00,1},{0.75,0x0000ff,1}} will add

3 colours to gradient created by fg_colour and alarm_colour, default=no mid_colour

led_effect - add LED effects to each block, default=no led_effect

if smooth=true, led_effect is not used

possibles values : "r","a","e" for radial, parallel, perdendicular to the bar (just try!)

led_effect has to be used with theses colours :

fg_led - middle colour of a block ON, default = fg_colour

bg_led - middle colour of a block OFF, default = bg_colour

alarm_led - middle colour of a block > ALARM, default = alarm_colour



reflection parameters, not available for circular bars

reflection_alpha - add a reflection effect (values from 0 to 1) default = 0 = no reflection

other values = starting opacity

reflection_scale - scale of the reflection (default = 1 = height of text)

reflection_length - length of reflection, define where the opacity will be set to zero

values from 0 to 1, default =1

reflection - position of reflection, relative to a vertical bar, default="b"

possibles values are : "b","t","l","r" for bottom, top, left, right

draw_me - if set to false, text is not drawn (default = true or 1)

it can be used with a conky string, if the string returns 1, the text is drawn :

example : "${if_empty ${wireless_essid wlan0}}${else}1$endif",



v1.0 (10 Feb. 2010) original release

v1.1 (13 Feb. 2010) numeric values can be passed instead conky stats with parameters name="", arg = numeric_value

v1.2 (28 Feb. 2010) just renamed the widget to bargraph

v1.3 (03 Mar. 2010) added parameters radius & angle_bar to draw the bar in a circular way

v2.0 (12 Jul. 2010) rewrite script + add reflection effects and parameters are now set into tables

v2.1 (07 Jan. 2011) Add draw_me parameter and correct memory leaks, thanks to "Creamy Goodness"



-- This program is free software; you can redistribute it and/or modify

-- it under the terms of the GNU General Public License as published by

-- the Free Software Foundation version 3 (GPLv3)

--

-- This program is distributed in the hope that it will be useful,

-- but WITHOUT ANY WARRANTY; without even the implied warranty of

-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

-- GNU General Public License for more details.

--

-- You should have received a copy of the GNU General Public License

-- along with this program; if not, write to the Free Software

-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,

-- MA 02110-1301, USA.



]]



require 'cairo'



----------------START OF PARAMETERS ----------

function conky_main_bars()

local bars_settings={

{ --[ Graph for CPU1 ]--

name="cpu",

arg="cpu0",

max=100,

alarm=50,

alarm_colour={0xFF0000,0.72},

bg_colour={0xFFFFFF,0.15},

fg_colour={0x48a3fd,0.55},

mid_colour={{1,0xffff00,0.70}},

x=0,y=40,

blocks=50,

space=1,

height=2,width=6,

angle=90,

smooth=true

},

{ --[ Température for CPU1 ]--

name="exec",

arg="exec expr `cat /sys/class/hwmon/hwmon2/device/temp1_input` / 1000",

max=100,

alarm=50,

alarm_colour={0xFF0000,0.72},

bg_colour={0xFFFFFF,0.15},

fg_colour={0x48a3fd,0.55},

mid_colour={{1,0xffff00,0.70}},

x=0,y=60,

blocks=74,

space=0,

height=2,width=6,

angle=90,

smooth=true

},

{ --[ Graph for CPU2 ]--

name="cpu",

arg="cpu1",

max=100,

alarm=50,

alarm_colour={0xFF0000,0.72},

bg_colour={0xFFFFFF,0.15},

fg_colour={0x48a3fd,0.55},

mid_colour={{1,0xffff00,0.70}},

x=0,y=112,

blocks=50,

space=1,

height=2,width=5,

angle=90,

smooth=true

},

{ --[ Température for CPU2 ]--

name="exec",

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

max=100,

alarm=50,

alarm_colour={0xFF0000,0.72},

bg_colour={0xFFFFFF,0.15},

fg_colour={0x48a3fd,0.55},

mid_colour={{1,0xffff00,0.70}},

x=0,y=132,

blocks=74,

space=0,

height=2,width=6,

angle=90,

smooth=true

},

{ --[ Graph for CPU3 ]--

name="cpu",

arg="cpu2",

max=100,

alarm=50,

alarm_colour={0xFF0000,0.72},

bg_colour={0xFFFFFF,0.15},

fg_colour={0x48a3fd,0.55},

mid_colour={{1,0xffff00,0.70}},

x=0,y=184,

blocks=50,

space=1,

height=2,width=5,

angle=90,

smooth=true

},

{ --[ Température for CPU3 ]--

name="exec",

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

max=100,

alarm=50,

alarm_colour={0xFF0000,0.72},

bg_colour={0xFFFFFF,0.15},

fg_colour={0x48a3fd,0.55},

mid_colour={{1,0xffff00,0.70}},

x=0,y=204,

blocks=74,

space=0,

height=2,width=6,

angle=90,

smooth=true

},

{ --[ Graph for CPU4 ]--

name="cpu",

arg="cpu3",

max=100,

alarm=50,

alarm_colour={0xFF0000,0.72},

bg_colour={0xFFFFFF,0.15},

fg_colour={0x48a3fd,0.55},

mid_colour={{1,0xffff00,0.70}},

x=0,y=256,

blocks=50,

space=1,

height=2,width=5,

angle=90,

smooth=true

},

{ --[ Température for CPU4 ]--

name="exec",

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

max=100,

alarm=50,

alarm_colour={0xFF0000,0.72},

bg_colour={0xFFFFFF,0.15},

fg_colour={0x48a3fd,0.55},

mid_colour={{1,0xffff00,0.70}},

x=0,y=274,

blocks=74,

space=0,

height=2,width=6,

angle=90,

smooth=true

},

{ --[ Graph for Memory ]--

name="memperc",

arg="",

max=100,

alarm=50,

alarm_colour={0xFF0000,0.72},

bg_colour={0xFFFFFF,0.15},

fg_colour={0x48a3fd,0.55},

mid_colour={{1,0xffff00,0.70}},

x=0,y=330,

blocks=49,

space=1,

height=2,width=6,

angle=90,

smooth=true

},

{ --[ Graph for Root ]--

name="fs_used_perc",

arg="/",

max=100,

alarm=50,

alarm_colour={0xFF0000,0.72},

bg_colour={0xFFFFFF,0.15},

fg_colour={0x48a3fd,0.55},

mid_colour={{1,0xffff00,0.70}},

x=0,y=401,

blocks=50,

space=1,

height=2,width=5,

angle=90,

smooth=true

},

{ --[ Graph for Home ]--

name="fs_used_perc",

arg="/home",

max=100,

alarm=50,

alarm_colour={0xFF0000,0.72},

bg_colour={0xFFFFFF,0.15},

fg_colour={0x48a3fd,0.55},

mid_colour={{1,0xffff00,0.70}},

x=0,y=455,

blocks=50,

space=1,

height=2,width=5,

angle=90,

smooth=true

},

{ --[ Graph for Down ]--

name="downspeedf",

arg="wlp2s0",

max=500,

alarm=50,

alarm_colour={0xFF0000,0.72},

bg_colour={0xFFFFFF,0.15},

fg_colour={0x48a3fd,0.55},

mid_colour={{1,0xffff00,0.70}},

x=0,y=528,

blocks=50,

space=1,

height=2,width=5,

angle=90,

smooth=true

},

{ --[ Graph for Up ]--

name="upspeedf",

arg="wlp2s0",

max=500,

alarm=50,

alarm_colour={0xFF0000,0.72},

bg_colour={0xFFFFFF,0.15},

fg_colour={0x48a3fd,0.55},

mid_colour={{1,0xffff00,0.70}},

x=0,y=583,

blocks=50,

space=1,

height=2,width=5,

angle=90,

smooth=true

},

{ --[ Température for Carte ]--

name="hwmon",

arg="0 temp 1",

max=100,

alarm=50,

alarm_colour={0xFF0000,0.72},

bg_colour={0xFFFFFF,0.15},

fg_colour={0x48a3fd,0.55},

mid_colour={{1,0xFFFF00,0.70}},

x=0,y=634,

blocks=74,

space=0,

height=2,width=6,

angle=90,

smooth=true

},

{ --[ Température for disque ]--

name="execi",

arg="120 hddtemp -n /dev/sda",

max=100,

alarm=50,

alarm_colour={0xFF0000,0.72},

bg_colour={0xFFFFFF,0.15},

fg_colour={0x48a3fd,0.55},

mid_colour={{1,0xFFFF00,0.70}},

x=0,y=654,

blocks=74,

space=0,

height=2,width=6,

angle=90,

smooth=true

},

}

-----------END OF PARAMETERS--------------







if conky_window == nil then return end



local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, conky_window.width, conky_window.height)



cr = cairo_create(cs)

--prevent segmentation error when reading cpu state

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

for i in pairs(bars_settings) do



draw_multi_bar_graph(bars_settings[i])



end

end

cairo_destroy(cr)

cairo_surface_destroy(cs)

cr=nil



end







function draw_multi_bar_graph(t)

cairo_save(cr)

--check values

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

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

if t.name==nil and t.arg==nil then

print ("No input values ... use parameters 'name' with 'arg' or only parameter 'arg' ")

return

end

if t.max==nil then

print ("No maximum value defined, use 'max'")

return

end

if t.name==nil then t.name="" end

if t.arg==nil then t.arg="" end



--set default values

if t.x == nil then t.x = conky_window.width/2 end

if t.y == nil then t.y = conky_window.height/2 end

if t.blocks == nil then t.blocks=10 end

if t.height == nil then t.height=10 end

if t.angle == nil then t.angle=0 end

t.angle = t.angle*math.pi/180

--line cap style

if t.cap==nil then t.cap = "b" end

local cap="b"

for i,v in ipairs({"s","r","b"}) do

if v==t.cap then cap=v end

end

local delta=0

if t.cap=="r" or t.cap=="s" then delta = t.height end

if cap=="s" then cap = CAIRO_LINE_CAP_SQUARE

elseif cap=="r" then

cap = CAIRO_LINE_CAP_ROUND

elseif cap=="b" then

cap = CAIRO_LINE_CAP_BUTT

end

--end line cap style

--if t.led_effect == nil then t.led_effect="r" end

if t.width == nil then t.width=20 end

if t.space == nil then t.space=2 end

if t.radius == nil then t.radius=0 end

if t.angle_bar == nil then t.angle_bar=0 end

t.angle_bar = t.angle_bar*math.pi/360 --halt angle



--colours

if t.bg_colour == nil then t.bg_colour = {0x00FF00,0.5} end

if #t.bg_colour~=2 then t.bg_colour = {0x00FF00,0.5} end

if t.fg_colour == nil then t.fg_colour = {0x00FF00,1} end

if #t.fg_colour~=2 then t.fg_colour = {0x00FF00,1} end

if t.alarm_colour == nil then t.alarm_colour = t.fg_colour end

if #t.alarm_colour~=2 then t.alarm_colour = t.fg_colour end



if t.mid_colour ~= nil then

for i=1, #t.mid_colour do

if #t.mid_colour[i]~=3 then

print ("error in mid_color table")

t.mid_colour[i]={1,0xFFFFFF,1}

end

end

end



if t.bg_led ~= nil and #t.bg_led~=2 then t.bg_led = t.bg_colour end

if t.fg_led ~= nil and #t.fg_led~=2 then t.fg_led = t.fg_colour end

if t.alarm_led~= nil and #t.alarm_led~=2 then t.alarm_led = t.fg_led end



if t.led_effect~=nil then

if t.bg_led == nil then t.bg_led = t.bg_colour end

if t.fg_led == nil then t.fg_led = t.fg_colour end

if t.alarm_led == nil then t.alarm_led = t.fg_led end

end





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

if t.smooth == nil then t.smooth = false end



if t.skew_x == nil then

t.skew_x=0

else

t.skew_x = math.pi*t.skew_x/180

end

if t.skew_y == nil then

t.skew_y=0

else

t.skew_y = math.pi*t.skew_y/180

end



if t.reflection_alpha==nil then t.reflection_alpha=0 end

if t.reflection_length==nil then t.reflection_length=1 end

if t.reflection_scale==nil then t.reflection_scale=1 end



--end of default values





local function rgb_to_r_g_b(col_a)

return ((col_a[1] / 0x10000) % 0x100) / 255., ((col_a[1] / 0x100) % 0x100) / 255., (col_a[1] % 0x100) / 255., col_a[2]

end





--functions used to create patterns



local function create_smooth_linear_gradient(x0,y0,x1,y1)

local pat = cairo_pattern_create_linear (x0,y0,x1,y1)

cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(t.fg_colour))

cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(t.alarm_colour))

if t.mid_colour ~=nil then

for i=1, #t.mid_colour do

cairo_pattern_add_color_stop_rgba (pat, t.mid_colour[i][1], rgb_to_r_g_b({t.mid_colour[i][2],t.mid_colour[i][3]}))

end

end

return pat

end



local function create_smooth_radial_gradient(x0,y0,r0,x1,y1,r1)

local pat = cairo_pattern_create_radial (x0,y0,r0,x1,y1,r1)

cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(t.fg_colour))

cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(t.alarm_colour))

if t.mid_colour ~=nil then

for i=1, #t.mid_colour do

cairo_pattern_add_color_stop_rgba (pat, t.mid_colour[i][1], rgb_to_r_g_b({t.mid_colour[i][2],t.mid_colour[i][3]}))

end

end

return pat

end



local function create_led_linear_gradient(x0,y0,x1,y1,col_alp,col_led)

local pat = cairo_pattern_create_linear (x0,y0,x1,y1) ---delta, 0,delta+ t.width,0)

cairo_pattern_add_color_stop_rgba (pat, 0.0, rgb_to_r_g_b(col_alp))

cairo_pattern_add_color_stop_rgba (pat, 0.5, rgb_to_r_g_b(col_led))

cairo_pattern_add_color_stop_rgba (pat, 1.0, rgb_to_r_g_b(col_alp))

return pat

end



local function create_led_radial_gradient(x0,y0,r0,x1,y1,r1,col_alp,col_led,mode)

local pat = cairo_pattern_create_radial (x0,y0,r0,x1,y1,r1)

if mode==3 then

cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(col_alp))

cairo_pattern_add_color_stop_rgba (pat, 0.5, rgb_to_r_g_b(col_led))

cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(col_alp))

else

cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(col_led))

cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(col_alp))

end

return pat

end













local function draw_single_bar()

--this fucntion is used for bars with a single block (blocks=1) but

--the drawing is cut in 3 blocks : value/alarm/background

--not zvzimzblr for circular bar

local function create_pattern(col_alp,col_led,bg)

local pat



if not t.smooth then

if t.led_effect=="e" then

pat = create_led_linear_gradient (-delta, 0,delta+ t.width,0,col_alp,col_led)

elseif t.led_effect=="a" then

pat = create_led_linear_gradient (t.width/2, 0,t.width/2,-t.height,col_alp,col_led)

elseif t.led_effect=="r" then

pat = create_led_radial_gradient (t.width/2, -t.height/2, 0, t.width/2,-t.height/2,t.height/1.5,col_alp,col_led,2)

else

pat = cairo_pattern_create_rgba (rgb_to_r_g_b(col_alp))

end

else

if bg then

pat = cairo_pattern_create_rgba (rgb_to_r_g_b(t.bg_colour))

else

pat = create_smooth_linear_gradient(t.width/2, 0, t.width/2,-t.height)

end

end

return pat

end



local y1=-t.height*pct/100

local y2,y3

if pct>(100*t.alarm/t.max) then

y1 = -t.height*t.alarm/100

y2 = -t.height*pct/100

if t.smooth then y1=y2 end

end



if t.angle_bar==0 then



--block for fg value

local pat = create_pattern(t.fg_colour,t.fg_led,false)

cairo_set_source(cr,pat)

cairo_rectangle(cr,0,0,t.width,y1)

cairo_fill(cr)

cairo_pattern_destroy(pat)



-- block for alarm value

if not t.smooth and y2 ~=nil then

pat = create_pattern(t.alarm_colour,t.alarm_led,false)

cairo_set_source(cr,pat)

cairo_rectangle(cr,0,y1,t.width,y2-y1)

cairo_fill(cr)

y3=y2

cairo_pattern_destroy(pat)

else

y2,y3=y1,y1

end

-- block for bg value

cairo_rectangle(cr,0,y2,t.width,-t.height-y3)

pat = create_pattern(t.bg_colour,t.bg_led,true)

cairo_set_source(cr,pat)

cairo_pattern_destroy(pat)

cairo_fill(cr)

end

end --end single bar













local function draw_multi_bar()

--function used for bars with 2 or more blocks

for pt = 1,t.blocks do

--set block y

local y1 = -(pt-1)*(t.height+t.space)

local light_on=false



--set colors

local col_alp = t.bg_colour

local col_led = t.bg_led

if pct>=(100/t.blocks) or pct>0 then --ligth on or not the block

if pct>=(pcb*(pt-1)) then

light_on = true

col_alp = t.fg_colour

col_led = t.fg_led

if pct>=(100*t.alarm/t.max) and (pcb*pt)>(100*t.alarm/t.max) then

col_alp = t.alarm_colour

col_led = t.alarm_led

end

end

end



--set colors

--have to try to create gradients outside the loop ?

local pat



if not t.smooth then

if t.angle_bar==0 then

if t.led_effect=="e" then

pat = create_led_linear_gradient (-delta, 0,delta+ t.width,0,col_alp,col_led)

elseif t.led_effect=="a" then

pat = create_led_linear_gradient (t.width/2, -t.height/2+y1,t.width/2,0+t.height/2+y1,col_alp,col_led)

elseif t.led_effect=="r" then

pat = create_led_radial_gradient (t.width/2, y1, 0, t.width/2,y1,t.width/1.5,col_alp,col_led,2)

else

pat = cairo_pattern_create_rgba (rgb_to_r_g_b(col_alp))

end

else

if t.led_effect=="a" then

pat = create_led_radial_gradient (0, 0, t.radius+(t.height+t.space)*(pt-1),

0, 0, t.radius+(t.height+t.space)*(pt),

col_alp,col_led,3)

else

pat = cairo_pattern_create_rgba (rgb_to_r_g_b(col_alp))

end



end

else



if light_on then

if t.angle_bar==0 then

pat = create_smooth_linear_gradient(t.width/2, t.height/2, t.width/2,-(t.blocks-0.5)*(t.height+t.space))

else

pat = create_smooth_radial_gradient(0, 0, (t.height+t.space), 0,0,(t.blocks+1)*(t.height+t.space),2)

end

else

pat = cairo_pattern_create_rgba (rgb_to_r_g_b(t.bg_colour))

end

end

cairo_set_source (cr, pat)

cairo_pattern_destroy(pat)



--draw a block

if t.angle_bar==0 then

cairo_move_to(cr,0,y1)

cairo_line_to(cr,t.width,y1)

else

cairo_arc( cr,0,0,

t.radius+(t.height+t.space)*(pt)-t.height/2,

-t.angle_bar -math.pi/2 ,

t.angle_bar -math.pi/2)

end

cairo_stroke(cr)

end

end









local function setup_bar_graph()

--function used to retrieve the value to display and to set the cairo structure

if t.blocks ~=1 then t.y=t.y-t.height/2 end



local value = 0

if t.name ~="" then

value = tonumber(conky_parse(string.format('${%s %s}', t.name, t.arg)))

--$to_bytes doesn't work when value has a decimal point,

--https://garage.maemo.org/plugins/ggit/browse.php/?p=monky;a=commitdiff;h=174c256c81a027a2ea406f5f37dc036fac0a524b;hp=d75e2db5ed3fc788fb8514121f67316ac3e5f29f

--http://sourceforge.net/tracker/index.php?func=detail&aid=3000865&group_id=143975&atid=757310

--conky bug?

--value = (conky_parse(string.format('${%s %s}', t.name, t.arg)))

--if string.match(value,"%w") then

-- value = conky_parse(string.format('${to_bytes %s}',value))

--end

else

value = tonumber(t.arg)

end



if value==nil then value =0 end



pct = 100*value/t.max

pcb = 100/t.blocks



cairo_set_line_width (cr, t.height)

cairo_set_line_cap (cr, cap)

cairo_translate(cr,t.x,t.y)

cairo_rotate(cr,t.angle)



local matrix0 = cairo_matrix_t:create()

tolua.takeownership(matrix0)

cairo_matrix_init (matrix0, 1,t.skew_y,t.skew_x,1,0,0)

cairo_transform(cr,matrix0)







--call the drawing function for blocks

if t.blocks==1 and t.angle_bar==0 then

draw_single_bar()

if t.reflection=="t" or t.reflection=="b" then cairo_translate(cr,0,-t.height) end

else

draw_multi_bar()

end



--dot for reminder

--[[

if t.blocks ~=1 then

cairo_set_source_rgba(cr,1,0,0,1)

cairo_arc(cr,0,t.height/2,3,0,2*math.pi)

cairo_fill(cr)

else

cairo_set_source_rgba(cr,1,0,0,1)

cairo_arc(cr,0,0,3,0,2*math.pi)

cairo_fill(cr)

end]]



--call the drawing function for reflection and prepare the mask used

if t.reflection_alpha>0 and t.angle_bar==0 then

local pat2

local matrix1 = cairo_matrix_t:create()

tolua.takeownership(matrix1)

if t.angle_bar==0 then

pts={-delta/2,(t.height+t.space)/2,t.width+delta,-(t.height+t.space)*(t.blocks)}

if t.reflection=="t" then

cairo_matrix_init (matrix1,1,0,0,-t.reflection_scale,0,-(t.height+t.space)*(t.blocks-0.5)*2*(t.reflection_scale+1)/2)

pat2 = cairo_pattern_create_linear (t.width/2,-(t.height+t.space)*(t.blocks),t.width/2,(t.height+t.space)/2)

elseif t.reflection=="r" then

cairo_matrix_init (matrix1,-t.reflection_scale,0,0,1,delta+2*t.width,0)

pat2 = cairo_pattern_create_linear (delta/2+t.width,0,-delta/2,0)

elseif t.reflection=="l" then

cairo_matrix_init (matrix1,-t.reflection_scale,0,0,1,-delta,0)

pat2 = cairo_pattern_create_linear (-delta/2,0,delta/2+t.width,-0)

else --bottom

cairo_matrix_init (matrix1,1,0,0,-1*t.reflection_scale,0,(t.height+t.space)*(t.reflection_scale+1)/2)

pat2 = cairo_pattern_create_linear (t.width/2,(t.height+t.space)/2,t.width/2,-(t.height+t.space)*(t.blocks))

end

end

cairo_transform(cr,matrix1)



if t.blocks==1 and t.angle_bar==0 then

draw_single_bar()

cairo_translate(cr,0,-t.height/2)

else

draw_multi_bar()

end





cairo_set_line_width(cr,0.01)

cairo_pattern_add_color_stop_rgba (pat2, 0,0,0,0,1-t.reflection_alpha)

cairo_pattern_add_color_stop_rgba (pat2, t.reflection_length,0,0,0,1)

if t.angle_bar==0 then

cairo_rectangle(cr,pts[1],pts[2],pts[3],pts[4])

end

cairo_clip_preserve(cr)

cairo_set_operator(cr,CAIRO_OPERATOR_CLEAR)

cairo_stroke(cr)

cairo_mask(cr,pat2)

cairo_pattern_destroy(pat2)

cairo_set_operator(cr,CAIRO_OPERATOR_OVER)



end --reflection

pct,pcb=nil

end --setup_bar_graph()



--start here !

setup_bar_graph()

cairo_restore(cr)

end






2_33620



Cronographe







Caché :




background yes

use_xft yes

xftfont URW Chancery L:style=Bold:size=11

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

maximum_width 310

text_buffer_size 2048

draw_shades no

draw_outline no

draw_borders no

draw_graph_borders no

default_color 000000

default_outline_color white

alignment top_left

gap_x 40

gap_y 40

no_buffers yes

uppercase no

cpu_avg_samples 2

override_utf8_locale yes



lua_load ~/.conky/chrono/chrononoir.lua

lua_draw_hook_post main

#lua_load ~/.conky/draw_bg/draw_bg.lua



TEXT

#${lua conky_draw_bg 160 0 0 0 0 0x000000 0.50}



${goto 140}${voffset 205}Miami




son lua :



Caché :
--[[ multiple analogue clocks by Didier-T (forum Ubuntu.fr) - 25 Nov 2012

Basé sur le travail de mrpeachy et Sector11

26 Nov 2012 - ajout hand_gap et hand_larg Didier-T

01 Dec 2012 - correction bug nb_jour Décembre Didier-T

02 Dec 2012 - ajout mode 24 heures Didier-T

09 Mar 2014 - ajout alumage progréssif des points de l'horloge

30 Avr 2014 - ajout fonction décalage horaire, pour ajout cadrant ville





use in conkyrc



lua_load /path/Chronograph.lua

lua_draw_hook_pre main

TEXT



]]



require 'cairo'

--Position et taille horloge

local init={

{text={"Dim","Lun","Mar","Mer","Jeu","Ven","Sam"},

nb=7*24,

formule='jour',

police="URW Chancery L",

taille=11,

text_color=0x000000,

text_alpha=0.4,

text_color_current=0x000000,

text_alpha_current=1,

point_color=0x000000,

point_alpha=0.4,

point_color_current=0x000000,

point_alpha_current=1,

hand_color=0xffff00,

hand_alpha=1,

center_x=158,

center_y=95,

text_radius=30,

point_radius=20,

hand_gap=0,

hand_larg=1.5,

hand_length=18,

point_ray=0.5

},

{text={""},

nb="",

formule='jour_num',

police="URW Chancery L",

taille=10,

text_color=0x000000,

text_alpha=0.4,

text_color_current=0x000000,

text_alpha_current=1,

point_color=0x000000,

point_alpha=0.4,

point_color_current=0x000000,

point_alpha_current=1,

hand_color=0xffff00,

hand_alpha=1,

center_x=100,

center_y=159,

text_radius=35,

point_radius=28,

hand_gap=0,

hand_larg=1.5,

hand_length=27,

point_ray=0.5

},

{text={"Jan","Fév","Mar","Avr","Mai","Jui","Jul","Aôu","Sep","Oct","Nov","Déc"},

nb="",

formule='mois',

police="URW Chancery L",

taille=10,

text_color=0x000000,

text_alpha=0.4,

text_color_current=0x000000,

text_alpha_current=1,

point_color=0x000000,

point_alpha=0.4,

point_color_current=0x000000,

point_alpha_current=1,

hand_color=0xffff00,

hand_alpha=1,

center_x=215,

center_y=159,

text_radius=35,

point_radius=26,

point_ray=1,

hand_gap=0,

hand_larg=1.5,

hand_length=25

},

{text={"00","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23"},

hour_24=true,

nb=12*3600, --12 or 24 *3600

formule='heure',

police="URW Chancery L",

taille=22,

text_color=0x000000,

text_alpha=0.4,

text_color_current=0x1540fc,

text_alpha_current=1,

point_color=0x000000,

point_alpha=0.4,

point_color_current=0x1540fc,

point_alpha_current=1,

hand_color=0x1540fc,

hand_alpha=1,

center_x=158,

center_y=159,

text_radius=145,

point_radius=148,

hand_gap=0,

hand_length=75,

hand_larg=3.5,

point_ray=0

},

{text={"","1","2","3","4","","6","7","8","9","","11","12","13","14","","16","17","18","19","","21","22","23","24","","26","27","28","29","","31","32","33","34","","36","37","38","39","","41","42","43","44","","46","47","48","49","","51","52","53","54","","56","57","58","59"},

nb=3600,

formule='minute',

police="URW Chancery L",

taille=12,

text_color=0x000000,

text_alpha=0.4,

text_color_current=0xff0000,

text_alpha_current=1,

point_color=0x000000,

point_alpha=0.4,

point_color_current=0xff0000,

point_alpha_current=1,

hand_color=0xff0000,

hand_alpha=1,

center_x=158,

center_y=159,

text_radius=140,

point_radius=130,

point_ray=0.5,

hand_gap=0,

hand_larg=3.5,

hand_length=100

},

{text={"00","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59"},

nb=60,

formule='secondes',

police="URW Chancery L",

taille=9,

text_color=0x000000,

text_alpha=0.4,

text_color_current=0x000000,

text_alpha_current=1,

point_color=0x000000,

point_alpha=0.4,

point_color_current=0x000000,

point_alpha_current=1,

hand_color=0xffff00,

hand_alpha=1,

center_x=158,

center_y=159,

text_radius=121,

point_radius=112,

point_ray=0.4,

hand_gap=0,

hand_larg=1.5,

hand_length=110,

progressif=true

},

-- petite montre du bas

{text={"00","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23"},

hour_24=false,

nb=12*3600, --12 or 24 *3600

formule='heure',

decalage=-6, --@ modifier en fonction de votre choix

police="URW Chancery L",

taille=10,

text_color=0x000000,

text_alpha=0.4,

text_color_current=0x000000,

text_alpha_current=0.4,

point_color=0x000000,

point_alpha=0.4,

point_color_current=0x000000,

point_alpha_current=0.4,

hand_color=0xffff00,

hand_alpha=1,

center_x=158,

center_y=230,

text_radius=35,

point_radius=28,

hand_gap=0,

hand_length=20,

hand_larg=1.5,

point_ray=0

},

{text={"0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59"},

nb=3600,

formule='minute',

police="URW Chancery L",

taille=9,

text_color=0xa8a8a8,

text_alpha=0,

text_color_current=0x000000,

text_alpha_current=0,

point_color=0x000000,

point_alpha=0,

point_color_current=0x000000,

point_alpha_current=0,

hand_color=0xffff00,

hand_alpha=1,

center_x=158,

center_y=230,

text_radius=25,

point_radius=20,

point_ray=0,

hand_gap=0,

hand_larg=1.5,

hand_length=28

},

{text={"00","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59"},

nb=60,

formule='secondes',

police="URW Chancery L",

taille=9,

text_color=0x000000,

text_alpha=0,

text_color_current=0x000000,

text_alpha_current=0,

point_color=0x000000,

point_alpha=0,

point_color_current=0x000000,

point_alpha_current=0,

hand_color=0x000000,

hand_alpha=1,

center_x=158,

center_y=230,

text_radius=30,

point_radius=20,

point_ray=0.5,

hand_gap=0,

hand_larg=0,

hand_length=30,

progressif=true

},



}



function conky_main()



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 extents=cairo_text_extents_t:create()

tolua.takeownership(extents)

local h, min, sec=time()

local jour, jour_num, mois, nb_jour=date()



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

for i in pairs(init) do

draw(cr, extents, init[i], h, min, sec, jour, jour_num, mois, nb_jour)

end

end



cairo_destroy(cr)

cairo_surface_destroy(cs)

cr=nil

collectgarbage()

end



function draw(cr, extents, value, h, min, sec, jour, jour_num, mois, nb_jour)

local function affichage(cr, extents, j, valeur, value, text, nb)

if value.progressif == nil then

value.progressif=false

end

if value.progressif==true and j<=valeur then

texte(value.police, value.taille, text, nb, value.text_radius, value.center_x, value.center_y, value.text_color_current, value.text_alpha_current, j, extents, cr)

point(nb, value.point_radius, value.center_x, value.center_y, value.point_color_current, value.point_alpha_current, j, cr, value.point_ray)

elseif value.progressif==false and j==valeur then

texte(value.police, value.taille, text, nb, value.text_radius, value.center_x, value.center_y, value.text_color_current, value.text_alpha_current, j, extents, cr)

point(nb, value.point_radius, value.center_x, value.center_y, value.point_color_current, value.point_alpha_current, j, cr, value.point_ray)

else

texte(value.police, value.taille, text, nb, value.text_radius, value.center_x, value.center_y, value.text_color, value.text_alpha, j, extents, cr)

point(nb, value.point_radius, value.center_x, value.center_y, value.point_color, value.point_alpha, j, cr, value.point_ray)

end

end

local pos

local nb=tonumber(table.getn(value.text))

cairo_select_font_face (cr, value.police, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);

cairo_set_font_size (cr, value.taille)

-- Section Horloge

if value.formule=="heure" then

if value.decalage~=nil then

h=h+tonumber(value.decalage)

end

local text

nb=value.nb/3600

if nb==24 then h=tonumber(os.date("%H")) end

pos=heure(h, min, sec)

for i=1, nb do

local j=i-1

if value.hour_24==true then

if tonumber(os.date("%H"))<nb then

text=value.text[i]

else

text=value.text[i+12]

end

else

text=value.text[i]

end

affichage(cr, extents, j, h, value, text, nb)

end

elseif value.formule=="minute" then

pos=minute(min, sec)

for i=1, nb do

local j=i-1

local text=value.text[i]

affichage(cr, extents, j, min, value, text, nb)

end

elseif value.formule=="secondes" then

pos=sec

for i=1, nb do

local j=i-1

local text=value.text[i]

affichage(cr, extents, j, sec, value, text, nb)

end

-- Section date

elseif value.formule=="mois" then

value.nb, pos=month()

for i=1, nb do

local j=i-1

local text=value.text[i]

affichage(cr, extents, j, mois-1, value, text, nb)

end

elseif value.formule=="jour_num" then

value.nb=nb_jour*24

nb=nb_jour

pos=day(jour-1)

for i=1, nb_jour do

if math.mod(i, 2) == 0 then

text=string.format("%02d",i)

else

text=""

end

local j=i-1

affichage(cr, extents, j, jour-1, value, text, nb)

end

elseif value.formule=="jour" then

pos=(jour_num*24)+tonumber(os.date("%H"))

for i=1, nb do

local j=i-1

local text=value.text[i]

affichage(cr, extents, j, jour_num, value, text, nb)

end



-- Horloge avec personnalisée (non utilisé pour le moment)

else

pos=tonumber(conky_parse(value.formule))

for i=1, nb do

local j=i-1

local text=value.text[i]

if tonumber(text)==pos then

texte(value.police, value.taille, text, nb, value.text_radius, value.center_x, value.center_y, value.text_color_current, value.text_alpha_current, i, extents, cr)

point(nb, value.point_radius, value.center_x, value.center_y, value.point_color_current, value.point_alpha_current, i, cr, value.point_ray)

else

texte(value.police, value.taille, text, nb, value.text_radius, value.center_x, value.center_y, value.text_color, value.text_alpha, i, extents, cr)

point(nb, value.point_radius, value.center_x, value.center_y, value.point_color, value.point_alpha, i, cr, value.point_ray)

end

end

end



hand(pos, value.nb, value.text_radius, value.hand_length, value.hand_gap, value.hand_larg, value.center_x, value.center_y, value.hand_color, value.hand_alpha, cr)

end



function date()

local nb_jour

local jour=tonumber(os.date("%d"))

local jour_num=tonumber(os.date("%w"))

local mois=tonumber(os.date("%m"))

if mois==12 then

nb_jour=31

else

nb_jour=tonumber(conky_parse("${exec date --date '1 month' +%j}"))-tonumber(conky_parse("${exec date +%j}"))

end

return jour, jour_num, mois, nb_jour

end



function day(jour)

local hjour=(jour*24)+tonumber(os.date("%H"))

return hjour

end



function month()

local nb_jours_annee=tonumber(conky_parse("${exec echo $(date --date '31 Dec' +%j)}"))

local jour_annee=tonumber(conky_parse("${exec echo $(date +%j)}"))

return nb_jours_annee, jour_annee

end



function time()

local h=tonumber(os.date("%I"))

local min=tonumber(os.date("%M"))

local sec=tonumber(os.date("%S"))

return h, min, sec

end



function heure(h, min, sec)

local hs=(h*3600)+(min*60)+sec

return hs

end



function minute(min, sec)

local m=(min*60)+sec

return m

end



function rgb_to_r_g_b(col,alp)

return ((col / 0x10000) % 0x100) / 255, ((col / 0x100) % 0x100) / 255, (col % 0x100) / 255, alp

end



function texte(police, taille, text, nb, radius, center_x, center_y, color, alpha, i, extents, cr)

cairo_set_source_rgba (cr,rgb_to_r_g_b(color,alpha))

local point=(math.pi/180)*((360/nb)*(i))

local x=0+radius*(math.sin(point))

local y=0-radius*(math.cos(point))

cairo_text_extents(cr,text,extents)

local width=extents.width

local height=extents.height

cairo_move_to(cr,center_x+x-(width/2),center_y+y+(height/2))

cairo_show_text (cr, text)

cairo_stroke (cr)

end



function point(nb, radius, center_x, center_y, color, alpha, i, cr, ray)

cairo_set_source_rgba (cr,rgb_to_r_g_b(color,alpha))

local point=(math.pi/180)*((360/nb)*(i))

local x=0+radius*(math.sin(point))

local y=0-radius*(math.cos(point))

cairo_arc (cr,center_x+x,center_y+y,ray,0,2*math.pi)

cairo_stroke (cr)

end



function hand(pos, nb, radius, hand_length, hand_gap, largeur, center_x, center_y, color, alpha, cr)

cairo_set_source_rgba (cr,rgb_to_r_g_b(color,alpha))

local point=(math.pi/180)*((360/nb)*(pos))

local x_gap=0+hand_gap*(math.sin(point))

local y_gap=0-hand_gap*(math.cos(point))

local x=0+hand_length*(math.sin(point))

local y=0-hand_length*(math.cos(point))

cairo_move_to (cr,center_x+x_gap,center_y+y_gap)

cairo_line_to (cr,center_x+x,center_y+y)

cairo_set_line_width (cr,largeur)

cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND)

cairo_stroke (cr)

end




3_41597