Last active
August 10, 2024 02:07
-
-
Save raininja/9489db48e902693a88af to your computer and use it in GitHub Desktop.
conky lua rings
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.config = { | |
-- — Conky settings — # | |
background = true, | |
update_interval = 1, | |
cpu_avg_samples = 2, | |
net_avg_samples = 3, | |
override_utf8_locale = true, | |
double_buffer = true, | |
no_buffers = false, | |
text_buffer_size = 1024, | |
imlib_cache_size = 0, | |
-- — Window specifications — # | |
own_window = true, | |
own_window_type = 'desktop', | |
own_window_transparent = true, | |
own_window_argb_visual = true, | |
own_window_class = 'Conky', | |
own_window_hints = 'undecorated,sticky,skip_taskbar,skip_pager,below', | |
border_inner_margin = 0, | |
border_outer_margin = 0, | |
--minimum_size 1920 1920 | |
maximum_width = 1900, | |
minimum_height = 1080, | |
minimum_width = 1867, | |
-- alignment is disabled when own_window_type is dock | |
alignment = 'top_middle', | |
gap_x = 33, | |
gap_y = 200, | |
-- — Graphics settings — # | |
draw_shades = false, | |
draw_outline = false, | |
draw_borders = false, | |
draw_graph_borders = false, | |
-- — Text settings — # | |
use_xft = true, | |
font = 'Myriad Pro:size=10', | |
xftalpha = 0.5, | |
uppercase = false, | |
default_color = '#3E3E3E', | |
color1 = '#D23000', | |
-- — Lua Load — # | |
lua_load = '~/.config/conky/lua/med_ring.lua', | |
lua_draw_hook_pre = 'clock_rings', | |
}; | |
conky.text = [[ | |
${voffset 620}${goto 70}${color 3399FF}${font Fantasque Sans:size=16}${time %A}${font}${voffset -2}${color FFFFFF}${font Fantasque Sans:size=32}${time %e}${font}${color FFFFFF}${voffset -30}${color 3399FF}${font Fantasque Sans:size=18}${time %b}${font}${voffset -3}${color FFFFFF}${font Myriad Pro:size=20}${time %Y}${font}${font Myriad Pro:size=16}${alignr}${time %H:%M:%S} | |
${voffset 2}${font}${color 3399FF}${hr} | |
${voffset 10}${offset 10}${font Myriad Pro:size=14}${alignr}Aurelia | |
${font}${font Myriad Pro:size=14}${alignr}${color FFFFFF}${acpitemp}°C | |
${font}${color 3399FF}${alignr}${sysname} ${kernel} ${machine} | |
${alignr}Uptime:${color FFFFFF}$uptime_short${color FFFFFF} | |
${goto 722}${voffset -690}${fs_free_perc /home/raijin}%${color 3399FF}/home/raijin${color 3398FF} | |
${color FFFFFF}${goto 725}${voffset 20}${fs_used_perc /}%${color 3399FF}/ | |
${goto 880}${voffset -145}RAM ${color FFFFFF}${memperc}%${color 3399FF} | |
${goto 940}${voffset 4}SWAP ${color FFFFFF}${swapperc}% | |
${goto 1140}${voffset 20}${color 3399FF}BATTERY ${color FFFFFF}${battery_time BAT0} ${color FFFFFF} ${battery_short BAT0} | |
${color 3399FF}${goto 1130}${voffset 150}CORES | |
${color 3399FF}${goto 1120}${voffset 1}RYZEN 9 ${color FFFFFF}${cpu cpu0}% | |
${color 3399FF}${goto 740}${voffset 40}entropy | |
${color FFFFFF}${goto 850}${voffset 90}${upspeedf wlp2s0} kpbs${color 3399FF} Up | |
${color FFFFFF}${goto 900}${voffset 20}${downspeedf wlp2s0} kpbs${color 3399FF} Down | |
${voffset 10}${goto 880} NETWORK${color 7788EE} wifi:${wireless_essid wlp2s0} ${wireless_link_qual_perc wlp2s0}% | |
#${color FFFFFF}${goto 1030}${execi 300 /home/raijin/.conky/weather.sh 24450} | |
#${color 3399FF}${goto 1050}${weather_forecast http://weather.noaa.gov/pub/data/observations/metar/stations/ KHSP 0 forecast} | |
]]; |
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) , mod by arpinux , remod by raininja | |
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 ba | |
sed 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 on line 145 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 up | |
date 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/clock_rings.lua): | |
lua_load ~/scripts/clock_rings.lua | |
lua_draw_hook_pre clock_rings | |
Changelog: | |
+ v1.3 -- A New Decade (08.09.2024) | |
+ v1.2 -- Heavily modified (01.11.2012) | |
+ v1.0 -- Original release (30.09.2009) | |
--]] | |
function network_interface() | |
return conky_parse( | |
'${if_existing /proc/net/route enp0s25}enp0s25${else}${if_existing /proc/net/route wlp2s0}wlp2s0${endif}${endif}') | |
end | |
-- function network_uplimit() | |
-- return conky_parse('$(if | |
settings_table = { | |
-- clock | |
{ --1 | |
name = 'time', | |
arg = '%I', | |
max = 12, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.1, | |
fg_colour = 0xffa300, | |
fg_alpha = 0.6, | |
x = 1000, | |
y = 300, | |
radius = 150, | |
thickness = 5, | |
start_angle = 0, | |
end_angle = 360 | |
}, | |
{ --2 | |
name = 'time', | |
arg = '%M.%S', | |
max = 60, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.1, | |
fg_colour = 0x3399cc, | |
fg_alpha = 0.4, | |
x = 1000, | |
y = 300, | |
radius = 159, | |
thickness = 5, | |
start_angle = 0, | |
end_angle = 360 | |
}, | |
{ --3 | |
name = 'time', | |
arg = '%S', | |
max = 60, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.1, | |
fg_colour = 0x3399cc, | |
fg_alpha = 0.6, | |
x = 1000, | |
y = 300, | |
radius = 164, | |
thickness = 5, | |
start_angle = 0, | |
end_angle = 360 | |
}, | |
{ --4 | |
name = 'time', | |
arg = '%d', | |
max = 31, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.1, | |
fg_colour = 0x3388cc, | |
fg_alpha = 0.8, | |
x = 1000, | |
y = 300, | |
radius = 180, | |
thickness = 5, | |
start_angle = -90, | |
end_angle = 90 | |
}, | |
{ --5 | |
name = 'time', | |
arg = '%m', | |
max = 12, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.1, | |
fg_colour = 0x3399cc, | |
fg_alpha = 1, | |
x = 1000, | |
y = 300, | |
radius = 186, | |
thickness = 5, | |
start_angle = -90, | |
end_angle = 90 | |
}, | |
-- upper quadrant | |
{ --6 | |
name = 'swapperc', | |
arg = '', | |
max = 100, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.2, | |
fg_colour = 0x33ccff, | |
fg_alpha = 0.8, | |
x = 1000, | |
y = 300, | |
radius = 230, | |
thickness = 10, | |
start_angle = -37.5, | |
end_angle = 37.5 | |
}, | |
{ --7 | |
name = 'memperc', | |
arg = '', | |
max = 100, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.2, | |
fg_colour = 0x3399cc, | |
fg_alpha = 0.3, | |
x = 1000, | |
y = 300, | |
radius = 255, | |
thickness = 40, | |
start_angle = -37.5, | |
end_angle = 37.5 | |
}, | |
-- lower quadrant | |
{ --8 | |
name = 'upspeedf', | |
arg = network_interface(), | |
max = 300, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.2, | |
fg_colour = 0xff2222, | |
fg_alpha = 0.3, | |
x = 1000, | |
y = 300, | |
radius = 200, | |
thickness = 25, | |
start_angle = 142.5, | |
end_angle = 217.5 | |
}, | |
{ --9 | |
name = 'downspeedf', | |
arg = network_interface(), | |
max = 70000, | |
bg_colour = 0xfffffe, | |
bg_alpha = 0.2, | |
fg_colour = 0xff2222, | |
fg_alpha = 0.3, | |
x = 1000, | |
y = 300, | |
radius = 245, | |
thickness = 50, | |
start_angle = 142.5, | |
end_angle = 217.5 | |
}, | |
-- right quadrant | |
{ --10 | |
name = 'cpu', | |
arg = 'cpu0', | |
max = 100, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.2, | |
fg_colour = 0x66CC00, | |
fg_alpha = 0.8, | |
x = 1000, | |
y = 300, | |
radius = 222.5, | |
thickness = 2.5, | |
start_angle = 40, | |
end_angle = 140 | |
}, | |
{ --11 | |
name = 'cpu', | |
arg = 'cpu1', | |
max = 100, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.2, | |
fg_colour = 0x66CC00, | |
fg_alpha = 0.8, | |
x = 1000, | |
y = 300, | |
radius = 225, | |
thickness = 2.5, | |
start_angle = 40, | |
end_angle = 140 | |
}, | |
{ --12 | |
name = 'cpu', | |
arg = 'cpu2', | |
max = 100, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.2, | |
fg_colour = 0x66CC00, | |
fg_alpha = 0.8, | |
x = 1000, | |
y = 300, | |
radius = 227.5, | |
thickness = 2.5, | |
start_angle = 40, | |
end_angle = 140 | |
}, | |
{ --13 ^vdz8ohu6qcb9 | |
name = 'cpu', | |
arg = 'cpu3', | |
max = 100, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.2, | |
fg_colour = 0x66CC00, | |
fg_alpha = 0.8, | |
x = 1000, | |
y = 300, | |
radius = 230, | |
thickness = 2.5, | |
start_angle = 40, | |
end_angle = 140 | |
}, | |
{ | |
name = 'cpu', | |
arg = 'cpu4', | |
max = 100, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.2, | |
fg_colour = 0x66CC00, | |
fg_alpha = 0.8, | |
x = 1000, | |
y = 300, | |
radius = 232.5, | |
thickness = 2.5, | |
start_angle = 40, | |
end_angle = 140 | |
}, | |
{ | |
name = 'cpu', | |
arg = 'cpu5', | |
max = 100, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.2, | |
fg_colour = 0x66CC00, | |
fg_alpha = 0.8, | |
x = 1000, | |
y = 300, | |
radius = 235, | |
thickness = 2.5, | |
start_angle = 40, | |
end_angle = 140 | |
}, | |
{ | |
name = 'cpu', | |
arg = 'cpu6', | |
max = 100, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.2, | |
fg_colour = 0x66CC00, | |
fg_alpha = 0.8, | |
x = 1000, | |
y = 300, | |
radius = 237.5, | |
thickness = 2.5, | |
start_angle = 40, | |
end_angle = 140 | |
}, | |
{ | |
name = 'cpu', | |
arg = 'cpu7', | |
max = 100, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.2, | |
fg_colour = 0x66CC00, | |
fg_alpha = 0.8, | |
x = 1000, | |
y = 300, | |
radius = 240, | |
thickness = 2.5, | |
start_angle = 40, | |
end_angle = 140 | |
}, | |
{ | |
name = 'cpu', | |
arg = 'cpu8', | |
max = 100, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.2, | |
fg_colour = 0x66CC00, | |
fg_alpha = 0.8, | |
x = 1000, | |
y = 300, | |
radius = 242.5, | |
thickness = 2.5, | |
start_angle = 40, | |
end_angle = 140 | |
}, | |
{ | |
name = 'cpu', | |
arg = 'cpu9', | |
max = 100, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.2, | |
fg_colour = 0x66CC00, | |
fg_alpha = 0.8, | |
x = 1000, | |
y = 300, | |
radius = 245, | |
thickness = 2.5, | |
start_angle = 40, | |
end_angle = 140 | |
}, | |
{ | |
name = 'cpu', | |
arg = 'cpu10', | |
max = 100, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.2, | |
fg_colour = 0x66CC00, | |
fg_alpha = 0.8, | |
x = 1000, | |
y = 300, | |
radius = 247.5, | |
thickness = 2.5, | |
start_angle = 40, | |
end_angle = 140 | |
}, | |
{ | |
name = 'cpu', | |
arg = 'cpu11', | |
max = 100, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.2, | |
fg_colour = 0x66CC00, | |
fg_alpha = 0.8, | |
x = 1000, | |
y = 300, | |
radius = 250, | |
thickness = 2.5, | |
start_angle = 40, | |
end_angle = 140 | |
}, | |
{ | |
name = 'cpu', | |
arg = 'cpu12', | |
max = 100, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.2, | |
fg_colour = 0x66CC00, | |
fg_alpha = 0.8, | |
x = 1000, | |
y = 300, | |
radius = 252.5, | |
thickness = 2.5, | |
start_angle = 40, | |
end_angle = 140 | |
}, | |
{ | |
name = 'cpu', | |
arg = 'cpu13', | |
max = 100, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.2, | |
fg_colour = 0x66CC00, | |
fg_alpha = 0.8, | |
x = 1000, | |
y = 300, | |
radius = 255, | |
thickness = 2.5, | |
start_angle = 40, | |
end_angle = 140 | |
}, | |
{ | |
name = 'cpu', | |
arg = 'cpu14', | |
max = 100, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.2, | |
fg_colour = 0x66CC00, | |
fg_alpha = 0.8, | |
x = 1000, | |
y = 300, | |
radius = 257.5, | |
thickness = 2.5, | |
start_angle = 40, | |
end_angle = 140 | |
}, | |
{ | |
name = 'cpu', | |
arg = 'cpu15', | |
max = 100, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.2, | |
fg_colour = 0x66CC00, | |
fg_alpha = 0.8, | |
x = 1000, | |
y = 300, | |
radius = 260, | |
thickness = 2.5, | |
start_angle = 40, | |
end_angle = 140 | |
}, | |
{ --14 | |
name = 'battery_percent', | |
arg = 'BAT0', | |
max = 100, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.2, | |
fg_colour = 0x66CC00, | |
fg_alpha = 0.3, | |
x = 1000, | |
y = 300, | |
radius = 280, | |
thickness = 30, | |
start_angle = 40, | |
end_angle = 140 | |
}, | |
-- left quadrant | |
{ --15 | |
name = 'entropy_avail', | |
arg = '', | |
max = 10000, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.2, | |
fg_colour = 0x44cc44, | |
fg_alpha = 0.4, | |
x = 1000, | |
y = 300, | |
radius = 200, | |
thickness = 2, | |
start_angle = 220, | |
end_angle = 320 | |
}, | |
-- {--15a | |
-- name='entropy_perc', | |
-- arg='', | |
-- max=100, | |
-- bg_colour=0xffffff, | |
-- bg_alpha=0.2, | |
-- fg_colour=0x1acc44, | |
-- fg_alpha=0.4, | |
-- x=380, y=300, | |
-- radius=101, | |
-- thickness=3, | |
-- start_angle=220, | |
-- end_angle=320 | |
-- }, | |
{ --16 | |
name = 'fs_used_perc', | |
arg = '/', | |
max = 100, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.2, | |
fg_colour = 0x2210cc, | |
fg_alpha = 0.4, | |
x = 1000, | |
y = 300, | |
radius = 235, | |
thickness = 20, | |
start_angle = 220, | |
end_angle = 320 | |
}, | |
{ --17 | |
name = 'fs_free_perc', | |
arg = '/home/raijin', | |
max = 100, | |
bg_colour = 0xffffff, | |
bg_alpha = 0.2, | |
fg_colour = 0x2200cc, | |
fg_alpha = 0.8, | |
x = 1000, | |
y = 300, | |
radius = 260, | |
thickness = 20, | |
start_angle = 220, | |
end_angle = 320 | |
}, | |
} | |
clock_r = 165 | |
clock_x = 1000 | |
clock_y = 300 | |
show_seconds = true | |
require 'cairo' | |
require 'cairo_xlib' | |
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, 1.0, 1.0, 1.0, 1.0) | |
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) | |
pct = value / pt['max'] | |
if value == nil then | |
value = 0 | |
end | |
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 | |
--[[ dynamic colors | |
local procspee=conky_parse('$cpu1') | |
procspeed=tonumber(procspee) | |
if procspeed >= 60 then | |
settings_table[10]['fg_colour']=0xff0022 | |
else | |
settings_table[10]['fg_colour']=0x66CC66 | |
end | |
local procspee2=conky_parse('$cpu2') | |
procspeed2=tonumber(procspee2) | |
if procspeed2 > 60 then | |
settings_table[11]['fg_colour']=0xff3344 | |
else | |
settings_table[11]['fg_colour']=0x66CC01 | |
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