Reading up on terminal-emulators
6 deep · digging since mar 10
- 1.3.0 - Release Notes
Ghostty 1.3.0 adds highly requested features including scrollback search, native scrollbars, click-to-move-cursor in shell prompts, key tables, command-finish notifications, and improved text rendering for Brahmic scripts.
Takes
Sharing some more UI previews for Superlogical, this time the "tab peek." If you three-finger swipe down, you can "peek" at the other session tabs. These are live-updating, metal-rendered previews including splits. If you keep dragging, you enter a "mission control" style mode. This is one of those UI patterns that once you get used to, you mindlessly find yourself doing it ALL THE TIME. It's a great way to quickly take a look at everything thats going on. You aren't reading the mini text of course, but the shape of it tells you a lot about where things are. The peek pushes the terminal down off screen, it doesn't resize it, so it doesn't force any weird reflow or anything either. There's a lot more to talk about, especially about how this interacts with how we expose what needs attention so you can easily find the terminals/sessions/etc. that require your attention. Of course, you'll be able to drive this with the keyboard too. :) As always, a disclaimer: this is all early work subject to change, just trying to share some of what we're building in public. A lot of the UI experiential design is @almonk so follow him for more updates too!
@mitchellh
Herdr is tmux rebuilt around coding agents. Real terminals. Persistent workspaces. A sidebar showing who’s working, blocked, done, or idle. A CLI and API agents can control. I looked at how it works, the tradeoffs, and where I’d use it: https://flaviocopes.com/herdr/
@flaviocopes
Ghostty is now indisputably the fastest terminal emulator at IO throughput, by a very large margin. On ASCII, Unicode, and CSI tests, Ghostty is more than 2x (double!) faster than any other leading "fast" terminal. These changes are directly in libghostty, too, so everyone wins. `time cat 150MB_ascii.txt`: - Ghostty nightly: 575ms - Ghostty 1.3.2: 1.5sec - Alacritty: 1.2sec - Kitty: 1.7sec - Warp: 3.8sec - iTerm2, Terminal: stopped after 60s `time cat 150MB_unicode.txt` (mixed languages): - Ghostty nightly: 536ms - Ghostty 1.3.2: 1.22sec - Alacritty: 1.05s - Kitty: 1.35s - Warp: 3.4s - iTerm2, Terminal: stopped after 60s `DOOM-Fire-Zig` (an IO test): - Ghostty nightly: 842fps - Ghostty 1.3.2: 532fps - Kitty: 485fps - Alacritty: 593fps - Warp: 577fps - iTerm2, Terminal: 60fps (yes, 60) To quickly address the "cat speed doesn't matter" naysayers: this is a direct test of how many bytes/second you can push through a terminal. It doesn't cover just "read big file" but also "how much can a TUI do". The tests above test various shapes of inputs (plain ascii, unicode/wide chars, csi-heavy loads, etc.). IO throughput is incredibly important. Most of these improvements apply to libghostty-vt consumers too, so any libghostty-based terminals will instantly see huge throughput improvements by simply upgrading (ABI compatible). I'll cover the exact improvements in a blog post in the future. These results are the result of 6 separate optimizations.
@mitchellh
Awesome to see! Let's replace the Alacritty core with libghostty-rs. If there are any shortcomings in the libghostty API I'll address them immediately. I know some view Ghostty as competitive to Warp at a GUI level, but the goal was always to empower other terminal apps via libghostty and there was no other vehicle to get that out than to build a GUI too (similar to Alacritty and their vte crate). I don't think I've ever talked negatively about Warp online (except maybe the login thing they fixed ages ago), I've always respected that they're trying something different. I know Warp has moved on to being a much bigger vision than "just" a terminal, but let's modernize that terminal core. :)
@mitchellh
Introducing wterm (“dub-term”) A terminal emulator for the web → DOM rendering — not canvas → Select text, copy/paste, ⌘+F, a11y → Dirty-row tracking, 24-bit color, themes → WebSocket transport with reconnection → Zig core compiled to ~12 KB WASM → just-bash, local, SSH
@ctatedev