what is a “modern terminal experience”?
Here are a few things that are important to me, with which part of the system is responsible for them:
multiline support for copy and paste: if you paste 3 commands in your shell, it should not immediately run them all! That’s scary! (shell, terminal emulator)
infinite shell history: if I run a command in my shell, it should be saved forever, not deleted after 500 history entries or whatever. Also I want commands to be saved to the history immediately when I run them, not only when I exit the shell session (shell)
a useful prompt: I can’t live without having my current directory and current git branch in my prompt (shell)
24-bit colour: this is important to me because I find it MUCH easier to theme neovim with 24-bit colour support than in a terminal with only 256 colours (terminal emulator)
clipboard integration between vim and my operating system so that when I copy in Firefox, I can just press p in vim to paste (text editor, maybe the OS/terminal emulator too)
good autocomplete: for example commands like git should have command-specific autocomplete (shell)
having colours in ls (shell config)
a terminal theme I like: I spend a lot of time in my terminal, I want it to look nice and I want its theme to match my terminal editor’s theme. (terminal emulator, text editor)
automatic terminal fixing: If a programs prints out some weird escape codes that mess up my terminal, I want that to automatically get reset so that my terminal doesn’t get messed up (shell)
keybindings: I want Ctrl+left arrow to work (shell or application)
being able to use the scroll wheel in programs like less: (terminal emulator and applications)
There are a million other terminal conveniences out there and different people value different things, but those are the ones that I would be really unhappy without.
So basically it’s the features that have been standard in shells and terminal emulators for the past couple of decades.
From watching the questions the author was asking others just before writing this, I think at least part of the purpose of this article is to draw attention to how the shell, the kernel, the terminal emulator and other components work together to provide these features. Or, to look at it another way, which of the components is the one responsible for each part, so that the reader might know which part they need to reconfigure if they want to achieve a particular result.
What on earth is a modern terminal?
There’s lots of terminal emulators. I like ghostty. You can just install it.
First paragraph after the introduction:
So basically it’s the features that have been standard in shells and terminal emulators for the past couple of decades.
From watching the questions the author was asking others just before writing this, I think at least part of the purpose of this article is to draw attention to how the shell, the kernel, the terminal emulator and other components work together to provide these features. Or, to look at it another way, which of the components is the one responsible for each part, so that the reader might know which part they need to reconfigure if they want to achieve a particular result.
Ooohh this is blog spam?
Sorry I thought it was a question.
The whole article basically boils down to “Install fish. Done.” lol
Yeah, most of those you get out of the box. Even on Windows.