Показать сообщение отдельно
Старый 10.11.2012, 20:03    Топик Стартер ТС   #3 (ссылка на пост)
MiraMaX166
Инквизитор
 
Аватар для MiraMaX166
 
Регистрация: 29.01.2008
Адрес: Омск
Сообщений: 2,304
MiraMaX166 репутация неоспоримаMiraMaX166 репутация неоспоримаMiraMaX166 репутация неоспоримаMiraMaX166 репутация неоспоримаMiraMaX166 репутация неоспоримаMiraMaX166 репутация неоспоримаMiraMaX166 репутация неоспоримаMiraMaX166 репутация неоспоримаMiraMaX166 репутация неоспоримаMiraMaX166 репутация неоспоримаMiraMaX166 репутация неоспорима
Информация

Отправить сообщение для MiraMaX166 с помощью ICQ Отправить сообщение для MiraMaX166 с помощью AIM Отправить сообщение для MiraMaX166 с помощью MSN Отправить сообщение для MiraMaX166 с помощью Skype™
Стрелка Conky для ноутбука

Click the image to open in full size.
Этот конфиг будет полезен владельцам ноутбуков, добавил секцию конроля за уровнем заряда АКБ. Создан на базе доработанного мной конфига Conky Grey.

Функционал (приведены отличия от стандартного Conky Grey):
  • Логотип ОС (меняется очень легко через символы шрифта).
  • Часы (немного поправлен размер и внешний вид).
  • Заточкка под четырёхъядерные CPU - 4 бара, 4 отдельных строки загрузки, результирующее число загрузки всех ядер, температура CPU.
  • Top-5 процессов (обрезка до 10 символов, вывод адекватнее стал).
  • График загрузки CPU (пофиксен масштаб графика).
  • *nix-статистика загрузки CPU.
  • Бар ОЗУ (добавил количество установленной и занятой памяти).
  • График загрузки ОЗУ.
  • Топ-3 жрущих ОЗУ процесса(так же добавил обрезку до 10 символов).
  • Бары для двух разделов HDD (небольшие косметические изменения, добавил температуру винта).
  • Статистика использования места на разделах HDD (поправлен вывод).
  • График загрузки HDD (пофиксен масштаб).
  • Аптайм ПК
  • Бар заряда АКБ
  • Индикация текущего времени до полной разрядки/зарядки АКБ. Индикация текущего потребления тока с АКБ в мА (в случае зарядки показывает потебление АКБ в мА).
  • Индикация полной ёмкости АКБ (с учётом износа) и текущей ёмкости (при работе от АКБ).
  • Погода (на базе ConkyForecast, в оригинале отсутствует). Пофиксен внешний вид и функционал... Вывод погоды на сегодня и ближайшие три дня.
  • Сеть. Добавлен вывод внешнего IP. Вывод локальных IP интерфейсов. Отдельный вывод двух интерфейсов: Wi-Fi и LAN, для каждого прикручены графики донлоада/аплоада, выведены скорости соединения, для Wi-Fi - иконка и сила сигнала в процентах.
  • Статистика сетевых соединений - количество соединений, Top-10 c IP-назначения + порты.

conkyrc_grey

Код:
#==============================================================================
#                                 conkyrc_grey
#
#  author  : SLK
#  version : v2011011601
#  license : Distributed under the terms of GNU GPL version 2 or later
#
#==============================================================================

background no
update_interval 1

cpu_avg_samples 2
net_avg_samples 2
temperature_unit celsius

double_buffer yes
no_buffers yes
text_buffer_size 2048

gap_x 10
gap_y 0
minimum_size 190 450
maximum_width 190
own_window yes
own_window_argb_visual yes
own_window_type normal
own_window_transparent yes
own_window_hints undecorate,sticky,skip_taskbar,skip_pager,below
border_inner_margin 0
border_outer_margin 0
alignment tr

draw_shades no
draw_outline no
draw_borders no
draw_graph_borders no

override_utf8_locale yes
use_xft yes
xftfont caviar dreams:size=8
xftalpha 0.5
uppercase no

default_color FFFFFF
color1 DDDDDD
color2 AAAAAA
color3 888888
color4 666666

lua_load ~/.conky/conky_grey.lua
lua_draw_hook_post main
top_name_width 10

