For years, I used i3pystatus, but I was frustrated by the fact that it's not flexible or extensible.<p>I considered using i3blocks, but I didn't like the limitations of its INI-style configuration.<p>I wanted the flexibility of a proper scripting language.<p>Thus, I created <a href="https://codeberg.org/amano.kenji/j3blocks" rel="nofollow">https://codeberg.org/amano.kenji/j3blocks</a> which comes with a few built-in modules.<p>j3blocks requires you to write a janet script. You can shoot your foot with scripting, but it is very flexible. You can easily write your own j3blocks modules after you learn j3blocks.<p><a href="https://codeberg.org/amano.kenji/j3blocks-extra" rel="nofollow">https://codeberg.org/amano.kenji/j3blocks-extra</a> has extra modules. j3blocks-extra has pipewire-node and pipewire-default-node. These modules allow you to monitor and control pipewire nodes on i3bar or swaybar.<p>The whole system is very flexible, but it took a month to polish it to the point where development is largely finished. It is now in maintenance mode.
There's also <a href="https://barista.run/" rel="nofollow">https://barista.run/</a> which allows you to build a very efficient custom i3bar using a go library.
Nice! I've been using babashka for doing i3blocks scripts with Clojure and is being great so far as well :)<p><a href="https://github.com/rafaeldelboni/dotfiles/tree/master/tag-linux/config/i3blocks/scripts">https://github.com/rafaeldelboni/dotfiles/tree/master/tag-li...</a>