Mitchell could have easily snuck his competing product Rex in there but resisted. Respect.
there's a big market for "makes your life easier" tools both in B2C and B2B
maybe not that big of a market but who knows
Note, I am deliberately using a generic example, I use Ghostty but I haven't tried Rex yet and I have no idea how much value it provides over competing widgets)
I'd say the whole "lower cost" thing is less of a problem when it comes to ergonomics, we know that many devs buy all kinds of fancy split keyboards and things like that to make their workflow smoother, so I wouldn't be surprised if people easily forked over money to this
question is if it will actually take off or actually provide/slot into workflows that people actually like etc. if it's heavily opinionated or not really innovative, I don't see how people would "move over"
just my take though.
[1] https://www.google.com/search?q=%22blob.superlogical.com%20A...
Rex is a more serious challenger to iTerm, for me, but atm has similar flaws (Mac only, for most functionality) without coming close on a feature basis. (Nobody uses all of iTerm's features, but most iTerm fans use a subset of them that still exceeds what less-featureful terminal apps (i.e., all of them) can do).
But libghostty is fuckig amazing. Do you have some internal/personal bespoke app that needs a terminal pane somewhere? Ask your clanker to use libghostty.
Do you have a professional, commercial product that needs a terminal somewhere? Direct your team of highly-paid experienced human software engineers to evaluate libghostty.
It's the fucking business.
I'm still interested to check it out though none of these things have ever interested me too much so far.
Does this mean Apple might nuke those capabilities next year? It would not surprise me, but for right now, it’s really freaking good what they managed to put together.
It’s worth downloading the beta just to study their onboarding flow.
It doesn’t replicate the “remote authentication” part of ssh, and leaves that to Tailscale instead.
What really caught my attention was this: "So from the start, I took inspiration from C libraries I enjoyed working with and designed the API to have a strong, stable ABI that allows for future additions." What are good examples of this? I feel like I just don't have enough experience with well-designed C libraries to know what to look for.
If you have structs that might need to be extended, you can use "versioned structs". One popular technique is to include the struct size as the first field. The struct size is set to `offsetof(mystruct, lastmember) + sizeof(lastmember)` and the receiver of the struct can use this to check if a member exists. The ARA API is a good example: https://github.com/Celemony/ARA_API/blob/65ec5c43b943a48cb54...
It also helps if you only append to the end of the struct for newer fields.
There was so many little things that bugs me with JediTerm, unsupported escape sequences, bugged visualization, truncated output, you name it.
Now it just work, like it supposed to.
PS: FMPOV Mitchell is a relentless performance addict. I have been seeing this since the vagrant days (this also makes me sad because it reminds me I am getting old)
- kitten, a lot, they are useful. I will name a few. kitten ssh, keep a long lived connection so that you need to authenticated once for the whole kitty window. kitten tranfer, transfer files between remote and local when you are inside the remote host. kitten clipboard, take data on the remote host to the local clipboard.
- customize your keyboard shortcuts to be more efficient on creating new tab, moving between tab, keep the current working directory when creating new tab, split panel (even you are on the remot host).
- tune the performance configuration.
- on macOS, you can hide the title bar of the window, give more minimal look.
- take time to learn from their documentation, a lot of useful things to be known.
- the author is uncompromised on the performance, e.g. https://github.com/kovidgoyal/kitty/issues/884
- don't ask the author to change kitty icon (but you can change it yourself, I did): https://sw.kovidgoyal.net/kitty/faq/#i-do-not-like-the-kitty...
Can anyone give a comparison to libvte? There are many terminals that are just thin wrapper around that (gnome-terminal, xfce4-terminal, mate-terminal, lxterminal, sakura, …). It is tied to GTK, so it has a much narrower scope. But still it feels related in spirit.
libvte provides terminal emulation complete with a gtk UI.
In terms of terminal emulation, libghostty implements several protocols that libvte does not. For example kitty keyboard, kitty graphics, and desktop notification.
can i just get you people to slow down a bit and explain: why are you guys building your own terminal? whats the deep pain here?
(i'm not at all being skeptical, i respect you guys enough to understand that there's something here I don't get and it's my skill issue, so I am trying to learn)
It's like a better alternative to xterm.js, and better than existing terminal emulator libraries.
similarly, a terminal conceptually consists of a terminal engine, which handles text rendering and interaction, and then a terminal which handles tabs, splits, sessions, etc.
now one key point is that you can get a terminal engine right according to a bunch of reasonably objective criteria, so it's a problem well worth solving once and for all. the terminal itself is a lot more subjective and idiosyncratic; different people want different things out of their terminals and the reason is very often that it fits the way they work, or they enjoy some particular features, and even the absence of other features. it is wonderful that libghostty can solve the part that everyone agrees needs to be objectively correct, and lets people concentrate on building the subjective part in the way they like best.
Occasionally I'll check out other terms people rave about. Tried kitty, wezterm, and a few others a while back, but wound up coming back to iterm.
Still, really happy to see things like this gaining traction. An easy way to implement high performance terminals in any application is a boon
- iTerm started pushing a ton of updates to add features that absolutely no one wanted. AI chat in the terminal emulator (not within the terminal), integrated web browser, etc.
- Some of those features turned out to introduce major vulnerabilities, so they had to push even more frequent updates to patch them. It’s extremely annoying to have your work interrupted by multiple update prompts in a day from your terminal.
- iTerm has visual glitches (line artifacts appearing when windows are opened/closed) on non-Retina monitors.
That said, I miss the GUI for changing settings. Ghostty’s settings file format requires looking up keys every time you want to change something, and it isn’t nearly as powerful as iTerm profiles.
I wouldn't even need panes and tabs if I used tmux, but I can't be arsed: I used to but now much prefer using a GUI and not have to do tabs/scroll/selection differently than every other application.
- Font rendering (and cell size control) is still better on iTerm2, although Ghostty has been rapidly gaining
- Compact theme with thin titlebar tabs
- Profiles
- Window arrangements
- In-terminal API (which Mitchell has acknowledged as a useful feature)
The iTerm2 settings/preferences are a mixed bag. On the one hand, discoverability and settings search. On the other hand the panel is insane. Also iTerm2 doesn't have Ghostty's straightforward prefs file. I guess I want the best of both worlds: A well-organized settings UI, with search; and a file I can easily neovim.No shade to ghostty btw, it's an amazing product that I use every day. I just have to accept the lack of some of this usability polish.