TEXT
${goto 68}${color1}${voffset -19}${font OpenLogos:size=56}\${font}
#${goto 120}${color3}${voffset -46}${font ubuntu:size=6,weight:bold}12.04.1 LTS${font}
${voffset -6}
#${voffset 48}
${goto 100}${color4}${font ubuntu:size=22}${time %e}${color1}${offset -50}${font ubuntu:size=10}${time %A}
${goto 90}${color2}${voffset -2}${font ubuntu:size=9}${time %b}${voffset -2} ${color3}${font ubuntu:size=12}${time %Y}${font}
${voffset 44}
${goto 104}${font Ubuntu:size=6,weight:bold}${color1}CPU1 ${cpu cpu1}%
${voffset -2}${goto 112}${font Ubuntu:size=6,weight:bold}${color1}CPU2 ${cpu cpu2}%
${voffset -2}${goto 116}${font Ubuntu:size=6,weight:bold}${color1}CPU3 ${cpu cpu3}%
${voffset -2}${goto 118}${font Ubuntu:size=6,weight:bold}${color1}CPU4 ${cpu cpu4}%
${voffset -23}${goto 160}${font Ubuntu:size=8,weight:bold}${color3}${cpu cpu0}%
${voffset -2}
${goto 90}${font Ubuntu:size=7,weight:bold}${color}CPU ${freq_g 1}GHz (${hwmon temp 1}°C)
${goto 90}${font Ubuntu:size=7,weight:normal}${color1}${top name 1}${alignr}${top cpu 1}%
${goto 90}${font Ubuntu:size=7,weight:normal}${color2}${top name 2}${alignr}${top cpu 2}%
${goto 90}${font Ubuntu:size=7,weight:normal}${color3}${top name 3}${alignr}${top cpu 3}%
${goto 90}${voffset -14}${cpugraph 20,100 666666 666666}
${goto 90}${voffset -16}${font Ubuntu:size=7,weight:normal}${color}Процессов: ${threads}
${goto 99}${font Poky:size=8,weight:normal}i
${voffset -16}${goto 110}${font Ubuntu:size=7,weight:bold}${color3} [${loadavg 1}] [${loadavg 2}] [${loadavg 3}]

${voffset 11}
${goto 90}${font Ubuntu:size=7,weight:bold}${color}RAM ${memmax}/${mem}
${goto 114}${voffset -49}${memgraph 30,76 666666 666666}
${voffset 8}${goto 90}${font Ubuntu:size=7,weight:normal}${color1}${top_mem name 1}${alignr}${top_mem mem 1}%
${goto 90}${font Ubuntu:size=7,weight:normal}${color2}${top_mem name 2}${alignr}${top_mem mem 2}%
${goto 90}${font Ubuntu:size=7,weight:normal}${color3}${top_mem name 3}${alignr}${top_mem mem 3}%

${voffset 13}
${goto 90}${font Ubuntu:size=7,weight:bold}${color}HDD WD 1TiB (${hddtemp /dev/sda}°C)

${goto 90}${diskiograph 30,100 666666 666666}${voffset -32}
${goto 90}${font Ubuntu:size=6,weight:bold}${color}HD-1:  ${fs_used /}/${fs_free /}
${goto 90}${font Ubuntu:size=6,weight:bold}${color}HD-2:  ${fs_used /media/DataServer}/${fs_free /media/DataServer}

${goto 110} ${alignr 1}${font Ubuntu:size=6,weight:bold}${color2}Врмя работы ПК
${goto 110} ${alignr 1}${uptime_short}
${voffset 6}${goto 90}${font Ubuntu:size=7,weight:bold}${color}АКБ (${execi 10 acpitool -B | grep Remaining | awk '{print $7}' | cut -c 1-5} / ${execi 10 acpitool -B | grep Present | awk '{print $4}'}мА)
${voffset -4}${goto 90}${font Poky:size=12}${color2}3
${voffset -26}${goto 110}${font Ubuntu:size=6,weight:bold} ${execi 10 acpitool -B | grep Last | awk '{print $5}'}мА/${execi 10 acpitool -B | grep Remaining | awk '{print $4}'}мА

