1. 5

This is a small tool I’ve written to improve the usability of bars that expect input to come from stdin. It helps merging multiple input sources, like your window manager, system monitors etc. to avoid lengthy and error-prone shellscripts.

It works by spawning a thread for each input source and sending messages over a channel to the main thread, which then updates the data to be formatted in place and passes it to stdout. I had to implement some workarounds to allow for blocking I/O in the child threads, I will probably investigate that kind of thing in Rust further, as the corresponding parts of the standard library feel like they could use more love.

As always, comments, suggestions, other feedback and contributions are welcome.