Сообщений: 0 |
Всем привет. Вчера обновил mint до 18 версии, все нормально работает кроме conky. Conky стал грузиться поверх всех окон. Поставил задержку на автозапуск 10 сек., вообще перестал грузить. Попробовал альтернативу по ALT+F2 ввести conky -p 10. Результата нет, просто не грузится. Покурил форумы, говорят в 18 mint, какой-то новый конфигуратор, но по идее он должен читать и старый. В итоге попытался вернуть все в исходное положение, теперь грузится поверх всех окон просто прозрачная панель, а все виджеты перестали отображаться. Я могу конечно и без conky прожить, но просто интересно разобраться. Народ, какие есть идеи? | ||
Сообщений: 0 |
Подожди пока conky допилят. | ||
Сообщений: 0 |
vlad.tarkin, скинь чтоль свой конфиг, который не стартует | ||
Сообщений: 0 |
Разобрался. В Mint 18 другой синтаксис. На это форуме (https://forums.linuxmint.com/viewtopic.php?t=224546) человек написал пример The main changes are: 1. The configuration part needs the following layout: CODE: SELECT ALL conky.config = { xxxxxxx xxxxxxx } 2. The text part needs this layout, but for the rest it can remain the same as in the old Conky: CODE: SELECT ALL conky.text = [[ xxxxxxx xxxxxxx ]] 3. In the configuration part: yes => true, no => false 4. In the configuration part, every value but true / false / digits needs to be put between high comma's, 'like this'. Там ссылке есть 4 варианта работающих конфигов. Переписал свой (ну вообще-то он не мой, просто скачал и допилил под себя ) в соответствии с примером. Было: # .conkyrc by ramZport, http://ramzport.ru own_window yes own_window_type override own_window_transparent yes own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager double_buffer yes alignment top_right gap_x 0 gap_y 0 update_interval 1.0 lua_load /home/ramzes/ConkyPanel/ConkyPanel.lua lua_draw_hook_pre startlua TEXT ${offset 150}${voffset 1280} Стало: # .conkyrc by ramZport, http://ramzport.ru conky.config = { own_window = true, own_window_class = 'Conky', own_window_type = 'normal', own_window_transparent = true, own_window_hints = 'undecorated','below','sticky','skip_taskbar','skip_pager', double_buffer = true, alignment = 'top_right', gap_x = 0, gap_y = 0, update_interval = 1.0, lua_load /home/vlad/ConkyPanel/ConkyPanel.lua, lua_draw_hook_pre = startlua } conky.text = [[ ${offset 150}${voffset 1280} ]] Запустился нормально (просто панель пустая), но у меня .conkyrc подтягивает .lua и тут терминал пишет «глобальная ошибка». По ходу .lua тоже надо весь переписать. | ||
Сообщений: 0 |
Мой lua
Спойлер
--[[СonkyPanel.lua by ramZport, http://ramzport.ru]]-- --Виджеты: --Разделитель - fDivider(название разделителя) ------Пример: fDivider('Line') --Линейный индикатор - fLinearIndicator(скин, подпись, значение для индикатора, значение для подписи, шрифт, цвет шрифта, прозрачность) ------Пример: fLinearIndicator('Black', 'CPU', tonumber(conky_parse('${cpu cpu0}')), conky_parse('${cpu cpu0}') .. '%', 'Sans', 0xffffff, 1) --Календарь - fCalendar(скин, цвет обводки текущей даты, шрифт, цвет шрифта, прозрачность) ------Пример: fCalendar('SimpleBlackPlus', 0xff0000, 'Sans', 0xffffff, 1) --Календарь на любой месяц - fAnyCalendar(скин, месяц, год, шрифт, цвет шрифта, прозрачность) ------Пример: fAnyCalendar('SimpleBlackPlus', tonumber(os.date('%m'))+1, tonumber(os.date('%Y')), 'Sans', 0xffffff, 1) --Текущая дата ------Пример: fDateCalendar('SimpleRed', 'Sans', 0xffffff, 1) --Процессы ------Пример: fProcess('SimpleBlackPlus', 6, 'pid', 'Sans', 0xffffff, 1) --Аналоговые часы ------Пример: fAnalogClock(70, 0x000000, nAllAlpha) 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) --начальные параметры nPanelHeight = conky_window.height-11 nPanelWidth = conky_window.width-1 nScaleAll = conky_window.width/210 nXAll = 1 -- начальный отступ слева (можно менять) nYAll = 35 / nScaleAll -- начальный отступ сверху (можно менять) sFontAll = 'DroidSans' -- общий шрифт для всех виджетов (можно менять) nColorAll = 0xffffff -- общий цвет для всех виджетов (можно менять) nAllAlpha = 1 -- общая прозрачность для всех виджетов (можно менять) nYShiftAll = 0 -- растояние между виджетами (можно менять) --устанавливаем скин для панели fSkinPanel('Black') -- варианты - 'Black' --масштабируем дальнейший вывод cairo_scale (cr, nScaleAll, nScaleAll) -->>> функции вызова виджетов >>>-- --Виджет: аналоговые часы fAnalogClock(85, 0x000000, nAllAlpha) --Виджет: разделитель fDivider('None') --Виджет: линейный индикатор fLinearIndicator('None', 'CPU', tonumber(conky_parse('${cpu cpu0}')), conky_parse('${cpu cpu0}') .. '%', sFontAll, nColorAll, nAllAlpha) --Виджет: линейный индикатор fLinearIndicator('None', 'RAM', tonumber(conky_parse('${memperc}')), conky_parse('${memperc}') .. '%', sFontAll, nColorAll, nAllAlpha) --Виджет: линейный индикатор fLinearIndicator('None', 'SWAP', tonumber(conky_parse('$swapperc')), conky_parse('$swapperc') .. '%', sFontAll, nColorAll, nAllAlpha) --Виджет: линейный индикатор fLinearIndicator('None', 'HOME', 100-tonumber(conky_parse('${fs_free_perc /home}')), conky_parse('${fs_free /home}'), sFontAll, nColorAll, nAllAlpha) --Виджет: текущая дата (календарь) fDateCalendar('SimpleRed', sFontAll, nColorAll, nAllAlpha) --Виджет: календарь fCalendar('SimpleBlackPlus', 0xff0000, sFontAll, nColorAll, nAllAlpha) --Виджет: календарь на любой месяц fAnyCalendar('SimpleBlackPlus', tonumber(os.date('%m'))+1, tonumber(os.date('%Y')), 'Sans', 0xffffff, 1) --<<< функции вызова виджетов <<<-- cairo_destroy(cr) end --[[Виджет: разделитель]]-- function fDivider(sNameDiv) -- sNameDiv - имя разделителя if sNameDiv=='Line' then cairo_set_source_rgba(cr, fRGBtoARGB(0xffffff, 1)) cairo_set_line_width (cr, 1) cairo_move_to(cr, nXAll+40, nYAll+10) cairo_line_to(cr, nXAll+165, nYAll+10) cairo_stroke(cr) nYAll = nYAll + 25 end if sNameDiv=='None' then nYAll = nYAll + 25 end end --[[Виджет: линейный индикатор]]-- function fLinearIndicator(sSkin, sLabel, nValue, sLabelValue, sFont, nColor, nAlpha) -- sSkin - имя скина -- sLabel - подпись -- nValue - значение для индикатора -- sLabelValue - значение для подписи -- sFont - шрифт -- nColor - цвет подписи в формате 0×000000 -- nAlpha - степень прозрачности, от 0 до 1 if nValue == nil then nValue = 0 end fDrawText (nXAll+20, nYAll+20, sLabel .. ': ' .. sLabelValue, sFont, 14, 0, 0, nColor, nAlpha, 0) cairo_set_source_rgba(cr, fRGBtoARGB(0xffffff, 0.3)) cairo_rectangle (cr, nXAll+20, nYAll+25, 165, 8) cairo_fill (cr) cairo_set_source_rgba(cr, fRGBtoARGB(0xffffff, nAlpha)) local pLin = cairo_pattern_create_linear (0, nYAll+26, 0, nYAll+26+8) if sSkin == 'Black' then cairo_pattern_add_color_stop_rgba (pLin, 0.0, 0.7, 0.7, 0.7, nAlpha) cairo_pattern_add_color_stop_rgba (pLin, 0.1, 0.6, 0.6, 0.6, nAlpha) cairo_pattern_add_color_stop_rgba (pLin, 0.6, 0.3, 0.3, 0.3, nAlpha) cairo_pattern_add_color_stop_rgba (pLin, 1, 0.0, 0.0, 0.0, nAlpha) cairo_rectangle (cr, nXAll+20, nYAll+25, fScale (165, 0, 100, nValue), 8) cairo_set_source (cr, pLin) end cairo_rectangle (cr, nXAll+20, nYAll+25, fScale (165, 0, 100, nValue), 8) cairo_fill (cr) cairo_pattern_destroy (pLin) cairo_set_source_rgba(cr, fRGBtoARGB(0x000000, 0.3)) cairo_set_line_width (cr, 1) cairo_rectangle (cr, nXAll+20, nYAll+25, 165, 8) cairo_stroke (cr) nYAll = nYAll + 45 + nYShiftAll end --[[Скин для панели]]-- function fSkinPanel(sSkin) -- sSkin - имя скина if sSkin=='Black' then local pLin = cairo_pattern_create_linear (0, 0, nPanelWidth+10, 0) cairo_pattern_add_color_stop_rgba (pLin, 0.0, 0, 0, 0, 0.3) cairo_pattern_add_color_stop_rgba (pLin, 0.03, 0, 0, 0, 0.2) cairo_pattern_add_color_stop_rgba (pLin, 0.1, 0, 0, 0, 0.2) cairo_pattern_add_color_stop_rgba (pLin, 0.3, 0, 0, 0, 0.25) cairo_pattern_add_color_stop_rgba (pLin, 0.7, 0, 0, 0, 0.3) cairo_pattern_add_color_stop_rgba (pLin, 1, 0, 0, 0, 0.3) cairo_rectangle (cr, 0, 0, nPanelWidth+10, nPanelHeight) cairo_set_source (cr, pLin) cairo_fill (cr) cairo_pattern_destroy (pLin) cairo_set_source_rgba(cr, fRGBtoARGB(0xffffff, 0.5)) cairo_set_line_width (cr, 1) cairo_move_to(cr, 1, 0) cairo_line_to(cr, 1, nPanelHeight) cairo_stroke(cr) end 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 --[[Функция расчета значения по шкале]]-- function fScale (nScaleLength, nScaleMin, nScaleMax, nValueScale) -- nScaleLength - длина шкалы -- nScaleMin - минимальное значение шкалы -- nScaleMax - максимальное значение шкалы -- nValueScale - текущее значение по шкале if nValueScale < nScaleMin then nValueScale = nScaleMin end if nValueScale > nScaleMax then nValueScale = nScaleMax end nAbsScaleLength = nScaleMax - nScaleMin nDivScale = nScaleLength/nAbsScaleLength nAbsValueScale = (nValueScale - nScaleMin) * nDivScale if nValueScale == nScaleMax then nAbsValueScale = nScaleLength end return nAbsValueScale end --[[Функция вывода текста]]-- function fDrawText (nXCoord, nYCoord, sText, sFontName, sFontSize, nFontSlant, nFontWeight, nColor, nAlpha, nRotate) -- nXCoord, nYCoord - координаты для вывода -- sText - отображаемый текст -- sFontName - название шрифта -- sFontSize - размер шрифта -- nFontSlant - стиль шрифта (0 - normal, 1 - italic, 2 - oblique) -- nFontWeight - толщина шрифта (0 - normal, 1 - bold) -- nColor - цвет шрифта в формате 0×000000 -- nAlpha - степень прозрачности, от 0 до 1 -- nRotate - угол поворота cairo_select_font_face (cr, sFontName, nFontSlant, nFontWeight) cairo_set_font_size (cr, sFontSize) cairo_move_to (cr, nXCoord, nYCoord) cairo_set_source_rgba(cr, fRGBtoARGB (nColor, nAlpha)) cairo_rotate (cr, nRotate*math.pi/180) cairo_show_text(cr, sText) cairo_rotate (cr, (0-nRotate)*math.pi/180) end --[[Функция вывода текста с выравниванием по центру]]-- function fDrawTextCenter (nXCenter, nYCenter, sText, sFontName, sFontSize, nFontSlant, nFontWeight, nColor, nAlpha, nRotate) -- nXCenter, nYCenter - координаты центра для вывода -- sText - отображаемый текст -- sFontName - название шрифта -- sFontSize - размер шрифта -- nFontSlant - стиль шрифта (0 - normal, 1 - italic, 2 - oblique) -- nFontWeight - толщина шрифта (0 - normal, 1 - bold) -- nColor - цвет шрифта в формате 0×000000 -- nAlpha - степень прозрачности, от 0 до 1 -- nRotate - угол поворота local extents = cairo_text_extents_t:create() cairo_select_font_face (cr, sFontName, nFontSlant, nFontWeight) cairo_set_font_size (cr, sFontSize) cairo_text_extents (cr, sText, extents) local nXSpace = nXCenter-(extents.width/2)-- + extents.x_bearing) local nYSpace = nYCenter cairo_move_to (cr, nXSpace, nYSpace) cairo_set_source_rgba(cr, fRGBtoARGB (nColor, nAlpha)) cairo_rotate (cr, nRotate*math.pi/180) cairo_show_text(cr, sText) cairo_rotate (cr, (0-nRotate)*math.pi/180) end --[[Функция вывода текста с выравниванием по правому краю]]-- function fDrawTextRight (nXRight, nYDown, sText, sFontName, sFontSize, nFontSlant, nFontWeight, nColor, nAlpha, nRotate) -- nXRight, nYDown - координаты нижнего правого угла для текста -- sText - отображаемый текст -- sFontName - название шрифта -- sFontSize - размер шрифта -- nFontSlant - стиль шрифта (0 - normal, 1 - italic, 2 - oblique) -- nFontWeight - толщина шрифта (0 - normal, 1 - bold) -- nColor - цвет шрифта в формате 0×000000 -- nAlpha - степень прозрачности, от 0 до 1 -- nRotate - угол поворота local extents = cairo_text_extents_t:create() cairo_select_font_face (cr, sFontName, nFontSlant, nFontWeight) cairo_set_font_size (cr, sFontSize) cairo_text_extents (cr, sText, extents) local nXSpace = nXRight-extents.width - extents.x_bearing local nYSpace = nYDown cairo_move_to (cr, nXSpace, nYSpace) cairo_set_source_rgba(cr, fRGBtoARGB (nColor, nAlpha)) cairo_rotate (cr, nRotate*math.pi/180) cairo_show_text(cr, sText) cairo_rotate (cr, (0-nRotate)*math.pi/180) end --[[ Подложка для календаря ]]-- function fCalendarSkin(sSkin, nXSkin, nYSkin, nWidth, nHeight, nRadius) --nXSkin - x-координата --nYSkin - y-координата --nHeight - высота --nWidth - ширина --nRadius - радиус скругления углов local nColor1 = 0x999999 local nColor2 = 0x222222 local nColor3 = 0x000000 local nAlpha = 0.5 if sSkin == 'SimpleBlack' or sSkin == 'SimpleBlackPlus' then nColor1 = 0x999999 nColor2 = 0x222222 nColor3 = 0x000000 end if sSkin == 'SimpleGreen' or sSkin == 'SimpleGreenPlus' then nColor1 = 0x009900 nColor2 = 0x002200 nColor3 = 0x000000 end if sSkin == 'SimpleBlue' or sSkin == 'SimpleBluePlus' then nColor1 = 0x000099 nColor2 = 0x000022 nColor3 = 0x000000 end if sSkin == 'SimpleRed' or sSkin == 'SimpleRedPlus' then nColor1 = 0x990000 nColor2 = 0x220000 nColor3 = 0x000000 end cairo_move_to(cr, nXSkin+nRadius, nYSkin) cairo_line_to(cr, nXSkin+nWidth-nRadius, nYSkin) cairo_arc (cr, nXSkin+nWidth-nRadius, nYSkin+nRadius, nRadius, math.rad(270), math.rad(360)) cairo_line_to(cr, nXSkin+nWidth, nYSkin+nHeight-nRadius) cairo_arc (cr, nXSkin+nWidth-nRadius, nYSkin+nHeight-nRadius, nRadius, math.rad(0), math.rad(90)) cairo_line_to(cr, nXSkin+nRadius, nYSkin+nHeight) cairo_arc (cr, nXSkin+nRadius, nYSkin+nHeight-nRadius, nRadius, math.rad(90), math.rad(180)) cairo_line_to(cr, nXSkin, nYSkin+nRadius) cairo_arc (cr, nXSkin+nRadius, nYSkin+nRadius, nRadius, math.rad(180), math.rad(270)) local pPath=cairo_copy_path (cr) local pLin = cairo_pattern_create_linear (nXSkin, nYSkin, nWidth,nYSkin+nHeight) cairo_pattern_add_color_stop_rgba (pLin, 0.0, ((nColor1 / 0x10000) % 0x100) / 255, ((nColor1 / 0x100) % 0x100) / 255, (nColor1 % 0x100) / 255, nAlpha) cairo_pattern_add_color_stop_rgba (pLin, 0.6, ((nColor2 / 0x10000) % 0x100) / 255, ((nColor2 / 0x100) % 0x100) / 255, (nColor2 % 0x100) / 255, nAlpha) cairo_pattern_add_color_stop_rgba (pLin, 1, ((nColor3 / 0x10000) % 0x100) / 255, ((nColor3 / 0x100) % 0x100) / 255, (nColor3 % 0x100) / 255, nAlpha) cairo_set_source (cr, pLin) cairo_fill (cr) cairo_pattern_destroy (pLin) cairo_append_path(cr, pPath) cairo_set_source_rgba(cr, fRGBtoARGB(nColor3, 0.5)) cairo_set_line_width (cr, 1) cairo_stroke(cr) if sSkin == 'SimpleBlackPlus' or sSkin == 'SimpleGreenPlus' or sSkin == 'SimpleBluePlus' or sSkin == 'SimpleRedPlus' then for i=1, 8 do local pLin = cairo_pattern_create_linear (0, nYSkin-10, 0, nYSkin-10+20) cairo_pattern_add_color_stop_rgba (pLin, 0.0, 1.0, 1.0, 1.0, 0.9) cairo_pattern_add_color_stop_rgba (pLin, 0.1, 0.9, 0.9, 0.9, 0.9) cairo_pattern_add_color_stop_rgba (pLin, 0.4, 0.6, 0.6, 0.6, 0.9) cairo_pattern_add_color_stop_rgba (pLin, 0.7, 0.3, 0.3, 0.3, 0.9) cairo_pattern_add_color_stop_rgba (pLin, 1, 0.3, 0.3, 0.3, 0.9) cairo_rectangle (cr, nXSkin-5+21*i, nYSkin-10, 5, 20) cairo_set_source (cr, pLin) cairo_fill (cr) cairo_pattern_destroy (pLin) cairo_set_source_rgba(cr, fRGBtoARGB(0x000000, 0.7)) cairo_set_line_width (cr, 1) cairo_rectangle (cr, nXSkin-5+21*i, nYSkin-10, 5, 20) cairo_stroke (cr) end end end --[[Виджет: календарь на любой месяц]]-- function fAnyCalendar(sSkin, nMonth, nYear, sFont, nColor, nAlpha) -- sSkin - имя скина -- nMonth - месяц -- nYear - год -- sFont - шрифт -- nColor - цвет индикатора в формате 0×000000 -- nAlpha - степень прозрачности, от 0 до 1 if not (sSkin=='') then fCalendarSkin(sSkin, nXAll+10, nYAll+10, 185, 210, 10) end while nMonth<1 do nMonth = nMonth+12 nYear = nYear - 1 end while nMonth>12 do nMonth = nMonth-12 nYear = nYear + 1 end local nXCal = nXAll+10 local nYCal = nYAll+50 local nXShift = 23 local nYShift = 20 fDrawTextCenter(nPanelWidth/nScaleAll/2, nYCal-5, fBigNameMonth(nMonth) --[[.. ' ' .. nYear]], sFont, 18, 0, 0, nColor, nAlpha, 0) nYCal = nYCal+25 local tWeekDay={"ПН", "ВТ", "СР", "ЧТ", "ПТ", "СБ", "ВС"} local nNextWeekDay = fWeekDayByDate(1, nMonth, nYear) for i = 1, 7 do fDrawTextCenter(nXCal+(i*nXShift), nYCal, tWeekDay, sFont, 14, 0, 0, nColor, nAlpha, 0) end nYCal = nYCal + 30 for i = 1, fDayCount(nMonth, nYear) do fDrawTextCenter(nXCal+(nNextWeekDay*nXShift), nYCal, i, sFont, 14, 0, 0, nColor, nAlpha, 0) nNextWeekDay=nNextWeekDay+1 if nNextWeekDay==8 then nNextWeekDay = 1 nXCal = nXAll + 10 nYCal = nYCal + nYShift end end nYAll = nYAll + 212 + nYShiftAll end --[[Виджет: календарь]]-- function fCalendar(sSkin, nColorNow, sFont, nColor, nAlpha) -- sSkin - имя скина -- nColorNow - цвет обводки текущего дня -- sFont - шрифт -- nColor - цвет индикатора в формате 0×000000 -- nAlpha - степень прозрачности, от 0 до 1 if not (sSkin=='') then fCalendarSkin(sSkin, nXAll+10, nYAll+10, 185, 210, 10) end local nXCal = nXAll + 10 local nYCal = nYAll+50 local nXShift = 23 local nYShift = 20 fDrawTextCenter(nPanelWidth/nScaleAll/2, nYCal-5, fBigNameMonth(tonumber(os.date('%m'))) --[[.. ' ' .. tonumber(os.date('%Y'))]], sFont, 18, 0, 0, nColor, nAlpha, 0) nYCal = nYCal+25 local tWeekDay={"ПН", "ВТ", "СР", "ЧТ", "ПТ", "СБ", "ВС"} local nNextWeekDay = fWeekDayByDate(1, tonumber(os.date('%m')), tonumber(os.date('%Y'))) for i = 1, 7 do fDrawTextCenter(nXCal+(i*nXShift), nYCal, tWeekDay, sFont, 14, 0, 0, nColor, nAlpha, 0) end nYCal = nYCal + 30 for i = 1, fDayCount(tonumber(os.date('%m')), tonumber(os.date('%Y'))) do fDrawTextCenter(nXCal+(nNextWeekDay*nXShift), nYCal, i, sFont, 14, 0, 0, nColor, nAlpha, 0) if i == tonumber(os.date('%e')) then fArc(nXCal+(nNextWeekDay*nXShift), nYCal-5, 12, 0, 360, nColorNow, nAlpha, 2) end nNextWeekDay=nNextWeekDay+1 if nNextWeekDay==8 then nNextWeekDay = 1 nXCal = nXAll + 10 nYCal = nYCal + nYShift end end nYAll = nYAll + 212 + nYShiftAll end --[[ функция, возращающая название месяца заглавными буквами ]]-- function fBigNameMonth(nMonth) -- nMonth - месяц tBigNameMonth = {'ЯНВАРЬ', 'ФЕВРАЛЬ', 'МАРТ', 'АПРЕЛЬ', 'МАЙ', 'ИЮНЬ', 'ИЮЛЬ', 'АВГУСТ', 'СЕНТЯБРЬ', 'ОКТЯБРЬ', 'НОЯБРЬ', 'ДЕКАБРЬ'} return tBigNameMonth[nMonth] end --[[ функция расчета дня недели для даты]]-- function fWeekDayByDate(nDay, nMonth, nYear) -- nDay - день -- nMonth - месяц -- nYear - год tWeekDay = {6, 7, 1, 2, 3, 4, 5} local nAux=math.floor ((14-nMonth)/12) nYear=nYear + 1 - nAux nMonth=nMonth+12*nAux-2 local nIndex = math.fmod(7000+(nDay+nYear+math.floor (nYear/4)-math.floor (nYear/100)+math.floor (nYear/400)+math.floor ((31*nMonth)/12)), 7) + 1 return tWeekDay[nIndex] end --[[ функция определения количества дней в месяце ]]-- function fDayCount(nMonth, nYear) -- nMonth - месяц -- nYear - год local tMonthDays={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} if nMonth==2 then if ((math.fmod(nYear, 4)==0) and ((math.fmod(nYear,100)<0) or (math.fmod(nYear,100)>0))) or (math.fmod(nYear,400)==0) then tMonthDays[2] = tMonthDays[2]+1 end end return tMonthDays[nMonth] end --[[ функция отрисовки дуги ]]-- function fArc(nXCoord, nYCoord, nRadius, noDegrees, nDegrees, nColor, nAlpha, nWidthLine) -- nXCoord, nYCoord - координаты центра дуги -- nRadius - радиус дуги -- noDegrees - начальный радиус -- nDegrees - конечный радиус -- nColor - цвет линии в формате 0×000000 -- nAlpha - степень прозрачности, от 0 до 1 -- nWidthLine - толщина линии cairo_set_source_rgba(cr, fRGBtoARGB(nColor, nAlpha)) cairo_set_line_width (cr, nWidthLine) cairo_move_to(cr, nXCoord, nYCoord) cairo_new_sub_path(cr) cairo_arc (cr, nXCoord, nYCoord, nRadius, math.rad(noDegrees), math.rad(nDegrees)) cairo_stroke(cr) end --[[Виджет: текущая дата]]-- function fDateCalendar(sSkin, sFont, nColor, nAlpha) -- sSkin - имя скина -- sFont - шрифт -- nColor - цвет индикатора в формате 0×000000 -- nAlpha - степень прозрачности, от 0 до 1 if not (sSkin=='') then fCalendarSkin(sSkin, nXAll+10, nYAll+10, 185, 210, 10) end fDrawTextCenter(nPanelWidth/nScaleAll/2, nYAll+45, fBigNameMonth(tonumber(os.date('%m'))) .. ' ' .. tonumber(os.date('%Y')), sFont, 18, 0, 0, nColor, nAlpha, 0) fDrawTextCenter(nPanelWidth/nScaleAll/2, nYAll+150, tonumber(os.date('%e')), sFont, 96, 0, 0, nColor, nAlpha, 0) local tWeekDay={"ПОНЕДЕЛЬНИК", "ВТОРНИК", "СРЕДА", "ЧЕТВЕРГ", "ПЯТНИЦА", "СУББОТА", "ВОСКРЕСЕНЬЕ"} fDrawTextCenter(nPanelWidth/nScaleAll/2, nYAll+190, tWeekDay[tonumber(os.date('%u'))], sFont, 18, 0, 0, nColor, nAlpha, 0) nYAll = nYAll + 212 + nYShiftAll end --[[Виджет: процессы]]-- function fProcess(sSkin, nCount, sParam, sFont, nColor, nAlpha) -- sSkin - имя скина -- nCount - количество отображаемых процессов, максимум 10 -- sParam - отображаемый параметр: 'cpu' - нагрузка на процессор, 'mem' - занято памяти процессом, 'pid' - pid номер процесса -- sFont - шрифт -- nColor - цвет индикатора в формате 0×000000 -- nAlpha - степень прозрачности, от 0 до 1 if not (sSkin=='') then fCalendarSkin(sSkin, nXAll+10, nYAll+10, 185, 55+nCount*15+22, 10) end fDrawText (nXAll+20, nYAll+45, 'Процесс', sFont, 14, 0, 0, nColor, nAlpha, 0) fDrawTextRight (nXAll+180, nYAll+45, sParam, sFont, 14, 0, 0, nColor, nAlpha, 0) for i=1,nCount do fDrawText (nXAll+20, nYAll+i*15+55, conky_parse('${top name ' .. i ..'}'), sFont, 14, 0, 0, nColor, nAlpha, 0) fDrawTextRight (nXAll+180, nYAll+i*15+55, conky_parse('${top ' .. sParam .. ' ' .. i ..'}'), sFont, 14, 0, 0, nColor, nAlpha, 0) end cairo_set_source_rgba(cr, fRGBtoARGB(0xffffff, 0.8)) cairo_set_line_width (cr, 1) cairo_move_to(cr, nXAll+20, nYAll+50) cairo_line_to(cr, nXAll+180, nYAll+50) cairo_stroke(cr) nYAll = nYAll + 55+nCount*15+24 end --[[Виджет: аналоговые часы]]-- function fAnalogClock(nRadius, nColor, nAlpha) -- nRadius - радиус -- nColor - цвет индикатора в формате 0×000000 -- nAlpha - степень прозрачности, от 0 до 1 local nX = 0 local nY = 0 local nXo = 0 local nYo = 0 local nTheta = 0 local nXCenter = nXAll+nPanelWidth/nScaleAll/2 local nYCenter = nYAll+nRadius+10 cairo_set_source_rgba(cr, fRGBtoARGB(0xffffff, 1)) cairo_set_line_width (cr, 1) cairo_move_to(cr, nXCenter, nYCenter) cairo_new_sub_path(cr) cairo_arc (cr, nXCenter, nYCenter, nRadius+10, math.rad(0), math.rad(360)) local pLin = cairo_pattern_create_linear (nXAll, nYAll, nXAll+nRadius*2, nYAll+nRadius*2) cairo_pattern_add_color_stop_rgba (pLin, 0.0, ((0x999999 / 0x10000) % 0x100) / 255, ((0x999999 / 0x100) % 0x100) / 255, (0x999999 % 0x100) / 255, 0.5) cairo_pattern_add_color_stop_rgba (pLin, 0.6, ((0x222222 / 0x10000) % 0x100) / 255, ((0x222222 / 0x100) % 0x100) / 255, (0x222222 % 0x100) / 255, 0.5) cairo_pattern_add_color_stop_rgba (pLin, 1, ((0x000000 / 0x10000) % 0x100) / 255, ((0x000000 / 0x100) % 0x100) / 255, (0x000000 % 0x100) / 255, 0.5) cairo_set_source (cr, pLin) cairo_fill(cr) cairo_set_source_rgba(cr, fRGBtoARGB(0xffffff, 1)) cairo_set_line_width (cr, 1) cairo_move_to(cr, nXCenter, nYCenter) cairo_new_sub_path(cr) cairo_arc (cr, nXCenter, nYCenter, nRadius, math.rad(0), math.rad(360)) cairo_fill(cr) fArc(nXCenter, nYCenter, (nRadius+8), 0, 360, 0x999999, 0.5, 1) fArc(nXCenter, nYCenter, (nRadius), 0, 360, 0x000000, 1, 1) fArc(nXCenter, nYCenter, (nRadius-2), 0, 360, 0x000000, 0.3, 3) for i = 0, 12 do nTheta = math.rad(i*30) nX = nXCenter + (nRadius)*math.cos(nTheta) nY = nYCenter + (nRadius)*math.sin(nTheta) nXo = nXCenter + (nRadius-10)*math.cos(nTheta) nYo = nYCenter + (nRadius-10)*math.sin(nTheta) fLine(nX, nY, nXo, nYo, nColor, 1, 1) end for i = 1, 12 do nTheta = math.rad(i*30) nX = nXCenter + (nRadius-20)*math.sin(nTheta) nY = nYCenter - (nRadius-20)*math.cos(nTheta) if i==12 then nX=nX-3 end fDrawText(nX-6, nY+5, i, 'Sans', 14, 0, 0, nColor, nAlpha, 0) end for i = 0, 60 do nTheta = math.rad(i*6) nX = nXCenter + (nRadius)*math.cos(nTheta) nY = nYCenter + (nRadius)*math.sin(nTheta) nXo = nXCenter + (nRadius-5)*math.cos(nTheta) nYo = nYCenter + (nRadius-5)*math.sin(nTheta) fLine(nX, nY, nXo, nYo, nColor, 1, 1) end nTheta = math.rad(270+fScale (360, 0, 60, tonumber(os.date('%S')))) nX = nXCenter+(nRadius-10)*math.cos(nTheta) nY = nYCenter+(nRadius-10)*math.sin(nTheta) nXo = nXCenter-10*math.cos(nTheta) nYo = nYCenter-10*math.sin(nTheta) fLine(nXo, nYo, nX, nY, 0xff0000, nAlpha, 2) fLine(nXo-3, nYo+3, nX-3, nY+3, 0x000000, 0.2, 2) nTheta = math.rad(270+fScale (360, 0, 60, tonumber(os.date('%M')))) nX = nXCenter+(nRadius-15)*math.cos(nTheta) nY = nYCenter+(nRadius-15)*math.sin(nTheta) nXo = nXCenter-5*math.cos(nTheta) nYo = nYCenter-5*math.sin(nTheta) fLine(nXo, nYo, nX, nY, nColor, nAlpha, 3) fLine(nXo-3, nYo+3, nX-3, nY+3, nColor, 0.2, 3) local nHour = tonumber(os.date('%I')) if nHour == 12 then nHour=0 end nTheta = math.rad(270+fScale (360, 0, 60, nHour*5+tonumber(os.date('%M'))/12)) nX = nXCenter+(nRadius-25)*math.cos(nTheta) nY = nYCenter+(nRadius-25)*math.sin(nTheta) nXo = nXCenter-5*math.cos(nTheta) nYo = nYCenter-5*math.sin(nTheta) fLine(nXo, nYo, nX, nY, nColor, nAlpha, 4) fLine(nXo-3, nYo+3, nX-3, nY+3, nColor, 0.2, 4) nYAll = nYAll+nRadius*2 + 30 end --[[ функция отрисовки линии ]]-- function fLine(nXoCoord, nYoCoord, nXCoord, nYCoord, nColor, nAlpha, nWidthLine) -- nXoCoord, nYoCoord - координаты начала линии -- nXCoord, nYCoord - координаты окончания линии -- nColor - цвет линии в формате 0×000000 -- nAlpha - степень прозрачности, от 0 до 1 -- nWidthLine - толщина линии cairo_set_source_rgba(cr, fRGBtoARGB(nColor, nAlpha)) cairo_set_line_width (cr, nWidthLine) cairo_move_to(cr, nXoCoord, nYoCoord) cairo_line_to(cr, nXCoord, nYCoord) cairo_stroke(cr) end | ||
Сообщений: 0 |
Возможно такое решение, если conky отображается как отдельное окно: http://forum.ubuntu.ru/index.php?topic=277311.0 Редактировалось: 2 раз (Последний: 16 августа 2016 в 11:35) |
В начало страницы |
| Перейти на форум: |