Conky — очень многофункциональное приложение для создания панелей. Если поискать в интернете, то можно найти массу очень красивых примеров конфигураций conky с использованием lua. Мы же поговорим о создании панелей, включающих только текст (дешево и практично).
РЕКОМЕНДУЕМ: Лучший файл менеджер в Linux
Наша первая conky-панель
Создадим простую панель в нижней части экрана с помощью следующего кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
background yes use_xft yes xftfont Droid Sans Mono:size=8:bold update_interval 0.5 total_run_times 0 own_window yes own_window_class Conky own_window_type desktop own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager own_window_argb_visual yes own_window_argb_value 255 double_buffer yes minimum_size 1090 0 default_bar_size 100 10 draw_shades no draw_outline no draw_borders no draw_graph_borders yes default_color white default_outline_color white alignment bl gap_x 0 gap_y 0 no_buffers yes uppercase no cpu_avg_samples 2 net_avg_samples 1 override_utf8_locale yes use_spacer right TEXT CPU_0: ${color lightGreen}${cpubar cpu0} ${color green}${execi 300 sensors | grep Core\ 0 | cut -c18-19}°C$color \ ${offset 50}RAM: ${color #00FFFF}${membar} ${color #007FFF}$mem / $memmax$color \ ${offset 50}/home: ${color #E75480}${fs_bar /home} ${color red}${fs_used /home} / ${fs_size /home}$color \ ${offset 50}Volume: ${color #AAAAAA}${mixerbar}$color ${mixer vol}% CPU_1: ${color lightGreen}${cpubar cpu1} ${color green}${execi 300 sensors | grep Core\ 1 | cut -c18-19}°C$color \ ${offset 50}SWAP: ${color #00FFFF}${swapbar} ${color #007FFF}$swap / $swapmax$color \ ${offset 50}/: ${color #E75480}${fs_bar /} ${color red}${fs_used /} / ${fs_size /}$color \ ${offset 50}Uptime: $uptime |
Конфигурационный файл состоит из двух частей: описание свойств панели и само содержимое (после слова TEXT). Можете сохранить этот файл в домашнем каталоге под именем .conkyrc. Это имя конфигурационного файла по умолчанию. Если вы решите, что вам хватит одной панели, то можете просто запускать conky без дополнительных параметров. Если же вам требуется несколько панелей, то нужно использовать ключ -c. Например:
1 |
conky -c ~/.conkyrc1 # где conkyrc1 - конфигурационный файл для еще одной панели. |
Разберем наиболее интересные параметры первой части:
- xftfont — шрифт, применяемый по умолчанию для отображения содержимого панели;
- update_interval — временной интервал между обновлениями содержимого. Обычно с помощью conky отображают полезную системную информацию, которая периодически меняется. Сам conky не может узнать, что выводимые значения изменились, поэтому он сам вынужден регулярно себя перерисовывать, чтобы показывать актуальные данные;
- own_window_argb_visual и own_window_argb_value. Первый включает возможность управлению прозрачностью панели, а второй — задает значение прозрачности (от 0 до 255). Значение 255 означает, что панель полностью НЕ прозрачна;
- minimum_size — задает минимальные размеры панели. Требует указания двух значений: минимальная ширина и минимальная высота. В примере выше для ширины выбран размер экрана виртуальной машины, а для высоты — 0. Ноль в данном случае означает, что масштабирование по высоте будет осуществляться на основании содержимого. Если вы решите использовать приведенную конфигурацию, то вам придется подправить этот параметр, чтобы панель соответствовала размерам экрана;
- default_bar_size — размер индикаторов, который будет использован по умолчанию. Индикаторы в conky чем-то похожи на индикаторы прогресса, но могут отображать всевозможные данные;
- alignment — определяет относительно какой позиции осуществлять выравнивание панели на экране. Допустимы значения bl ( bottom_left), bm ( bottom_middle), br ( bottom_right), tl ( top_left), tm ( top_middle), tr ( top_right), ml ( middle_left), mm ( middle_middle), mr ( middle_right). Например, если выбрано значение bl, то левый нижний угол панели окажется в левом нижнем углу экрана, а если выбрано mm, то панель окажется ровно по середине и т.д.;
- gap_x и gap_y — отступ от точки выравнивания по оси x и по оси y. Например, если точка выравнивания — правый нижний угол, то отступы будут сделаны влево и вверх;
- own_window_colour — цвет фона. Этот параметр в примере не приводится, но может кого-то заинтересовать, поэтому я не мог его не указать;
- use_spacer — определяет необходимость использования заполнителей для выдерживания постоянной ширины выводимых на панели значений (например, объем доступной оперативной памяти или объем занятого swap-пространства). Без этого параметра надписи в панели будут «плавать».
Панель закреплена вдоль всей нижней части экрана, чтобы она располагалась в противовес панели задач tint2, которая находится сверху.
Теперь немного относительно содержимого. Если вы хотите вывести какой-то текст, то можете его набрать и он отобразится в левом верхнем углу панели. Все просто, но не особо интересно. Гораздо больший интерес для нас представляют conky-переменные:
- cpubar — индикатор нагрузки на процессор. В качестве параметра принимает имя ядра;
- membar — индикатор использования оперативной памяти;
- swapbar — индикатор использования swap-раздела;
- fs_bar — индикатор занятого пространства файловой системы, указанной в качестве параметра;
- mixerbar — индикатор громкости;
- mem и memmax — объем занятой и доступной памяти;
- swap и swapmax — объем занятой и доступной памяти в swap-разделе;
- mixer — текущий уровень громкость (от 0 до 100);
- uptime — время работы системы;
- execi — результат выполнения консольной команды или скрипта;
- offset — отступ в пикселях по оси x, который нужно сделать между выводимыми надписями;
- color — цвет, который должен иметь выводимый текст (по умолчанию — белый).
Сделаю несколько замечаний. В приведенной панели для отображения текущей температуры процессора используется вывод команды sensors, входящей в состав пакета lm_sensors. Однако у меня на виртуальной машине она не работает, поэтому вывод пуст. На физическом компьютере такие проблемы не наблюдаются. Если у вас больше ядер и позволяет размер монитора, то дополните список до нужного количества. То же самое касается любых накопителей или разделов жесткого диска, для которых вам может быть интересно узнать объем занятого пространства. Обращаю внимание, что новая строка в разделе TEXT из файла конфигурации панели означает новую строку и при ее отображении на экране. Чтобы выводить длинные цепочки значений, как в примере, используется символ \. Сам он не выводится, но указывает, что переход на новую строку учитывать при отображении не следует.
Для работы переменных mixerbar и mixer требуется включенный модуль ядра snd_pcm_oss. Не могу не привести быстрые клавиши для изменения громкости и отключения звука в Openbox (добавьте в ~/.config/openbox/rc.xml):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<keybind key="W-0"> <action name="Execute"> <command>amixer -q sset Master 5%+</command> </action> </keybind> <keybind key="W-9"> <action name="Execute"> <command>amixer -q sset Master 5%-</command> </action> </keybind> <keybind key="W-8"> <action name="Execute"> <command>amixer -q sset Master toggle</command> </action> </keybind> |
Выделяем место для панели
Если вы запустите какое-нибудь приложение на весь экран, то оно перекроет нашу панель. А нам бы хотелось, чтобы она была видна постоянно. Но есть простое решение. Для этого нам потребуется только obconf. Измените с помощью этой утилиты нижний отступ.
Больше панелей
Еще не лишне иметь панель, на которой отображается время, сетевая нагрузка и уведомления о почте. Удобнее всего разместить все это на отдельном мониторе, но попробуем в качестве эксперимента разместить все на одном (над уже имеющейся панелью). Я бы хотел, чтобы часы были выровнены по центру, сетевая нагрузка — по правому краю, а почтовые уведомления — по левому. Конечно, все это можно разместить и на одной панели, но учитывайте интервалы обновления, которые для этих данных отличаются.
Сначала создадим файл ~/.conkyrc1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
background yes use_xft yes xftfont a_LCDNova:size=25:Regular update_interval 1.0 own_window yes own_window_class Conky own_window_type desktop own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager own_window_argb_visual yes own_window_argb_value 255 double_buffer yes minimum_size 350 0 default_bar_size 100 10 draw_shades no draw_outline no draw_borders no draw_graph_borders yes default_color white default_outline_color white alignment bl gap_x 344 gap_y 31 no_buffers yes uppercase no cpu_avg_samples 2 net_avg_samples 1 override_utf8_locale yes use_spacer right TEXT ${color 03C03C}${alignc}${time %a %d %b %T} |
Большинство параметров мы уже успели разобрать, поэтому повторять их разъяснение я не буду. Обращу лишь внимание, что вам понадобится шрифт a_LCDNova, который хорошо подходит для отображения цифровых часов. Обновлять панель достаточно каждую секунду.
Далее создаем файл ~/conkyrc2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
background yes use_xft yes xftfont Droid Sans Mono:size=8:bold update_interval 0.8 total_run_times 0 own_window yes own_window_class Conky own_window_type desktop own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager own_window_argb_visual yes own_window_argb_value 255 double_buffer yes minimum_size 384 0 default_bar_size 100 10 draw_shades no draw_outline no draw_borders no draw_graph_borders yes default_color white default_outline_color white alignment br gap_x 0 gap_y 31 no_buffers yes uppercase no cpu_avg_samples 2 net_avg_samples 1 override_utf8_locale yes use_spacer right TEXT ${alignr}Down [ ${color orange}${totaldown enp0s3}$color ]: ${color yellow}${downspeedgraph enp0s3 12,200 FFFFFF FF0000 -l -t} ${color yellow}${downspeed enp0s3}$color ${alignr}Up [ ${color FC0FC0}${totalup enp0s3}$color ]: ${color DF73FF}${upspeedgraph enp0s3 12,200 FFFFFF FF0000 -l -t} ${color DF73FF}${upspeed enp0s3}$color |
Здесь вам может понадобится поменять имя сетевого интерфейса (в примере — enp0s3). К тому же, для визуализации динамики использования сети используются элементы downspeedgraph и upspeedgraph, которые показывают не только текущее значение, как обычный индикатор. но и хронологию изменений за последнее время.
И наконец ~/.conkyrc3:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
background yes use_xft yes xftfont Droid Sans Mono:size=17:bold xftalpha 0.1 update_interval 1.0 total_run_times 0 own_window yes own_window_class Conky own_window_type desktop own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager own_window_argb_visual yes own_window_argb_value 255 double_buffer yes minimum_size 344 0 default_bar_size 100 10 draw_shades no draw_outline no draw_borders no draw_graph_borders yes default_color white default_outline_color white alignment bl gap_x 0 gap_y 31 no_buffers yes uppercase no cpu_avg_samples 2 net_avg_samples 1 override_utf8_locale yes use_spacer yes TEXT ${color #9999FF}GMail:$color ${color yellow}${execi 30 ~/.scripts/gmail.sh}$color |
Информацию о наличии входящих сообщений получает следующий простой скрипт (в целях безопасности рекомендую ограничить права на чтение по максимуму):
1 2 3 4 5 6 7 8 9 10 |
#!/bin/bash login="ваш логин" psswd="ваш пароль" new=`curl -u ${login}:${psswd} -s "https://mail.google.com/mail/feed/atom" | grep -c "<entry>"` if [ $new != 0 ]; then echo +$new fi |
После запуска всех панелей ( conky -c ~/.conkyrc1 и т.д.) и дополнительной настройки отступов.
И это еще не все
Добавим еще несколько полезных панелей. Первая из них — календарь:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
background yes font Sans:size=8 xftfont Sans:size=8 use_xft yes update_interval 2.0 total_run_times 0 own_window yes own_window_type override own_window_transparent no own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager own_window_argb_visual yes own_window_argb_value 100 own_window_class Conky own_window_type desktop double_buffer yes draw_shades yes draw_outline yes draw_borders yes draw_graph_borders no minimum_size 250 293 default_color 00BFFF default_shade_color 000000 draw_outline no alignment bottom_right gap_x 25 gap_y 80 no_buffers yes cpu_avg_samples 2 override_utf8_locale yes uppercase no use_spacer none color0 8e8e8e color1 FCAF3E color2 FFFFFF border_width 8 TEXT ${font EtcherSkesch Inverse:size=31}${color ADD8E6}${alignr}${time %d.%m.%Y}${color}${font} ${hr 1} ${font DejaVu Sans Mono:size=20:bold}${execpi 60 cal | sed '1d' | sed '3d' | sed '2d' | sed '2d' | sed '2d' | sed '2d' | sed '2d' | sed 's/^/${alignc} /'}${font} ${hr 1} ${font DejaVu Sans Mono:size=20}${color0}${execpi 60 DJS=`date +%_d`; cal | sed '1d' | sed '/./!d' | sed 's/$/ /' | fold -w 21 | sed -n '/^.\{21\}/p' | sed 's/^/${alignc} /' | sed /" $DJS "/s/" $DJS "/" "'${color1}'"$DJS"'${color2}'" "/}${font} |
Не будем особо разбираться в содержимом. Единственное, что важно: для корректного отображения панели в системе должны быть установлены шрифты DejaVu и EtcherSkesch Inverse.
Аналогично создадим панель для отображения активных процессов:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
background yes font Sans:size=8 xftfont Sans:size=8 use_xft yes update_interval 2.0 total_run_times 0 own_window yes own_window_type override own_window_transparent no own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager own_window_argb_visual yes own_window_argb_value 100 own_window_class Conky own_window_type desktop double_buffer yes draw_shades yes draw_outline yes draw_borders yes draw_graph_borders no minimum_size 250 293 default_color 00BFFF default_shade_color 000000 draw_outline no alignment br gap_x 407 gap_y 80 no_buffers yes cpu_avg_samples 2 override_utf8_locale yes uppercase no use_spacer none color0 8e8e8e color1 FCAF3E color2 FFFFFF border_width 8 TEXT ${color ADD8E6}${font EtcherSkesch Inverse:size=31}Name${offset 75}PID${offset 36}CPU${offset 36}MEM${font}${color} ${hr 1} ${font DejaVu Sans Mono:size=15}${color1}${top name 1}${color} ${color2}${top pid 1} ${offset 40}${top cpu 1} ${offset 40}${top mem 1}${color}${font} ${font DejaVu Sans Mono:size=15}${color1}${top name 2}${color} ${color2}${top pid 2} ${offset 40}${top cpu 2} ${offset 40}${top mem 2}${color}${font} ${font DejaVu Sans Mono:size=15}${color1}${top name 3}${color} ${color2}${top pid 3} ${offset 40}${top cpu 3} ${offset 40}${top mem 3}${color}${font} ${font DejaVu Sans Mono:size=15}${color1}${top name 4}${color} ${color2}${top pid 4} ${offset 40}${top cpu 4} ${offset 40}${top mem 4}${color}${font} ${font DejaVu Sans Mono:size=15}${color1}${top name 5}${color} ${color2}${top pid 5} ${offset 40}${top cpu 5} ${offset 40}${top mem 5}${color}${font} ${font DejaVu Sans Mono:size=15}${color1}${top name 6}${color} ${color2}${top pid 6} ${offset 40}${top cpu 6} ${offset 40}${top mem 6}${color}${font} ${font DejaVu Sans Mono:size=15}${color1}${top name 7}${color} ${color2}${top pid 7} ${offset 40}${top cpu 7} ${offset 40}${top mem 7}${color}${font} ${font DejaVu Sans Mono:size=15}${color1}${top name 8}${color} ${color2}${top pid 8} ${offset 40}${top cpu 8} ${offset 40}${top mem 8}${color}${font} ${font DejaVu Sans Mono:size=15}${color1}${top name 9}${color} ${color2}${top pid 9} ${offset 40}${top cpu 9} ${offset 40}${top mem 9}${color}${font} |
Для ее отображения вам понадобятся те же шрифты.
Их уже можно будет увидеть не всегда, а только на чистом рабочем столе, но не так часто это и требуется (для быстрого сворачивания-разворачивания окон используйте стандартное сочетание клавиш Win + D).
Не забудьте про автостарт conky
Чтобы все панели появлялись автоматически при запуске Openbox, сначала создадим подобный скрипт ( ~/.scripts/start_conky.sh):
1 2 3 4 5 6 7 8 |
#!/bin/sh conky -c ~/.conkyrc conky -c ~/.conkyrc1 conky -c ~/.conkyrc2 conky -c ~/.conkyrc3 ( sleep 2s && conky -c ~/.conkyrc_calendar ) & ( sleep 2s && conky -c ~/.conkyrc_processes ) & |
Если не использовать задержку ( sleep) при запуске двух последних панелей, то они могут не отобразиться.
А теперь, как обычно, добавляем этот скрипт в список приложений для автозапуска в наш ~/.config/openbox/autostart:
1 2 3 4 5 6 7 8 9 |
nitrogren --restore & APPS='sakura xxkb compton tint2 start_conky.sh' (for X in $APPS ; do ($X &) ; done) & |
Заключение
На этом мы пока что завершаем серию статей про настройку Openbox. Конечно, существуют и другие интересные утилиты, которые позволяют сделать Openbox еще красивее и ярче, но мой опыт работы с ними ограничен. В результате многочисленных экспериментов я пришел к описанному сочетанию, которое меня устраивает. Думаю, что вы без труда сможете сами расширить свой Openbox (если понадобится) и подобрать то, что подходит именно вам.
РЕКОМЕНДУЕМ: Самые быстрые и легкие дистрибутивы Linux