Advertisement
Guest User

clock

a guest
Aug 5th, 2011
1,474
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.33 KB | None | 0 0
  1.  
  2. --[[
  3. Conky Widgets by olgmen (2009)
  4.  
  5. Скрипт позволяет выводить в окно CONKY аналоговые часы, а также часы, cpu0, cpu1, downspeedf, upspeedf в виде "сосулек".
  6.  
  7. По мере увеличения параметра, длина "сосульки" увеличивается
  8.  
  9. Для успешной работы требуется conky-1.7.2
  10.  
  11. Для использования скрипта добавьте в .conkyrc следующие строки
  12.  
  13. Перед TEXT
  14.  
  15. #--- LUA ---
  16. lua_load ~/scripts/olgmen_winter.lua
  17. lua_draw_hook_pre widgets
  18.  
  19. При условии, что скрипт olgmen_winter.lua находится в папке scripts, находящейся в домашней директории
  20.  
  21. ]]
  22.  
  23. require 'cairo'
  24.  
  25. --[[ CLOCK WIDGET ]]
  26.  
  27. function clock(cr, x, y, s, bgc, bga, fgc, fga)
  28.  
  29.     function rgb_to_r_g_b(colour,alpha) -- функция перекодировки цвета
  30.         return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
  31.     end
  32.         -- назначаем базовые настройки
  33.         local s_th = 5          -- базовая толщина выводимых линий
  34.  
  35.         local value,maximum,length = {},{},{}
  36.         -- забираем данные о времени
  37.         value[0]=os.date("%I")      -- часы
  38.         value[1]=os.date("%M")      -- минуты
  39.         value[2]=os.date("%S")      -- секунды
  40.         -- максимальные значения
  41.         maximum[0] = 12         -- часов
  42.         maximum[1] = 60         -- минут
  43.         maximum[2] = 60         -- секунд
  44.         -- назначаем длину стрелок
  45.         length[0] = 0.6         -- длина часовой стрелки
  46.         length[1] = 0.75        -- длина минутной стрелки
  47.         length[2] = 0       -- длина секундной стрелки
  48.         -- делаем плавное движение часовой и минутной стрелки
  49.         value[1] = value[1] + (value[2]/60)
  50.         value[0] = value[0] + (value[1]/60)
  51.         -- рисуем циферблат
  52.         local radius = s/2*1.5 
  53.         local m_x,m_y = x + s/2, y + s/2
  54.         cairo_set_line_width(cr,s_th)  
  55.         cairo_arc(cr, m_x,m_y, radius, 0, math.rad(360))    -- выводим циферблат
  56.         cairo_set_source_rgba(cr,rgb_to_r_g_b(bgc,bga))
  57.         cairo_fill_preserve(cr)                 -- окрашиваем циферблат
  58.  
  59.         cairo_set_source_rgba(cr,rgb_to_r_g_b(fgc,fga))
  60.  
  61.         local i = 0
  62.         local winkel = math.rad(30)
  63.         -- вывод часовых делений
  64.         for i=0,11,1 do
  65.         cairo_move_to(cr, m_x-math.sin(winkel*i)*radius, m_y-math.cos(winkel*i)*radius)
  66.         cairo_line_to(cr, m_x-math.sin(winkel*i)*(radius*0.9), m_y-math.cos(winkel*i)*(radius*0.9))
  67.         end
  68.         -- вывод стрелок
  69.         for i = 0,2,1 do       
  70.         cairo_move_to(cr, m_x, m_y)
  71.         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])
  72.         cairo_stroke(cr)
  73.         end
  74.         -- рисуем деления 3, 6, 9 и 12 часовые
  75.         cairo_set_line_width(cr,s_th/3)         -- устанавливаем толщину линий
  76.         cairo_move_to (cr, x + 0.15*s, y + 0.5*s)
  77.         cairo_line_to (cr, x + 0.45*s, y + 0.5*s)
  78.         cairo_move_to (cr, x + 0.55*s, y + 0.5*s)
  79.         cairo_line_to (cr, x + 0.85*s, y + 0.5*s)
  80.         cairo_move_to (cr, x + 0.5*s, y + 0.15*s)
  81.         cairo_line_to (cr, x + 0.5*s, y + 0.45*s)
  82.         cairo_move_to (cr, x + 0.5*s, y + 0.55*s)
  83.         cairo_line_to (cr, x + 0.5*s, y + 0.85*s)
  84.         cairo_set_source_rgba(cr,rgb_to_r_g_b(fgc,fga))
  85.         cairo_stroke(cr)
  86. end
  87. --[[ END CLOCK ]]
  88.  
  89. --[[ CURVE CLOCK ]]
  90.  
  91.  
  92. --[[ END CURVE CLOCK ]]
  93.  
  94.  
  95. function conky_widgets()
  96.     if conky_window == nil then return end
  97.     local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, conky_window.width, conky_window.height)
  98.    
  99. --[[ CLOCK ]]
  100.  
  101.     cr = cairo_create(cs)
  102.     clock(cr, 33, 775, 115, 0x969696, 0, 0x969696, 1)
  103. --          опции: x,  y,   s,      bgc, bga,      fgc, fga
  104. --      "x" координаты по горизонтали центра часов
  105. --      "y" координаты по вертикали центра часов
  106. --      "s" диаметр часов
  107. --      "bgc" цвет фона
  108. --      "bga" яркость фона
  109. --      "fgc" цвет графики
  110. --      "fga" яркость графики
  111.     cairo_destroy(cr)
  112.  
  113. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement