Изучаем conky

Автор saveriy, 17 февраля 2011, 20:34:34

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

olgmen

После "отдыха" на даче нашел кое-что интересное.
Первое - появились conky-2.0.0rc, немного сыроваты, но на CranchBang-11 встали нормально. Пока замечаний практически нет.
Второе - нашел способ нарисовать спираль в коньках, сейчас делаю индикатор и довожу до ума. Требуется чистка лишнего и комментирование. Работает как на conky-1.9 так и на conky-2.0. Пока имеет такой вид



Тренируюсь на выводе секунд
Удачных коньков

Malaheenee

olgmen, если вдруг заинтересуетесь и другими фигурами для рисования: http://rusproject.narod.ru/article/polar.htm
Все мы где-то, когда-то и в чем-то были новичками.

olgmen

Пока получается так



А вот и скрипт, буду понемногу дорабатывать


--this lua script for use in conky
--[[ # Lua Load  #
lua_load ~/scripts/spiral.lua
lua_draw_hook_pre spiral
]]

require 'cairo'

function conky_spiral()

    local spiral_settings={
    {
    name = "cpu",        -- выводимый параметр
    arg = "cpu1",
    max_par = 60,            -- максимальное значение параметра
    x = 200,            -- координаты центра спирали
    y = 200,
--    rad_i = 0.25,        -- диаметр
    start_deg=-250,        -- начало вывода спирали
    min_i=12,            -- отступ от начальной точки
    max_i=80,            -- длина спирали
    thickness = 10,        -- толщина луча
    deg_i= -8,            -- + - по часовой стрелке, - - против часовой стрелке
    bg_color = {{0, 0x0000ff, 0.1}},    -- цвет фона
    fg_color = {{0, 0x0000ff, 1}},    -- цвет индикатора
    },

    {
    name = "cpu",        -- выводимый параметр
    arg = "cpu",
    max_par = 60,            -- максимальное значение параметра
    x = 200,            -- координаты центра спирали
    y = 200,
--    rad_i = 0.25,        -- диаметр
    start_deg=-125,        -- начало вывода спирали
    min_i=12,            -- отступ от начальной точки
    max_i=80,            -- длина спирали
    thickness = 10,        -- толщина луча
    deg_i= -8,            -- + - по часовой стрелке, - - против часовой стрелке
    bg_color = {{0, 0xff0000, 0.1}},    -- цвет фона
    fg_color = {{0, 0xff0000, 1}},    -- цвет индикатора
    },

    {
    name = "cpu",        -- выводимый параметр
    arg = "cpu0",
    max_par = 60,            -- максимальное значение параметра
    x = 200,            -- координаты центра спирали
    y = 200,
--    rad_i = 0.25,        -- диаметр
    start_deg=0,        -- начало вывода спирали
    min_i=12,            -- отступ от начальной точки
    max_i=80,            -- длина спирали
    thickness = 10,        -- толщина луча
    deg_i= -8,            -- + - по часовой стрелке, - - против часовой стрелке
    bg_color = {{0, 0x00ff00, 0.1}},    -- цвет фона
    fg_color = {{0, 0x00ff00, 1}},    -- цвет индикатора
    },
   
    }

    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)
    local updates=tonumber(conky_parse('${updates}'))

    if updates>3 then

        for i,v in pairs(spiral_settings) do   
            cr = cairo_create (cs)
            display_spiral(v)
            cairo_destroy(cr)
            cairo_surface_destroy(cs)
            cr=nil
        end
    end
end

function rgb_to_r_g_b2(tcolour)
    local colour,alpha=tcolour[2],tcolour[3]
    return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
end