${voffset -12}
${goto 60}${font Ubuntu:size=10,weight:bold}${color3}ПОГОДА${alignr}${color2}${font Ubuntu:size=7,weight:bold}${color1}${alignr 1}Омск${color}${font}
#${font Goudy Bookletter 1911:style=Bold}ПОГОДА${font} ${hr 2}
#Город: Омск
${voffset -2}${goto 60}${font Ubuntu:size=7,weight:bold}${color1}${execi 900 conkyForecast --location=RSXX0080 --datatype=CC}${font}
${goto 60}${font Weather:size=28}${color2}y${font}
${voffset -46}
${goto 80}${font Ubuntu:size=18,weight:bold}${execi 900 conkyForecast --location=RSXX0080 --datatype=HT -r}${font}
${voffset -42}
${goto 150}${font ConkyWeather:size=28}${execi 900 conkyForecast --location=RSXX0080 --datatype=WF}${font}
#Температура: ${execi 900 conkyForecast --location=RSXX0080 --datatype=HT}
${voffset -4}${goto 60}${font Ubuntu:size=7,weight:bold}${color1}Прогноз на три дня${font}
${voffset -2}${goto 60}${font ConkyWeather:size=27}${color2}${execi 900 conkyForecast --startday=1 --endday=3 --location=RSXX0080 --datatype=WF}${font}
${voffset -2}${goto 66}${execi 900 conkyForecast --location=RSXX0080 --startday=1 --endday=3 --spaces=5 --datatype=HT}
${voffset -2}${goto 73}${font Ubuntu:size=7,weight:bold}${color2}${execi 900 conkyForecast --location=RSXX0080 --startday=1 --endday=3 --spaces=16 --datatype=DW}${font}
${voffset -6}
${goto 60}${font Ubuntu:size=10,weight:bold}${color3}СЕТЬ ${font Ubuntu:size=7,weight:bold}${color3}${alignr 1}IP: ${execi 900 wget -O - -q icanhazip.com}${font}
${if_up eth0}${voffset -4}${goto 60}${color2}${font Ubuntu:size=7,weight:bold}${color1}LAN: ${addr eth0} 
${voffset -4}${goto 60}${downspeedgraph eth0 24,60 666666 666666 -l}
${voffset -32}${goto 60}${color1}${font Wingdings:size=7}Ì${font Ubuntu:size=7,weight:bold}${downspeedf eth0} Кб/с
${voffset -25}
${goto 130}${upspeedgraph eth0 24,60 666666 666666 -l}
${voffset -32}${goto 130}${color1}${font Wingdings:size=7}Ï${font Ubuntu:size=7,weight:bold}${upspeedf eth0} Кб/с${endif}
${if_up wlan0}${voffset 16}${goto 60}${color2}${font Ubuntu:size=7,weight:bold}${color1}WiFi: ${addr wlan0} ${alignr 1}${font ConkySymbols:size=6,weight:normal}${color2}b${font Ubuntu:size=7,weight:bold} ${color1}${wireless_link_qual_perc wlan0}% 
${voffset -4}${goto 60}${downspeedgraph wlan0 24,60 666666 666666 -l}
${voffset -32}${goto 60}${color1}${font Wingdings:size=7}Ì${font Ubuntu:size=7,weight:bold}${downspeedf wlan0} Кб/с
${voffset -25}
${goto 130}${upspeedgraph wlan0 24,60 666666 666666 -l}
${voffset -32}${goto 130}${color1}${font Wingdings:size=7}Ï${font Ubuntu:size=7,weight:bold}${upspeedf wlan0} Кб/с${endif}
${voffset 16}${goto 60}${font Ubuntu:size=7,weight:bold}${color}Сетевые соединения:${color2}  ${tcp_portmon 1 65535 count}
${goto 60}${font Ubuntu:size=7,weight:bold}${color}IP${alignr}ПОРТ
${goto 60}${font Ubuntu:size=7,weight:normal}${color1}${tcp_portmon 1 65535 rip  0}${alignr 1}${tcp_portmon 1 65535 rport  0}
${goto 60}${font Ubuntu:size=7,weight:normal}${color1}${tcp_portmon 1 65535 rip  1}${alignr 1}${tcp_portmon 1 65535 rport  1}
${goto 60}${font Ubuntu:size=7,weight:normal}${color1}${tcp_portmon 1 65535 rip  2}${alignr 1}${tcp_portmon 1 65535 rport  2}
${goto 60}${font Ubuntu:size=7,weight:normal}${color1}${tcp_portmon 1 65535 rip  3}${alignr 1}${tcp_portmon 1 65535 rport  3}
${goto 60}${font Ubuntu:size=7,weight:normal}${color1}${tcp_portmon 1 65535 rip  4}${alignr 1}${tcp_portmon 1 65535 rport  4}
${goto 60}${font Ubuntu:size=7,weight:normal}${color1}${tcp_portmon 1 65535 rip  5}${alignr 1}${tcp_portmon 1 65535 rport  5}
${goto 60}${font Ubuntu:size=7,weight:normal}${color1}${tcp_portmon 1 65535 rip  6}${alignr 1}${tcp_portmon 1 65535 rport  6}
${goto 60}${font Ubuntu:size=7,weight:normal}${color1}${tcp_portmon 1 65535 rip  7}${alignr 1}${tcp_portmon 1 65535 rport  7}
${goto 60}${font Ubuntu:size=7,weight:normal}${color1}${tcp_portmon 1 65535 rip  8}${alignr 1}${tcp_portmon 1 65535 rport  8}
#${goto 60}${font Ubuntu:size=7,weight:normal}${color1}${tcp_portmon 1 65535 rip  9}${alignr 1}${tcp_portmon 1 65535 rport  9}
#${goto 60}${font Ubuntu:size=7,weight:normal}${color1}${tcp_portmon 1 65535 rip 10}${alignr 1}${tcp_portmon 1 65535 rport 10}
#${goto 60}${font Ubuntu:size=7,weight:normal}${color1}${tcp_portmon 1 65535 rip 11}${alignr 1}${tcp_portmon 1 65535 rport 11}
#${goto 60}${font Ubuntu:size=7,weight:normal}${color1}${tcp_portmon 1 65535 rip 12}${alignr 1}${tcp_portmon 1 65535 rport 12}
#${goto 60}${font Ubuntu:size=7,weight:normal}${color1}${tcp_portmon 1 65535 rip 13}${alignr 1}${tcp_portmon 1 65535 rport 13}
#${goto 60}${font Ubuntu:size=7,weight:normal}${color1}${tcp_portmon 1 65535 rip 14}${alignr 1}${tcp_portmon 1 65535 rport 14}


