I was excited to learn about two new terminal emulator app which seemed to have a lot of cool new features, warp and wave. Then I looked closer and found that both are a no go for me.
Warp is closed source and you need to create an account to use your terminal. Jebus Christus, no, thanks, but no.
Wave is an Electron app. While that’s better than not having a Linux version, I’ve seen how Electron apps behave. They are the ones which hog all memory and get killed by the OS first. So that’s a no from me too.
I guess I keep my Tilix for now.
I think the issue fundamentally is that this isn’t what terminal emulators are. The terminal emulator initializes a TTY session and enters a shell environment (sh, zsh, fish, etc). The medium is text and cannot be anything else.
This is 90s thinking. Why must terminal emulators only be text and only do things that a physical terminal could? What makes teminals so nice is not that they work on 90s technology. Some terminal emualtors can already display images. Which is great. And the ideas they are introducing are still fundamentally text based, but are geared towards structuring that texts a bit more than a constant stream of characters on the screen.
Skill issue. Pipe your output to something (like a file or the “less” command)
This is a convenience issue not a skill issue. Yes you can pipe output to things but you need to know before hand that you want to do that. And with less you lose that output once you close less. And with files you have to clean them up after the fact. Both of these are inconvenient and need to be thought of before you run a command. IMO it would be nice to just run a command and then be able to collapse or expand or search its output after the fact and not have to preempt everything beforehand.
The argument that you can already do that in a much less convenient way is not a very good argument.
This is 90s thinking. Why must terminal emulators only be text and only do things that a physical terminal could?
I keep trying to imagine what abandoning TTY interfaces in Linux would look like and I can’t comprehend the rework that would be required. It’s so fundamentally different.
For example, how would the SSH protocol work? How would that be compatible? Would we have to abandon SSH or always X forward?
There is definitely a pressure to extend beyond standard TTY. Tmux captures mouse action and has a window management system. fish shell has autocomplete. But both of these still use the same medium of text.
I may simply lack imagination.
Thinking about it some more I don’t think we would need to abandon the whole TTY to get a good set of the features. What is basically required for a lot of the features is more communication between the shell and the terminal. There is already some communication for basic things - like raw mode and alternative buffers, colors and even images. These are how TUI programs like vim or screen/tmux function and how you can exit them without losing what was previously in the buffer.
I wonder if markers for the prompt and start/end of command output would probably enable a lot smarter virtual terminals with only some minor additions to the VT100 protocols. Possibly some extra data could be sent as well - like optional tooltip data maybe or even supporting actions that when the user clicks something it can send a response back to the shell. Maybe like a retry button on previous commands for example.
There is quite a lot that could be done if the terminal and shells had better protocals to communicate between each other. I dont think these will change overnight though so seeing terminal emulators try out these features to find what people like/want to use IMO is a good thing to see where we can take things in the longer term.
Would we have to abandon SSH or always X forward
No we would not. At the end of the day a TTY is just a input and output pipe between the terminal and the program running on the shell with a specific protocal VT100 (or some bastardized version of that - looking at you xterm). This is what network protocals are as well - just with different protocals in play. So you can do a lot over that connection with changes to the protocals. No need for xforwarding at all.