function display_spiral(t)

    if t.name == nil then t.name = "time" end
    if t.arg == nil then t.arg = "%S" end
    if t.x == nil        then t.x = conky_window.width/2 end
    if t.y == nil then t.y = conky_window.height/2 end
    if t.bg_color==nil then t.color={{0, 0x555555, 1}} end
    if t.rad_i == nil then t.rad_i = 1 end
    if t.start_deg == nil then t.start_deg = -250 end
    if t.deg_i == nil then t.deg_i= -8 end
    if t.min_i == nil then t.min_i=0 end
    if t.max_i == nil then t.max_i = 80 end
    if t.thickness == nil then t.thickness = 5 end
   
   
    cairo_set_source_rgba(cr,rgb_to_r_g_b2(t.bg_color[1]))
   
    local function pt(px,py,prad,pdeg)
        local ppo=(math.pi/180)*pdeg
        local px1=px+prad*(math.sin(ppo))
        local py1=py-prad*(math.cos(ppo))
        return px1,py1
    end

    cairo_set_line_width(cr,t.thickness)
    cairo_set_line_cap(cr, CAIRO_LINE_CAP_ROUND)
-- вывод фона
    cairo_set_source_rgba(cr,rgb_to_r_g_b2(t.bg_color[1]))

    for i = t.min_i, t.max_i do
        rad1 = (i*1)*t.rad_i
        deg1 = t.start_deg+((i*1)*t.deg_i)
        x1, y1 = pt(t.x,t.y,rad1,deg1)
        rad2 = t.rad_i*(((i+1) or i)*1)
        deg2 = t.start_deg+(t.deg_i*(((i+1) or i)*1))
        x2,y2=pt(t.x,t.y,rad2,deg2)
        cairo_move_to(cr,x1,y1)
        cairo_line_to(cr,x2,y2)
        cairo_stroke(cr)
    end
-- вывод индикатора
    cairo_set_source_rgba(cr,rgb_to_r_g_b2(t.fg_color[1]))
       
    local long = (t.max_i - t.min_i)/t.max_par
       
    local str=''
    local value=0
-- забираем параметр
    str=string.format('${%s %s}', t.name, t.arg)
    str=conky_parse(str)

    value=tonumber(str)
    if ( value == nil ) then value = 0 end

    for i = t.min_i, t.min_i+(long*value) do   
        rad1 = (i*1)*t.rad_i
        deg1 = t.start_deg+((i*1)*t.deg_i)
        x1, y1 = pt(t.x,t.y,rad1,deg1)
        rad2 = t.rad_i*(((i+1) or i)*1)
        deg2 = t.start_deg+(t.deg_i*(((i+1) or i)*1))
        x2,y2=pt(t.x,t.y,rad2,deg2)
        cairo_move_to(cr,x1,y1)
        cairo_line_to(cr,x2,y2)
        cairo_stroke(cr)
    end
end

Удачных коньков

olgmen

Небольшой скриптик для вывода календаря такого вида



работает как на conky-1.9 так и на conky-2.0

Можно взять здесь https://dl.dropbox.com/u/22038871/calendar_10112012.lua

Удачных коньков

Изжог

Недавно поставил коньки из репов. При старте системы они появляются, но в момент, когда графика полностью загрузилась(когда курсор из кружочка становится стрелочкой) они пропадают. При этом после пересохранения конфига в гедите из-под рута они снова появляются, и так и держатся. Пауза стоит 10. Вот конфиг:
Открыть содержимое (спойлер)
alignment middle_middle
background no
border_width 1
cpu_avg_samples 2
default_color white
default_outline_color white
default_shade_color white
double_buffer yes
draw_borders no
draw_graph_borders no
draw_outline no
draw_shades no
use_xft yes
xftfont DejaVu Sans Mono:size=12
gap_x 5
gap_y 60
minimum_size 5 5
net_avg_samples 2
no_buffers yes
out_to_console no
out_to_stderr no
extra_newline no
own_window no
own_window_class Conky
own_window_type desktop
stippled_borders 0
update_interval 1.0
uppercase no
use_spacer none
show_graph_scale no
show_graph_range no
top_cpu_separate no

