Настройка 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. Используя все эти параметры и переменные вы сможете создать такой виджет, какой только захотите, всё упирается только в вашу фантазию и время. Делитесь вашими конфигурационными файлами в комментариях!

4 комментария

  1. Аватар Victor 28 сентября, 2020 Ответить
    • Аватар admin 29 сентября, 2020 Ответить
  2. Аватар Ivan 29 сентября, 2020 Ответить
  3. Аватар Victor 29 сентября, 2020 Ответить

Ответить

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: