Created
March 7, 2018 19:41
-
-
Save deadPix3l/f1a77457a8ad7a5a7fc6ac5c67881fd1 to your computer and use it in GitHub Desktop.
rings.conky
This file contains 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
# -- Conky settings -- # | |
background no | |
update_interval 1 | |
cpu_avg_samples 2 | |
net_avg_samples 2 | |
override_utf8_locale yes | |
double_buffer yes | |
no_buffers yes | |
text_buffer_size 2048 | |
imlib_cache_size 0 | |
# -- Window specifications -- # | |
own_window yes | |
own_window_type desktop | |
own_window_transparent yes | |
own_window_hints undecorate,sticky,skip_taskbar,skip_pager,below | |
border_inner_margin 0 | |
border_outer_margin 0 | |
minimum_size 920 300 | |
maximum_width 1024 | |
alignment tl | |
gap_x 0 | |
gap_y 79 | |
# -- Graphics settings -- # | |
draw_shades no | |
draw_outline no | |
draw_borders no | |
draw_graph_borders no | |
# -- Text settings -- # | |
use_xft yes | |
xftfont Santana:size=18 | |
xftalpha 0.8 | |
uppercase no | |
default_color FFFFFF | |
# -- Lua Load -- # | |
lua_load ~/.config/conky/LUA/rings.lua | |
lua_draw_hook_pre clock_rings | |
TEXT | |
${font Santana:size=12} Root ${fs_used /}/${fs_size /}$font | |
#${voffset 105}${goto 123}${font Santana:size=24}${time %H:%M}${voffset -10}${font Santana:size=10}${font} | |
#${voffset -28}${goto 268}${hr 2} | |
#${voffset -70}${goto 278}${cpugraph 50,285 d5dcde ffffff} #${voffset -18} ${alignr} ${execi 60 ~/.Conky/gmailnotify.sh} | |
#${voffset 16}${goto 285}${time %A, %d %B %Y} | |
#${font Santana:size=14}${voffset -120}${goto 300}BATTERY ${battery BAT0} |
This file contains 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
--[[ | |
Clock Rings by londonali1010 (2009) | |
This script draws percentage meters as rings, and also draws clock hands if you want! It is fully customisable; all options are described in the script. This script is based off a combination of my clock.lua script and my rings.lua 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 near the end of the script 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/clock_rings-v1.1.1.lua | |
lua_draw_hook_pre clock_rings | |
Changelog: | |
+ v1.1.1 -- Fixed minor bug that caused the script to crash if conky_parse() returns a nil value (20.10.2009) | |
+ v1.1 -- Added colour option for clock hands (07.10.2009) | |
+ v1.0 -- Original release (30.09.2009) | |
]] | |
settings_table = { | |
--[[{ | |
-- Edit this table to customise your rings. | |
-- You can create more rings simply by adding more elements to settings_table. | |
-- "name" is the type of stat to display; you can choose from 'cpu', 'memperc', 'fs_used_perc', 'battery_used_perc'. | |
name='time', | |
-- "arg" is the argument to the stat type, e.g. if in Conky you would write ${cpu cpu0}, 'cpu0' would be the argument. If you would not use an argument in the Conky variable, use ''. | |
arg='%I.%M', | |
-- "max" : If the Conky variable outputs a percentage, use 100. | |
max=12, | |
bg_colour=0xffffff, | |
bg_alpha=0, | |
fg_colour=0xffffff, | |
fg_alpha=0, | |
-- "x" and "y" are the x and y coordinates of the centre of the ring, relative to the top left corner of the Conky window. | |
x=160, y=155, | |
radius=50, | |
-- "thickness" is centered around the radius. | |
thickness=5, | |
-- "start_angle" is the starting angle of the ring, in degrees, clockwise from top. Value can be either positive or negative. | |
start_angle=0, | |
-- "end_angle" is the ending angle of the ring, in degrees, clockwise from top. Value can be either positive or negative, but must be larger than start_angle. | |
end_angle=360 | |
}, | |
{ | |
-- minutes ring | |
name='time', | |
arg='%M.%S', | |
max=60, | |
bg_colour=0xffffff, | |
bg_alpha=0, | |
fg_colour=0xffffff, | |
fg_alpha=0.8, | |
x=160, y=155, | |
radius=56, | |
thickness=5, | |
start_angle=0, | |
end_angle=360 | |
},]] | |
{ | |
-- seconds ring | |
name='time', | |
arg='%S', | |
max=60, | |
bg_colour=0xffffff, | |
bg_alpha=0.1, | |
fg_colour=0x5F9EA0, | |
fg_alpha=0.6, | |
x=160, y=155, | |
radius=65, | |
thickness=4, | |
start_angle=0, | |
end_angle=360 | |
}, | |
{ | |
name='cpu', | |
arg='cpu1', | |
max=100, | |
bg_colour=0xffffdd, | |
bg_alpha=0.2, | |
fg_colour=0xffffdd, | |
fg_alpha=0.5, | |
x=160, y=155, | |
radius=75, | |
thickness=5, | |
start_angle=93, | |
end_angle=208 | |
}, | |
-- uncomment the following if you have more than one cpu | |
--[[ | |
{ | |
name='cpu', | |
arg='cpu2', | |
max=100, | |
bg_colour=0xffffff, | |
bg_alpha=0.2, | |
fg_colour=0xffffff, | |
fg_alpha=0.5, | |
x=160, y=155, | |
radius=81, | |
thickness=5, | |
start_angle=93, | |
end_angle=208 | |
}, | |
{ | |
name='cpu', | |
arg='cpu3', | |
max=100, | |
bg_colour=0xffffff, | |
bg_alpha=0.2, | |
fg_colour=0xffffff, | |
fg_alpha=0.5, | |
x=160, y=155, | |
radius=87, | |
thickness=5, | |
start_angle=93, | |
end_angle=208 | |
}, | |
{ | |
name='cpu', | |
arg='cpu4', | |
max=100, | |
bg_colour=0xffffff, | |
bg_alpha=0.2, | |
fg_colour=0xffffff, | |
fg_alpha=0.5, | |
x=160, y=155, | |
radius=93, | |
thickness=5, | |
start_angle=93, | |
end_angle=208 | |
}, --]] | |
{ | |
name='memperc', | |
arg='', | |
max=100, | |
bg_colour=0xaaffff, | |
bg_alpha=0.2, | |
fg_colour=0xddffff, | |
fg_alpha=0.5, | |
x=160, y=155, | |
radius=84, | |
thickness=22.5, | |
start_angle=212, | |
end_angle=329 | |
}, --[[ | |
{ | |
name='swapperc', | |
arg='', | |
max=100, | |
bg_colour=0x40aa40, | |
bg_alpha=0.2, | |
fg_colour=0xaaffaa, | |
fg_alpha=0.5, | |
x=160, y=155, | |
radius=90, | |
thickness=12, | |
start_angle=212, | |
end_angle=329 | |
},]] | |
{ | |
name='battery_percent', | |
arg='BAT0', | |
max=100, | |
bg_colour=0xffaaaa, | |
bg_alpha=0.3, | |
fg_colour=0xffdddd, | |
fg_alpha=0.5, | |
x=160, y=155, | |
radius=84, | |
thickness=22.5, | |
start_angle=-27, | |
end_angle=88 | |
}, | |
{ | |
name='cpu', -- dummy (used for arc) | |
arg='', | |
max=1, | |
bg_colour=0xaaaaff, | |
bg_alpha=0.7, | |
fg_colour=0xd5dcde, | |
fg_alpha=0, | |
x=162, y=155, | |
radius=118, | |
thickness=4, | |
start_angle=75, | |
end_angle=105 | |
}, | |
{ | |
name='fs_used_perc', | |
arg='/', | |
max=100, | |
bg_colour=0xffffff, | |
bg_alpha=0.2, | |
fg_colour=0xffffff, | |
fg_alpha=0.5, | |
x=160, y=155, | |
radius=105, | |
thickness=5, | |
start_angle=-120, | |
end_angle=-1.5 | |
}, | |
{ | |
name='fs_used_perc', | |
arg='/home', | |
max=100, | |
bg_colour=0xffffff, | |
bg_alpha=0.2, | |
fg_colour=0xffdddd, | |
fg_alpha=0.5, | |
x=160, y=155, | |
radius=105, | |
thickness=5, | |
start_angle=1.5, | |
end_angle=120 | |
}, | |
} | |
-- Use these settings to define the origin and extent of your clock. | |
clock_r=65 | |
-- "clock_x" and "clock_y" are the coordinates of the centre of the clock, in pixels, from the top left of the Conky window. | |
clock_x=160 | |
clock_y=155 | |
-- Colour & alpha of the clock hands | |
clock_colour=0x00ff00 -- 0x00aaaa -- is a nice teal color | |
clock_alpha=0.4 | |
-- What do you want to see? | |
show_seconds_hand=true | |
show_seconds_ring=true | |
show_analog_clock=true | |
show_digital_clock=false | |
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_clock_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) | |
-- if update_num>5 then | |
for i in pairs(settings_table) do | |
setup_rings(cr,settings_table[i]) | |
end | |
-- end | |
if show_analog_clock then | |
draw_clock_hands(cr,clock_x,clock_y) | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment