This has a lot of great ideas, and I like the idea of an enhanced terminal in general, but I think it goes too far. Having to reimplement a large number of commands to support this concept of separate view and data streams is complex.
A few ideas I'd like to see integrated into an existing shell/terminal in a backwards compatible way:
* Syntax highlighting/tokenization of the command as you type. Show the different parts of the command you're typing: the executable, the arguments, the pipes, the IO redirects, shell constructs like loops and conditionals, quoted strings.
* Maybe command-specific syntax awareness like highlighting the flags and file arguments differently, regular expressions for sed/grep, awk syntax, etc. This would require descriptors for each command, similar to how autocomplete works?
* Enhanced output formatting, like the clickable paths, displayable images, etc. But rather than modifying/rewriting the program, have a way to describe how to display the output of certain commands. The shell should be able to figure out what the final command in a pipeline is, right?
* Detect and display binary file formats based on the content rather than the filename so support existing commands.
A few ideas I'd like to see integrated into an existing shell/terminal in a backwards compatible way:
* Syntax highlighting/tokenization of the command as you type. Show the different parts of the command you're typing: the executable, the arguments, the pipes, the IO redirects, shell constructs like loops and conditionals, quoted strings.
* Maybe command-specific syntax awareness like highlighting the flags and file arguments differently, regular expressions for sed/grep, awk syntax, etc. This would require descriptors for each command, similar to how autocomplete works?
* Enhanced output formatting, like the clickable paths, displayable images, etc. But rather than modifying/rewriting the program, have a way to describe how to display the output of certain commands. The shell should be able to figure out what the final command in a pipeline is, right?
* Detect and display binary file formats based on the content rather than the filename so support existing commands.