Рубрики
Без рубрики

Создание модулей для полибара (Shell + Python)

Предпосылки я начал использовать Manjaro i3 еще в декабре 2018 года, после 3 лет Ubuntu и O … Tagged с Python, Shell, Linux, Archlinux.

Фон

Я начал использовать Манджаро i3 Еще в декабре 2018 года, после 3 лет Ubuntu и одной неудачной попытки установить Arch. Будучи долго скрываться r/unixporn Я знал, что я должен был сделать. Изучив веревки Манджаро, первое, над чем я работал, это оценить мою установку.

Я изначально установил Полибар С какой -то конфигурацией я нашел на r/unixporn Анкет Несколько недель спустя, u/adi1090x Опубликовано на Reddit Его красивый Полибарные темы Анкет Я сразу же влюбился (будучи огромным материалом) и начал их использовать. 5 месяцев спустя я все еще использую V2 его тем.

В своей работе он использовал Рофи действовать как выпадение для полибара. Многие думают, что я придумал это, но я впервые увидел это в u/adi1090x работа.

Так как я использовал Polybar, Индикатор-Kdeconnect не работал на меня. Это была важная часть моего ежедневного использования, и я очень пропустил это. После того, как я не смог использовать его с полибаром, я решил заняться созданием своего собственного, начав свое путешествие в модули полибарных.

Polybar-Kdeconnect v1

Я начал с того, что узнал, как работают полибарные модули. Любой сценарий (Python, Bash и т. Д.), Который может быть выполнен в оболочке, может использоваться в качестве модуля. Выход сценария – это то, что показано в полибаре. Polybar также позволяет выполнять сценарии на таких событиях, как Нажмите , Щелкните правой кнопкой мыши и т. д.

V1 моего модуля KDECONNECT был очень простым. Сценарий, в котором использовался kdeconnect-cli (часть Kdeconnect), чтобы проверить, подключено ли устройство или нет, и показывает значок на основе этого. Он не поддерживал несколько устройств, и единственный способ был создать копии модуля.

После делясь этим на Reddit Я получил много отзывов, предложений и идей для улучшения модуля.

День спустя я реализовал разные цвета для разных уровней батареи.

Узнав о полибарных модулях немного больше (я буду ссылаться на ресурсы в конце), я был готов дать модулю KdeConnect еще один выстрел. V2 полностью отличался от V1, настолько, что мне пришлось переписать целое (60 строк ок.) модуль.

Polybar-Kdeconnect v2

Через две недели после V1 я выпускаю Polybar-Kdeconnect v2 Анкет Среди многих улучшений следующие были наиболее важными

  • нет зависимости от kdeconnect-cli
  • Поддержка нескольких устройств с дополнительной конфигурацией
  • Parinig/unpairting из модуля
  • Одиночный скрипт

Лучшим улучшением было добавление поддержки нескольких устройств. Это сработало, проходя каждое устройство, которое знает KdeConnect, которые были из 3 типов

  • Подключен (достижимый и надежный)
  • Не подключен (не доступен и доверен)
  • Доступно (все, что осталось)

На основании их типа сценарий добавит значок с разделителем к выводимой строке. После того, как все устройства были проверены, выходная строка будет напечатана (эхо?) И отображена на полибаре. Чтобы сделать каждый значок, используемый отдельно, я использовал теги формата действий ( %{a} вещей в коде). Теги формата действия работают, выполняя некоторую команду. Поскольку я не мог назвать функцию по его имени напрямую, этот скрипт не был загружен в среде, в которой использовалась тег действий, мне пришлось найти свой скрипт, а затем вызовать функцию и передать параметры.

Вот добавление к выходной части

устройства+= “%{a1:. $ Dir/polybar-kdeconnect.sh; show_pmenu $ devicename $ deviceid $:} $ icon%{a} $ seperator “

Обратите внимание, что это не то, на что выглядит мой окончательный код

Поскольку я не очень испытываю сценарии Shell, многие участники сделали какое -то капитальное ремонт моего кода (добавление удаления кавычек и т. Д.).

Некоторые проблемы были также открыты, некоторые были решены, некоторые все еще открыты.

Чтобы исправить проблемы с кодом и следить за некоторыми соглашениями, я добавил Getopts в модуль. Я всегда задавался вопросом о способности команд использовать параметры (-f, -x и т. Д.). Если вы, как и я, не знаете, как их реализовать, Getopts – это ответ.

Чтобы предотвратить ошибки, я написал свой другой модуль в Python. Я лучше в Python, чем в Shell. Я думал о переписывании этого в Python, но его тяжелая зависимость от «Rofi» отговорила меня.

Проверьте новейшие полибарно-Kdeconnect на GitHub

Полибар-браймедиаконтроль

Я обычно использую mpd для моей музыки и MPD модуль для полибара работает отлично. Размышляя об использовании Python для написания модулей полибарных карт, я подумал о том, чтобы сделать управление медиа для браузеров. Это было бы очень похоже на модуль MPD.

Первая проблема состояла в том, чтобы отправить команды в любой браузер. AFAIK, нужно разместить какой -то сервер на машине, который отправляет команду в расширение установленного браузера. Поскольку у меня не было ни опыта, ни желания написать слишком много кода для простой задачи, я решил использовать Интеграция браузера плазмы что является отличным дополнением к KdeConnect.

Интеграция браузера плазмы Позволяет пользователю отправлять ссылки из браузера на устройство Android с помощью KDeConnect, а также позволяет управлять носителем браузера с устройства Android. Технически, он обнажает некоторые конечные точки DBUS, которые KdeConnect может использовать для управления носителем браузера, как он контролирует других медиа -игроков.

Я также использую те же конечные точки в своем модуле.

Модуль очень прост по сравнению с KdeConnect One. Я использую Pydbus Чтобы подключиться к конечным точкам DBU, и Argparse (Python, эквивалентный более ранним упоминаниям Getopts), чтобы добавить пару аргументов в сценарии.

Ранее упомянутые теги в формате действия снова использовались для создания кнопки воспроизведения/паузы.

Проверьте новейший полибар-браммедиаконтроль на GitHub

Важные ресурсы

Оригинал: “https://dev.to/haideralipunjabi/making-modules-for-polybar-shell-python-3991”