Новости
Главная / Unix / Настройка Conky

Настройка Conky

Программа Conky — это системный монитор, который позволяет выводить на экран информацию о вашем процессоре, памяти, жестком диске, сетевом подключении, запущенных процессах и многом другом, что происходит в системе. Основная особенность Conky в том, что данные выводятся на рабочий стол в виде виджета, как будто они нарисованы на вашем изображении фона рабочего стола.


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

Содержание статьи:

Настройка Conky

1. Командная строка

Когда вы впервые запускаете Conky с параметрами по умолчанию, виджет выглядит примерно вот так:

Очень не красиво. Даже не обращаясь к конфигурационному файлу темы, вы можете настроить расположение и прозрачность из командой строки. Чтобы изменить положение виджета на экране используйте опцию -a. Доступны такие параметры left, right, top, bottom, middle. Надо указать расположение по вертикали и по горизонтали. Например:

conky -a middle_middle

Теперь виджет расположен по центру. Как видите, при обновлении виджет мерцает. Чтобы этого избежать можно использовать двойную буферизацию. Для этого добавьте опцию -b:

conky -b -a middle_middle

Теперь намного лучше, но самая полезная опция conky — это -c. Она позволяет задать конфигурационный файл из которого надо загружать тему. Дальше, в этой статье мы будем изменять конфигурационный файл темы, чтобы не повредить стандартную тему скопируйте его в домашнюю папку:

cp /etc/conky/conky.conf ~/.conky/default

Затем проверьте, что всё работает:

conky -a middle_middle -c ~/.conky/default

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

2. Синтаксис конфигурационного файла

В прошлом пункте я предложил скопировать файл /etc/conky/conky.conf в ~/.conky/default. С ним и будем работать. По умолчанию, любой конфигурационный файл conky делиться на две секции. Это секция настроек:

conky.config = {
параметр1=значение,
параметр2=значение
}

И секция данных для вывода:

conky.text = [[
$данные
]]

Начнём мы с работы над секцией настроек.

2. Расположение

С помощью параметра alignment можно настроить расположение виджета на экране. Доступны значения, такие же как и в командой строке и указываются они точно так же. Давайте расположим наш виджет вверху справа:

vi ~/conky/default

alignment = 'top_right'

Чтобы увидеть эффект сохраните файл и перезапустите Conky:

Все хорошо, но сейчас окно прикасается к краю экрана. Давайте отодвинем его на 50 пикселей. Для указания отступа от края по горизонтали используется параметр gap_x, а по вертикали gap_y. По вертикали окно выглядит нормально, а по горизонтали его надо немного сместить:

gap_x=50

3. Настройка окна

В этом конфигурационном файле окно виджета Conky уже и так нормально настроено. Но знание этих настроек может пригодится вам в других файлах:


own_window = true,
own_window_class = 'Conky',
own_window_type = 'desktop',

Первая строчка включает использование собственного окна, вторая указывает класс для окна Conky, а третья указывает тип — desktop. Это всё необходимо, чтобы у окна не было никаких дополнительных элементов управления и оконный менеджер не трогал его. Если в вашем окружении всё же ещё какие нибудь элементы управления появляются, можно добавить ещё такую строчку:

own_window_hints = 'undecorated,below,sticky,skip_taskbar,skip_pager',

4. Прозрачность

Сейчас окно чёрное, чтобы сделать его прозрачным добавьте такие строчки:

own_window_transparent = true,
own_window_argb_visual = true,

Не плохо, но хочется, чтобы окно было не полностью прозрачным, а только частично. Для этого надо отключить реальную прозрачность:

own_window_transparent = false,

Затем можно настроить цвет и нужный уровень прозрачности с помощью ARGB:

own_window_colour = '171717',
own_window_argb_value = 180,

Цвет может быть практически любым. А значение прозрачности может быть от нуля, до 255, где 0 — это полностью прозрачный и 255 — вообще не прозрачный.

5. Шрифт

С помощью параметра font можно настраивать шрифт и его размер. Например, я хочу использовать шрифт Noto Mono и размер чуть побольше:

font = 'Noto Mono:size=13',

Параметр use_xft чуть ниже включает использование шрифтов X сервера, поэтому он тоже здесь нужен.

6. Интервал обновления

За интервал обновления данных отвечает параметр update_interval, в данном случае, это одна секунда, можно сделать пол секунды:

update_interval = 0.5,

Если вы запустили программу без опции -b, то увидите, что при обновлении виджет немного мерцает. Чтобы этого избежать включите двойную буферизацию:

double_buffer = true

7. Цвета

В секции настроек можно задать цвета, которые вы будете использовать потом в секции вывода. Это делать не обязательно, так как там можно сразу же указывать цвета, но это довольно удобно. Для этого просто добавьте переменные color1, color2, color3 и т д:

color1 = '#ff0000',
color2 = '#00ff00',
color3 = '#00ff00',

8. Синтаксис текстовой секции

В текстовой секции записывается текст, который будет выводится в виджете. Здесь синтаксис такой:

${переменная параметр}текст${переменная параметр}текст$переменная

Если для переменной нужны параметры, она пишется в скобках, если параметры не нужны, можно писать без скобок. Например:

${color1}Время работы:$color ${color2}$uptime$color

