Да скрипт очень простой, в скрипт часов добавил две командные строки.
--[[
Conky Widgets by olgmen (2009)
Скрипт позволяет выводить в окно CONKY часы
для запуска необходимо ввести до TEXT сдедующие строки
#--- LUA ---
lua_load ~/scripts/olgmen2.lua
lua_draw_hook_pre widgets
при условии, что скрипт olgmen2.lua сохранен в папке ~/scripts
]]
require 'cairo'
--[[ CLOCK WIDGET ]]
function clock(cr, x, y, s, bgc, bga, fgc, fga)
function rgb_to_r_g_b(colour,alpha) -- функция перекодировки цвета
return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
end
-- назначаем базовые настройки
local s_th = 2 -- базовая толщина выводимых линий
local w = s
local h = s
local r = (w+h)/2*0.04
-- перехватываем данные часы, минуты, секунды
local hours=os.date("%I")
local mins=os.date("%M")
local secs=os.date("%S")
-- назначаем максимальные значения
secs_arc=(2*math.pi/60)*secs
mins_arc=(2*math.pi/60)*mins
hours_arc=(2*math.pi/12)*hours+mins_arc/12
-- рисуем циферблат
local radius = s/2
local m_x,m_y = x + s/2, y + s/2
cairo_set_line_width(cr,6)
cairo_rotate (cr, 320*math.pi/180)-- строка поворачивает часы влево на 40 градусов
cairo_scale (cr, 0.6, 1) -- делаем из круга элипс
cairo_arc(cr, m_x,m_y, radius, 0, math.rad(360)) -- выводим циферблат
cairo_set_source_rgba(cr,rgb_to_r_g_b(bgc,bga))
cairo_fill_preserve(cr) -- окрашиваем циферблат
cairo_set_source_rgba(cr,rgb_to_r_g_b(fgc,fga))
cairo_stroke(cr)
-- вывод часовых делений
local i = 0
local winkel = math.rad(30)
for i=0,11,1 do
cairo_set_line_width(cr,s_th*1.5)
cairo_move_to(cr, m_x-math.sin(winkel*i)*(radius*1.5), m_y-math.cos(winkel*i)*(radius*1.5))
cairo_line_to(cr, m_x-math.sin(winkel*i)*(radius*0.9), m_y-math.cos(winkel*i)*(radius*0.9))
cairo_fill_preserve(cr)
cairo_set_source_rgba(cr,rgb_to_r_g_b(fgc,fga))
cairo_stroke(cr)
end
-- вывод минутных делений
local i = 0
local winkel = math.rad(6)
for i=0,59,1 do
cairo_set_line_width(cr,1)
cairo_move_to(cr, m_x-math.sin(winkel*i)*radius, m_y-math.cos(winkel*i)*radius)
cairo_line_to(cr, m_x-math.sin(winkel*i)*(radius*0.9), m_y-math.cos(winkel*i)*(radius*0.9))
cairo_stroke(cr)
end
-- рисуем деления 3, 6, 9 и 12 часовые
cairo_set_line_width(cr,s_th/2) -- устанавливаем толщину линий
cairo_move_to (cr, x + 0.15*s, y + 0.5*s)
cairo_line_to (cr, x + 0.45*s, y + 0.5*s)
cairo_move_to (cr, x + 0.55*s, y + 0.5*s)
cairo_line_to (cr, x + 0.85*s, y + 0.5*s)
cairo_move_to (cr, x + 0.5*s, y + 0.15*s)
cairo_line_to (cr, x + 0.5*s, y + 0.45*s)
cairo_move_to (cr, x + 0.5*s, y + 0.55*s)
cairo_line_to (cr, x + 0.5*s, y + 0.85*s)
cairo_stroke(cr)
-- ОКНО ВЫВОДА ДАТЫ
-- задаем размер окна
local wo = s/5
local ho = s/12
local ro = (wo+ho)/2*0.04
local xo = x+0.2*s
local yo = y+0.45*s
-- рисуем окно
cairo_move_to(cr, xo + ro, yo)
cairo_line_to(cr, xo + wo - ro, yo)
cairo_arc(cr, xo + wo - ro, yo + ro, ro, -math.pi/2,0)
cairo_line_to(cr, xo + wo, yo + ho - ro)
cairo_arc(cr, xo + wo - ro, yo + ho - ro, ro, 0, math.pi/2)
cairo_line_to(cr, xo + ro, yo + ho)
cairo_arc(cr, xo + ro, yo + ho - ro, ro, math.pi/2, math.pi)
cairo_line_to(cr, xo, yo + ro)
cairo_arc(cr, xo + ro, yo + ro, ro, math.pi, math.pi*1.5)
-- закрашиваем в черный цвет
cairo_set_source_rgba(cr, 0,0,0,0.1)
cairo_fill(cr)
-- выводим в окно дату
local value = conky_parse("${time %b}")
cairo_set_font_size(cr, (ho - 2 * ro)*(15/11))
cairo_move_to(cr, xo + ro, yo + ho - ro)
-- задаем белый цвет цифрам даты
cairo_set_source_rgba(cr, 1, 1, 1, 1)
cairo_show_text(cr, value)
-- задаем размер окна
local wo = s/6
local ho = s/12
local ro = (wo+ho)/2*0.04
local xo = x+0.62*s
local yo = y+0.45*s
-- рисуем окно
cairo_move_to(cr, xo + ro, yo)
cairo_line_to(cr, xo + wo - ro, yo)
cairo_arc(cr, xo + wo - ro, yo + ro, ro, -math.pi/2,0)
cairo_line_to(cr, xo + wo, yo + ho - ro)
cairo_arc(cr, xo + wo - ro, yo + ho - ro, ro, 0, math.pi/2)
cairo_line_to(cr, xo + ro, yo + ho)
cairo_arc(cr, xo + ro, yo + ho - ro, ro, math.pi/2, math.pi)
cairo_line_to(cr, xo, yo + ro)
cairo_arc(cr, xo + ro, yo + ro, ro, math.pi, math.pi*1.5)
-- закрашиваем в черный цвет
cairo_set_source_rgba(cr, 0,0,0,0)
cairo_fill(cr)
-- выводим в окно дату
local value = conky_parse("${time %d}")
cairo_set_font_size(cr, (ho - 2 * ro)*(15/11))
cairo_move_to(cr, xo + ro, yo + ho - ro)
-- задаем белый цвет цифрам даты
cairo_set_source_rgba(cr, 1, 1, 1, 1)
cairo_show_text(cr, value)
local clock_r = s/2
local xc = x + s/2
local yc = y + s/2
-- вывод часовой стрелки
xh=xc+0.55*clock_r*math.sin(hours_arc)
yh=yc-0.55*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,6)
cairo_set_source_rgba(cr, 0, 0, 1, 1)
cairo_stroke(cr)
-- вывод минутной стрелки
xm=xc+0.7*clock_r*math.sin(mins_arc)
ym=yc-0.7*clock_r*math.cos(mins_arc)
cairo_move_to(cr,xc,yc)
cairo_line_to(cr,xm,ym)
cairo_set_line_width(cr,4)
cairo_stroke(cr)
-- вывод секундной стрелки
xs=xc+0.75*clock_r*math.sin(secs_arc)
ys=yc-0.75*clock_r*math.cos(secs_arc)
cairo_move_to(cr,xc,yc)
cairo_line_to(cr,xs,ys)
cairo_set_line_width(cr,2)
cairo_set_source_rgba(cr, 1, 0, 0, 1)
cairo_stroke(cr)
-- рисуем ось стрелок
cairo_arc (cr, xc, yc, s*0.02, 0, 2*math.pi)
cairo_fill (cr)
-- глянец
local h1 = s/2.5
cairo_move_to(cr, x + r, y)
cairo_line_to(cr, x + w - r, y)
cairo_arc(cr, x + w - r, y + r, r, -math.pi/2, 0)
cairo_line_to(cr, x + w, y + h1)
cairo_curve_to(cr, x + 3 * w/4, y + 1.3 * h1, x + w/4, y + 1.3 * h1, x, y + h1)
cairo_line_to(cr, x, y + r)
cairo_arc(cr, x + r, y + r, r, math.pi, math.pi * 1.5)
cairo_set_source_rgba(cr, 1, 1, 1, 0.2)
cairo_fill(cr)
end
--[[ END CLOCK ]]
--------------------------------
function conky_widgets()
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)
---------------------------------
--[[ CLOCK ]]
cr = cairo_create(cs)
clock(cr, -250, 285, 200, 0x151515, 0.2, 0x606070, 0.9)
-- опции: x, y, s, bgc, bga, fgc, fga
-- "x" координаты по горизонтали центра часов
-- "y" координаты по вертикали центра часов
-- "s" диаметр часов
-- "bgc" цвет фона
-- "bga" яркость фона
-- "fgc" цвет графики
-- "fga" яркость графики
cairo_destroy(cr)
end