conky_grey.lua

Код:
--==============================================================================
--                                 conky_grey.lua
--
--  author  : SLK
--  version : v2011062101
--  license : Distributed under the terms of GNU GPL version 2 or later
--
--==============================================================================

require 'cairo'

--------------------------------------------------------------------------------
--                                                                    clock DATA
-- HOURS
clock_h = {
    {
    name='time',                   arg='%H',                    max_value=12,
    x=120,                         y=90,
    graph_radius=58,
    graph_thickness=3,
    graph_unit_angle=30,           graph_unit_thickness=30,
    graph_bg_colour=0xffffff,      graph_bg_alpha=0.0,
    graph_fg_colour=0xFFFFFF,      graph_fg_alpha=0.3,
    txt_radius=38,
    txt_weight=1,                  txt_size=9.0,
    txt_fg_colour=0xFFFFFF,        txt_fg_alpha=0.6,
    graduation_radius=58,
    graduation_thickness=6,        graduation_mark_thickness=2,
    graduation_unit_angle=30,
    graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3,
    },
}
-- MINUTES
clock_m = {
    {
    name='time',                   arg='%M',                    max_value=60,
    x=120,                         y=90,
    graph_radius=61,
    graph_thickness=2,
    graph_unit_angle=6,            graph_unit_thickness=6,
    graph_bg_colour=0xffffff,      graph_bg_alpha=0.1,
    graph_fg_colour=0xFFFFFF,      graph_fg_alpha=0.3,
    txt_radius=67,
    txt_weight=0,                  txt_size=8.0,
    txt_fg_colour=0xFFFFFF,        txt_fg_alpha=0.6,
    graduation_radius=61,
    graduation_thickness=0,        graduation_mark_thickness=2,
    graduation_unit_angle=30,
    graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3,
    },
}
-- SECONDS
clock_s = {
    {
    name='time',                   arg='%S',                    max_value=60,
    x=120,                         y=90,
    graph_radius=55,
    graph_thickness=2,
    graph_unit_angle=6,            graph_unit_thickness=2,
    graph_bg_colour=0xffffff,      graph_bg_alpha=0.0,
    graph_fg_colour=0xFFFFFF,      graph_fg_alpha=0.2,
    txt_radius=46,
    txt_weight=0,                  txt_size=11.0,
    txt_fg_colour=0xFFFFFF,        txt_fg_alpha=0.3,
    graduation_radius=0,
    graduation_thickness=0,        graduation_mark_thickness=0,
    graduation_unit_angle=0,
    graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.0,
    },
}