Это одна из строк, в которой я использовал переменные цветов, объявленные выше. Пустая переменная $color сбрасывает цвет до значения по умолчанию, переменная $uptime выводит время работы компьютера. Это будет выглядеть так:

9. Переменные текстовой секции

Все операции с выводом текста выполняются с помощью переменных. Давайте рассмотрим основные переменные, которые вы можете использовать:

  • alignc — выравнивание по центру;
  • alignr — выравнивание по правому краю;
  • color — меняет цвет на указанный в формате HEX, перед цветом надо указать решетку, если не указать никакого цвета, сбросит текущий цвет, на цвет по умолчанию;
  • colorN — позволяет менять цвет на цвет из переменных color1, color2, color3 и так далее;
  • exec — выполнить переданную в параметрах команду оболочки;
  • execi — похоже на exec, но выполняет указанную команду с заданным интервалом обновления;
  • execbar — если результат выполняемой команды от 0 до 100, выводится бар;
  • execgauge — если результат выполнения команды от 0 до 100, выводится круговая диаграмма;
  • execgraph — аналогично, execbar, только выводит график;
  • font — задать или сбросить шрифт для последующего текста;
  • hr — нарисовать горизонтальную линию;
  • scroll — прокручивать переданный в параметрах текст;
  • fs_bar — выводит бар с информацией о том, сколько места использовано на указанном разделе, в параметрах надо передать точку монтирования;
  • fs_free — свободное место на разделе;
  • fs_size — общий размер раздела;
  • fs_used — использованное место на разделе;
  • tail — показывает указанное количество последних строк из выбранного файла;
  • top — позволяет отображать информацию о процессах в системе. В параметры принимает тип информации, которую надо отобразить и номер процесса в рейтинге. Все процессы сортируются по количеству потребляемых ресурсов процессора.
  • addr — выводит текущий IP адрес;
  • downspeedf — скорость загрузки данных из сети в килобайтах;
  • upspeedf — скорость исходящего трафика в килобайтах;
  • curl — загрузить данные по ссылке из интернета и отобразить.

Это далеко не все переменные, а только самые интересные из тех, которые вы можете использовать. Все переменные вы можете посмотреть выполнив:

man conky

9. Примеры использования переменных

Давайте для примера выведем свободное место в вашей домашней папке на виджет:

/home $color${fs_used /home}/${fs_size /home} ${fs_bar /home}

Аналогично можно сделать для каталога /boot:

/boot $color${fs_used /boot}/${fs_size /boot} ${fs_bar /boot}

Чтобы показать ваш текущий IP адрес можно воспользоваться переменной curl:

${color grey}IP адрес:$color ${curl eth0.me}

Температура процессора conky может быть получена с помощью sensors переменной execi:

${color grey}Температура процессора:$color ${alignr}${execi 10 sensors | grep "SYSTIN" | cut -c 25-33} $color

А так можно узнать температуру видеокарты NVIDIA:

${color grey}Температура видеокарты:$color ${alignr}${nvidia temp}°C $color

После нескольких экспериментов у меня получился такой конфиг conky:

conky.config = {
alignment = 'top_right',
background = false,
border_width = 1,
cpu_avg_samples = 2,
default_color = 'white',
default_outline_color = 'white',
default_shade_color = 'white',
draw_borders = false,
draw_graph_borders = true,
draw_outline = false,
draw_shades = false,
use_xft = true,
font = 'Noto Mono:size=13',
gap_x = 50,
gap_y = 60,
minimum_height = 5,
minimum_width = 5,
net_avg_samples = 2,
no_buffers = true,
out_to_console = false,
out_to_stderr = false,
extra_newline = false,
own_window = true,
own_window_class = 'Conky',
own_window_type = 'desktop',
own_window_transparent = false,
own_window_argb_visual = true,
own_window_colour = '171717',
own_window_argb_value = 180,
stippled_borders = 0,
update_interval = 0.5,
double_buffer = true,
uppercase = false,
use_spacer = 'none',
show_graph_scale = false,
show_graph_range = false,
color1 = '#ff9950',
}
conky.text = [[
${alignc}$nodename - $sysname
$hr
${color1}Время работы:$color ${alignr}$uptime
${color1}Частота процессора:$color ${alignr}$freq_g ГГц
${color1}Использование ОЗУ:$color $memperc% ${membar 4}
${color1}Использование подкачки:$color $swapperc% ${swapbar 4}
${color1}Использование процессора:$color $cpu% ${cpubar 4}
${color1}Количество процессов:$color ${alignr}$processes
${color1}Температура процессора:$color ${alignr}${execi 10 sensors | grep "SYSTIN" | cut -c 25-33} $color
${color1}Температура видеокарты:$color ${alignr}${nvidia temp}°C $color
$hr
${color1}Файловые системы:
${color1}/ $color${fs_used /}/${fs_size /} ${fs_bar 6 /}
${color1}/home $color${fs_used /home}/${fs_size /home} ${fs_bar /home}
$hr
${color1}Сеть:
${color1}Приём:$color ${upspeed enp24s0} ${color1} ${alignr} Отдача:$color ${downspeed enp24s0}
${color1}IP адрес:$color ${curl eth0.me}
]]


Выводы

В этой статье мы рассмотрели как настроить Conky. Используя все эти параметры и переменные вы сможете создать такой виджет, какой только захотите, всё упирается только в вашу фантазию и время. Делитесь вашими конфигурационными файлами в комментариях!