Notty – a new kind of terminal written in Rust
github.com
github.com
There is one narrow sense in which its viable - you could have a terminal with a browser engine and javascript VM embedded inside it, and a command to open up a browser window and perform HTTP exchanges (either over the tty or through a TCP connection). This isn't really a new terminal, though, this is just a new way to open a web browser.
I'll just mention that, given the HN bump, this might be a good time to write a more thorough contributor guide.
img = Base64.strict_encode64(IO.binread('guernica.jpg'))
mime = Base64.strict_encode64('image/jpeg')
puts "\x1b_[14;80;16;4##{mime}##{img}\u{9c}"
https://github.com/withoutboats/notty/blob/master/scaffoldin...base64 is a very cool idea!
I hope notty will succeed to define a new text protocol for terminals. We need that a lot!
The first step of this project was implementing an ANSI terminal, but with an eye toward abstracting ANSI commands into more fundamental building blocks, so that the analogous set of notty commands are already more powerful than ANSI commands (in the sense that actions that would require multiple ANSI commands can be performed in 1 notty command). This is done, excepting for bugs (there are many).
I narrowed down the immediate term goals for radical new features to three: images, a minimal internal line discipline, and dividing the screen into multiple grids. I chose these because the first is a clear differentiator and the other two are very fundamental. Simultaneously, we're working on getting a reasonable terminal off the ground for dogfooding. Once we have that, the next step is writing a curses-like library that takes advantage of notty's features, as well as a shim to run programs written against that library in non-notty terminals. Then we'll have a solid base for adding more features.
As of right now, it is already an ANSI terminal which accepts a cleaner escape sequence and supports 24-bit color, barring bugs.
I hope someone actually finishes one of these 'next gen' terminals that keep getting abandoned.
I think one thing that hurts other next gen terminals (and indeed, there have been many!) is that they've tended to change the nature of the terminal in totally backward incompatible way. They end up being totally new platforms that are 'terminal inspired,' which means they also need totally new ecosystems. notty is a much less ambitious pivot. Its just an escape protocol that, in theory, any terminal could be extended to accept.
If it does this then it is heading into GUI application territory. I wonder if an existing GUI application could be extended to add command-line features to end up at the same place. Or does such a thing already exist? This might even be a faster way to get to this goal.