Last active
February 14, 2016 04:52
-
-
Save specktator/7fc57cc37d1b27baefb6 to your computer and use it in GitHub Desktop.
Make your #Ubuntu #Gnome 15.10 desktop cocky again! #conky (~/.conky/Conky Seamod/seamod_rings.lua)
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
--============================================================================== | |
-- seamod_rings.lua | |
-- | |
-- Date : 05/02/2012 | |
-- Author : SeaJey | |
-- Version : v0.1 | |
-- License : Distributed under the terms of GNU GPL version 2 or later | |
-- | |
-- This version is a modification of lunatico_rings.lua wich is modification of conky_orange.lua | |
-- | |
-- conky_orange.lua: http://gnome-look.org/content/show.php?content=137503&forumpage=0 | |
-- lunatico_rings.lua: http://gnome-look.org/content/show.php?content=142884 | |
--============================================================================== | |
require 'cairo' | |
-------------------------------------------------------------------------------- | |
-- gauge DATA | |
gauge = { | |
{ | |
name='cpu', arg='cpu0', max_value=100, | |
x=70, y=130, | |
graph_radius=54, | |
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.3, | |
hand_fg_colour=0xEF5A29, hand_fg_alpha=1.0, | |
txt_radius=64, | |
txt_weight=0, txt_size=9.0, | |
txt_fg_colour=0xEF5A29, txt_fg_alpha=1.0, | |
graduation_radius=28, | |
graduation_thickness=0, graduation_mark_thickness=1, | |
graduation_unit_angle=27, | |
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3, | |
caption='', | |
caption_weight=1, caption_size=9.0, | |
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.3, | |
}, | |
{ | |
name='cpu', arg='cpu1', max_value=100, | |
x=70, y=130, | |
graph_radius=48, | |
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.3, | |
hand_fg_colour=0xEF5A29, hand_fg_alpha=1.0, | |
txt_radius=40, | |
txt_weight=0, txt_size=9.0, | |
txt_fg_colour=0xEF5A29, txt_fg_alpha=1.0, | |
graduation_radius=28, | |
graduation_thickness=0, graduation_mark_thickness=1, | |
graduation_unit_angle=27, | |
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3, | |
caption='', | |
caption_weight=1, caption_size=9.0, | |
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.3, | |
}, | |
{ | |
name='cpu', arg='cpu2', max_value=100, | |
x=70, y=130, | |
graph_radius=20, | |
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.3, | |
hand_fg_colour=0xEF5A29, hand_fg_alpha=1.0, | |
txt_radius=30, | |
txt_weight=0, txt_size=9.0, | |
txt_fg_colour=0xEF5A29, txt_fg_alpha=1.0, | |
graduation_radius=28, | |
graduation_thickness=0, graduation_mark_thickness=1, | |
graduation_unit_angle=27, | |
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3, | |
caption='', | |
caption_weight=1, caption_size=9.0, | |
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.3, | |
}, | |
{ | |
name='memperc', arg='', max_value=100, | |
x=70, y=300, | |
graph_radius=54, | |
graph_thickness=10, | |
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.3, | |
hand_fg_colour=0xEF5A29, hand_fg_alpha=1.0, | |
txt_radius=42, | |
txt_weight=0, txt_size=9.0, | |
txt_fg_colour=0xEF5A29, txt_fg_alpha=1.0, | |
graduation_radius=23, | |
graduation_thickness=0, graduation_mark_thickness=2, | |
graduation_unit_angle=27, | |
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.5, | |
caption='', | |
caption_weight=1, caption_size=10.0, | |
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.3, | |
}, | |
{ | |
name='fs_used_perc', arg='/media/path/to/drive1/', max_value=100, | |
x=70, y=470, | |
graph_radius=65, | |
graph_thickness=7, | |
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.3, | |
hand_fg_colour=0xEF5A29, hand_fg_alpha=1.0, | |
txt_radius=74, | |
txt_weight=0, txt_size=9.0, | |
txt_fg_colour=0xEF5A29, txt_fg_alpha=1.0, | |
graduation_radius=23, | |
graduation_thickness=0, graduation_mark_thickness=2, | |
graduation_unit_angle=27, | |
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3, | |
caption='drive1', | |
caption_weight=1, caption_size=12.0, | |
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.5, | |
}, | |
{ | |
name='fs_used_perc', arg='/media/path/to/drive2/', max_value=100, | |
x=70, y=470, | |
graph_radius=54, | |
graph_thickness=7, | |
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.3, | |
hand_fg_colour=0xEF5A29, hand_fg_alpha=1.0, | |
txt_radius=64, | |
txt_weight=0, txt_size=9.0, | |
txt_fg_colour=0xEF5A29, txt_fg_alpha=1.0, | |
graduation_radius=23, | |
graduation_thickness=0, graduation_mark_thickness=2, | |
graduation_unit_angle=27, | |
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3, | |
caption='drive2', | |
caption_weight=1, caption_size=12.0, | |
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.5, | |
}, | |
{ | |
name='fs_used_perc', arg='/', max_value=100, | |
x=70, y=470, | |
graph_radius=30, | |
graph_thickness=7, | |
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.3, | |
hand_fg_colour=0xEF5A29, hand_fg_alpha=1.0, | |
txt_radius=22, | |
txt_weight=0, txt_size=9.0, | |
txt_fg_colour=0xEF5A29, txt_fg_alpha=1.0, | |
graduation_radius=23, | |
graduation_thickness=0, graduation_mark_thickness=2, | |
graduation_unit_angle=27, | |
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3, | |
caption='Root', | |
caption_weight=1, caption_size=12.0, | |
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.5, | |
}, | |
{ | |
name='downspeedf', arg='enp2s0', max_value=100, | |
x=70, y=660, | |
graph_radius=54, | |
graph_thickness=7, | |
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.3, | |
hand_fg_colour=0xEF5A29, hand_fg_alpha=0, | |
txt_radius=64, | |
txt_weight=0, txt_size=9.0, | |
txt_fg_colour=0xEF5A29, txt_fg_alpha=1.0, | |
graduation_radius=28, | |
graduation_thickness=0, graduation_mark_thickness=1, | |
graduation_unit_angle=27, | |
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3, | |
caption='Down', | |
caption_weight=1, caption_size=12.0, | |
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.5, | |
}, | |
{ | |
name='upspeedf', arg='enp2s0', max_value=100, | |
x=70, y=660, | |
graph_radius=42, | |
graph_thickness=7, | |
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.3, | |
hand_fg_colour=0xEF5A29, hand_fg_alpha=0, | |
txt_radius=30, | |
txt_weight=0, txt_size=9.0, | |
txt_fg_colour=0xEF5A29, txt_fg_alpha=1.0, | |
graduation_radius=28, | |
graduation_thickness=0, graduation_mark_thickness=1, | |
graduation_unit_angle=27, | |
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3, | |
caption='Up', | |
caption_weight=1, caption_size=12.0, | |
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.5, | |
}, | |
} | |
------------------------------------------------------------------------------- | |
-- 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 | |
------------------------------------------------------------------------------- | |
-- angle_to_position | |
-- convert degree to rad and rotate (0 degree is top/north) | |
-- | |
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_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_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 | |
------------------------------------------------------------------------------- | |
-- MAIN | |
function conky_main() | |
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 display = cairo_create(cs) | |
local updates = conky_parse('${updates}') | |
update_num = tonumber(updates) | |
if update_num > 5 then | |
go_gauge_rings(display) | |
end | |
cairo_surface_destroy(cs) | |
cairo_destroy(display) | |
end | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment