Live data from Hacker News

State of Terminal Emulators in 2025: The Errant Champions

jeffquast.com

261–270 of 283 posts

Re: State of Terminal Emulators in 2025: The Errant Champions

#261

> Kitty and Ghostty are the only terminals that correctly support Variation Selector 15, Really? Because IIRC they "support" it by treating the preceding emoji character as being Narrow instead of Wide. This is completely unsupported by anything in the Unicode standards: the codepoint sequences that affect the East Asian Width of their first codepoints are explicitly enumerated, and none of them have emojis and/or VS…

Agreed. The only thing that VS-15 is supposed to do is give the emoji a "text presentation", which the spec suggests as "black & white". And every example they show of a text presentation is exactly the same width as the emoji presentation.

Changing a character's width from wide to narrow after it has already been output is fraught with problems for a terminal. Imagine trying to write a "narrow" text presentation emoji in the bottom right corner of the screen. You'd think it should fit, but the emoji is received before the VS-15 selector, and that doesn't fit, so the terminal is forced to wrap the text, triggering a scroll of the entire page. By the time the VS-15 arrives, there's no way to undo all of that.

And for another example, try using IRM (insert replace mode) to insert a text presentation emoji in the middle of some existing text. If it was really narrow, you'd expect it to insert enough space for just one character, but it actually inserts two spaces, only occupying one of them, and then leaving an unexpected gap. And the more of these "narrow" characters you insert, the bigger the gap becomes.

VS-16 changing a text presentation character from narrow to wide doesn't share these problems. And that behaviour is supported by the spec text, which says that emoji should generally have a square aspect ratio. And at one time the East Asian Width spec specifically mentioned VS-16 making narrow characters wide (but said nothing about VS-15 making wide characters narrow).

Re: State of Terminal Emulators in 2025: The Errant Champions

#262

Earlier quoted context omitted.

Ooh, seconded, will try right away. [EDIT]: so ... tried it ... very, very nice BUT: what of CTRL-V ???

You can do the same with ctrl+v, just use paste_from_clipboard

> You can do the same with ctrl+v, just use paste_from_clipboard

Yeah, but CTRL+V is actually used e.g. in VIM.

And I can't see a way for ghostty to "guess" what to do based on context like it does in the case something is selected.

Sorry, should have explained better.

Re: State of Terminal Emulators in 2025: The Errant Champions

#263

Earlier quoted context omitted.

For glyph width, there are codepoints classified as ambiguous width. These are mostly narrow pre-emoji symbols that have been extended with an alternate emoji representation. There's no way to predict what their width will be, even with explicit variation selectors which might just be ignored.

> These are mostly narrow pre-emoji symbols that have been extended with an alternate emoji representation. Nitpick: this is incorrect. Easy counter-examples would be arrow symbols like →. UAX #11 helpfully explains what is "ambiguous" about those characters: Ambiguous characters occur in East Asian legacy character sets as wide characters, but as narrow (i.e., normal-width) characters in non–East Asian usage. (Examp…

There are preexisting narrow symbols that were given a new emoji presentation in later standards rather than assigning a new codepoint. Text rendering engines vary on which form is the default. VTE had an option to set the preference. This can be very annoying when some arrows get the new emoji form but others in their cohort stay as narrow glyphs.

Re: State of Terminal Emulators in 2025: The Errant Champions

#264

Earlier quoted context omitted.

For glyph width, there are codepoints classified as ambiguous width. These are mostly narrow pre-emoji symbols that have been extended with an alternate emoji representation. There's no way to predict what their width will be, even with explicit variation selectors which might just be ignored.

The terminal emulator knows what font is being used so it should be possible to predict it.

The terminal application doesn't know the font. The best you can do is discover ambiguous widths by printing codepoints and checking the change in cursor position. That's a suboptimal experience.

Re: State of Terminal Emulators in 2025: The Errant Champions

#265

Earlier quoted context omitted.

As a decrepit old {COMMO} power user, anything that doesn’t give me fully integrated scripting with expect/switch/dialog and a popup script editor, honestly hasn’t been worth investing in further. So I’ve been on Linux console, Putty, and macOS Terminal ever since. My terminal.app color scheme uses P3 colors on 7% gray rather than the usual sRGB colors so that I can use an OKLCH equidistant palette, and I make extens…

> Perhaps your definition of power user is limited to uses aligned with your own? I was clearly being flippant. Terminal.app does suck but if you’re happy in it then I’m not going to judge. For what it’s worth, I cut my teeth on very limited terminals of the 80s and 90s too. But I ended up writing my own terminal emulator because I wasn’t entirely happy with any of the options available these days.

> Terminal.app does suck but if you’re happy in it

Clarification: As noted above, Terminal.app is indistinguishably suck from all the rest in the areas that are materially important to me, so no meaningful gain in happiness exists with any current alternative. I enjoy one of the specific features it offers but I’d give that up the instant a relevant-to-me improvement over the status quo was available. Perhaps someday.

Re: State of Terminal Emulators in 2025: The Errant Champions

#266

Earlier quoted context omitted.

As a decrepit old {COMMO} power user, anything that doesn’t give me fully integrated scripting with expect/switch/dialog and a popup script editor, honestly hasn’t been worth investing in further. So I’ve been on Linux console, Putty, and macOS Terminal ever since. My terminal.app color scheme uses P3 colors on 7% gray rather than the usual sRGB colors so that I can use an OKLCH equidistant palette, and I make extens…

Where could I learn more of COMMO? How do current terminal emulators fall short? Wikipedia's article was minimal.[1] [1] https://en.wikipedia.org/wiki/Commo

I would probably have to make a video, honestly. Have considered it. Usage faded out years before screen recording was accessible. I’m going to be late for class but I can’t allow that article to stand unsupported by story tidbits.

The built-in editor for all files had two modes, line-based and character based. In edit (char) mode, you edited the text file as usual. In line (command) mode, you selected lines and hit Return on them to begin execution there.

Commands were wrapped in curly braces; non-wrapped text was ignored.

The built-in phone directory was just a macro file with a dedicated keystroke; so you could structure and annotate it however you liked, and navigate it with search or with line-based mode up/down/pgup/pgdn as one would expect. Each entry was something like {dial 472627} {user x} {pass y} {ifca {goto :autologin_wwiv}} {end} with whatever niceties you enjoyed outside the curly braces.

It understood {gets} and {puts} from the modem tty (I don’t remember the actual command names) and it had conditional logic and substring index stuff.

If you needed human input, you could throw a {dialog} and get it, acting according to the result.

In modern parlance, imagine if your terminal emulator had ansible playbook support embedded into it and pressing alt-E popped up an editor for the playbook that let you start playback from any point in the script, JMP/GOTO-style.

You can see an example playbook at https://ftpmirror.your.org/pub/misc/dos/cavebbs/The%20Cave%2... inside PWRMC30S.ZIP. Read everything that isn’t a .MAC file first so that you know where to start reading. POWER.MAC is the main attraction; 53k of playbook macros serving as bionic assistance to TradeWars players.

My own archives are currently probably-lost unless I get very lucky someday, or else I’d share my own archive of playbooks built up over five years to auto-dial and auto-QWK hundreds of local BBSes for two-way mailing list packets.

Re: State of Terminal Emulators in 2025: The Errant Champions

#267
post #217

Earlier quoted context omitted.

There's always Ctrl+Insert for copy and Shift+Insert for paste. I know that there's some laptops lacking an insert key, which is terrible, but for keyboard with an insert key the Ctrl/Shift + Insert combos are useful at times.

Especially because one does not have to push three keys with the same hand, which is not nice to tendons. I think I did that for a while time ago, then forgot about it. Thanks.

I always use the opposite modifier key(s) (e.g. right control + a), which I was told to do when I learned to type Dvorak; but you're welcome.

Re: State of Terminal Emulators in 2025: The Errant Champions

#268
post #117

Work had me using the Windows Terminal for the first time ever after a life of developing on Linux. I got immediately hooked on the smart Ctrl+C and Ctrl+V (without needing to use Shift like on Linux!) For those not knowing, Windows Terminal uses Ctrl+C to abort the current process (as we'd expect) when nothing is selected , but copies when there is a selection. Similarly, Ctrl+V just pastes. So convenient!

Mac terminals yield a similar benefit, with the systemwide copy/paste Cmd+C/V not overlapping with Ctrl+C/V. Being used to that, Linux terminals become rather annoying. Yes there's other ways under Linux, but they don't have 25+ years of muscle memory associated with them, and so when the key shortcuts don't work as expected it's like nails on a chalkboard.

The tradeoff here is that Macs don't have a system key that most applications don't interpret in some way. On Windows and Linux, system key shortcuts are much easier to set up.

Re: State of Terminal Emulators in 2025: The Errant Champions

#269
post #134
post #117

Work had me using the Windows Terminal for the first time ever after a life of developing on Linux. I got immediately hooked on the smart Ctrl+C and Ctrl+V (without needing to use Shift like on Linux!) For those not knowing, Windows Terminal uses Ctrl+C to abort the current process (as we'd expect) when nothing is selected , but copies when there is a selection. Similarly, Ctrl+V just pastes. So convenient!

windows terminal is awesome and i wish it shipped with windows by default instead of having to go to the store and install it. everyone who uses it has only good things to say, and it is updated regularly by Microsoft.

It's shipped with Windows since Windows 11. Updates come via the Store (since that's a lot faster than OS updates), but it's definitely preinstalled these days

Re: State of Terminal Emulators in 2025: The Errant Champions

#270
post #117

Work had me using the Windows Terminal for the first time ever after a life of developing on Linux. I got immediately hooked on the smart Ctrl+C and Ctrl+V (without needing to use Shift like on Linux!) For those not knowing, Windows Terminal uses Ctrl+C to abort the current process (as we'd expect) when nothing is selected , but copies when there is a selection. Similarly, Ctrl+V just pastes. So convenient!

Yori is also a very capable replacement.
Post reply on HN