Polybar (Русский)
Состояние перевода: На этой странице представлен перевод статьи Polybar. Дата последней синхронизации: 30 июля 2019. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.
polybar — быстрый и лёгкий инструмент для создания статус-баров. Он нацелен на лёгкую персонализацию, используя множество модулей и позволяя, например, отображать рабочие столы, дату или громкость звука. Особенно Polybar полезен в оконных менеджерах без панели или с её ограниченной функциональностью, таких как awesome или i3. Polybar также можно использовать и в окружениях рабочего стола, например, в Plasma.
Установка
Установите пакет polybar . Экспериментальная версия доступна в пакете polybar-git AUR .
Настройка
Скопируйте пример конфигурационного файла из /usr/share/doc/polybar/config в $XDG_CONFIG_HOME/polybar/config
Запуск Polybar
Polybar можно запустить со следующими параметрами:
Usage: polybar [OPTION]. BAR -h, --help Display this help and exit -v, --version Display build details and exit -l, --log=LEVEL Set the logging verbosity (default: WARNING) LEVEL is one of: error, warning, info, trace -q, --quiet Be quiet (will override -l) -c, --config=FILE Path to the configuration file -r, --reload Reload when the configuration has been modified -d, --dump=PARAM Print value of PARAM in bar section and exit -m, --list-monitors Print list of available monitors and exit -w, --print-wmname Print the generated WM_NAME and exit -s, --stdout Output data to stdout instead of drawing it to the X window -p, --png=FILE Save png snapshot to FILE after running for 3 seconds
Но скорее всего, вы будете запускать Polybar с оконным менеджером, см. раздел #Запуск с оконным менеджером.
Пример конфигурационного файла
Пример простого конфигурационного файла:
[bar/mybar] modules-right = date [module/date] type = internal/date date = %Y-%m-%d%
Он создаёт статус-бар mybar с модулем date .
Также по умолчанию polybar создаёт пример со многими преднастроенными модулями в файле /usr/share/doc/polybar/config .
Примечание: Пример конфигурационного файла может по умолчанию не работать и его необходимо настроить под свои нужды.
Запуск с оконным менеджером
Создайте исполняемый файл, содержащий процесс загрузки, например, $HOME/.config/polybar/launch.sh :
#!/bin/bash # Завершить текущие экземпляры polybar killall -q polybar # Ожидание полного завершения работы процессов while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done # Запуск Polybar со стандартным расположением конфигурационного файла в ~/.config/polybar/config polybar mybar & echo "Polybar загрузился. "
Данный скрипт означает, что при перезагрузке оконного менеджера также перезагрузится и Polybar.
bspwm
Если вы используете bspwm, добавьте в bspwmrc :
$HOME/.config/polybar/launch.sh
i3
Если вы используете i3, добавьте в его конфигурационный файл:
exec_always --no-startup-id $HOME/.config/polybar/launch.sh
Решение проблем
Cannot open shared object file libjsoncpp.so
Попробуйте переустановить Polybar, как описано в issue на GitHub.
Если проблема не решится, попробуйте установить пакет jsoncpp .
Смотрите также
Retrieved from «https://wiki.archlinux.org/index.php?title=Polybar_(Русский)&oldid=741832»
Настройка Arch Linux i3wm и Polybar
На своем сайте по Arch Linux https://ordanax.github.io я расписал все подробно, что и как я ставил. Тут же хочу немного расписать немного об Arch Linux + i3WM.
i3 это не процессор от Intel, это тайловый оконный менеджер. Тайловый означает, что окна открываются не как вы привыкли с наложением друг на друга, а плиткой.
Я давно присматривался к тайлингу и к i3wm и даже несколько раз устанавливал, но мне казалось все очень не привычным.
Сейчас же когда я уже 4 месяца работаю в i3wm могу сказать, что это пожалуй лучшее из всего что я пробовал в мире линукс из DE* и WM*.
Если вы начинающий пользователь, то конечно не нужно рассматривать i3wm для постоянного использования. Лично я когда впервые использовал i3wm, то я даже не знал как запустить браузер т.к. тут используются а 90% случаем горячие клавиши. И если вы не знаете какая комбинаия клавиш что запускает то вам тут делать не чего.
Конечно когда вы сами все под себя настраиваете, то вам практически ничего не нужно запоминать. Также вы желаете как вам это удобнее и на тех клавишах которые вам больше нравятся или привычнее.
Панелька вверху так называемый Polybar позволяет вывести на панель практически любую информацию. Будь то погода, курс валют, биткойна, количество обновлений, свободное место на диске, температуру процессора, скорость интернета, загрузку ОЗУ и все что вы только можете придумать.
Я долгое время был на XFCE (это легкое окружение рабочего стола), но я стал замечать что я больше 90% функционала не использую и мне кажется все это лишним. А в последний раз когда я тестировал i3wm и потом вернулся на XFCE, я увидел что тут мне не достает той гибкости которая есть в i3 и после этого я уже окончательно решился на переезд …
Если вам интересно попробовать тайлинг, то тут вы сможете найти мои настройки и подстроить их под себя https://github.com/ordanax/dots
Будут вопросы пишите в телеграм чат https://t.me/linux4at
*DE (desktop environment) — окружение рабочего стола.
*WM (Windows Manager) — оконный менеджер. По сути это, то что управляет окнами.
Установка и настройка i3wm c polybar

