0

Добавлено немного документации

This commit is contained in:
eleksir
2021-04-11 13:09:16 +03:00
parent c5ce3773ad
commit f118f9e0b2
3 changed files with 55 additions and 4 deletions

44
README.md Normal file
View File

@@ -0,0 +1,44 @@
# Ещё один генератор строки состояния для 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

11
TODO Normal file
View File

@@ -0,0 +1,11 @@
Что желательно сделать ещё.
* При рестарте i3wm (рестарте скрипта), восстанавливать список запущенных окон.
* Добавить в battery plugin отслеживание уровня заряда. Раскрашивать вывод.
Опционально звать suspend2disk, при очень низком заряде
* Добавить "крутилку" в плагин, отображающий громкость :)
* Применить Use English и использовать человекочитаемые имена встроенных
переменных.

View File

@@ -1,9 +1,5 @@
#!/usr/bin/perl
# TODO: on i3wm reload (i3status restart), restore active windows status
# TODO: make battery plugin take into account charge level, add ability to call suspend2disk on critical charge level
# TODO: More complex PA-plugin with volume adjustment of default sink
# we need to disable hash shuffling in order to make as less prints to stdout as possible
BEGIN {
unless (defined $ENV{PERL_PERTURB_KEYS}) {