TEXT
${scroll 16 $nodename - $sysname $kernel on $machine | }
$hr
${color grey}Uptime:$color $uptime
${color grey}Frequency (in MHz):$color $freq
${color grey}Frequency (in GHz):$color $freq_g
${color grey}RAM Usage:$color $mem/$memmax - $memperc% ${membar 4}
${color grey}Swap Usage:$color $swap/$swapmax - $swapperc% ${swapbar 4}
${color grey}CPU Usage:$color $cpu% ${cpubar 4}
${color grey}Processes:$color $processes  ${color grey}Running:$color $running_processes
$hr
${color grey}File systems:
/ $color${fs_used /}/${fs_size /} ${fs_bar 6 /}
${color grey}Networking:
Up:$color ${upspeed eth0} ${color grey} - Down:$color ${downspeed eth0}
$hr
${color grey}Name              PID   CPU%   MEM%
${color lightgrey} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${color lightgrey} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${color lightgrey} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
${color lightgrey} ${top name 4} ${top pid 4} ${top cpu 4} ${top mem 4}
${color lightgrey} ${top name 5} ${top pid 5} ${top cpu 5} ${top mem 5}
[свернуть]
Debian 6 , Gnom 2
Это лечится?

vladimir_ar

Поставте длиннее паузу.
Debian Testing, kernel 3.16-2-amd64, OpenBox
AMD A8-3750 / 16Gb RAM / ATI HD6550D (onboard) / Sound ASUS Xonar - DS
_______________________________
Debian Testing, kernel 3.14-2-amd64, OpenBox
HP-655 AMD E1 / 8Gb RAM / ATI HD7310M

Изжог

Попробовал увеличивать до 30, та же история.

qupl

Изжог, где конфиг лежит и какие на него права?

Изжог

#98
Конфиг-по умолчанию- /etc/conky/conky.conf . Вот права:


Сообщение объединено: 10 января 2013, 22:40:13

Прописал в автозагрузке conky -p 10 , а до этого была команда conky --pause=10 . Сейчас нормально работает :)

olgmen

Цитата: Изжог от 10 января 2013, 17:56:08Недавно поставил коньки из репов.

Вставь в conkyrc выше слова TEXT следующую строку

total_run_times 0

она запретит выключаться.

Изжог

olgmen, всё решилось у меня- сейчас не выключается, паузу по-другому прописал.

olgmen

Не знаю, делал это кто нибудь раньше, но возникла идея используя одни conky вывести разные данные на разных рабочих столах. Это может пригодиться тем, у кого размеры рабочего стола не позволяют вывести всю желаемую информацию. Вот небольшой ролик о работе моих интерактивных conky.

http://youtu.be/TI897sSOmyI

Оказалось это очень просто сделать. Вот результат деления одного классического conkyrc.

Вывод на первый рабочий стол



Вывод на второй рабочий стол



Дальше не стал делать, так как принцип деления можно объяснить и на этом примере.

Напоминаю, что пример для классических conky. Всё что необходимо редактировать находится в conkyrc ниже слова TEXT

Для деления команд используем команду

${if_match ${desktop}==1}

.. команды которые выводим на первый рабочий стол ..

$endif
${if_match ${desktop}==2}

# команды которые выводим на второй рабочий стол

$endif


ну и так далее

Для деления conky+lua я делал так

Создаем переменную

local desk = conky_parse("${desktop}")

А дальше почти как и в классических conky

if desk == 1 then

-- функции которые выводят данные на первый рабочий стол

end

if desk == 2 then

-- функции которые выводят данные на второй рабочий стол

end


и так далее

Возможно это не будет работать при использовании компиза, проверить не могу, компизом не пользуюсь

Удачных коньков

Malaheenee

olgmen, а с какой версии "коньков" появилась такая возможность? Или она всегда была, просто недокументирована?
Все мы где-то, когда-то и в чем-то были новичками.

olgmen

Даже не знаю. Команда desktop была ещё в conky-1.8.1

Consul

#104
Вопрос:
После обновления до Wheeze появилась проблема - при запуске окно conky не прозрачно, а отображается на сером фоне. После клика правой кнопкой мышки на рабочем столе (вызова контекстного меню) все нормализуется. На Squeeze все было нормально.
Как исправить?
Настройки xfce после обновления обнулял (rm ~/.config/xfce) и настраивал заново. Не помогло.
Debian Wheezy XFCE