--------------------------------------------------------------------------------
--                                                                    gauge DATA
gauge = {
{
    name='cpu',                    arg='cpu0',                  max_value=100,
    x=85,                          y=200,
    graph_radius=28,
    graph_thickness=5,
    graph_start_angle=180,
    graph_unit_angle=2.7,          graph_unit_thickness=2.7,
    graph_bg_colour=0xffffff,      graph_bg_alpha=0.1,
    graph_fg_colour=0xFFFFFF,      graph_fg_alpha=0.5,
    hand_fg_colour=0xEF5A29,       hand_fg_alpha=0.0,
    txt_radius=28,
    txt_weight=0,                  txt_size=8.0,
    txt_fg_colour=0xFFFFFF,        txt_fg_alpha=0.0,
    graduation_radius=28,
    graduation_thickness=0,        graduation_mark_thickness=1,
    graduation_unit_angle=27,
    graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3,
    caption='',
    caption_weight=1,              caption_size=8.0,
    caption_fg_colour=0xFFFFFF,    caption_fg_alpha=0.3,
},
{
    name='cpu',                    arg='cpu1',                  max_value=100,
    x=85,                          y=200,
    graph_radius=22,
    graph_thickness=5,
    graph_start_angle=180,
    graph_unit_angle=2.7,          graph_unit_thickness=2.7,
    graph_bg_colour=0xffffff,      graph_bg_alpha=0.1,
    graph_fg_colour=0xFFFFFF,      graph_fg_alpha=0.5,
    hand_fg_colour=0xEF5A29,       hand_fg_alpha=0.0,
    txt_radius=21,
    txt_weight=0,                  txt_size=8.0,
    txt_fg_colour=0xFFFFFF,        txt_fg_alpha=0.0,
    graduation_radius=28,
    graduation_thickness=0,        graduation_mark_thickness=1,
    graduation_unit_angle=27,
    graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3,
    caption='',
    caption_weight=1,              caption_size=8.0,
    caption_fg_colour=0xFFFFFF,    caption_fg_alpha=0.3,
},
{
    name='cpu',                    arg='cpu2',                  max_value=100,
    x=85,                          y=200,
    graph_radius=16,
    graph_thickness=5,
    graph_start_angle=180,
    graph_unit_angle=2.7,          graph_unit_thickness=2.7,
    graph_bg_colour=0xffffff,      graph_bg_alpha=0.1,
    graph_fg_colour=0xFFFFFF,      graph_fg_alpha=0.5,
    hand_fg_colour=0xEF5A29,       hand_fg_alpha=0.0,
    txt_radius=15,
    txt_weight=0,                  txt_size=8.0,
    txt_fg_colour=0xFFFFFF,        txt_fg_alpha=0.0,
    graduation_radius=28,
    graduation_thickness=0,        graduation_mark_thickness=1,
    graduation_unit_angle=27,
    graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3,
    caption='',
    caption_weight=1,              caption_size=8.0,
    caption_fg_colour=0xFFFFFF,    caption_fg_alpha=0.3,
},
{
    name='cpu',                    arg='cpu3',                  max_value=100,
    x=85,                          y=200,
    graph_radius=10,
    graph_thickness=5,
    graph_start_angle=180,
    graph_unit_angle=2.7,          graph_unit_thickness=2.7,
    graph_bg_colour=0xffffff,      graph_bg_alpha=0.1,
    graph_fg_colour=0xFFFFFF,      graph_fg_alpha=0.5,
    hand_fg_colour=0xEF5A29,       hand_fg_alpha=0.0,
    txt_radius=8,
    txt_weight=0,                  txt_size=8.0,
    txt_fg_colour=0xFFFFFF,        txt_fg_alpha=0.0,
    graduation_radius=28,
    graduation_thickness=0,        graduation_mark_thickness=1,
    graduation_unit_angle=27,
    graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3,
    caption='',
    caption_weight=1,              caption_size=8.0,
    caption_fg_colour=0xFFFFFF,    caption_fg_alpha=0.3,
},
{
    name='memperc',                arg='',                      max_value=100,
    x=85,                          y=300,
    graph_radius=24,
    graph_thickness=5,
    graph_start_angle=180,
    graph_unit_angle=2.7,          graph_unit_thickness=2.7,
    graph_bg_colour=0xffffff,      graph_bg_alpha=0.1,
    graph_fg_colour=0xFFFFFF,      graph_fg_alpha=0.5,
    hand_fg_colour=0xEF5A29,       hand_fg_alpha=0.0,
    txt_radius=10,
    txt_weight=0,                  txt_size=8.0,
    txt_fg_colour=0xFFFFFF,        txt_fg_alpha=0.3,
    graduation_radius=23,
    graduation_thickness=8,        graduation_mark_thickness=2,
    graduation_unit_angle=27,
    graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.5,
    caption='',
    caption_weight=1,              caption_size=8.0,
    caption_fg_colour=0xFFFFFF,    caption_fg_alpha=0.3,
},
{
    name='fs_used_perc',           arg='/media/DataServer',                    
max_value=100,
    x=85,                          y=380,
    graph_radius=24,
    graph_thickness=5,
    graph_start_angle=180,
    graph_unit_angle=2.7,          graph_unit_thickness=2.7,
    graph_bg_colour=0xffffff,      graph_bg_alpha=0.1,
    graph_fg_colour=0xFFFFFF,      graph_fg_alpha=0.5,
    hand_fg_colour=0xEF5A29,       hand_fg_alpha=0.0,
    txt_radius=34,
    txt_weight=0,                  txt_size=8.0,
    txt_fg_colour=0xFFFFFF,        txt_fg_alpha=0.5,
    graduation_radius=28,
    graduation_thickness=0,        graduation_mark_thickness=1,
    graduation_unit_angle=27,
    graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3,
    caption='DataServer',
    caption_weight=1,              caption_size=7.0,
    caption_fg_colour=0xFFFFFF,    caption_fg_alpha=0.5,
},
{
    name='fs_used_perc',           arg='/',               
max_value=100,
    x=85,                          y=380,
    graph_radius=18,
    graph_thickness=5,
    graph_start_angle=180,
    graph_unit_angle=2.7,          graph_unit_thickness=2.7,
    graph_bg_colour=0xffffff,      graph_bg_alpha=0.1,
    graph_fg_colour=0xFFFFFF,      graph_fg_alpha=0.5,
    hand_fg_colour=0xEF5A29,       hand_fg_alpha=0.0,
    txt_radius=8,
    txt_weight=0,                  txt_size=8.0,
    txt_fg_colour=0xFFFFFF,        txt_fg_alpha=0.5,
    graduation_radius=28,
    graduation_thickness=0,        graduation_mark_thickness=1,
    graduation_unit_angle=27,
    graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3,
    caption='Kubuntu',
    caption_weight=1,              caption_size=7.0,
    caption_fg_colour=0xFFFFFF,    caption_fg_alpha=0.5,
},
{
    name='battery_percent',                arg='',                      max_value=100,
    x=84,                          y=468,
    graph_radius=20,
    graph_thickness=5,
    graph_start_angle=180,
    graph_unit_angle=2.7,          graph_unit_thickness=2.7,
    graph_bg_colour=0xffffff,      graph_bg_alpha=0.1,
    graph_fg_colour=0xFFFFFF,      graph_fg_alpha=0.5,
    hand_fg_colour=0xEF5A29,       hand_fg_alpha=0.0,
    txt_radius=0,
    txt_weight=1,                  txt_size=8.0,
    txt_fg_colour=0xFFFFFF,        txt_fg_alpha=0.3,
    graduation_radius=18,
    graduation_thickness=8,        graduation_mark_thickness=2,
    graduation_unit_angle=27,
    graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.5,
    caption='',
    caption_weight=1,              caption_size=8.0,
    caption_fg_colour=0xFFFFFF,    caption_fg_alpha=0.3,
},
}

