Нет бы взяться за изучение создания линз, а не изобретать очередной велосипед, но простота использования Conky так и толкает на "преступление". Как всегда, с помощью Cairo и Lua будем маскировать "коньки" под нечто оригинальное. В данном случае под линзы unity-интерфейса.
Первым делом создаем rc-конфигурацию:
# .conkyrc by ramZport, http://ramzport.blogspot.com
own_window yes
own_window_title FirstLense
own_window_type normal
own_window_argb_visual yes
own_window_transparent yes
own_window_hints undecorated, above,sticky,skip_taskbar,skip_pager
double_buffer yes
alignment top_left
gap_x 48
gap_y 25
#ops
update_interval 1.0
lua_load ~/Программы/Conky/Lenses/FirstLense.lua
lua_draw_hook_pre startlua
TEXT
${offset 1180}${voffset 593}
Далее напишем простой Lua-скрипт, рисующий основу будущей линзы - FirstLense.lua:
--[[FirstLense.lua by ramZport, http://ramzport.blogspot.com]]--
require 'cairo'
--[[Начальная функция вызываемая из Conky]]--
function conky_startlua()
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)
nWidth = conky_window.width-50
nHeight = conky_window.height-50
cairo_scale (cr, 1, 1)
cairo_move_to(cr, 0, 0)
cairo_line_to(cr, nWidth+1, 0)
cairo_line_to(cr, nWidth+1, nHeight-4)
cairo_arc (cr, nWidth-4, nHeight-4, 5, math.rad(0), math.rad(90))
cairo_line_to(cr, 0, nHeight+1)
cairo_line_to(cr, 0, 0)
cairo_set_source_rgba(cr, fRGBtoARGB(0x000000, 0.6))
cairo_fill (cr)
cairo_move_to(cr, nWidth+2, 0)
cairo_line_to(cr, nWidth+32, 0)
cairo_line_to(cr, nWidth+32, nHeight+2)
cairo_arc (cr, nWidth+2, nHeight+2, 30, math.rad(0), math.rad(90))
cairo_line_to(cr, 0, nHeight+32)
cairo_line_to(cr, 0, nHeight+2)
cairo_line_to(cr, nWidth-3, nHeight+2)
cairo_arc_negative (cr, nWidth-3, nHeight-3, 5, math.rad(90), math.rad(0))
cairo_line_to(cr, nWidth+2, 0)
cairo_set_source_rgba(cr, fRGBtoARGB(0x000000, 0.2))
cairo_fill (cr)
cairo_line_to(cr, nWidth+34, 0)
cairo_line_to(cr, nWidth+34, nHeight+2)
cairo_arc (cr, nWidth+2, nHeight+2, 32, math.rad(0), math.rad(90))
cairo_line_to(cr, 0, nHeight+34)
cairo_set_source_rgba(cr, fRGBtoARGB(0x000000, 0.075))
cairo_set_line_width (cr, 2)
cairo_stroke(cr)
cairo_destroy(cr)
end
--[[Функция перевода цвета из RGB в ARGB]]--
function fRGBtoARGB (nColor, nAlpha)
-- nColor - цвет RGB (0x000000)
-- nAlpha - степень прозрачности, от 0 до 1
return ((nColor / 0x10000) % 0x100) / 255., ((nColor / 0x100) % 0x100) / 255., (nColor % 0x100) / 255., nAlpha
end
Вот такими нехитрыми строками получаем площадку для экспериментов над Conky.
Послесловие:
Японская поэзия отличается своеобразным складом стиха. Особенно это бросается в глаза, когда на них пытаются наложить современную тематику. Если вы любите восточные стихи, не забывайте делится ими с такими же любителями.
Смотри также:
Что вы хотите видеть в Conky?

0 коммент.:
Отправить комментарий