I'm currently working on my own Zig project (an interpreter) and right now I'm working on designing a C interface for it. Seeing things mentioned like having objects as opaque handles, or enum-keyed getters and setters, made me think about how clunky my current API is, since I leak too many details to callers.
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.
Libghostty is a very cool project, this is an exciting release, kudos to mitchellh for spearheading this as well as all the people who have made contributions to the project. I use ghostty as my primary terminal emulator today and a few months ago I was experimenting with using libghostty in an android project that I plan to jump back to someday when I have the time, so I personally benefit from this work.
One area where Ghostty really shines is with fancy TUI programs like the pi agent. Pi has a relatively recent tuiMode "fullscreen" feature, and it's been exceptional. Showing inline images with the Kitty graphics protocol has been a huge improvement too -- I love it when a model calls `read` on an image file and I get to see the results in my terminal. The OSC-8 hyperlink support very handy too. Viewport scrolling is super fast, and pi can hide/show the scrollbar as you need it.
> Every bug any libghostty-vt embedder reports makes everyone else in the ecosystem better. Every feature we ship in libghostty-vt becomes available to everyone quickly and safely. Terminals can move faster with less fragmentation.
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.
Libghostty is such an awesome project, I didn't myself understand the vision a year ago but I've since then been working on my own terminal project using Libghostty and it really does just work and save me such a tremendous amount of work. Kudos to all the contributors!
Libghostty made the best terminal for Emacs possible (Ghostel). Thank you Mitchell.
Recent interview with Hashimoto: https://alexalejandre.com/interviews/interview-with-mitchell...
I'm still on iTerm2, simply because it just seems to work and has all the features I want
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
Great stuff, congrats to mitchellh and the other Ghostty devs!
Kwi's (a KDE embedder) CI/CD and its Flatpak builds/repo have moved to the new version.
The documentation for libghostty is great, I'm reading through the guides and examples. It feel like a fun way to build your own terminal emulator GUI in C, Zig, or other languages with C bindings.
https://lib.ghostty.org/vt/example-programs.html
It also looks useful for testing and developing text interfaces (TUI), like file navigator, editor, dashboard, etc.
Wow. This is how you write a library.
libghostty has been awesome for tui-test, excited for the stable api
does anyone have a terminal setup with gorgeous colors/background/etc over ssh without a display manager? Looking for a lightweight server side environment. I keep searching for headless / framebuffer / DRM setups and there seems to be a few out there, wondering if these exist in a practical workflow.
an early christmas present, thanks mitch and team
In the age of perpetual 0.x software, it's nice to see a well-known project get to 1.0
The only thing I miss from WezTerm is the super configurable cursor (because of course I need a pulsating one)
congrats to mitchell and team!
I’m curious why they chose to use C for this as opposed to Zig with a c like interface.
is mitchell hashimoto literally one of the main tanks carrying all of open source right now? what a neat contribution!!!
I wonder how the author makes the work financially sustainable.
This is so fuckin' cool.
Tried libghostty-vt 1.0 as Mudlet's ANSI decoder - no measurable speed gain in tests and its terminal grid doesn't suit a MUD client (UTF-8 only, scrollback can't be edited), but I reckon it'd make a great terminal pane for cursor-addressed game screens.
Curious how stable the public ABI is intended to be now that JetBrains and others are embedding it this quickly. Is the 1.0 promise closer to "API surface won't break" or more "we won't break you without a major version"?
[flagged]
> “And a whole wave of new terminals and "agentic" coding tools, such as herdr and cmux, have been built on it rather than writing yet another emulator.”
Mitchell could have easily snuck his competing product Rex in there but resisted. Respect.