-------------------------------------------------------------------------------
--                                                                 rgb_to_r_g_b
-- converts color in hexa to decimal
--
function rgb_to_r_g_b(colour, alpha)
    return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
end

-------------------------------------------------------------------------------
--                                                            angle_to_position
-- convert degree to rad and rotate (0 degree is top/north)
--
function angle_to_position(start_angle, current_angle)
    local pos = current_angle + start_angle
    return ( ( pos * (2 * math.pi / 360) ) - (math.pi / 2) )
end

-------------------------------------------------------------------------------
--                                                              draw_clock_ring
-- displays clock
--
function draw_clock_ring(display, data, value)
    local max_value = data['max_value']
    local x, y = data['x'], data['y']
    local graph_radius = data['graph_radius']
    local graph_thickness, graph_unit_thickness = data['graph_thickness'], data['graph_unit_thickness']
    local graph_unit_angle = data['graph_unit_angle']
    local graph_bg_colour, graph_bg_alpha = data['graph_bg_colour'], data['graph_bg_alpha']
    local graph_fg_colour, graph_fg_alpha = data['graph_fg_colour'], data['graph_fg_alpha']

    -- background ring
    cairo_arc(display, x, y, graph_radius, 0, 2 * math.pi)
    cairo_set_source_rgba(display, rgb_to_r_g_b(graph_bg_colour, graph_bg_alpha))
    cairo_set_line_width(display, graph_thickness)
    cairo_stroke(display)

    -- arc of value
    local val = (value % max_value)
    local i = 1
    while i <= val do
        cairo_arc(display, x, y, graph_radius,(  ((graph_unit_angle * i) - graph_unit_thickness)*(2*math.pi/360)  )-(math.pi/2),((graph_unit_angle * i) * (2*math.pi/360))-(math.pi/2))
        cairo_set_source_rgba(display,rgb_to_r_g_b(graph_fg_colour,graph_fg_alpha))
        cairo_stroke(display)
        i = i + 1
    end
    local angle = (graph_unit_angle * i) - graph_unit_thickness

    -- graduations marks
    local graduation_radius = data['graduation_radius']
    local graduation_thickness, graduation_mark_thickness = data['graduation_thickness'], data['graduation_mark_thickness']
    local graduation_unit_angle = data['graduation_unit_angle']
    local graduation_fg_colour, graduation_fg_alpha = data['graduation_fg_colour'], data['graduation_fg_alpha']
    if graduation_radius > 0 and graduation_thickness > 0 and graduation_unit_angle > 0 then
        local nb_graduation = 360 / graduation_unit_angle
        local i = 1
        while i <= nb_graduation do
            cairo_set_line_width(display, graduation_thickness)
            cairo_arc(display, x, y, graduation_radius, (((graduation_unit_angle * i)-(graduation_mark_thickness/2))*(2*math.pi/360))-(math.pi/2),(((graduation_unit_angle * i)+(graduation_mark_thickness/2))*(2*math.pi/360))-(math.pi/2))
            cairo_set_source_rgba(display,rgb_to_r_g_b(graduation_fg_colour,graduation_fg_alpha))
            cairo_stroke(display)
            cairo_set_line_width(display, graph_thickness)
            i = i + 1
        end
    end

    -- text
    local txt_radius = data['txt_radius']
    local txt_weight, txt_size = data['txt_weight'], data['txt_size']
    local txt_fg_colour, txt_fg_alpha = data['txt_fg_colour'], data['txt_fg_alpha']
    local movex = txt_radius * (math.cos((angle * 2 * math.pi / 360)-(math.pi/2)))
    local movey = txt_radius * (math.sin((angle * 2 * math.pi / 360)-(math.pi/2)))
    cairo_select_font_face (display, "ubuntu", CAIRO_FONT_SLANT_NORMAL, txt_weight);
    cairo_set_font_size (display, txt_size);
    cairo_set_source_rgba (display, rgb_to_r_g_b(txt_fg_colour, txt_fg_alpha));
    cairo_move_to (display, x + movex - (txt_size / 2), y + movey + 3);
    cairo_show_text (display, value);
    cairo_stroke (display);
