Виджет Conky. Собираем свою панель

Итак, мы рассмотрели всё, что вам нужно, для базовой кастомизации окна (это далеко не все функции Conky - полный их список с описанием можно найти на странице man conky). Теперь наиболее интересная часть - блок TEXT.

Сложно придумать, с чего начать - просто перечислить все возможные фукнции было бы неинтересно, так что давайте сотрем стандартный текст, и перепишем заново с примерами и описанием, добавив максимум информации - после, беря пример с нашего Conky, вы сможете собрать собственный.

Для начала добавим, например, большие и красивые часы:

 

${font Open Sans:size=44}${time %H:%M}${font Open Sans:size=15}

${time %a}, ${time %d %b %Y}          

 

Здесь всё просто - сперва задаем шрифт с размером - он будет действовать на все элементы, до следующего задания шрифта (так же и со цветом). Аргументы, которые перечислены после $time - формат вывода, %H - часы, %a - буквенное сокращение дня, и так далее (полный их список можно посмотреть на странице man time. Выглядят наши часы вот так:

Conky

 

В Conky достаточно переменных для получения и вывода информации о состоянии системы - ресурсопотребление, температура и прочее. Вот и добавим, для начала их. Начнем с блока CPU:

 

${font Terminus:size=10:style=bold}${color #71C4A9}CPU ${hr 3}${font}${color}

 

Сперва идет уже знакомая нам переменная, лишь с добавлением дополнительной функции - стиль шрифта, в данном случае «жирный». Затем цвет - нужно добавить, что шрифт и цвет действуют на всё идущее после них, до тех пор, пока не будет задан новый шрифт и цвет. Чтобы вернуть шрифт и цвет по умолчанию, в требуемом вам месте напишите ${font} и ${color}. Далее идет обычный текст, который с применением цвета и шрифта выводиться в Conky. Последний аргумент - линия, разделитель толщиной в 3 пикселя.

Conky

 

Наполним блок данными! Для начала, например, впишем полное имя нашего процессора, получив вывод с «cat /proc/cpuinfo» (в файле хранятся все данные о CPU):

 

${execi 1000 cat /proc/cpuinfo | grep 'model name' | sed -e 's/model name.*: //'| uniq}

 

Переменная $execi выполняет заданную команду и выводит результат в Conky, в нашем случае с интервалом в 1000 минут). Наша команда - получение вывода с /proc/cpuinfo, grep передает cat только строку «model name:» с именем CPU, а sed вырезает строки «model name», оставляя лишь чистое имя CPU). Помимо execi есть также:

 

exec - то же, без интервала обновления.

Execbar/execgauge/execgraph - если результат вывода - число от 1 до 100, то выводит его как бар/круглый датчик/график

Execibar/execigauge/execigraph - то же, но с интервалом.

 

Не переполняйте Conky строками семейства exec (без большого интервала) - они довольно ресурсоемки.

Сделаем блок более информативным:

 

${color grey}Использовано: ${alignr}${color}$cpu%

${color grey}Температура: ${alignr}${color}${acpitemp}°C

