# Ещё один генератор строки состояния для i3bar ## Зачем? Их же навалом, разных! Просто потому что могу :) На самом деле, мне понадобился генератор с некоторыми специфическими функциями. И мне было проще сгенерировать свой скрипт, согласно i3bar JSON [ipc protocol][1]. ## Что же такого он умеет? Несколько очень простых вещей - просто посмотри в конфиг :) * Показывать текущий LA * Показывать сжатую статистику по памяти * Часики (с возможностью навесить исполнение любой программы по правому или левому щелчку мыши) * Состояние заряда батарейки для ноутбука * Температуру процессора (одно ядро, указывается файл-источник сведений) * Состояние клавиши CapsLock * Состояние одного интерфейса VPN (+ tcp health check, т.к. ovpn, например, умеет "залипать") * Уровень звука согласно pulse audio для default sink (придумывать "крутилочку" для звука я не стал, ибо там не всё так просто и "в процессе" fun скорее всего пропадёт.). Предполагается, что звук правляется через что-то ещё, например, через какой-нибудь pasystray, например. * Состояние (up|down) любого набора существующих сетевых интерфейсов. Но каждый надо описать. IP не показываются, т.к. это сжирает место на панели, а его не так-то и много. * "Кнопки" для запуска произвольных приложений. Собственно, ради этого всё и затевалось :) * "Трекать" запуск приложенй "с кнопки" и подсвечивать соответствующую "кнопку". Работает через ивенты от самого i3: на появление и на исчезновения окна с рядом свойств. * Cron! Как ни забавно это звучит, но, да. И нужен он для показывания desktop notifications, ибо системный cron не прокидывает в environment переменную с текущим dbus session. Но в этот крон можно пихнуть что угодно. ## Как это заставить работать Скрипт на perl-е, и чтобы заставить его работать нужен, собственно, сам perl, [cpanm][2], [carton][3], [cpm][4] или что-то ещё для управления перловыми модулями, а также крайне желательно наличие в системе библиотеки [lib::local][5]. При запуске необходимо убедиться, что переменная [PERL5LIB][6] установлена корректно. И не забыть в конфиге прописать что-то вменяемое. Кстати, конфиг ищется в каталогах * ~/.config/i3/i3status-anyevent.json * ~/.config/i3/config.json * ~/.i3/i3status-anyevent.json * ~/.i3/config.json [1]: https://i3wm.org/docs/i3bar-protocol.html [2]: https://metacpan.org/pod/App::cpanminus [3]: https://metacpan.org/pod/Carton [4]: https://metacpan.org/pod/distribution/App-cpm/script/cpm [5]: https://metacpan.org/pod/local::lib [6]: https://perlmaven.com/how-to-change-inc-to-find-perl-modules-in-non-standard-locations