end

-------------------------------------------------------------------------------
--                                                              draw_gauge_ring
-- displays gauges
--
function draw_gauge_ring(display, data, value)
    local max_value = data['max_value']
    local x, y = data['x'], data['y']
    local graph_radius = data['graph_radius']
    local graph_thickness, graph_unit_thickness = data['graph_thickness'], data['graph_unit_thickness']
    local graph_start_angle = data['graph_start_angle']
    local graph_unit_angle = data['graph_unit_angle']
    local graph_bg_colour, graph_bg_alpha = data['graph_bg_colour'], data['graph_bg_alpha']
    local graph_fg_colour, graph_fg_alpha = data['graph_fg_colour'], data['graph_fg_alpha']
    local hand_fg_colour, hand_fg_alpha = data['hand_fg_colour'], data['hand_fg_alpha']
    local graph_end_angle = (max_value * graph_unit_angle) % 360

    -- background ring
    cairo_arc(display, x, y, graph_radius, angle_to_position(graph_start_angle, 0), angle_to_position(graph_start_angle, graph_end_angle))
    cairo_set_source_rgba(display, rgb_to_r_g_b(graph_bg_colour, graph_bg_alpha))
    cairo_set_line_width(display, graph_thickness)
    cairo_stroke(display)

    -- arc of value
    local val = value % (max_value + 1)
    local start_arc = 0
    local stop_arc = 0
    local i = 1
    while i <= val do
        start_arc = (graph_unit_angle * i) - graph_unit_thickness
        stop_arc = (graph_unit_angle * i)
        cairo_arc(display, x, y, graph_radius, angle_to_position(graph_start_angle, start_arc), angle_to_position(graph_start_angle, stop_arc))
        cairo_set_source_rgba(display, rgb_to_r_g_b(graph_fg_colour, graph_fg_alpha))
        cairo_stroke(display)
        i = i + 1
    end
    local angle = start_arc

    -- hand
    start_arc = (graph_unit_angle * val) - (graph_unit_thickness * 2)
    stop_arc = (graph_unit_angle * val)
    cairo_arc(display, x, y, graph_radius, angle_to_position(graph_start_angle, start_arc), angle_to_position(graph_start_angle, stop_arc))
    cairo_set_source_rgba(display, rgb_to_r_g_b(hand_fg_colour, hand_fg_alpha))
    cairo_stroke(display)

    -- graduations marks
    local graduation_radius = data['graduation_radius']
    local graduation_thickness, graduation_mark_thickness = data['graduation_thickness'], data['graduation_mark_thickness']
    local graduation_unit_angle = data['graduation_unit_angle']
    local graduation_fg_colour, graduation_fg_alpha = data['graduation_fg_colour'], data['graduation_fg_alpha']
    if graduation_radius > 0 and graduation_thickness > 0 and graduation_unit_angle > 0 then
        local nb_graduation = graph_end_angle / graduation_unit_angle
        local i = 0
        while i < nb_graduation do
            cairo_set_line_width(display, graduation_thickness)
            start_arc = (graduation_unit_angle * i) - (graduation_mark_thickness / 2)
            stop_arc = (graduation_unit_angle * i) + (graduation_mark_thickness / 2)
            cairo_arc(display, x, y, graduation_radius, angle_to_position(graph_start_angle, start_arc), angle_to_position(graph_start_angle, stop_arc))
            cairo_set_source_rgba(display,rgb_to_r_g_b(graduation_fg_colour,graduation_fg_alpha))
            cairo_stroke(display)
            cairo_set_line_width(display, graph_thickness)
            i = i + 1
        end
    end

    -- text
    local txt_radius = data['txt_radius']
    local txt_weight, txt_size = data['txt_weight'], data['txt_size']
    local txt_fg_colour, txt_fg_alpha = data['txt_fg_colour'], data['txt_fg_alpha']
    local movex = txt_radius * math.cos(angle_to_position(graph_start_angle, angle))
    local movey = txt_radius * math.sin(angle_to_position(graph_start_angle, angle))
    cairo_select_font_face (display, "ubuntu", CAIRO_FONT_SLANT_NORMAL, txt_weight)
    cairo_set_font_size (display, txt_size)
    cairo_set_source_rgba (display, rgb_to_r_g_b(txt_fg_colour, txt_fg_alpha))
    cairo_move_to (display, x + movex - (txt_size / 2), y + movey + 3)
    cairo_show_text (display, value)
    cairo_stroke (display)

    -- caption
    local caption = data['caption']
    local caption_weight, caption_size = data['caption_weight'], data['caption_size']
    local caption_fg_colour, caption_fg_alpha = data['caption_fg_colour'], data['caption_fg_alpha']
    local tox = graph_radius * (math.cos((graph_start_angle * 2 * math.pi / 360)-(math.pi/2)))
    local toy = graph_radius * (math.sin((graph_start_angle * 2 * math.pi / 360)-(math.pi/2)))
    cairo_select_font_face (display, "ubuntu", CAIRO_FONT_SLANT_NORMAL, caption_weight);
    cairo_set_font_size (display, caption_size)
    cairo_set_source_rgba (display, rgb_to_r_g_b(caption_fg_colour, caption_fg_alpha))
    cairo_move_to (display, x + tox + 5, y + toy + 1)
    -- bad hack but not enough time !
    if graph_start_angle < 105 then
        cairo_move_to (display, x + tox - 30, y + toy + 1)
    end
    cairo_show_text (display, caption)
    cairo_stroke (display)
