Виджет Conky. Собираем свою панель
- Подробности
- Опубликовано 21.03.2016 04:55
Итак, мы рассмотрели всё, что вам нужно, для базовой кастомизации окна (это далеко не все функции 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 достаточно переменных для получения и вывода информации о состоянии системы - ресурсопотребление, температура и прочее. Вот и добавим, для начала их. Начнем с блока CPU:
${font Terminus:size=10:style=bold}${color #71C4A9}CPU ${hr 3}${font}${color}
Сперва идет уже знакомая нам переменная, лишь с добавлением дополнительной функции - стиль шрифта, в данном случае «жирный». Затем цвет - нужно добавить, что шрифт и цвет действуют на всё идущее после них, до тех пор, пока не будет задан новый шрифт и цвет. Чтобы вернуть шрифт и цвет по умолчанию, в требуемом вам месте напишите ${font} и ${color}. Далее идет обычный текст, который с применением цвета и шрифта выводиться в Conky. Последний аргумент - линия, разделитель толщиной в 3 пикселя.
Наполним блок данными! Для начала, например, впишем полное имя нашего процессора, получив вывод с «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, и так далее, по номеру ядра.
Вот как это выглядит:
Помимо $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 теперь выглядит так:
Для памяти и 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 для убийства процесса).
Вот как это выглядит:
Пожалуй, самым полезным блоком (ведь информация прочих обновляется каждую секунду, но все равно скрыта окнами большую часть времени) является следующий - «Файловая Система»:
${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? Да что угодно, благодаря функциям вроде 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/ - домашняя страница проекта.