В прошлой статье я рассказывал об минимальной установке и настройка i3wm с i3status. В этой статье мы копнем немного глубже, установим и на строим i3wm c polybar. Так же установим необходимые скрипты. Заменим привычный pamac на упрощенный индикатор обновлений.
Установка и настройка i3wm + polybar
Ссылки
Нам понадобится:
1. i3wm — оконный менеджер или его форк (ответвление) i3-gaps
2. Polybar — наша панелька
3. dmenu — утилита для запуска программ
4. ttf-font-awesome — шрифтовые иконки
5. feh — установка обоины на рабочий стол
6. pcmanfm — файловый менеджер
7. gvfs и udiskie — для авто монтирования внешних дисков
8. xorg-xbacklight — для управлением яркостью экрана. (На AMD не работает, нужно brightnessctl
9. geeqie — для просмотра фото
10. tumbler — для отображения миниатюр фото
11. sakura — терминал
12. picom — для прозрачности окон и для устранения тиринга (вместо compton)
13. ttf-weather-icons — Иконнки для скрипта погоды
14. jq — этот пакет также нужен для скрипта для отображения погоды
15. tlp — для скрипта отображения количества обновлении
16. ttf-clear-sans — хороший шрифт
17. pacman-contrib — зависимость для скрипта по обновлениям
18. playerctl — для управления горячими клавишами аудиоплеера
19. speedtest-cli — для полибар скрипта, который отображает скорость интернета
20. networkmanager — для Wi-fi
Ставим необходимые пакеты.
#pacman -S i3-wm dmenu pcmanfm ttf-font-awesome feh gvfs udiskie xorg-xbacklight ristretto tumbler picom jq pacman-contrib sakura speedtest-cli networkmanager
$yay -S polybar ttf-weather-icons ttf-clear-sans tlp playerctl
Запуск автозагрузки Wi-fi апплета
systemctl enable lxdm NetworkManager
Настройки тем делаем правкой файлов настройки GTK:
Я использовал ручную настройку, если вам больше нарвится настройка с GUI то используйте для этих целей пакет lxappearance
Горячие клавиши для аудиоплеера
Чтобы работли клавиши ⏮ ⏵ ⏭ нужно не забыть поставить пакет playerctl и добавить в конфиг следующий код:
# Media player controls bindsym XF86AudioPlay exec playerctl play bindsym XF86AudioPause exec playerctl pause bindsym XF86AudioNext exec playerctl next bindsym XF86AudioPrev exec playerctl previous
Подключение скриптов
В своей настройке я использовал следующие скрипты:
1) Скрипт погоды
2) Скрипт для отображения количества обновлений в системе вместо pamac.
3) Отображения заряда батареи
4) Отображение скорости интернета
5) Отображение курса валют
Темы для Polybar
Видео демонстрация

