-
-
Save zenlor/21780d6c046401502a0a to your computer and use it in GitHub Desktop.
Example conky configuration from https://wiki.archlinux.org/index.php/Conky#A_sample_rings_script_with_nvidia_support
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 normal | |
own_window_transparent yes | |
own_window_hints undecorate,sticky,skip_taskbar,skip_pager,below | |
border_inner_margin 0 | |
border_outer_margin 0 | |
minimum_size 320 800 | |
maximum_width 320 | |
alignment bottom_right | |
gap_x 0 | |
gap_y 0 | |
# -- Graphics settings -- # | |
draw_shades no | |
draw_outline no | |
draw_borders no | |
draw_graph_borders yes | |
# -- Text settings -- # | |
use_xft yes | |
xftfont MaiandraGD:size=24 | |
xftalpha 0.4 | |
uppercase no | |
default_color 888888 | |
# -- Lua Load -- # | |
lua_load ~/conky/lua/lua.lua | |
lua_draw_hook_pre ring_stats | |
TEXT | |
${alignr}${voffset 53}${goto 90}${font MaiandraGD:size=11}${time %A, %d %B %Y} | |
${voffset 5}${goto 164}${font MaiandraGD:size=16}${time %H:%M} | |
${voffset -40}${goto 100}${font MaiandraGD:size=9}Kernel:${offset 70}Uptime: | |
${goto 90}${font MaiandraGD:size=9}$kernel${offset 40}$uptime | |
${voffset 57}${goto 117}${font snap:size=8}${cpu cpu0}% | |
${goto 117}${cpu cpu1}% | |
${goto 117}CPU | |
${voffset 19}${goto 145}${memperc}% | |
${goto 145}$swapperc% | |
${goto 145}MEM | |
${voffset 25}${goto 170}${nvidia gpufreq} | |
${goto 170}${nvidia memfreq} | |
${goto 170}GPU | |
${voffset 27}${goto 198}${totaldown ppp0} | |
${goto 198}${totalup ppp0} | |
${goto 205}NET | |
${voffset 21} | |
${goto 222}${fs_used /home} | |
${goto 230}DISK |
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
--[[ | |
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 does not 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.1.lua | |
lua_draw_hook_pre ring_stats | |
Changelog: | |
+ v1.2.1 -- Fixed minor bug that caused script to crash if conky_parse() returns a nil value (20.10.2009) | |
+ 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) | |
]] | |
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" is the maximum value of the ring. If the Conky variable outputs a percentage, use 100. | |
max=12, | |
-- "bg_colour" is the colour of the base ring. | |
bg_colour=0x888888, | |
-- "bg_alpha" is the alpha value of the base ring. | |
bg_alpha=0.3, | |
-- "fg_colour" is the colour of the indicator part of the ring. | |
fg_colour=0x888888, | |
-- "fg_alpha" is the alpha value of the indicator part of the ring. | |
fg_alpha=0.5, | |
-- "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=191, y=145, | |
-- "radius" is the radius of the ring. | |
radius=32, | |
-- "thickness" is the thickness of the ring, centred around the radius. | |
thickness=4, | |
-- "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 (e.g. more clockwise) than start_angle. | |
end_angle=360 | |
}, | |
{ | |
name='time', | |
arg='%M.%S', | |
max=60, | |
bg_colour=0x888888, | |
bg_alpha=0.3, | |
fg_colour=0x888888, | |
fg_alpha=0.5, | |
x=191, y=145, | |
radius=37, | |
thickness=4, | |
start_angle=0, | |
end_angle=360 | |
}, | |
{ | |
name='time', | |
arg='%S', | |
max=60, | |
bg_colour=0x888888, | |
bg_alpha=0.3, | |
fg_colour=0x888888, | |
fg_alpha=0.5, | |
x=191, y=145, | |
radius=42, | |
thickness=4, | |
start_angle=0, | |
end_angle=360 | |
}, | |
{ | |
name='cpu', | |
arg='cpu0', | |
max=100, | |
bg_colour=0x888888, | |
bg_alpha=0.3, | |
fg_colour=0x888888, | |
fg_alpha=0.5, | |
x=140, y=300, | |
radius=26, | |
thickness=5, | |
start_angle=-90, | |
end_angle=180 | |
}, | |
{ | |
name='cpu', | |
arg='cpu1', | |
max=100, | |
bg_colour=0x888888, | |
bg_alpha=0.3, | |
fg_colour=0x888888, | |
fg_alpha=0.5, | |
x=140, y=300, | |
radius=20, | |
thickness=5, | |
start_angle=-90, | |
end_angle=180 | |
}, | |
{ | |
name='memperc', | |
arg='', | |
max=100, | |
bg_colour=0x888888, | |
bg_alpha=0.3, | |
fg_colour=0x888888, | |
fg_alpha=0.5, | |
x=170, y=350, | |
radius=26, | |
thickness=5, | |
start_angle=-90, | |
end_angle=180 | |
}, | |
{ | |
name='swapperc', | |
arg='', | |
max=100, | |
bg_colour=0x888888, | |
bg_alpha=0.3, | |
fg_colour=0x888888, | |
fg_alpha=0.5, | |
x=170, y=350, | |
radius=20, | |
thickness=5, | |
start_angle=-90, | |
end_angle=180 | |
}, | |
{ | |
name='time', | |
arg='%d', | |
max=31, | |
bg_colour=0x888888, | |
bg_alpha=0.3, | |
fg_colour=0x888888, | |
fg_alpha=0.5, | |
x=191, y=145, | |
radius=50, | |
thickness=5, | |
start_angle=-140, | |
end_angle=-30 | |
}, | |
{ | |
name='time', | |
arg='%m', | |
max=12, | |
bg_colour=0x888888, | |
bg_alpha=0.3, | |
fg_colour=0x888888, | |
fg_alpha=0.5, | |
x=191, y=145, | |
radius=50, | |
thickness=5, | |
start_angle=30, | |
end_angle=140 | |
}, | |
-- { | |
-- name='fs_used_perc', | |
-- arg='/', | |
-- max=100, | |
-- bg_colour=0x888888, | |
-- bg_alpha=0.3, | |
-- fg_colour=0x888888, | |
-- fg_alpha=0.5, | |
-- x=260, y=503, | |
-- radius=26, | |
-- thickness=5, | |
-- start_angle=-90, | |
-- end_angle=180 | |
-- }, | |
{ | |
name='fs_used_perc', | |
arg='/home', | |
max=100, | |
bg_colour=0x888888, | |
bg_alpha=0.3, | |
fg_colour=0x888888, | |
fg_alpha=0.5, | |
x=260, y=503, | |
radius=20, | |
thickness=5, | |
start_angle=-90, | |
end_angle=180 | |
}, | |
{ | |
name='totalup', | |
arg='ppp0', | |
max=2, | |
bg_colour=0x888888, | |
bg_alpha=0.3, | |
fg_colour=0x888888, | |
fg_alpha=0.5, | |
x=230, y=452, | |
radius=20, | |
thickness=5, | |
start_angle=-90, | |
end_angle=180 | |
}, | |
{ | |
name='totaldown', | |
arg='ppp0', | |
max=2, | |
bg_colour=0x888888, | |
bg_alpha=0.3, | |
fg_colour=0x888888, | |
fg_alpha=0.5, | |
x=230, y=452, | |
radius=26, | |
thickness=5, | |
start_angle=-90, | |
end_angle=180 | |
}, | |
{ | |
name='nvidia', | |
arg='gpufreq', | |
max=475, | |
bg_colour=0x888888, | |
bg_alpha=0.3, | |
fg_colour=0x888888, | |
fg_alpha=0.5, | |
x=200, y=401, | |
radius=26, | |
thickness=5, | |
start_angle=-90, | |
end_angle=180 | |
}, | |
{ | |
name='nvidia', | |
arg='memfreq', | |
max=700, | |
bg_colour=0x888888, | |
bg_alpha=0.3, | |
fg_colour=0x888888, | |
fg_alpha=0.5, | |
x=200, y=401, | |
radius=20, | |
thickness=5, | |
start_angle=-90, | |
end_angle=180 | |
}, | |
} | |
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 conky_ring_stats() | |
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 | |
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 | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment