--gradient bars and rings by mrpeachy march 2011
--currently only good for conky variables that return % values
require 'cairo'
function gbar(x,y,l,w,sbr,sbg,sbb,sba,mbr,mbg,mbb,mba,ebr,ebg,ebb,eba,sir,sig,sib,sia,mir,mig,mib,mia,eir,eig,eib,eia)
num=num/100
pat = cairo_pattern_create_linear (x, y, x+l, y);
cairo_pattern_add_color_stop_rgba (pat, 1, sbr,sbg,sbb,sba);
cairo_pattern_add_color_stop_rgba (pat, 0.5, mbr,mbg,mbb,mba);
cairo_pattern_add_color_stop_rgba (pat, 0, ebr,ebg,ebb,eba);
cairo_rectangle (cr, x, y, l, w);
cairo_set_source (cr, pat);
cairo_fill (cr)
pat = cairo_pattern_create_linear (x, y, x+l, y);
cairo_pattern_add_color_stop_rgba (pat, 0, sir,sig,sib,sia);
cairo_pattern_add_color_stop_rgba (pat, 0.5, mir,mig,mib,mia);
cairo_pattern_add_color_stop_rgba (pat, 1, eir,eig,eib,eia);
cairo_rectangle (cr, x, y, l, w);
cairo_new_sub_path (cr); cairo_rectangle (cr, l+x, y, -l*(1-num), w);
cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD);
cairo_set_source (cr, pat); cairo_fill_preserve (cr);
cairo_set_source_rgba (cr, 0,0,0,0); cairo_fill (cr);
cairo_pattern_destroy (pat);
end--function
function gcircle (num,x,y,radius,width,sangle,fangle,sbr,sbg,sbb,sba,mbr,mbg,mbb,mba,ebr,ebg,ebb,eba,sir,sig,sib,sia,mir,mig,mib,mia,eir,eig,eib,eia,overlap)
red={}
green={}
blue={}
alpha={}
for i=1,100 do
if i<51 then
red[i]=((mir-sir)*(i/50))+sir
green[i]=((mig-sig)*(i/50))+sig
blue[i]=((mib-sib)*(i/50))+sib
alpha[i]=((mia-sia)*(i/50))+sia
end
if i>50 then
red[i]=((eir-mir)*((i-50)/50))+mir
green[i]=((eig-mig)*((i-50)/50))+mig
blue[i]=((eib-mib)*((i-50)/50))+mib
alpha[i]=((eia-mia)*((i-50)/50))+mia
end
end
bred={}
bgreen={}
bblue={}
balpha={}
for i=1,100 do
if i<51 then
bred[i]=((mbr-sbr)*(i/50))+sbr
bgreen[i]=((mbg-sbg)*(i/50))+sbg
bblue[i]=((mbb-sbb)*(i/50))+sbb
balpha[i]=((mba-sba)*(i/50))+sba
end
if i>50 then
bred[i]=((ebr-mbr)*((i-50)/50))+mbr
bgreen[i]=((ebg-mbg)*((i-50)/50))+mbg
bblue[i]=((ebb-mbb)*((i-50)/50))+mbb
balpha[i]=((eba-mba)*((i-50)/50))+mba
end
end
cva=math.pi/180
cvsa=sangle*cva
cvfa=fangle*cva
adj=360/(fangle-sangle)*overlap
zt=cva*90
diff=(fangle-sangle)/100
for i=1,100 do
cairo_set_line_width (cr, width)
cairo_set_source_rgba (cr, bred[i], bgreen[i], bblue[i], balpha[i])
cairo_arc (cr,x,y,radius,cvsa+(cva*(diff*(i-adj)))-zt,cvsa+(cva*(diff*i))-zt)
cairo_stroke (cr)
end
for i=1,tonumber(num) do
cairo_set_line_width (cr, width)
cairo_set_source_rgba (cr, red[i], green[i], blue[i], alpha[i])
cairo_arc (cr,x,y,radius,cvsa+(cva*(diff*(i-adj)))-zt,cvsa+(cva*(diff*i))-zt)
cairo_stroke (cr)
end
end--function
--------------------------------------------------------------------------------
function conky_draw_fig()
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)
cr = cairo_create(cs)
local updates=tonumber(conky_parse('${updates}'))
--####################################################################################################
if updates>5 then -- starts the display
--####################################################################################################
--###############################################
--SETTINGS FOR BAR 1#############################
num=conky_parse("${cpu}")
--position and size
x,y=50,50
l,w=300,5
--background gradient ############################
--start color
sbr,sbg,sbb,sba=0.3,0.3,0.3,1
--middle color
mbr,mbg,mbb,mba=0.6,0.6,0.6,1
--end color
ebr,ebg,ebb,eba=0.9,0.9,0.9,1
--indicator gradient ##############################
--start color
sir,sig,sib,sia=0,1,0,1
--middle color
mir,mig,mib,mia=1,1,0,1
--end color
eir,eig,eib,eia=1,0,0,1
--call drawing function #####################################################################################
gbar(x,y,l,w,sbr,sbg,sbb,sba,mbr,mbg,mbb,mba,ebr,ebg,ebb,eba,sir,sig,sib,sia,mir,mig,mib,mia,eir,eig,eib,eia)
--###########################################################################################################
--copy and paste above section for more bars ####
--###############################################
--SETTINGS FOR BAR 2#############################
num=conky_parse("${memperc}")
--position and size
x,y=50,100
l,w=300,5
--background gradient ############################
--start color
sbr,sbg,sbb,sba=0.3,0.3,0.3,1
--middle color
mbr,mbg,mbb,mba=0.6,0.6,0.6,1
--end color
ebr,ebg,ebb,eba=0.9,0.9,0.9,1
--indicator gradient ##############################
--start color
sir,sig,sib,sia=0,1,0,1
--middle color
mir,mig,mib,mia=1,1,0,1
--end color
eir,eig,eib,eia=1,0,0,1
--call drawing function #####################################################################################
gbar(x,y,l,w,sbr,sbg,sbb,sba,mbr,mbg,mbb,mba,ebr,ebg,ebb,eba,sir,sig,sib,sia,mir,mig,mib,mia,eir,eig,eib,eia)
--###########################################################################################################
--copy and paste above section for more bars ####
--###############################################
--SETTINGS FOR BAR 3#############################
num=conky_parse("${fs_used_perc /}")
--position and size
x,y=50,150
l,w=300,5
--background gradient ############################
--start color
sbr,sbg,sbb,sba=0.3,0.3,0.3,1
--middle color
mbr,mbg,mbb,mba=0.6,0.6,0.6,1
--end color
ebr,ebg,ebb,eba=0.9,0.9,0.9,1
--indicator gradient ##############################
--start color
sir,sig,sib,sia=0,1,0,1
--middle color
mir,mig,mib,mia=1,1,0,1
--end color
eir,eig,eib,eia=1,0,0,1
--call drawing function #####################################################################################
gbar(x,y,l,w,sbr,sbg,sbb,sba,mbr,mbg,mbb,mba,ebr,ebg,ebb,eba,sir,sig,sib,sia,mir,mig,mib,mia,eir,eig,eib,eia)
--###########################################################################################################
--copy and paste above section for more bars ####
--###############################################
--SETTINGS FOR BAR 4#############################
num=conky_parse("${fs_used_perc /home}")
--position and size
x,y=50,200
l,w=300,5
--background gradient ############################
--start color
sbr,sbg,sbb,sba=0.3,0.3,0.3,1
--middle color
mbr,mbg,mbb,mba=0.6,0.6,0.6,1
--end color
ebr,ebg,ebb,eba=0.9,0.9,0.9,1
--indicator gradient ##############################
--start color
sir,sig,sib,sia=0,1,0,1
--middle color
mir,mig,mib,mia=1,1,0,1
--end color
eir,eig,eib,eia=1,0,0,1
--call drawing function #####################################################################################
gbar(x,y,l,w,sbr,sbg,sbb,sba,mbr,mbg,mbb,mba,ebr,ebg,ebb,eba,sir,sig,sib,sia,mir,mig,mib,mia,eir,eig,eib,eia)
--###########################################################################################################
--copy and paste above section for more bars ####
--###############################################
--SETTINGS FOR BAR 5#############################
num=100--conky_parse("${cpu}") -- demonstration bar to show 100%
--position and size
x,y=50,250
l,w=300,5
--background gradient ############################
--start color
sbr,sbg,sbb,sba=0.3,0.3,0.3,1
--middle color
mbr,mbg,mbb,mba=0.6,0.6,0.6,1
--end color
ebr,ebg,ebb,eba=0.9,0.9,0.9,1
--indicator gradient ##############################
--start color
sir,sig,sib,sia=0,1,0,1
--middle color
mir,mig,mib,mia=1,1,0,1
--end color
eir,eig,eib,eia=1,0,0,1
--call drawing function #####################################################################################
gbar(x,y,l,w,sbr,sbg,sbb,sba,mbr,mbg,mbb,mba,ebr,ebg,ebb,eba,sir,sig,sib,sia,mir,mig,mib,mia,eir,eig,eib,eia)
--###########################################################################################################
--copy and paste above section for more bars ####
--###############################################
--################################################
--SETTINGS FOR RING 1 ############################
--################################################
--background gradient ############################
--start color
sbr,sbg,sbb,sba=0.9,0.9,0.9,1
--middle color
mbr,mbg,mbb,mba=0.6,0.6,0.6,1
--end color
ebr,ebg,ebb,eba=0.3,0.3,0.3,1
--indicator gradient ##############################
--start color
sir,sig,sib,sia=0,1,0,1
--middle color
mir,mig,mib,mia=1,1,0,1
--end color
eir,eig,eib,eia=1,0,0,1
--settings #########################################
--conky value
num=conky_parse("${cpu}")
--line width
width=5
--circle radius
radius=60
--position
x,y=100,400
--start and end angles for ring
sangle,fangle=0,360
--if you see line artefacts in the circle drawn
--then increase this number in increments of 0.01 until they disappear
--otherwise set 1
overlap=1.09
--call drawing function ############################################################################################################################
gcircle (num,x,y,radius,width,sangle,fangle,sbr,sbg,sbb,sba,mbr,mbg,mbb,mba,ebr,ebg,ebb,eba,sir,sig,sib,sia,mir,mig,mib,mia,eir,eig,eib,eia,overlap)
--###########################################################################################################
--copy and paste above section for more rings ####
--################################################
--################################################
--SETTINGS FOR RING 2 ############################
--################################################
--background gradient ############################
--start color
sbr,sbg,sbb,sba=0.9,0.9,0.9,1
--middle color
mbr,mbg,mbb,mba=0.6,0.6,0.6,1
--end color
ebr,ebg,ebb,eba=0.3,0.3,0.3,1
--indicator gradient ##############################
--start color
sir,sig,sib,sia=0,1,0,1
--middle color
mir,mig,mib,mia=1,1,0,1
--end color
eir,eig,eib,eia=1,0,0,1
--settings #########################################
--conky value
num=conky_parse("${memperc}")
--line width
width=5
--circle radius
radius=60
--position
x,y=250,400
--start and end angles for ring
sangle,fangle=0,360
--if you see line artefacts in the circle drawn
--then increase this number in increments of 0.01 until they disappear
--otherwise set 1
overlap=1.09
--call drawing function ############################################################################################################################
gcircle (num,x,y,radius,width,sangle,fangle,sbr,sbg,sbb,sba,mbr,mbg,mbb,mba,ebr,ebg,ebb,eba,sir,sig,sib,sia,mir,mig,mib,mia,eir,eig,eib,eia,overlap)
--###########################################################################################################
--copy and paste above section for more rings ####
--################################################
--################################################
--SETTINGS FOR RING 3 ############################
--################################################
--background gradient ############################
--start color
sbr,sbg,sbb,sba=0.9,0.9,0.9,1
--middle color
mbr,mbg,mbb,mba=0.6,0.6,0.6,1
--end color
ebr,ebg,ebb,eba=0.3,0.3,0.3,1
--indicator gradient ##############################
--start color
sir,sig,sib,sia=0,1,0,1
--middle color
mir,mig,mib,mia=1,1,0,1
--end color
eir,eig,eib,eia=1,0,0,1
--settings #########################################
--conky value
num=conky_parse("${fs_used_perc /}")
--line width
width=5
--circle radius
radius=60
--position
x,y=400,400
--start and end angles for ring
sangle,fangle=0,360
--if you see line artefacts in the circle drawn
--then increase this number in increments of 0.01 until they disappear
--otherwise set 1
overlap=1.09
--call drawing function ############################################################################################################################
gcircle (num,x,y,radius,width,sangle,fangle,sbr,sbg,sbb,sba,mbr,mbg,mbb,mba,ebr,ebg,ebb,eba,sir,sig,sib,sia,mir,mig,mib,mia,eir,eig,eib,eia,overlap)
--###########################################################################################################
--copy and paste above section for more rings ####
--################################################
--################################################
--SETTINGS FOR RING 4 ############################
--################################################
--background gradient ############################
--start color
sbr,sbg,sbb,sba=0.9,0.9,0.9,1
--middle color
mbr,mbg,mbb,mba=0.6,0.6,0.6,1
--end color
ebr,ebg,ebb,eba=0.3,0.3,0.3,1
--indicator gradient ##############################
--start color
sir,sig,sib,sia=0,1,0,1
--middle color
mir,mig,mib,mia=1,1,0,1
--end color
eir,eig,eib,eia=1,0,0,1
--settings #########################################
--conky value
num=conky_parse("${fs_used_perc /home}")
--line width
width=5
--circle radius
radius=60
--position
x,y=550,400
--start and end angles for ring
sangle,fangle=0,360
--if you see line artefacts in the circle drawn
--then increase this number in increments of 0.01 until they disappear
--otherwise set 1
overlap=1.09
--call drawing function ############################################################################################################################
gcircle (num,x,y,radius,width,sangle,fangle,sbr,sbg,sbb,sba,mbr,mbg,mbb,mba,ebr,ebg,ebb,eba,sir,sig,sib,sia,mir,mig,mib,mia,eir,eig,eib,eia,overlap)
--###########################################################################################################
--copy and paste above section for more rings ####
--################################################
--################################################
--SETTINGS FOR RING 5 ############################
--################################################
--background gradient ############################
--start color
sbr,sbg,sbb,sba=0.9,0.9,0.9,1
--middle color
mbr,mbg,mbb,mba=0.6,0.6,0.6,1
--end color
ebr,ebg,ebb,eba=0.3,0.3,0.3,1
--indicator gradient ##############################
--start color
sir,sig,sib,sia=0,1,0,1
--middle color
mir,mig,mib,mia=1,1,0,1
--end color
eir,eig,eib,eia=1,0,0,1
--settings #########################################
--conky value
num=100--demonstration ring
--line width
width=5
--circle radius
radius=60
--position
x,y=700,400
--start and end angles for ring
sangle,fangle=0,360
--if you see line artefacts in the circle drawn
--then increase this number in increments of 0.01 until they disappear
--otherwise set 1
overlap=1.09
--call drawing function ############################################################################################################################
gcircle (num,x,y,radius,width,sangle,fangle,sbr,sbg,sbb,sba,mbr,mbg,mbb,mba,ebr,ebg,ebb,eba,sir,sig,sib,sia,mir,mig,mib,mia,eir,eig,eib,eia,overlap)
--###########################################################################################################
--copy and paste above section for more rings ####
--################################################
--###############################################################
end--end if 5
end--end main function