Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- Conky Widgets by olgmen (2009)
- Скрипт позволяет выводить в окно CONKY аналоговые часы, а также часы, cpu0, cpu1, downspeedf, upspeedf в виде "сосулек".
- По мере увеличения параметра, длина "сосульки" увеличивается
- Для успешной работы требуется conky-1.7.2
- Для использования скрипта добавьте в .conkyrc следующие строки
- Перед TEXT
- #--- LUA ---
- lua_load ~/scripts/olgmen_winter.lua
- lua_draw_hook_pre widgets
- При условии, что скрипт olgmen_winter.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 = 5 -- базовая толщина выводимых линий
- local value,maximum,length = {},{},{}
- -- забираем данные о времени
- value[0]=os.date("%I") -- часы
- value[1]=os.date("%M") -- минуты
- value[2]=os.date("%S") -- секунды
- -- максимальные значения
- maximum[0] = 12 -- часов
- maximum[1] = 60 -- минут
- maximum[2] = 60 -- секунд
- -- назначаем длину стрелок
- length[0] = 0.6 -- длина часовой стрелки
- length[1] = 0.75 -- длина минутной стрелки
- length[2] = 0 -- длина секундной стрелки
- -- делаем плавное движение часовой и минутной стрелки
- value[1] = value[1] + (value[2]/60)
- value[0] = value[0] + (value[1]/60)
- -- рисуем циферблат
- local radius = s/2*1.5
- local m_x,m_y = x + s/2, y + s/2
- cairo_set_line_width(cr,s_th)
- 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))
- local i = 0
- local winkel = math.rad(30)
- -- вывод часовых делений
- for i=0,11,1 do
- 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))
- end
- -- вывод стрелок
- for i = 0,2,1 do
- cairo_move_to(cr, m_x, m_y)
- cairo_line_to(cr, m_x+math.sin(math.rad((value[i]/maximum[i])*360))*radius*length[i], m_y-math.cos(math.rad((value[i]/maximum[i])*360))*radius*length[i])
- cairo_stroke(cr)
- end
- -- рисуем деления 3, 6, 9 и 12 часовые
- cairo_set_line_width(cr,s_th/3) -- устанавливаем толщину линий
- 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_set_source_rgba(cr,rgb_to_r_g_b(fgc,fga))
- cairo_stroke(cr)
- end
- --[[ END CLOCK ]]
- --[[ CURVE CLOCK ]]
- --[[ END CURVE 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, 33, 775, 115, 0x969696, 0, 0x969696, 1)
- -- опции: x, y, s, bgc, bga, fgc, fga
- -- "x" координаты по горизонтали центра часов
- -- "y" координаты по вертикали центра часов
- -- "s" диаметр часов
- -- "bgc" цвет фона
- -- "bga" яркость фона
- -- "fgc" цвет графики
- -- "fga" яркость графики
- cairo_destroy(cr)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement