Created
December 5, 2010 22:52
-
-
Save nu7hatch/729568 to your computer and use it in GitHub Desktop.
My awesome conky rings :D
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
default_color white | |
own_window_colour white | |
alignment top_right | |
max_user_text 16384 | |
max_specials 512 | |
gap_x 0 | |
gap_y 40 | |
no_buffers yes | |
uppercase no | |
cpu_avg_samples 2 | |
net_avg_samples 2 | |
override_utf8_locale yes | |
use_spacer none | |
default_color 99ccff | |
color2 5191b7 | |
color3 116187 | |
color4 11CCFF | |
lua_load ~/.conky/rings.lua | |
lua_draw_hook_pre rings | |
TEXT | |
${voffset 708}${font Designer Block:size=8}${color3}${alignr 32}Kernel:${color2} ${kernel}${font}${color} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--[[ | |
Rings by londonali1010 (2009) | |
Customized by nu7hatch (2010) | |
To call this script in Conky, use the following (assuming that you save this script to ~/.conky/rings.lua): | |
lua_load ~/.conky/rings.lua | |
lua_draw_hook_pre rings | |
]] | |
function network_interface() | |
return conky_parse('${if_existing /proc/net/route eth0}eth0${else}${if_existing /proc/net/route wlan0}wlan0${endif}${endif}') | |
end | |
settings_table = { | |
{ | |
name='time', | |
arg='%I.%M', | |
max=12, | |
bg_colour=0x33aaff, | |
bg_alpha=0.05, | |
fg_colour=0x33aaff, | |
fg_alpha=0.5, | |
x=742, y=171, | |
radius=73, | |
thickness=10, | |
start_angle=0, | |
end_angle=360 | |
}, | |
{ | |
name='time', | |
arg='%M.%S', | |
max=60, | |
bg_colour=0x55bbff, | |
bg_alpha=0.05, | |
fg_colour=0x55bbff, | |
fg_alpha=0.3, | |
x=742, y=171, | |
radius=104, | |
thickness=7, | |
start_angle=0, | |
end_angle=360 | |
}, | |
{ | |
name='time', | |
arg='%S', | |
max=60, | |
bg_colour=0x55bbff, | |
bg_alpha=0.05, | |
fg_colour=0x55bbff, | |
fg_alpha=0.1, | |
x=742, y=171, | |
radius=127, | |
thickness=5, | |
start_angle=0, | |
end_angle=360 | |
}, | |
{ | |
name='cpu', | |
arg='cpu0', | |
max=100, | |
bg_colour=0x55bbff, | |
bg_alpha=0.3, | |
fg_colour=0x55bbff, | |
fg_alpha=0.8, | |
x=202, y=219, | |
radius=27, | |
thickness=4, | |
start_angle=210, | |
end_angle=443 | |
}, | |
{ | |
name='cpu', | |
arg='cpu1', | |
max=100, | |
bg_colour=0x55bbff, | |
bg_alpha=0.3, | |
fg_colour=0x55bbff, | |
fg_alpha=0.8, | |
x=202, y=219, | |
radius=20, | |
thickness=4, | |
start_angle=210, | |
end_angle=468 | |
}, | |
{ | |
name='cpu', | |
arg='cpu2', | |
max=100, | |
bg_colour=0x55bbff, | |
bg_alpha=0.3, | |
fg_colour=0x55bbff, | |
fg_alpha=0.8, | |
x=341, y=246, | |
radius=23, | |
thickness=4, | |
start_angle=234, | |
end_angle=470 | |
}, | |
{ | |
name='cpu', | |
arg='cpu3', | |
max=100, | |
bg_colour=0x55bbff, | |
bg_alpha=0.3, | |
fg_colour=0x55bbff, | |
fg_alpha=0.8, | |
x=341, y=246, | |
radius=16, | |
thickness=4, | |
start_angle=234, | |
end_angle=495 | |
}, | |
{ | |
name='acpitemp', | |
arg='', | |
max=120, | |
bg_colour=0x55bbff, | |
bg_alpha=0.2, | |
fg_colour=0x55bbff, | |
fg_alpha=0.6, | |
x=452, y=314, | |
radius=20, | |
thickness=3, | |
start_angle=268, | |
end_angle=508 | |
}, | |
{ | |
name='battery_percent', | |
arg='BAT0', | |
max=100, | |
bg_colour=0x55bbff, | |
bg_alpha=0.1, | |
fg_colour=0x55bbff, | |
fg_alpha=0.3, | |
x=568, y=430, | |
radius=19, | |
thickness=3, | |
start_angle=124, | |
end_angle=465 | |
}, | |
{ | |
name='memperc', | |
arg='', | |
max=100, | |
bg_colour=0x55bbff, | |
bg_alpha=0.3, | |
fg_colour=0x55bbff, | |
fg_alpha=0.8, | |
x=368, y=527, | |
radius=91, | |
thickness=3, | |
start_angle=143, | |
end_angle=465 | |
}, | |
{ | |
name='swapperc', | |
arg='', | |
max=100, | |
bg_colour=0x55bbff, | |
bg_alpha=0.2, | |
fg_colour=0x55bbff, | |
fg_alpha=0.6, | |
x=490, y=610, | |
radius=65, | |
thickness=2, | |
start_angle=94, | |
end_angle=445 | |
}, | |
{ | |
name='fs_used_perc', | |
arg='/', | |
max=100, | |
bg_colour=0x55bbff, | |
bg_alpha=0.1, | |
fg_colour=0x55bbff, | |
fg_alpha=0.6, | |
x=908, y=408, | |
radius=70, | |
thickness=8, | |
start_angle=220, | |
end_angle=281 | |
}, | |
{ | |
name='fs_used_perc', | |
arg='/home', | |
max=100, | |
bg_colour=0x55bbff, | |
bg_alpha=0.1, | |
fg_colour=0x55bbff, | |
fg_alpha=0.6, | |
x=908, y=408, | |
radius=70, | |
thickness=8, | |
start_angle=296, | |
end_angle=399 | |
}, | |
{ | |
name='fs_used_perc', | |
arg='/basement', | |
max=100, | |
bg_colour=0x55bbff, | |
bg_alpha=0.1, | |
fg_colour=0x55bbff, | |
fg_alpha=0.6, | |
x=908, y=408, | |
radius=70, | |
thickness=8, | |
start_angle=407, | |
end_angle=571 | |
}, | |
} | |
network_settings_table = { | |
{ | |
name='upspeedf', | |
arg=network_interface(), | |
max=2*1024, | |
bg_colour=0x55bbff, | |
bg_alpha=0.2, | |
fg_colour=0x55bbff, | |
fg_alpha=0.6, | |
x=1089, y=339, | |
radius=46, | |
thickness=5, | |
start_angle=642, | |
end_angle=720 | |
}, | |
{ | |
name='downspeedf', | |
arg=network_interface(), | |
max=2*1024, | |
bg_colour=0x55bbff, | |
bg_alpha=0.2, | |
fg_colour=0x55bbff, | |
fg_alpha=0.6, | |
x=1089, y=339, | |
radius=54, | |
thickness=5, | |
start_angle=641, | |
end_angle=720 | |
} | |
} | |
clock_r=130 | |
clock_x=742 | |
clock_y=171 | |
clock_colour=0x99ccff | |
clock_alpha=0.8 | |
show_seconds=true | |
require 'cairo' | |
function rgb_to_r_g_b(colour,alpha) | |
return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha | |
end | |
function draw_ring(cr,t,pt) | |
local w,h=conky_window.width,conky_window.height | |
local xc,yc,ring_r,ring_w,sa,ea=pt['x'],pt['y'],pt['radius'],pt['thickness'],pt['start_angle'],pt['end_angle'] | |
local bgc, bga, fgc, fga=pt['bg_colour'], pt['bg_alpha'], pt['fg_colour'], pt['fg_alpha'] | |
local angle_0=sa*(2*math.pi/360)-math.pi/2 | |
local angle_f=ea*(2*math.pi/360)-math.pi/2 | |
local t_arc=t*(angle_f-angle_0) | |
-- Draw background ring | |
cairo_arc(cr,xc,yc,ring_r,angle_0,angle_f) | |
cairo_set_source_rgba(cr,rgb_to_r_g_b(bgc,bga)) | |
cairo_set_line_width(cr,ring_w) | |
cairo_stroke(cr) | |
-- Draw indicator ring | |
cairo_arc(cr,xc,yc,ring_r,angle_0,angle_0+t_arc) | |
cairo_set_source_rgba(cr,rgb_to_r_g_b(fgc,fga)) | |
cairo_stroke(cr) | |
end | |
function draw_clock_hands(cr,xc,yc) | |
local secs,mins,hours,secs_arc,mins_arc,hours_arc | |
local xh,yh,xm,ym,xs,ys | |
secs=os.date("%S") | |
mins=os.date("%M") | |
hours=os.date("%I") | |
secs_arc=(2*math.pi/60)*secs | |
mins_arc=(2*math.pi/60)*mins+secs_arc/60 | |
hours_arc=(2*math.pi/12)*hours+mins_arc/12 | |
-- Draw hour hand | |
xh=xc+0.7*clock_r*math.sin(hours_arc) | |
yh=yc-0.7*clock_r*math.cos(hours_arc) | |
cairo_move_to(cr,xc,yc) | |
cairo_line_to(cr,xh,yh) | |
cairo_set_line_cap(cr,CAIRO_LINE_CAP_ROUND) | |
cairo_set_line_width(cr,5) | |
cairo_set_source_rgba(cr,rgb_to_r_g_b(clock_colour,clock_alpha)) | |
cairo_stroke(cr) | |
-- Draw minute hand | |
xm=xc+clock_r*math.sin(mins_arc) | |
ym=yc-clock_r*math.cos(mins_arc) | |
cairo_move_to(cr,xc,yc) | |
cairo_line_to(cr,xm,ym) | |
cairo_set_line_width(cr,3) | |
cairo_stroke(cr) | |
-- Draw seconds hand | |
if show_seconds then | |
xs=xc+clock_r*math.sin(secs_arc) | |
ys=yc-clock_r*math.cos(secs_arc) | |
cairo_move_to(cr,xc,yc) | |
cairo_line_to(cr,xs,ys) | |
cairo_set_line_width(cr,1) | |
cairo_stroke(cr) | |
end | |
end | |
function conky_rings() | |
local function setup_rings(cr,pt) | |
local str='' | |
local value=0 | |
str=string.format('${%s %s}',pt['name'],pt['arg']) | |
str=conky_parse(str) | |
value=tonumber(str) | |
if value == nil then value = 0 end | |
pct=value/pt['max'] | |
draw_ring(cr,pct,pt) | |
end | |
-- Check that Conky has been running for at least 5s | |
if conky_window==nil then return end | |
local cs=cairo_xlib_surface_create(conky_window.display,conky_window.drawable,conky_window.visual, conky_window.width,conky_window.height) | |
local cr=cairo_create(cs) | |
local updates=conky_parse('${updates}') | |
update_num=tonumber(updates) | |
for i in pairs(settings_table) do | |
setup_rings(cr,settings_table[i]) | |
end | |
if (network_interface() ~= '') then | |
for i in pairs(network_settings_table) do | |
setup_rings(cr,network_settings_table[i]) | |
end | |
end | |
draw_clock_hands(cr,clock_x,clock_y) | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment