This is certainly well done. But, I don't get the point of complex TUIs. Granted - text consoles are useful because they allow programs to get input, output, and job control, and even text selection with very little effort. It can't get simpler than printf() and friends.<p>With more complex TUIs these points don't really apply. There is a lot of effort involved to get the layout right, so why not make it nice? Text selection isn't possible with windows (I guess? Do text terminals support this stuff?).<p>Font support is awful (only 1 font size, limited font styles), text is harder to read, and so on.<p>Terminal interfaces have an ergonomic advantage over traditional GUIs in that they are not painfully context dependent: dealing with keyboard focus is annoying and slows the user down. But, it's just a cultural thing and it's easy to make graphical applications with a TUI-like input model.<p>The only arguments in favor of TUI that I can see is that they are really fast to load up (compared to ~1 sec that it takes to create an OpenGL window) and that you can easily use them over an SSH connection.<p>A last argument might be that many window managers suck at switching between windows. What bash or tmux do might be more ergonomic for some people.
Remarkably similar to a client I wrote a while back (<a href="http://github.com/enkiv2/fern" rel="nofollow">http://github.com/enkiv2/fern</a>)