Вышла первая версия luastatus — универсального генератора данных для панелей состояния, поддерживающего i3bar и dwm. Программа написана на C и распространяется под лицензией GNU LGPL v3.
Большинство генераторов данных для панелей состояния тайловых WM либо обновляют информацию по таймеру (например, conky), либо требуют сигнал для перерисовки (например, i3status). Панели же в составе окружений рабочего стола, как правило, обновляют информацию мгновенно и автоматически, как и luastatus.
luastatus работает с загружаемыми модулями двух типов: плагины (отвечают за работу с каким-либо источником событий) и так называемые barlib’ы (отвечают за работу с конкретной панелью состояния).
Схема работы luastatus следующая:
- Один из плагинов сообщает, что произошло какое-то событие, и генерирует описывающий его Lua-объект.
- Вызывается пользовательская функция (
widget.cb
) с этим объектом в качестве аргумента. - Возвращённое ей значение передаётся в barlib.
Также barlib может оповестить программу-виджет о том, что с виджетом произошло какое-либо событие.
В таком случае barlib также генерирует Lua-объект, описывающий это событие, и пользовательская функция (widget.event
) вызывается с ним в качестве аргумента.
Например, barlib для i3 сообщает, когда пользователь нажал на виджет, а также передаёт информацию о том, какой кнопкой было сделано нажатие, и его координаты.
На данный момент реализованы следующие плагины:
- alsa — следит за изменением громкости канала ALSA.
- fs — генерирует события по таймеру, передаёт виджету информацию о количестве занятого места в файловой системе. Также поддерживается wake-up FIFO.
- mpd — следит за громкостью и текущим плейлистом mpd.
- pipe — запускает процесс и генерирует событие каждый раз, когда он выводит в stdout строку (можно указать другой разделитель вывода). Эта строка передаётся виджету.
- timer — просто генерирует события по таймеру (например, для виджета-часов или виджетов, читающих какие-то файлы в
/proc
). Также поддерживается wake-up FIFO. - xkb — следит за текущей раскладкой клавиатуры и передаёт виджету номер группы активной раскладки и её имя.
- xtitle — следит за текущим активным окном и сообщает его заголовок.
И следующие barlib’ы:
- i3;
- dwm.
>>> Страница проекта на GitHub
>>> Страница релиза