Если есть вопросы, то пишите в Телеграм чат:
Забери пост себе на стену, чтобы легко найти! Или поделись с друзьями!
Читайте также
- Настройка OpenVPN
- Установка и настройка i3wm
Linux чат в Telegram
Есть вопрос или проблема? Задай вопрос в нашем Телеграм Linux чате
Настройка i3status в i3wm
Почти в любой ОС, или отдельных графических окружениях мы, как пользователи, привыкли к системному бару, панели на экране, на котором в Windows расположена кнопка пуск и иконки запущенных программ, в Mac OS глобальное меню активного приложения. Часто общим для всех систем является то, что на ней расположен трей с иконками запущенных программ, дата, время, и многое другое.
i3bar

Отрисовкой такой панели в i3wm занимается утилита i3bar . Она отображается вверху или внизу экрана, и содержит:
- область с кнопками переключения рабочих областей i3
- системную строку, генерируемую при помощи i3status или аналогов
- системный трей с иконками программ
i3status
i3status — это небольшая программа, которая генерирует строку состояния для i3bar . Для того, чтобы наглядно посмотреть ее в действии, запустим ее через терминал:

Если вы наблюдаете JSON вместо человекопонятной строки в консоли, то возможно у вас в конфиге i3 установлен формат вывода output_format отличный от term
Мы видим не что иное, как обычную строку, содержащую метрики системы, обновляющуюся через определенный интервал времени. По умолчанию метрики отделены разделителем в виде прямой черты, а также могут быть раскрашены в цвета.
Если верить описанию программы, то i3status хорошо оптимизирован, порождая не большое количество системных вызовов, т.к. рассчитан на частое обновление предоставляемых метрик. Это позволяет занимать минимум процессорного времени, экономить заряд батареи, и гарантировать, что даже при высокой нагрузке строка состояния будет обновляться правильно.
Модули
i3status содержит 16 встроенных модулей, из которых будет состоять выходная строка статуса. Каждый модуль имеет свой набор индивидуальных настроек, задаваемых в едином конфигурационном файле. Есть ряд общих параметров, применимых ко всем модулям. Модули в строке можно переиспользовать по нескольку раз, управляя порядком вывода.
Список доступных модулей
- IPv6 — Получает и выводит IPv6 адрес
- Disk — Отображает информацию о занятом и свободном месте в файловой системе
- Run-watch — Мониторинг определенного процесса в системе. Может использоваться как индикатор работы какой — нибудь программы, например VPN клиента
- Path-exists — Проверяет на существование путь в файловой системе
- Wireless — Позволяет выводить подключения к WIFI сети, уровень сигнала, имя точки доступа
- Ethernet — Предоставляет IP адрес и скорость соединения сетевого интерфейса
- Battery — Показ уровня заряда батареи
- CPU-Temperature — Показ температуры процессора
- CPU Usage — Использование процессора в процентах
- Memory — Использование оперативной памяти
- Load — Среднее значение загрузки системы за 1, 5 и 15 минут (Load Overage)
- Time — Время в текущей временной зоне
- TzTime — Время в заданной временной зоне
- DDate — Дата
- Volume — Управление громкостью звука
- File Contents — Вывод содержимого указанного файла
Конфигурация
Для того, чтобы начать конфигурировать содержимое данной строки, скопируем файл конфига по умолчанию к себе в домашнюю директорию:
mkdir -p ~/.config/i3status cp /etc/i3status.conf ~/.config/i3status/config
Конфигурацию условно можно разделить на 3 части:
- блок general — содержит общие параметры
- переменная order — в нее записывается порядок вывода интересующих модулей
- блоки конфигурации модулей — непосредственно настройки самих блоков с метриками
Подробную инструкцию о вариантах конфигурирования можно получить в man i3status . Я же приложу свою уже готовую конфигурацию с комментариями, как пример того, что нужно именно мне. Чтобы вывод был не скучный, предварительно я установил в систему набор шрифтов с иконками Font Awesome:
# arch linux sudo pacman -S ttf-font-awesome
После чего мы сможем искать подходящие иконки на официальном сайте, и вставлять их прямо в шаблоны вывода модулей i3status
![]()
# ~/.config/i3status/config general colors = true # включение/выключение поддержки цветов true/false interval = 1 # интервал обновления строки статуса, в секундах output_format = "i3bar" # формат вывода, устанавливаем i3bar (JSON) > # порядок вывода модулей order += "run_watch openvpn" order += "run_watch openconnect" order += "volume master" order += "wireless _first_" order += "battery all" order += "disk /" order += "memory" order += "cpu_usage" order += "cpu_temperature 0" order += "tztime local" # отслеживание процесса openvpn # служит как индикатор работы openvpn клиента # при запуске openvpn необходимо # указывать параметр --writepid /var/run/openvpn.pid run_watch openvpn pidfile = "/var/run/openvpn.pid" format = " openvpn" # если пареметр format_down оставить пустым, # то при неактивном процессе блок будет отсутствовать format_down="" > # аналогичный блок индикатор openconnect vpn клиента # требуется запуск клиента с параметром --pid-file=/var/run/openconnect.pid run_watch openconnect pidfile = "/var/run/openconnect.pid" format = " openconnect vpn" format_down="" > # управление громкостью звука volume master format = " %volume" # шаблон громкости в активном состоянии format_muted = " %volume" # шаблон громкости в состоянии muted (без звука) device = "default" mixer = "Master" mixer_idx = 0 > # индикатор WIFI wireless _first_ # шаблон вывода, можно дополнить # наименованием подключения %essid # и ip адресом %ip format_up = "%quality %frequency" format_down = "W: down" > # состояние заряда батареи battery all # шаблон вывода, можно дополнить # оставшимся временем работы %emptytime # энергопотреблением %consumption в ваттах format = "%status %percentage" # true - показ процента заряда от 0 до 100 # false - показ процента заряда от 0 до n, с учетом # изношенности аккумулятора last_full_capacity = true format_down = "No battery" status_chr = "" # статус подзарядки status_bat = "" # статус в режиме работы от батареи status_unk = "? UNK" # неизвестный статус status_full = "" # статус полного заряда path = "/sys/class/power_supply/BAT%d/uevent" # нижний порог заряда, после которого блок # будет окрашен в "color_bad" (по умолчанию красный) # подробнее в man i3status low_threshold = 10 > # отслеживаемый накопитель disk "/" # доступные переменные: # %used, %percentage_used - занятое пространство # %free, %percentage_free - свободное пространство # %avail, %percentage_avail - доступное пространство # %total - всего format = " %avail" # будет окрашен в "color_bad" (по умолчанию красный) # при достижении нижнего порога менее 10GB доступного пространства low_threshold = "10" threshold_type = "gbytes_avail" format_below_threshold = " Warning: %avail" > # миниторинг оперативной памяти memory # доступные переменные: # %total, percentage_total # %used, percentage_used # %free, percentage_free # %available, percentage_available # %shared, percentage_shared format = " %used" # порог, при котором вывод окрасится в # желтый (degraded) или красный (critical) # а формат вывода изменится на format_degraded threshold_degraded = "1G" threshold_critical = "200M" format_degraded = "MEMORY < %available"> # температура процессора cpu_temperature 0 format = " %degrees" # верхний порог температуры, при достижении которого # вывод окрасится красным, # и формат изменится на format_above_threshold max_threshold = "80" format_above_threshold = " %degrees" path = "/sys/class/thermal/thermal_zone0/temp" > # использование центрального процессора cpu_usage # %usage - процентное использование ЦП # %cpu - начиная с %cpu0 и далее показывает использование ядер format = " %usage" # доступны параметры: # degraded_threshold, окрас в желтый, по умолчанию 90 # max_threshold, окрас в красный, по умолчанию 95 # и кастомные форматы для них # format_above_degraded_threshold и format_above_threshold > # вывод даты и времени по заданному формату tztime local format = " %d %b %H:%M:%S" >
Расширение штатного функционала
Что касается расширения i3status сторонними модулями: нет встроенного механизма запуска сторонних сценариев или команд. Вместо этого в man i3status предлагается при помощи своего bash скрипта оборачивать запуск i3status , и обогащать его своими собственными метриками путем дополнения строки вывода следующим образом:
#!/bin/sh i3status | while : do read line echo "mystuff | $line" || exit 1 done
Но! Данный способ будет работать только если установлен формат вывода output_format = «term» . Также, при расширении подобным способом, теряется отображение цветов (способ оптимальный, если цвета вам не нужны, и вы и так установили в блоке general основного конфига colors = false )
Если у вас установлен output_format = «i3bar» , как предлагается в данной статье, то скрипт будет выглядеть немного иначе, т.к. для i3bar вывод реализован в JSON формате. Прийдется вклиниваться в выходной JSON и изменять его, вставляя свои блоки. За основу возьмем пример скрипта обертки из репозитория i3status на github.
Предположим для примера, что мы хотим выводить в i3status время работы компьютера с момента старта системы, uptime. Получить uptime нам поможет команда uptime -p
# up 2 hours, 14 minutes uptime -p
Чтобы добавить результат в выдачу, сначала добавим в конфигурационный файл ~/.config/i3status/config следующий блок, который назовем custom_uptime :
tztime custom_uptime format = "custom_uptime" >
добавим его к order для вывода в нужном нам порядке между другими блоками. На tztime не обращаем внимания, просто копируем
# . order += "tztime custom_uptime" # .
Переработаем скрипт обертку, и сохраним в ~/bin/i3status-custom.sh , и не забудем дать права на запуск chmod +x ~/bin/i3status-custom.sh
#!/bin/bash # цвета COLOR_GREEN="#00FF00" COLOR_RED="#FF0000" # служебная функция редактирования блока function update_holder local instance="$1" local replacement="$2" echo "$json_array" | jq --argjson arg_j "$replacement" "(.[] | (select(.instance==\"$instance\"))) |= \$arg_j" > # служебная функция удаления блока function remove_holder local instance="$1" echo "$json_array" | jq "del(.[] | (select(.instance==\"$instance\")))" > # служебная функция формирования json блока # возвращает json с переданным текстом и цветом # по умолчанию без цвета # example: forming_json_block "any text" "$COLOR_GREEN" # output: function forming_json_block local body=$1 local color=$2 local json=`echo null | jq " \"$body\">"` if [[ $color ]]; then json=`echo null | jq "$json + \"$color\">"` fi echo $json > # получение значения uptime # формирование JSON с полученным текстом # примешивание нашего JSON к общему JSON function update_uptime # формируем body содержимым, которое собираемся вывести body=`uptime -p` # сформируем json блока. # вторым параметром можно передать цвет # "$COLOR_GREEN" или "$COLOR_RED" local json=`forming_json_block "$body"` # примешивание нашего JSON к общему JSON # первым параметром передаем имя блока в конфиге json_array=$(update_holder custom_uptime "$json") > # перехват JSON i3status, обогащение его своей выдачей i3status | (read line; echo "$line"; read line ; echo "$line" ; read line ; echo "$line" ; while true do read line json_array="$(echo $line | sed -e 's/^,//')" # тут вызов функции обновления uptime update_uptime echo ",$json_array" done)
По аналогии с функцией update_uptime можно реализовывать другие кастомные функции, внутри которых важно только записать в переменную body выводимый текст, а также по желанию добавить цвет вторым параметром в функцию формирования json forming_json_block . Напоследок необходимо добавить вывод своей функции в цикле.
Осталось только в конфигурационном файле i3wm заменить запуск i3status на наш собственный скрипт
bar status_command exec ~/bin/i3status-custom.sh >
Результат выглядит так:

Внимание! Прежде чем оборачивать i3status вызовом какой — либо тяжелой функции, посмотрите в сторону выноса этой функции в фоновый режим, например по расписанию crontab, а уже в i3status выводите заранее сохраненные результаты работы вашей тяжелой функции, например модулем File Contents ( read_file ). Особенно, если i3status обновляется каждую секунду.
Аналоги
Расширение функционала i3status возможно, но не очень изящно потому, что программа изначально не содержит для этого никаких штатных возможностей. Однако есть более настраиваемые аналоги, например:
Эта публикация лицензируется в соответствии с Attribution-NonCommercial 4.0 International лицензией.