${color #71C4A9}${cpugraph}

 

Вы ещё не видели ${alignr} - переменная отсылает всё, что идет после неё, в правый край экрана (есть также $alignc - выравнивает текст по центру).

 

$cpu - показывает процесс занятости процессора в процентах.

${acpitemp} - показывает температуру в градусах цельсия.

${cpugraph} - создает «бегущий»график активности процессора.

 

Для отображения температуры, не забудьте установить пакет lm_sensors (Linux-monitoring sensors - пакет различных драйверов и утилит для отслеживания состояния железа). Если вы не уверены в правильности температуры, отображаемой ${acpitemp} - вы можете напрямую получить вывод утилитой sensors с помощью $exec, вырезать нужную часть и выводить её в Conky с небольшим интервалом.

В нашем случае мы работает с одноядерным CPU. Для многоядерных систем, переменные выше могут принять вид $cpu 1, $cpu 2 или $cpugraph 1, и так далее, по номеру ядра.

Вот как это выглядит:

Conky

 

Помимо $cpugraph, можем также использовать $cpubar - бар, и $cpugauge - круглый датчик вроде спидометра (о их работе читайте в man conky).

Далее, создадим блок с информацией о потреблении памяти.

 

${font Arial:style=bold}${color #71C4A9}Память ${hr 3}${font}${color}

${color grey}RAM: ${alignr}${color #71C4A9}$memperc% ${color} $mem / $memmax

${color grey}Swap: ${alignr}${color #71C4A9}$swapperc% ${color} $swap / $swapmax

${color grey}Буфер: ${color}${buffers} ${color grey}${alignr} Кэш: ${color}${cached}

 

Здесь вы должны были уже начать понимать синтаксис конфига Conky - прочие функции мы уже использовали, а о новых всё понято из названия:

 

$mem / memmax - использовано RAM / всего RAM

 

То же для Swap (когда не хвататет оперативной памяти, система может писать данные на раздел жесткого диска - это называется Swap-раздел, при установке системы он должен был быть создан).

 

$buffers - память в буфере.

$cached - кэшированная память.

 

Стоит отвлечься и сказать, что в программах показывающих потребление RAM - мало смысла, по крайней мере под Linux, из-за особенностей потребления RAM данной системой. Вот отличная и простая статья об этом: http://www.linuxatemyram.ru/

Найдите в первой части конфига строку no_buffers. Если у неё стоит аргумент yes - то кэшированная память считается свободной и не выводится как потребленная в $mem, а если no_buffers no - кэш также считается. Оба варианта не совсем верны, ведь при yes память все равно занята, а при no - она все равно не используется - именно поэтому стопроцентно доверять $mem не стоит.

А наш Conky теперь выглядит так:

Conky

 

Для памяти и Swap, как и для CPU, можно создать бар или график:

 

${membar 5,40} - бар потребления RAM высотой 5 и шириной 40 пикселей.

${swapbar 5.40} - аналогично.

 

Идем дальше, и добавим блок «Процессы» с топ-5 самых ресурсоемких процессов, а также временем аптайма (время работы компьютера). Также, выделим самый ресурсоемкий процесс красным, чтобы знать, какая программа отъедает больше всего памяти:

 

${font Arial:style=bold}${color #71C4A9}Процессы ${hr 3}${font}${color}

${color grey}Name                       PID   CPU%   MEM%

${color red} ${top name 1} ${alignr}${top pid 1} ${top cpu 1} ${top mem 1}

${color grey} ${top name 2} ${color}${alignr}${top pid 2} ${top cpu 2} ${top mem 2}

${color grey} ${top name 3} ${color}${alignr}${top pid 3} ${top cpu 3} ${top mem 3}

${color grey} ${top name 4} ${color}${alignr}${top pid 4} ${top cpu 4} ${top mem 4}

${color grey} ${top name 5} ${color}${alignr}${top pid 5} ${top cpu 5} ${top mem 5}

${color #71C4A9}Аптайм: ${alignr}${uptime}

 

*PID- process ID (обычно используется чтобы знать что вписать в kill для убийства процесса).

Вот как это выглядит:

Conky

 

Пожалуй, самым полезным блоком (ведь информация прочих обновляется каждую секунду, но все равно скрыта окнами большую часть времени) является следующий - «Файловая Система»:

 

${font Arial:style=bold}${color #71C4A9}Файловая система: ${hr 3}${font}${color}

${font Terminus:size=10:style=bold}${color #71C4A9}/: ${f${alignr}${color}${fs_used /} / ${fs_size /}

${color #71C4A9} [${fs_used_perc /}%] ${fs_bar 8 /}

${font Terminus:size=10:style=bold}${color #71C4A9}/mnt/filestorage:${font} ${alignr}${color}${fs_used /mnt/filestorage} / ${fs_size /mnt/filestorage}

${color #71C4A9} [${fs_used_perc /mnt/filestorage}%] ${fs_bar 8 /mnt/filestorage}

 

${fs_used раздел} - объем использованной памяти раздела, в нашем случае корневого - /. Это может быть любой раздел на ЖД, даже примонтированный, или папка, в которую монтируется ваш смартфон при подключении - просто укажите полный путь к ней в качестве аргумента {fs_used }.

${fs_size} - общий объем раздела.

${fs_used_pers} - занятость в процентах.

{fs_bar} - бар.

Выглядит это так:

Conky

 

Что ещё можно добавить в Conky? Да что угодно, благодаря функциям вроде exec, позволяющих запускать сторонние скрипты (также Conky поддерживает POP3, IMAP и RSS) - чаще всего это погода и проверка почты. Для одного лишь вывода погоды придумано столько способов, что и не счесть - но чаще всего это скрипты на Lua или Bash, как здесь:

http://zenux.ru/articles/8/#conky-weather

http://archlinux.org.ru/forum/topic/12155/

https://www.linux.org.ru/forum/desktop/9816306

https://www.linux.org.ru/forum/desktop/11202205

Пожалуй, самый простой и гениальный способ приведен по первой ссылке - найти на gismeteo.ru .gif-изображение с погодой на завтра, автоматически скачать через wget, и отобразить в Conky с помощью ${image путь} (с помощью этой же функции можно добавить иконки для разделов или жестких дисков).

Или же можно просто использовать ~/.conkyrc как блокнотик с напоминаниями - в дальнейшем всё на ваше усмотрение. Ссылки по теме:

http://help.ubuntu.ru/wiki/conky - мануал по Conky, почти полностью переведенный на русский (более свежий - man conky, но он на английском).

http://ubuntuforums.org/showthread.php?t=281865 - более двух тысяч страниц обсуждения Conky с примерами.

https://bbs.archlinux.org/viewtopic.php?id=39906

http://conky.sourceforge.net/ - домашняя страница проекта.

Компьютерный портал "Компаньон" © 2016.
В случае перепечатки материалов обязательна прямая ссылка на сайт cs-companion.ru.