Code:
--yearclock by mrpeachy 2010 version2
require 'cairo'
function string:split(delimiter)
local result = { }
local from = 1
local delim_from, delim_to = string.find( self, delimiter, from )
while delim_from do
table.insert( result, string.sub( self, from , delim_from-1 ) )
from = delim_to + 1
delim_from, delim_to = string.find( self, delimiter, from )
end
table.insert( result, string.sub( self, from ) )
return result
end
function circlewriting(cr, text, font, fsize, radi, horiz, verti, tred, tgreen, tblue, talpha, start, finish, var1)
local inum=string.len(text)
range=finish
deg=(finish-start)/(inum-1)
degrads=1*(math.pi/180)
local textcut=string.gsub(text, ".", "%1@@@")
texttable=string.split(textcut, "@@@")
for i = 1,inum do
ival=i
interval=(degrads*(start+(deg*(i-1))))+var1
interval2=degrads*(start+(deg*(i-1)))
txs=0+radi*(math.sin(interval))
tys=0-radi*(math.cos(interval))
cairo_select_font_face (cr, font, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
cairo_set_font_size (cr, fsize);
cairo_set_source_rgba (cr, tred, tgreen, tblue, talpha);
cairo_move_to (cr, txs+horiz, tys+verti);
cairo_rotate (cr, interval2)
cairo_show_text (cr, (texttable[i]))
cairo_rotate (cr, -interval2)
cairo_move_to (cr,0,0)
cairo_set_source_rgba (cr, 0, 0, 0, 0)
cairo_line_to (cr,hx0,hy0)
cairo_stroke (cr)
end
end
function date_to_words()------------------------------------------------------------------------------------------
date=os.date("%d")
datecut=string.gsub(date, ".", "%1|")
datetable=string.split(datecut, "|")
if datetable[1]=="1" then
datetens=""
datespacer=""
if datetable[2]=="0" then
dateunit="tenth"
elseif datetable[2]=="1" then
dateunit="eleventh"
elseif datetable[2]=="2" then
dateunit="twelfth"
elseif datetable[2]=="3" then
dateunit="thirteenth"
elseif datetable[2]=="4" then
dateunit="fourteenth"
elseif datetable[2]=="5" then
dateunit="fifteenth"
elseif datetable[2]=="6" then
dateunit="sixteenth"
elseif datetable[2]=="7" then
fisrtdigit="seventeenth"
elseif datetable[2]=="8" then
dateunit="eighteenth"
elseif datetable[2]=="9" then
dateunit="nineteenth"
end
end
if datetable[1]=="0" or datetable[1]>"1" then
datespacer=" "
if datetable[1]=="2" then
datetens="twenty"
elseif datetable[1]=="3" then
datetens="thirty"
elseif datetable[1]=="0" then
datetens=""
end
if datetable[2]=="1" then
dateunit="first"
elseif datetable[2]=="2" then
dateunit="second"
elseif datetable[2]=="3" then
dateunit="third"
elseif datetable[2]=="4" then
dateunit="fourth"
elseif datetable[2]=="5" then
dateunit="fifth"
elseif datetable[2]=="6" then
dateunit="sixth"
elseif datetable[2]=="7" then
dateunit="seventh"
elseif datetable[2]=="8" then
dateunit="eighth"
elseif datetable[2]=="9" then
dateunit="nineth"
elseif datetable[2]=="0" then
dateunit=""
datespacer=""
end
end
if datetable[2]=="0" then
datetens=""
datespacer=""
if datetable[1]=="2" then
dateunit="twentieth"
elseif datetable[1]=="3" then
dateunit="thirtieth"
end
end
return ((datetens) .. (datespacer) .. (dateunit))
end--end of function--------------------------------------------------------------------------------------
function number_to_words(text)
textlength=string.len(text)
textcut=string.gsub(text, ".", "%1|")
texttable=string.split(textcut, "|")
--for NUMBERS from 1 to 999
--for numbers 1 digit number----------
if textlength==1 then
if texttable[1]=="1" then
firstdigit="one"
elseif texttable[1]=="2" then
firstdigit="two"
elseif texttable[1]=="3" then
firstdigit="three"
elseif texttable[1]=="4" then
firstdigit="four"
elseif texttable[1]=="5" then
firstdigit="five"
elseif texttable[1]=="6" then
firstdigit="six"
elseif texttable[1]=="7" then
firstdigit="seven"
elseif texttable[1]=="8" then
firstdigit="eight"
elseif texttable[1]=="9" then
firstdigit="nine"
elseif texttable[1]=="0" then
firstdigit="zero"
end
return firstdigit
end
--for 2 digit number------------------
if textlength==2 then
if texttable[1]=="1" then
seconddigit=""
spacer=""
if texttable[2]=="0" then
firstdigit="ten"
elseif texttable[2]=="1" then
firstdigit="eleven"
elseif texttable[2]=="2" then
firstdigit="twelve"
elseif texttable[2]=="3" then
firstdigit="thirteen"
elseif texttable[2]=="4" then
firstdigit="fourteen"
elseif texttable[2]=="5" then
firstdigit="fifteen"
elseif texttable[2]=="6" then
firstdigit="sixteen"
elseif texttable[2]=="7" then
fisrtdigit="seventeen"
elseif texttable[2]=="8" then
firstdigit="eighteen"
elseif texttable[2]=="9" then
firstdigit="nineteen"
end
end
if texttable[1]>"1" then
spacer=" "
if texttable[1]=="2" then
seconddigit="twenty"
elseif texttable[1]=="3" then
seconddigit="thirty"
elseif texttable[1]=="4" then
seconddigit="fourty"
elseif texttable[1]=="5" then
seconddigit="fifty"
elseif texttable[1]=="6" then
seconddigit="sixty"
elseif texttable[1]=="7" then
seconddigit="seventy"
elseif texttable[1]=="8" then
seconddigit="eighty"
elseif texttable[1]=="9" then
seconddigit="ninety"
end
if texttable[2]=="1" then
firstdigit="one"
elseif texttable[2]=="2" then
firstdigit="two"
elseif texttable[2]=="3" then
firstdigit="three"
elseif texttable[2]=="4" then
firstdigit="four"
elseif texttable[2]=="5" then
firstdigit="five"
elseif texttable[2]=="6" then
firstdigit="six"
elseif texttable[2]=="7" then
firstdigit="seven"
elseif texttable[2]=="8" then
firstdigit="eight"
elseif texttable[2]=="9" then
firstdigit="nine"
elseif texttable[2]=="0" then
firstdigit=""
spacer=""
end
end
return ((seconddigit) .. (spacer) .. (firstdigit))
end
--for 3 digit numbers-----------------------------
if textlength==3 then
if texttable[2]=="0" and texttable[3]=="0" then space="" end
if texttable[2]>"0" or texttable[3]>"0" then space=" and " end
if texttable[2]=="0" and texttable[3]>"0" then spacer="" end
if texttable[1]=="1" then
thirddigit="one hundred"
elseif texttable[1]=="2" then
thirddigit="two hundred"
elseif texttable[1]=="3" then
thirddigit="three hundred"
elseif texttable[1]=="4" then
thirddigit="four hundred"
elseif texttable[1]=="5" then
thirddigit="five hundred"
elseif texttable[1]=="6" then
thirddigit="six hundred"
elseif texttable[1]=="7" then
thirddigit="seven hundred"
elseif texttable[1]=="8" then
thirddigit="eight hundred"
elseif texttable[1]=="9" then
thirddigit="nine hundred"
end
if texttable[2]=="0" or texttable[2]>"1" then
if texttable[3]=="1" then
firstdigit="one"
elseif texttable[3]=="2" then
firstdigit="two"
elseif texttable[3]=="3" then
firstdigit="three"
elseif texttable[3]=="4" then
firstdigit="four"
elseif texttable[3]=="5" then
firstdigit="five"
elseif texttable[3]=="6" then
firstdigit="six"
elseif texttable[3]=="7" then
firstdigit="seven"
elseif texttable[3]=="8" then
firstdigit="eight"
elseif texttable[3]=="9" then
firstdigit="nine"
elseif texttable[3]=="0" then
firstdigit=""
spacer=""
end
end
if texttable[2]=="1" then
seconddigit=""
spacer=""
if texttable[3]=="0" then
firstdigit="ten"
elseif texttable[3]=="1" then
firstdigit="eleven"
elseif texttable[3]=="2" then
firstdigit="twelve"
elseif texttable[3]=="3" then
firstdigit="thirteen"
elseif texttable[3]=="4" then
firstdigit="fourteen"
elseif texttable[3]=="5" then
firstdigit="fifteen"
elseif texttable[3]=="6" then
firstdigit="sixteen"
elseif texttable[3]=="7" then
firstdigit="seventeen"
elseif texttable[3]=="8" then
firstdigit="eighteen"
elseif texttable[3]=="9" then
firstdigit="nineteen"
end
end
if texttable[2] >"1" then
spacer=" "
if texttable[2]=="2" then
seconddigit="twenty"
elseif texttable[2]=="3" then
seconddigit="thirty"
elseif texttable[2]=="4" then
seconddigit="fourty"
elseif texttable[2]=="5" then
seconddigit="fifty"
elseif texttable[2]=="6" then
seconddigit="sixty"
elseif texttable[2]=="7" then
seconddigit="seventy"
elseif texttable[2]=="8" then
seconddigit="eighty"
elseif texttable[2]=="9" then
seconddigit="ninety"
elseif texttable[2]=="0" then
seconddigit=""
end
end
return ((thirddigit) .. (space) .. (seconddigit) .. (spacer) .. (firstdigit))
end
end--of 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
cairo_set_line_width (cr,1)
hx0=200
hy0=200
radius=40
--months of the year---------------------------------------------------------------------------------------------------
mnrad1=radius
mnrad2=mnrad1+10
br1,bg1,bb1,ba1=1,1,1,1
cairo_set_source_rgba (cr,br1,bg1,bb1,ba1)
--draw circles
cairo_arc (cr,hx0,hy0,mnrad1,0,2*math.pi)
cairo_stroke (cr)
cairo_arc (cr,hx0,hy0,mnrad2,0,2*math.pi)
cairo_stroke (cr)
--calculations
year4num=os.date("%Y")
t1 = os.time( { year=year4num,month=03,day=01,hour=00,min=0,sec=0} );
t2 = os.time( { year=year4num,month=02,day=01,hour=00,min=0,sec=0} );
febdaynum=tonumber((os.difftime(t1,t2))/(24*60*60))
yeardays=31+febdaynum+31+30+31+30+31+31+30+31+30+31
yearsec=(yeardays*24*60*60)
jan=31*24*60*60
feb=jan+(febdaynum*24*60*60)
mar=feb+(31*24*60*60)
apr=mar+(30*24*60*60)
may=apr+(31*24*60*60)
jun=may+(30*24*60*60)
jul=jun+(31*24*60*60)
aug=jul+(31*24*60*60)
sep=aug+(30*24*60*60)
oct=sep+(31*24*60*60)
nov=oct+(30*24*60*60)
dec=nov+(31*24*60*60)
secdays = { jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec }
--circle indicator lines
for i=1,12 do
arc=((2*math.pi/360)*((360/yearsec)*(secdays[i])))
mnx1=0+mnrad1*(math.sin(arc))
mny1=0-mnrad1*(math.cos(arc))
arc=((2*math.pi/360)*((360/yearsec)*(secdays[i])))
mnx2=0+mnrad2*(math.sin(arc))
mny2=0-mnrad2*(math.cos(arc))
cairo_move_to (cr,hx0+mnx1,hy0+mny1)
cairo_line_to (cr,hx0+mnx2,hy0+mny2)
cairo_stroke (cr)
end
--indicator
doy=tonumber(os.date("%j"))
yrsecs=((doy-1)*24*60*60)+(tonumber(os.date('%H'))*60*60)+(tonumber(os.date('%M'))*60)+(tonumber(os.date('%S')))
mnrad3=mnrad2+10
arc=(2*math.pi/360)*((360/yearsec)*(yrsecs))
mnx1=0+mnrad2*(math.sin(arc))
mny1=0-mnrad2*(math.cos(arc))
arc=(2*math.pi/360)*((360/yearsec)*((yrsecs))+4)
mnx2=0+mnrad3*(math.sin(arc))
mny2=0-mnrad3*(math.cos(arc))
arc=(2*math.pi/360)*((360/yearsec)*((yrsecs))-4)
mnx3=0+mnrad3*(math.sin(arc))
mny3=0-mnrad3*(math.cos(arc))
cairo_move_to (cr,hx0+mnx1,hy0+mny1)
cairo_line_to (cr,hx0+mnx2,hy0+mny2)
cairo_stroke (cr)
cairo_move_to (cr,hx0+mnx1,hy0+mny1)
cairo_line_to (cr,hx0+mnx3,hy0+mny3)
cairo_stroke (cr)
--circlewriting
--circlewriting variable
text1=((string.upper(os.date('%B'))) .. " TWO THOUSAND AND " .. string.upper(number_to_words(os.date('%y'))))
--text must be in quotes
text=text1
--font name must be in quotes
font="mono"
fontsize=10
radius=mnrad2+1
positionx=hx0
positiony=hy0
colorred=1
colorgreen=1
colorblue=1
coloralpha=1
--to set start and finish values for circlewriting, if the text will cross 0 degrees then you must calculate for 360+finish degrees
--eg if you want to go from 270 to 90, then you will input 270 to 450. Finish has to be greater than start.
start=((360/yearsec)*((yrsecs))+4)
slen2=string.len(text)
finish=start+270
letterposition=0
circlewriting(cr, text, font, fontsize, radius, positionx, positiony, colorred, colorgreen, colorblue, coloralpha, start, finish, letterposition)
--end of months around year-------------------------------------------------------------------------------------------------------------------------------
--days around month----------------------------------------------------------------------
drad1=mnrad3
drad2=drad1+10
br1,bg1,bb1,ba1=1,1,1,1
cairo_set_source_rgba (cr,br1,bg1,bb1,ba1)
--draw circles
cairo_arc (cr,hx0,hy0,drad1,0,2*math.pi)
cairo_stroke (cr)
cairo_arc (cr,hx0,hy0,drad2,0,2*math.pi)
cairo_stroke (cr)
--calculations
monthnum=(tonumber(os.date('%m')))
monthdays = { 31, febdaynum, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
--drawin circle indicator lines
for i=1,monthdays[monthnum] do
arc=((2*math.pi/360)*((360/monthdays[monthnum])*(i)))
dx1=0+drad1*(math.sin(arc))
dy1=0-drad1*(math.cos(arc))
arc=((2*math.pi/360)*((360/monthdays[monthnum])*(i)))
dx2=0+drad2*(math.sin(arc))
dy2=0-drad2*(math.cos(arc))
cairo_move_to (cr,hx0+dx1,hy0+dy1)
cairo_line_to (cr,hx0+dx2,hy0+dy2)
cairo_stroke (cr)
end
--indicator
daynumsec=(tonumber(os.date('%d'))*24*60*60)+(tonumber(os.date('%H'))*60*60)+(tonumber(os.date('%M'))*60)+(tonumber(os.date('%S')))
monthnumsec=(monthdays[monthnum])*24*60*60
drad3=drad2+10
arc=(2*math.pi/360)*((360/monthnumsec)*(daynumsec))
dx1=0+drad2*(math.sin(arc))
dy1=0-drad2*(math.cos(arc))
arc=(2*math.pi/360)*((360/monthnumsec)*((daynumsec))+4)
dx2=0+drad3*(math.sin(arc))
dy2=0-drad3*(math.cos(arc))
arc=(2*math.pi/360)*((360/monthnumsec)*((daynumsec))-4)
dx3=0+drad3*(math.sin(arc))
dy3=0-drad3*(math.cos(arc))
cairo_move_to (cr,hx0+dx1,hy0+dy1)
cairo_line_to (cr,hx0+dx2,hy0+dy2)
cairo_stroke (cr)
cairo_move_to (cr,hx0+dx1,hy0+dy1)
cairo_line_to (cr,hx0+dx3,hy0+dy3)
cairo_stroke (cr)
--circlewriting
--circlewriting variable
text1=((string.upper(os.date('%A'))) .. " THE " .. string.upper(date_to_words()))
--text must be in quotes
text=text1
--font name must be in quotes
font="mono"
fontsize=10
radius=drad2+1
positionx=hx0
positiony=hy0
colorred=1
colorgreen=1
colorblue=1
coloralpha=1
--to set start and finish values for circlewriting, if the text will cross 0 degrees then you must calculate for 360+finish degrees
--eg if you want to go from 270 to 90, then you will input 270 to 450. Finish has to be greater than start.
start=((360/monthnumsec)*(daynumsec)+4)
slen1=string.len(text)
finish=start+(7.5*slen1)
letterposition=0
circlewriting(cr, text, font, fontsize, radius, positionx, positiony, colorred, colorgreen, colorblue, coloralpha, start, finish, letterposition)
--end of days around month-------------------------------------------------------------------------------------------------------
--hours around day ---------------------------------------------------------------------------------------------------------------------
hrad1=drad3
hrad2=hrad1+10
br1,bg1,bb1,ba1=1,1,1,1
cairo_set_source_rgba (cr,br1,bg1,bb1,ba1)
--draw eings
cairo_arc (cr,hx0,hy0,hrad1,0,2*math.pi)
cairo_stroke (cr)
cairo_arc (cr,hx0,hy0,hrad2,0,2*math.pi)
cairo_stroke (cr)
--draw ring indicator lines
for i=1,24 do
arc=((2*math.pi/360)*((360/24)*i))
hx1=0+hrad1*(math.sin(arc))
hy1=0-hrad1*(math.cos(arc))
arc=((2*math.pi/360)*((360/24)*i))
hx2=0+hrad2*(math.sin(arc))
hy2=0-hrad2*(math.cos(arc))
cairo_move_to (cr,hx0+hx1,hy0+hy1)
cairo_line_to (cr,hx0+hx2,hy0+hy2)
cairo_stroke (cr)
end
--indicator
hrsec=(tonumber(os.date('%H'))*60*60)+(tonumber(os.date('%M'))*60)+(tonumber(os.date('%S')))
--mns=mn+sc
hrad3=hrad2+10
arc=((2*math.pi/360)*((360/(24*60*60)*hrsec)))
hx1=0+hrad2*(math.sin(arc))
hy1=0-hrad2*(math.cos(arc))
arc=(2*math.pi/360)*((360/(24*60*60))*(hrsec)-4)
hx2=0+hrad3*(math.sin(arc))
hy2=0-hrad3*(math.cos(arc))
arc=(2*math.pi/360)*((360/(24*60*60))*(hrsec)+4)
hx3=0+hrad3*(math.sin(arc))
hy3=0-hrad3*(math.cos(arc))
cairo_move_to (cr,hx0+hx1,hy0+hy1)
cairo_line_to (cr,hx0+hx2,hy0+hy2)
cairo_stroke (cr)
cairo_move_to (cr,hx0+hx1,hy0+hy1)
cairo_line_to (cr,hx0+hx3,hy0+hy3)
cairo_stroke (cr)
--circlewriting
hrnum=tonumber(os.date('%H'))
if hrnum==1 then hour="HOUR"
else hour="HOURS" end
text4=((string.upper(number_to_words(hrnum))) .. " " .. hour)
--text must be in quotes
text=text4
--font name must be in quotes
font="mono"
fontsize=10
radius=hrad2+1
positionx=hx0
positiony=hy0
colorred=1
colorgreen=1
colorblue=1
coloralpha=1
--to set start and finish values for circlewriting, if the text will cross 0 degrees then you must calculate for 360+finish degrees
--eg if you want to go from 270 to 90, then you will input 270 to 450. Finish has to be greater than start.
start=((360/(24*60*60))*(hrsec)+4)
slen4=string.len(text)
finish=start+(slen4*5)
letterposition=0
circlewriting(cr, text, font, fontsize, radius, positionx, positiony, colorred, colorgreen, colorblue, coloralpha, start, finish, letterposition)
--end of hours around day----------------------------------------------------------------------------------------------------
--minutes around hour--------------------------------------------------------------------------------------------------------------
mrad1=hrad3
mrad2=mrad1+10
br1,bg1,bb1,ba1=1,1,1,1
cairo_set_source_rgba (cr,br1,bg1,bb1,ba1)
--draw circles
cairo_arc (cr,hx0,hy0,mrad1,0,2*math.pi)
cairo_stroke (cr)
cairo_arc (cr,hx0,hy0,mrad2,0,2*math.pi)
cairo_stroke (cr)
--draw circle indicator lines
for i=1,60 do
arc=((2*math.pi/360)*((360/60)*i))
mx1=0+mrad1*(math.sin(arc))
my1=0-mrad1*(math.cos(arc))
arc=((2*math.pi/360)*((360/60)*i))
mx2=0+mrad2*(math.sin(arc))
my2=0-mrad2*(math.cos(arc))
cairo_move_to (cr,hx0+mx1,hy0+my1)
cairo_line_to (cr,hx0+mx2,hy0+my2)
cairo_stroke (cr)
end
--indicator
minsec=(tonumber(os.date('%M'))*60)+(tonumber(os.date('%S')))
mrad3=mrad2+10
arc=((2*math.pi/360)*((360/(60*60)*minsec)))
mx1=0+mrad2*(math.sin(arc))
my1=0-mrad2*(math.cos(arc))
arc=(2*math.pi/360)*((360/(60*60))*(minsec)-4)
mx2=0+mrad3*(math.sin(arc))
my2=0-mrad3*(math.cos(arc))
arc=(2*math.pi/360)*((360/(60*60))*(minsec)+4)
mx3=0+mrad3*(math.sin(arc))
my3=0-mrad3*(math.cos(arc))
cairo_move_to (cr,hx0+mx1,hy0+my1)
cairo_line_to (cr,hx0+mx2,hy0+my2)
cairo_stroke (cr)
cairo_move_to (cr,hx0+mx1,hy0+my1)
cairo_line_to (cr,hx0+mx3,hy0+my3)
cairo_stroke (cr)
--circlewriting
min=tonumber(os.date('%M'))
if min==1 then minute="MINUTE"
else minute="MINUTES" end
text4=((string.upper(number_to_words(min))) .. " " .. minute)
--text must be in quotes
text=text4
--font name must be in quotes
font="mono"
fontsize=10
radius=mrad2+1
positionx=hx0
positiony=hy0
colorred=1
colorgreen=1
colorblue=1
coloralpha=1
--to set start and finish values for circlewriting, if the text will cross 0 degrees then you must calculate for 360+finish degrees
--eg if you want to go from 270 to 90, then you will input 270 to 450. Finish has to be greater than start.
start=((360/(60*60))*(minsec)+4)
slen4=string.len(text)
finish=start+(slen4*5)
letterposition=0
circlewriting(cr, text, font, fontsize, radius, positionx, positiony, colorred, colorgreen, colorblue, coloralpha, start, finish, letterposition)
--end minutes around hour--------------------------------------------------------------------------------------
--seconds of minute-------------------------------------------------------------------------------------------
srad1=mrad3
srad2=srad1+10
br1,bg1,bb1,ba1=1,1,1,1
cairo_set_source_rgba (cr,br1,bg1,bb1,ba1)
--draw circles
cairo_arc (cr,hx0,hy0,srad1,0,2*math.pi)
cairo_stroke (cr)
cairo_arc (cr,hx0,hy0,srad2,0,2*math.pi)
cairo_stroke (cr)
--draw circle indicator lines
for i=1,60 do
arc=((2*math.pi/360)*((360/60)*i))
sx1=0+srad1*(math.sin(arc))
sy1=0-srad1*(math.cos(arc))
arc=((2*math.pi/360)*((360/60)*i))
sx2=0+srad2*(math.sin(arc))
sy2=0-srad2*(math.cos(arc))
cairo_move_to (cr,hx0+sx1,hy0+sy1)
cairo_line_to (cr,hx0+sx2,hy0+sy2)
cairo_stroke (cr)
end
--indicator
sec=(tonumber(os.date('%S')))
srad3=srad2+10
arc=((2*math.pi/360)*((360/(60)*sec)))
sx1=0+srad2*(math.sin(arc))
sy1=0-srad2*(math.cos(arc))
arc=(2*math.pi/360)*((360/60)*((sec))-4)
sx2=0+srad3*(math.sin(arc))
sy2=0-srad3*(math.cos(arc))
arc=(2*math.pi/360)*((360/60)*((sec))+4)
sx3=0+srad3*(math.sin(arc))
sy3=0-srad3*(math.cos(arc))
cairo_move_to (cr,hx0+sx1,hy0+sy1)
cairo_line_to (cr,hx0+sx2,hy0+sy2)
cairo_stroke (cr)
cairo_move_to (cr,hx0+sx1,hy0+sy1)
cairo_line_to (cr,hx0+sx3,hy0+sy3)
cairo_stroke (cr)
cairo_arc (cr,hx0,hy0,srad3,0,2*math.pi)
cairo_stroke (cr)
--circlewriting
--circlewriting variable
sec=tonumber(os.date('%S'))
if sec==1 then second="SECOND"
else second="SECONDS" end
text3=((string.upper(number_to_words(sec))) .. " " .. second)
--text must be in quotes
text=text3
--font name must be in quotes
font="mono"
fontsize=10
radius=srad2+1
positionx=hx0
positiony=hy0
colorred=1
colorgreen=1
colorblue=1
coloralpha=1
--to set start and finish values for circlewriting, if the text will cross 0 degrees then you must calculate for 360+finish degrees
--eg if you want to go from 270 to 90, then you will input 270 to 450. Finish has to be greater than start.
start=((360/60)*((sec))+4)
slen3=string.len(text)
finish=start+(slen3*5)
letterposition=0
circlewriting(cr, text, font, fontsize, radius, positionx, positiony, colorred, colorgreen, colorblue, coloralpha, start, finish, letterposition)
--end seconds of minute-----------------------------------------------------------------------------------------------------------------------------
--end of calendar---------------------------------------------------------------------------------------------------
end--of if updates>5
end--of main function
--system monitor
--cpu
--cairo_set_line_width (cr,1)
--hx0=385
--hy0=383
--hrad1=40
--hrad2=hrad1+10
--br1,bg1,bb1,ba1=1,1,1,1
--cairo_set_source_rgba (cr,br1,bg1,bb1,ba1)
--cairo_arc (cr,hx0,hy0,hrad1,0,2*math.pi)
--cairo_stroke (cr)
--cairo_arc (cr,hx0,hy0,hrad2,0,2*math.pi)
--cairo_stroke (cr)
--for i=1,100 do
--arc=(2*math.pi/100)*i
--hx1=0+hrad1*(math.sin(arc))
--hy1=0-hrad1*(math.cos(arc))
--arc=(2*math.pi/100)*i
--hx2=0+hrad2*(math.sin(arc))
--hy2=0-hrad2*(math.cos(arc))
--cairo_move_to (cr,hx0+hx1,hy0+hy1)
--cairo_line_to (cr,hx0+hx2,hy0+hy2)
--cairo_stroke (cr)
--end
--cpu=conky_parse('${cpu}')
--hrad3=hrad2+10
--arc=(2*math.pi/360)*((360/100)*((cpu)))
--hx1=0+hrad2*(math.sin(arc))
--hy1=0-hrad2*(math.cos(arc))
--arc=(2*math.pi/360)*((360/100)*((cpu))+4)
--hx2=0+hrad3*(math.sin(arc))
--hy2=0-hrad3*(math.cos(arc))
--arc=(2*math.pi/360)*((360/100)*((cpu))-4)
--hx3=0+hrad3*(math.sin(arc))
--hy3=0-hrad3*(math.cos(arc))
--cairo_move_to (cr,hx0+hx1,hy0+hy1)
--cairo_line_to (cr,hx0+hx2,hy0+hy2)
--cairo_stroke (cr)
--cairo_move_to (cr,hx0+hx1,hy0+hy1)
--cairo_line_to (cr,hx0+hx3,hy0+hy3)
--cairo_stroke (cr)
--memory
--mrad1=hrad3
--mrad2=mrad1+10
--br1,bg1,bb1,ba1=1,1,1,1
--cairo_set_source_rgba (cr,br1,bg1,bb1,ba1)
--cairo_arc (cr,hx0,hy0,mrad1,0,2*math.pi)
--cairo_stroke (cr)
--cairo_arc (cr,hx0,hy0,mrad2,0,2*math.pi)
--cairo_stroke (cr)
--for i=1,100 do
--arc=(2*math.pi/100)*i
--mx1=0+mrad1*(math.sin(arc))
--my1=0-mrad1*(math.cos(arc))
--arc=(2*math.pi/100)*i
--mx2=0+mrad2*(math.sin(arc))
--my2=0-mrad2*(math.cos(arc))
--cairo_move_to (cr,hx0+mx1,hy0+my1)
--cairo_line_to (cr,hx0+mx2,hy0+my2)
--cairo_stroke (cr)
--end
--mem=tonumber(conky_parse('${memperc}'))
--mrad3=mrad2+10
--arc=(2*math.pi/360)*((360/100)*((mem)))
--mx1=0+mrad2*(math.sin(arc))
--my1=0-mrad2*(math.cos(arc))
--arc=(2*math.pi/360)*((360/100)*((mem))+4)
--mx2=0+mrad3*(math.sin(arc))
--my2=0-mrad3*(math.cos(arc))
--arc=(2*math.pi/360)*((360/100)*((mem))-4)
--mx3=0+mrad3*(math.sin(arc))
--my3=0-mrad3*(math.cos(arc))
--cairo_move_to (cr,hx0+mx1,hy0+my1)
--cairo_line_to (cr,hx0+mx2,hy0+my2)
--cairo_stroke (cr)
--cairo_move_to (cr,hx0+mx1,hy0+my1)
--cairo_line_to (cr,hx0+mx3,hy0+my3)
--cairo_stroke (cr)
--fs_used root
--srad1=mrad3
--srad2=srad1+10
--br1,bg1,bb1,ba1=1,1,1,1
--cairo_set_source_rgba (cr,br1,bg1,bb1,ba1)
--cairo_arc (cr,hx0,hy0,srad1,0,2*math.pi)
--cairo_stroke (cr)
--cairo_arc (cr,hx0,hy0,srad2,0,2*math.pi)
--cairo_stroke (cr)
--for i=1,100 do
--arc=((2*math.pi/360)*((360/100)*i))
--sx1=0+srad1*(math.sin(arc))
--sy1=0-srad1*(math.cos(arc))
--arc=((2*math.pi/360)*((360/100)*i))
--sx2=0+srad2*(math.sin(arc))
--sy2=0-srad2*(math.cos(arc))
--cairo_move_to (cr,hx0+sx1,hy0+sy1)
--cairo_line_to (cr,hx0+sx2,hy0+sy2)
--cairo_stroke (cr)
--end
--fsr=conky_parse('${fs_used_perc /}')
--srad3=srad2+10
--arc=((2*math.pi/360)*((360/(100)*fsr)))
--sx1=0+srad2*(math.sin(arc))
--sy1=0-srad2*(math.cos(arc))
--arc=(2*math.pi/360)*((360/100)*((fsr))-4)
--sx2=0+srad3*(math.sin(arc))
--sy2=0-srad3*(math.cos(arc))
--arc=(2*math.pi/360)*((360/100)*((fsr))+4)
--sx3=0+srad3*(math.sin(arc))
--sy3=0-srad3*(math.cos(arc))
--cairo_move_to (cr,hx0+sx1,hy0+sy1)
--cairo_line_to (cr,hx0+sx2,hy0+sy2)
--cairo_stroke (cr)
--cairo_move_to (cr,hx0+sx1,hy0+sy1)
--cairo_line_to (cr,hx0+sx3,hy0+sy3)
--cairo_stroke (cr)
--fs used home
--mnrad1=srad3
--mnrad2=mnrad1+10
--br1,bg1,bb1,ba1=1,1,1,1
--cairo_set_source_rgba (cr,br1,bg1,bb1,ba1)
--cairo_arc (cr,hx0,hy0,mnrad1,0,2*math.pi)
--cairo_stroke (cr)
--cairo_arc (cr,hx0,hy0,mnrad2,0,2*math.pi)
--cairo_stroke (cr)
--for i=1,100 do
--arc=((2*math.pi/360)*((360/100)*i))
--mnx1=0+mnrad1*(math.sin(arc))
--mny1=0-mnrad1*(math.cos(arc))
--arc=((2*math.pi/360)*((360/100)*i))
--mnx2=0+mnrad2*(math.sin(arc))
--mny2=0-mnrad2*(math.cos(arc))
--cairo_move_to (cr,hx0+mnx1,hy0+mny1)
--cairo_line_to (cr,hx0+mnx2,hy0+mny2)
--cairo_stroke (cr)
--end
--fsh=conky_parse('${fs_used_perc /home}')
--mnrad3=mnrad2+10
--arc=((2*math.pi/360)*((360/(100)*fsh)))
--mnx1=0+mnrad2*(math.sin(arc))
--mny1=0-mnrad2*(math.cos(arc))
--arc=(2*math.pi/360)*((360/100)*((fsh))-4)
--mnx2=0+mnrad3*(math.sin(arc))
--mny2=0-mnrad3*(math.cos(arc))
--arc=(2*math.pi/360)*((360/100)*((fsh))+4)
--mnx3=0+mnrad3*(math.sin(arc))
--mny3=0-mnrad3*(math.cos(arc))
--cairo_move_to (cr,hx0+mnx1,hy0+mny1)
--cairo_line_to (cr,hx0+mnx2,hy0+mny2)
--cairo_stroke (cr)
--cairo_move_to (cr,hx0+mnx1,hy0+mny1)
--cairo_line_to (cr,hx0+mnx3,hy0+mny3)
--cairo_stroke (cr)
--cairo_arc (cr,hx0,hy0,mnrad3,0,2*math.pi)
--cairo_stroke (cr)
--end
--end
I like how the minute gradually moves through the minute too. Am I right to assume that everything else does that?
Bookmarks