Фон
Я начал использовать Манджаро 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
Важные ресурсы
- Главный полибарный вики
- Форматирование полибарной страницы вики
- Пользовательские полибарные подписания
- ROFI – окончательный переключатель, запуска приложения и замена DMENU – можно использовать в качестве раскрывающегося меню для полибара
- getopts (Ракушка)
- Argparse (Python)
Оригинал: “https://dev.to/haideralipunjabi/making-modules-for-polybar-shell-python-3991”