Alors pour le conky je suis parti de ça :
http://browse.deviantart.com/art/notifyOSD-conky-206763506
Pour les images :
Pour le texte :
.conkyrc
######################
# - Conky settings - #
######################
update_interval 1
total_run_times 0
net_avg_samples 1
cpu_avg_samples 1
imlib_cache_size 0
double_buffer yes
no_buffers yes
#####################
# - Text settings - #
#####################
use_xft yes
xftfont Ubuntu:size=9
override_utf8_locale yes
text_buffer_size 2048
#############################
# - Window specifications - #
#############################
own_window_class Conky
own_window yes
own_window_type normal
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
#own_window_argb_visual yes
#own_window_argb_value 100
alignment tr
gap_x -2
gap_y 180
minimum_size 350 300
default_bar_size 60 10
#########################
# - Graphics settings - #
#########################
draw_shades no
default_color efefef
default_shade_color 1d1d1d
color0 ffffff
color1 ffffff
color2 ffffff
lua_load ~/.conky/conky_orange.lua
lua_draw_hook_pre main
#lua_load ~/.conky/CCK.lua
#lua_draw_hook_post cairo_draw
TEXT
${voffset 4}
#---DATE & HEURE----
${font Ubuntu:size=9}${alignr -35}${time %A} ${font} ${goto 280} ${voffset -8} ${font Ubuntu:style=Bold:size=25} ${time %d}${font} ${goto 250} ${font Ubuntu:size=9} ${alignr 25} ${time %B} ${font} ${voffset 8} ${goto 257} ${font Ubuntu:style=Bold:size=24}${time %Y}${font}
${voffset -36}${goto 169} ${font Ubuntu:style=Bold:size=9} ${time %H:%M}${font}
#---METEO----
${voffset -40}${goto 90}${font Weather:size=45}${execi 600 ~/.conky/meteo.sh meteo} ${font}
${goto 130}${voffset -45}${font Ubuntu:style=Bold:size=9} ${execi 600 ~/.conky/meteo.sh temperature}°C ${font}
${goto 95}${voffset 25}${font Ubuntu:size=8}Toulouse${font}
#---CPU ET RAM----
${voffset -5}
${goto 110}${font Ubuntu:style=Bold:size=10}CPU Température RAM${font}
${voffset 15}
${goto 105}${font Ubuntu:style=Bold:size=8}${cpu cpu1}% / ${cpu cpu2}% ${alignr 20} ${mem}/${memeasyfree} ${font}
${voffset -55}
${goto 180}${font Ubuntu:style=Bold:size=9}T°: ${execi 30 sensors | grep 'Core 0' | cut -c17-22}°C
${goto 180}${font Ubuntu:style=Bold:size=9}T°: ${execi 30 sensors | grep 'Core 1' | cut -c17-22}°C
${voffset -40}
${goto 280}${font Ubuntu:style=Bold:size=12}${memperc}%
#---DISQUE DUR----
${voffset 0}
${goto 105} ${font Ubuntu:style=Bold:size=11}${fs_used_perc /home}% ${goto 190} ${font Ubuntu:style=Bold:size=11}${fs_used_perc /}% ${goto 275} ${font Ubuntu:style=Bold:size=11}${fs_used_perc /media/Documents}%
${voffset 6}${font Ubuntu:size=8}${goto 105}home : ${goto 192}Racine : ${goto 275}Docs : ${font}
${voffset -6}${font Ubuntu:size=8}${goto 105}${fs_free /home} free ${goto 192}${fs_free /} free ${goto 275}${fs_free /media/Documents} free
#
#---DEBIT INTERNET----
${if_up eth0}
${voffset -10}
${font}${color}${goto 92}${voffset +2}Up : ${goto 140}${font Ubuntu:style=Bold:size=9}${color1}${upspeed eth0} ${alignr 30}${color2}${upspeedgraph eth0 8,100 92B6F1 CCDFFF}${color}
${voffset +4}${font}${color}${goto 92}${voffset -6}Down : ${goto 140}${font Ubuntu:style=Bold:size=9}${color1}${downspeed eth0}${alignr 30}${color2}${downspeedgraph eth0 8,100 92B6F1 CCDFFF}${color}
${goto 92}${font}${color}Total Up/Down : ${font Ubuntu:style=Bold:size=9}${color1}${totalup eth0} / ${font Ubuntu:style=Bold:size=9}${color1}${totaldown eth0}
${endif}
#---MUSIQUE----
${if_running clementine}
${voffset -20}
${goto 92}${font Ubuntu:size=10:bold}${color white}${execi 5 conkyClementine --nounknownoutput -m 35 -d AR}${font}
${goto 92}${font Ubuntu:size=10:italic}${color #CCCCCC}${execi 5 conkyClementine --nounknownoutput -m 35 -d AL -n}${font}
${goto 92}${color #CCCCCC}${font Ubuntu:italic:size=10}${execi 5 conkyClementine --nounknownoutput -d PT} / ${color #CCCCCC}${execi 5 conkyClementine --nounknownoutput -d LE}${font}${color}
${image /tmp/cover -p 32,312 -s 45x45}
$endif
#---IMAGES----
${image ~/.conky/base.png -p 10,0 -s 339x86}${image ~/.conky/base.png -p 10,73 -s 339x86}${image ~/.conky/base.png -p 10,146 -s 339x86}${image ~/.conky/base.png -p 10,219 -s 339x86}${image ~/.conky/base.png -p 10,292 -s 339x86}${image ~/.conky/calendar.png -p 32,20 -s 45x45}${image ~/.conky/emblem-system.png -p 32,93 -s 45x45}${image ~/.conky/folder.png -p 32,166 -s 45x45}${image ~/.conky/nm-signal-75.png -p 32,239 -s 45x45}${image ~/.conky/emblem-sound.png -p 32,312 -s 45x45}
conky_orange.lua
require 'cairo'
--------------------------------------------------------------------------------
-- horloge DONNÉES
-- HEURE
clock_h = {
{
name='time', arg='%H', max_value=12,
x=190, y=48,
graph_radius=20,
graph_thickness=2,
graph_unit_angle=30, graph_unit_thickness=30,
graph_bg_colour=0xffffff, graph_bg_alpha=0.2,
graph_fg_colour=0xFFFFFF, graph_fg_alpha=1.0,
txt_radius=20,
txt_weight=1, txt_size=11.0,
txt_fg_colour=0xFFFFFF, txt_fg_alpha=0.8,
graduation_radius=20,
graduation_thickness=3, graduation_mark_thickness=2,
graduation_unit_angle=30,
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3,
},
}
-- MINUTES
clock_m = {
{
name='time', arg='%M', max_value=60,
x=190, y=48,
graph_radius=25,
graph_thickness=2,
graph_unit_angle=6, graph_unit_thickness=6,
graph_bg_colour=0xffffff, graph_bg_alpha=0.2,
graph_fg_colour=0xFFFFFF, graph_fg_alpha=1.0,
txt_radius=35,
txt_weight=0, txt_size=10.0,
txt_fg_colour=0xFFFFFF, txt_fg_alpha=0.6,
graduation_radius=57,
graduation_thickness=0, graduation_mark_thickness=2,
graduation_unit_angle=30,
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3,
},
}
-- SECONDES
clock_s = {
{
name='time', arg='%S', max_value=60,
x=190, y=48,
graph_radius=30,
graph_thickness=2,
graph_unit_angle=6, graph_unit_thickness=2,
graph_bg_colour=0xffffff, graph_bg_alpha=0.0,
graph_fg_colour=0xFFFFFF, graph_fg_alpha=1.0,
txt_radius=40,
txt_weight=0, txt_size=9.0,
txt_fg_colour=0xFFFFFF, txt_fg_alpha=0.6,
graduation_radius=0,
graduation_thickness=0, graduation_mark_thickness=0,
graduation_unit_angle=0,
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.0,
},
}
--------------------------------------------------------------------------------
-- jauge DONNÉES
gauge = {
{
name='downspeedf', arg='', max_value=100,
x=40, y=160,
graph_radius=0,
graph_thickness=0,
graph_start_angle=180,
graph_unit_angle=2.7, graph_unit_thickness=2.7,
graph_bg_colour=0xffffff, graph_bg_alpha=0.1,
graph_fg_colour=0xFFFFFF, graph_fg_alpha=0.0,
hand_fg_colour=0xEF5A29, hand_fg_alpha=0.8,
txt_radius=34,
txt_weight=1, txt_size=10.0,
txt_fg_colour=0xEF5A29, txt_fg_alpha=0.0,
graduation_radius=0,
graduation_thickness=4, graduation_mark_thickness=2,
graduation_unit_angle=27,
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3,
-- caption='download',
caption_weight=1, caption_size=8.0,
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.5,
},
{
name='upspeedf', arg='', max_value=100,
x=40, y=160,
graph_radius=0,
graph_thickness=5,
graph_start_angle=180,
graph_unit_angle=2.7, graph_unit_thickness=2.7,
graph_bg_colour=0xffffff, graph_bg_alpha=0.1,
graph_fg_colour=0xFFFFFF, graph_fg_alpha=0.0,
hand_fg_colour=0xFFFFFF, hand_fg_alpha=0.6,
txt_radius=10,
txt_weight=0, txt_size=9.0,
txt_fg_colour=0xFFFFFF, txt_fg_alpha=0.0,
graduation_radius=0,
graduation_thickness=0, graduation_mark_thickness=1,
graduation_unit_angle=27,
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3,
-- caption='upload',
caption_weight=1, caption_size=8.0,
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.5,
},
}
settings_table = {
{
name='fs_used_perc', arg='/home',
x=120, y=183, max=100,
bg_colour=0xffffff, bg_alpha=0.2,
fg_colour=0xffffff, fg_alpha=1.0,
radius=17,
thickness=3,
start_angle=-180,
end_angle=180
},
{
name='fs_used_perc', arg='/',
x=205, y=183, max=100,
bg_colour=0xffffff, bg_alpha=0.2,
fg_colour=0xffffff, fg_alpha=1.0,
radius=17,
thickness=3,
start_angle=-180,
end_angle=180
},
{
name='fs_used_perc', arg='/media/Documents',
x=290, y=183, max=100,
bg_colour=0xffffff, bg_alpha=0.2,
fg_colour=0xffffff, fg_alpha=1.0,
radius=17,
thickness=3,
start_angle=-180,
end_angle=180
},
{
name='memperc', arg='',
x=290, y=135, max=100,
bg_colour=0xffffff, bg_alpha=0.2,
fg_colour=0xffffff, fg_alpha=1.0,
radius=25,
thickness=5,
start_angle=-90,
end_angle=90
},
{
name='cpu', arg='cpu1',
x=125, y=135, max=100,
bg_colour=0xffffff, bg_alpha=0.2,
fg_colour=0xffffff, fg_alpha=1.0,
radius=25,
thickness=2,
start_angle=-90,
end_angle=90
},
{
name='cpu', arg='cpu2',
x=125, y=135, max=100,
bg_colour=0xffffff, bg_alpha=0.2,
fg_colour=0xffffff, fg_alpha=1.0,
radius=20,
thickness=2,
start_angle=-90,
end_angle=90
},
}
-------------------------------------------------------------------------------
-- rgb_to_r_g_b
-- convertit la couleur de hexa en décimal
--
function rgb_to_r_g_b(colour, alpha)
return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
end
-------------------------------------------------------------------------------
-- position_de_l'angle
-- convertit les degrés, rotation et rad (0 degré est en haut / nord)
--
function angle_to_position(start_angle, current_angle)
local pos = current_angle + start_angle
return ( ( pos * (2 * math.pi / 360) ) - (math.pi / 2) )
end
-------------------------------------------------------------------------------
-- draw_clock_ring
-- affichage horloge
--
function draw_clock_ring(display, data, value)
local max_value = data['max_value']
local x, y = data['x'], data['y']
local graph_radius = data['graph_radius']
local graph_thickness, graph_unit_thickness = data['graph_thickness'], data['graph_unit_thickness']
local graph_unit_angle = data['graph_unit_angle']
local graph_bg_colour, graph_bg_alpha = data['graph_bg_colour'], data['graph_bg_alpha']
local graph_fg_colour, graph_fg_alpha = data['graph_fg_colour'], data['graph_fg_alpha']
-- fond de l'anneau
cairo_arc(display, x, y, graph_radius, 0, 2 * math.pi)
cairo_set_source_rgba(display, rgb_to_r_g_b(graph_bg_colour, graph_bg_alpha))
cairo_set_line_width(display, graph_thickness)
cairo_stroke(display)
-- valeur arc
local val = (value % max_value)
local i = 1
while i <= val do
cairo_arc(display, x, y, graph_radius,( ((graph_unit_angle * i) - graph_unit_thickness)*(2*math.pi/360) )-(math.pi/2),((graph_unit_angle * i) * (2*math.pi/360))-(math.pi/2))
cairo_set_source_rgba(display,rgb_to_r_g_b(graph_fg_colour,graph_fg_alpha))
cairo_stroke(display)
i = i + 1
end
local angle = (graph_unit_angle * i) - graph_unit_thickness
-- graduations
local graduation_radius = data['graduation_radius']
local graduation_thickness, graduation_mark_thickness = data['graduation_thickness'], data['graduation_mark_thickness']
local graduation_unit_angle = data['graduation_unit_angle']
local graduation_fg_colour, graduation_fg_alpha = data['graduation_fg_colour'], data['graduation_fg_alpha']
if graduation_radius > 0 and graduation_thickness > 0 and graduation_unit_angle > 0 then
local nb_graduation = 360 / graduation_unit_angle
local i = 1
while i <= nb_graduation do
cairo_set_line_width(display, graduation_thickness)
cairo_arc(display, x, y, graduation_radius, (((graduation_unit_angle * i)-(graduation_mark_thickness/2))*(2*math.pi/360))-(math.pi/2),(((graduation_unit_angle * i)+(graduation_mark_thickness/2))*(2*math.pi/360))-(math.pi/2))
cairo_set_source_rgba(display,rgb_to_r_g_b(graduation_fg_colour,graduation_fg_alpha))
cairo_stroke(display)
cairo_set_line_width(display, graph_thickness)
i = i + 1
end
end
end
-------------------------------------------------------------------------------
-- draw_gauge_ring
-- displays gauges
--
function draw_gauge_ring(display, data, value)
local max_value = data['max_value']
local x, y = data['x'], data['y']
local graph_radius = data['graph_radius']
local graph_thickness, graph_unit_thickness = data['graph_thickness'], data['graph_unit_thickness']
local graph_start_angle = data['graph_start_angle']
local graph_unit_angle = data['graph_unit_angle']
local graph_bg_colour, graph_bg_alpha = data['graph_bg_colour'], data['graph_bg_alpha']
local graph_fg_colour, graph_fg_alpha = data['graph_fg_colour'], data['graph_fg_alpha']
local hand_fg_colour, hand_fg_alpha = data['hand_fg_colour'], data['hand_fg_alpha']
local graph_end_angle = (max_value * graph_unit_angle) % 360
-- background ring
cairo_arc(display, x, y, graph_radius, angle_to_position(graph_start_angle, 0), angle_to_position(graph_start_angle, graph_end_angle))
cairo_set_source_rgba(display, rgb_to_r_g_b(graph_bg_colour, graph_bg_alpha))
cairo_set_line_width(display, graph_thickness)
cairo_stroke(display)
-- arc of value
local val = value % (max_value + 1)
local start_arc = 0
local stop_arc = 0
local i = 1
while i <= val do
start_arc = (graph_unit_angle * i) - graph_unit_thickness
stop_arc = (graph_unit_angle * i)
cairo_arc(display, x, y, graph_radius, angle_to_position(graph_start_angle, start_arc), angle_to_position(graph_start_angle, stop_arc))
cairo_set_source_rgba(display, rgb_to_r_g_b(graph_fg_colour, graph_fg_alpha))
cairo_stroke(display)
i = i + 1
end
local angle = start_arc
-- hand
start_arc = (graph_unit_angle * val) - (graph_unit_thickness * 2)
stop_arc = (graph_unit_angle * val)
cairo_arc(display, x, y, graph_radius, angle_to_position(graph_start_angle, start_arc), angle_to_position(graph_start_angle, stop_arc))
cairo_set_source_rgba(display, rgb_to_r_g_b(hand_fg_colour, hand_fg_alpha))
cairo_stroke(display)
-- graduations marks
local graduation_radius = data['graduation_radius']
local graduation_thickness, graduation_mark_thickness = data['graduation_thickness'], data['graduation_mark_thickness']
local graduation_unit_angle = data['graduation_unit_angle']
local graduation_fg_colour, graduation_fg_alpha = data['graduation_fg_colour'], data['graduation_fg_alpha']
if graduation_radius > 0 and graduation_thickness > 0 and graduation_unit_angle > 0 then
local nb_graduation = graph_end_angle / graduation_unit_angle
local i = 0
while i < nb_graduation do
cairo_set_line_width(display, graduation_thickness)
start_arc = (graduation_unit_angle * i) - (graduation_mark_thickness / 2)
stop_arc = (graduation_unit_angle * i) + (graduation_mark_thickness / 2)
cairo_arc(display, x, y, graduation_radius, angle_to_position(graph_start_angle, start_arc), angle_to_position(graph_start_angle, stop_arc))
cairo_set_source_rgba(display,rgb_to_r_g_b(graduation_fg_colour,graduation_fg_alpha))
cairo_stroke(display)
cairo_set_line_width(display, graph_thickness)
i = i + 1
end
end
-- text
local txt_radius = data['txt_radius']
local txt_weight, txt_size = data['txt_weight'], data['txt_size']
local txt_fg_colour, txt_fg_alpha = data['txt_fg_colour'], data['txt_fg_alpha']
local movex = txt_radius * math.cos(angle_to_position(graph_start_angle, angle))
local movey = txt_radius * math.sin(angle_to_position(graph_start_angle, angle))
cairo_select_font_face (display, "ubuntu", CAIRO_FONT_SLANT_NORMAL, txt_weight)
cairo_set_font_size (display, txt_size)
cairo_set_source_rgba (display, rgb_to_r_g_b(txt_fg_colour, txt_fg_alpha))
cairo_move_to (display, x + movex - (txt_size / 2), y + movey + 3)
cairo_show_text (display, value)
cairo_stroke (display)
-- caption
local caption = data['caption']
local caption_weight, caption_size = data['caption_weight'], data['caption_size']
local caption_fg_colour, caption_fg_alpha = data['caption_fg_colour'], data['caption_fg_alpha']
local tox = graph_radius * (math.cos((graph_start_angle * 2 * math.pi / 360)-(math.pi/2)))
local toy = graph_radius * (math.sin((graph_start_angle * 2 * math.pi / 360)-(math.pi/2)))
cairo_select_font_face (display, "ubuntu", CAIRO_FONT_SLANT_NORMAL, caption_weight);
cairo_set_font_size (display, caption_size)
cairo_set_source_rgba (display, rgb_to_r_g_b(caption_fg_colour, caption_fg_alpha))
cairo_move_to (display, x + tox + 5, y + toy + 1)
-- bad hack but not enough time !
if graph_start_angle < 105 then
cairo_move_to (display, x + tox - 30, y + toy + 1)
end
cairo_show_text (display, caption)
cairo_stroke (display)
end
-------------------------------------------------------------------------------
-- go_clock_rings
-- loads data and displays clock
--
function go_clock_rings(display)
local function load_clock_rings(display, data)
local str, value = '', 0
str = string.format('${%s %s}',data['name'], data['arg'])
str = conky_parse(str)
value = tonumber(str)
draw_clock_ring(display, data, value)
end
for i in pairs(clock_h) do
load_clock_rings(display, clock_h[i])
end
for i in pairs(clock_m) do
load_clock_rings(display, clock_m[i])
end
for i in pairs(clock_s) do
load_clock_rings(display, clock_s[i])
end
end
-------------------------------------------------------------------------------
-- go_gauge_rings
-- loads data and displays gauges
--
function go_gauge_rings(display)
local function load_gauge_rings(display, data)
local str, value = '', 0
str = string.format('${%s %s}',data['name'], data['arg'])
str = conky_parse(str)
value = tonumber(str)
draw_gauge_ring(display, data, value)
end
for i in pairs(gauge) do
load_gauge_rings(display, gauge[i])
end
end
-------------------------------------------------------------------------------
-- rgb_to_r_g_b
-- converts color in hexa to decimal
--
function rgb_to_r_g_b(colour,alpha)
return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
end
-------------------------------------------------------------------------------
-- displays rings
--
--
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)
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)
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
-------------------------------------------------------------------------------
-- MAIN
function conky_main()
if conky_window == nil then
return
end
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)
if value == nil then value = 0 end
pct=value/pt['max']
draw_ring(cr,pct,pt)
end
local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, conky_window.width, conky_window.height)
local display = cairo_create(cs)
local cr=cairo_create(cs)
local updates = conky_parse('${updates}')
update_num = tonumber(updates)
if update_num > 5 then
go_clock_rings(display)
go_gauge_rings(display)
for i in pairs(settings_table) do
setup_rings(cr,settings_table[i])
end
end
end
meteo.sh
#!/bin/bash
condition=`w3m -dump http://www.weather.com/weather/right-now/FRXX0099:1 | grep "http://s.imwx.com/" | tail -1 | sed -e "s/ http/#/g" | cut -d# -f1`
T_f=`w3m -dump http://www.weather.com/weather/right-now/FRXX0099:1 | grep -A 2 png | tail -1 | cut -c7-8`
temp=$((T_f-32))
T_c=$(($temp*5/9))
if [[ "$condition" = "Sunny" || $condition = "Clear" ]] ; then
meteo="D"
elif [ "$condition" = "Fair" ] ; then
meteo="b"
elif [[ "$condition" = "Cloudy" || $condition = "Cloudy / Windy" ]] ; then
meteo="d"
elif [ "$condition" = "Partly Cloudy" ] ; then
meteo="c"
elif [ "$condition" = "Mostly Cloudy" ] ; then
meteo="d"
elif [ "$condition" = "Light Rain" ] ; then
meteo="g"
elif [ "$condition" = "Rain" ] ; then
meteo="h"
elif [ "$condition" = "Rain Shower" ] ; then
meteo="h"
elif [ "$condition" = "Snow" ] ; then
meteo="k"
fi
if [ $1 = "meteo" ] ; then
echo $meteo
elif [ $1 = "temperature" ] ; then
echo $T_c
fi
L'affichage de l'album pour que ça marche il faut installer conkyclementine_2.03_all.deb (ou autre chose si tu utilises un autre player).
meteo.sh c'est plus ou moins celui qu'on trouve dans la doc conky. Mais il ne marche pas tout le temps.