Finally found a few moments to publish one of these little projects you start just for fun, without any strong need, and then cost you hours and hours of spare time ;)

Here comes mi3stat, aka multithreaded-i3stat: basically a replacement for i3status, that uses multithreading and string caching to provide a more efficient way of having 'widgets' with different refresh intervals.

mi3stat

https://github.com/lynix/mi3stat

I started writing mi3stat because I did not agree with the i3status developers about memory usage information being needless:

(from the i3status man page)

Let’s talk about memory usage specifically. It is hard to measure memory in a way which is accurate or meaningful. An in-depth understanding of how paging and virtual memory work in your operating system is required. Furthermore, even if we had a well-defined way of displaying memory usage and you would understand it, I think that it’s not helpful to repeatedly monitor your memory usage. One reason for that is that I have not run out of memory in the last few years. Memory has become so cheap that even in my 4 year old notebook, I have 8 GiB of RAM. Another reason is that your operating system will do the right thing anyway: Either you have not enough RAM for your workload, but you need to do it anyway, then your operating system will swap. Or you don’t have enough RAM and you want to restrict your workload so that it fits, then the operating system will kill the process using too much RAM and you can act accordingly.

Without wanting to start a discussion about this, as a developer I often happen to run virtual machines (inducing a reasonable degree of memory pressure) while debugging some piece of software that might contain mem-leaks. I'd like to know when my system starts swapping before the OOM-killer pays me a visit ;)

Anyway, since I switched back to awesome I have no use for this anymore. But maybe someone else has. Have fun with it!