end

-------------------------------------------------------------------------------
--                                                               go_clock_rings
-- loads data and displays clock
--
function go_clock_rings(display)
    local function load_clock_rings(display, data)
        local str, value = '', 0
        str = string.format('${%s %s}',data['name'], data['arg'])
        str = conky_parse(str)
        value = tonumber(str)
        draw_clock_ring(display, data, value)
    end
    
    for i in pairs(clock_h) do
        load_clock_rings(display, clock_h[i])
    end
    for i in pairs(clock_m) do
        load_clock_rings(display, clock_m[i])
    end
    for i in pairs(clock_s) do
        load_clock_rings(display, clock_s[i])
    end
end

-------------------------------------------------------------------------------
--                                                               go_gauge_rings
-- loads data and displays gauges
--
function go_gauge_rings(display)
    local function load_gauge_rings(display, data)
        local str, value = '', 0
        str = string.format('${%s %s}',data['name'], data['arg'])
        str = conky_parse(str)
        value = tonumber(str)
        draw_gauge_ring(display, data, value)
    end
    
    for i in pairs(gauge) do
        load_gauge_rings(display, gauge[i])
    end
end

-------------------------------------------------------------------------------
--                                                                         MAIN
function conky_main()
    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)
    local display = cairo_create(cs)
    
    local updates = conky_parse('${updates}')
    update_num = tonumber(updates)
    
    if update_num > 5 then
        go_clock_rings(display)
        go_gauge_rings(display)
    end
    
    cairo_surface_destroy(cs)
    cairo_destroy(display)
end


Потребление ресурсов 0,6-1,3% процессорного времени и 10 мегабайт оперативной памяти.
__________________
Хакер - это не профессия, а стиль жизни, в которой всё время идёшь вперёд, в которой испытываешь постоянный информационный голод и бросаешь вызов технологиям. Это путь бесконечной вереницы вопросов и ответов...


My PC: Fractal Design Define R6/ i9-9900K@5.00GHz/ ASUS MAXIMUS XI HERO (Wi-Fi)/ 64Gb RAM Dual DDR4 3000/ SSD Samsung EVO 860 250Gb + HDD WD Purple 4Tb/ nVidia GeForce RTX 2080 Ti FE 11Gb/ ASUS VG245Q 24" Full HD/ Sound Microlab Pro One
My Notebook: HP ENVY x360 15 (Ryzen 5 2500U@3,6GHz/ 16Gb RAM Dual DDR4 2400/ SSD M.2 Samsung CM871a 128Gb +HDD Seagate BarraCuda Pro 1Tb/ AMD Radeon Vega 8 1Gb/ FP 15.6" FHD / HP Pen)
My Server: HPE ProLiant MicroServer Gen8 (XEON E3-1265LV2@2.5~3.5GHz 8 threads/ 16Gb ECC RAM 1600/ HP P222 2Gb Cache FBWC 4x4TB Toshiba 4xRAID10/ ESXi 6.5U3/ iLO 4 v2.73)
My Phone: Samsung Galaxy Note 23 Ultra/ Android 13/ 256Gb + DeX Station + Galaxy Watch 46mm + Galaxy Buds Pro
My Tab: Samsung Galaxy Note 10.1 2014/ Android 5.1.1/ 32Gb/ Flash mSD 64Gb


Почему "Винда-отстой" кричат громче всех те, кто и в Линукс ничего не понимают...
Говорим спасибо и жмём на возле аватара или кнопочку
MiraMaX166 вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо MiraMaX166 за это полезное сообщение:
artemha (12.12.2012)
 
Время генерации страницы 0.08041 секунды с 14 запросами