82 comments

[ 4.9 ms ] story [ 94.9 ms ] thread
ooh a web version would be insanely cool.
Such incredible news. I'm absolutely going to use this.
I've been keeping an eye on this in the hopes that text-reflow (edit: including for scrollback) could be solved in Neovim-based terminals [1]. I'm loving the innovation Ghostty is bringing to the terminal space.

1. https://github.com/neovim/neovim/issues/33155

I wish they had used something like this in Shopify, instead they decided it was a good idea to embed VScode in the browser in case users want to make a small modification to theme files, it even has a 5 second boot time.
This is super cool, it will be so nice to have a truly omni-platform terminal emulator that can even conceivably extend to iOS and Android.

Aside: I didn't realize Ghostty was written in Zig, wow. The first Zig-thing I'm aware of using on a regular basis. It's amusing the repository structure looks exactly like a Golang layout, haha.

https://github.com/ghostty-org/ghostty

It doesn’t (look like a go layout) and that’s a good thing because pkg/ src/ etc aren’t good go directories.
Not omni-platform if you have macOS < 13. It's the author's prerogative to set minimum requirements, of course, but for something "basic" (note the quotes) like a terminal emulator, not having far-reaching backwards platform compatibility is a deal-breaker for many. Life's hard enough for macOS users who don't want to upgrade the OS every 6 months and/or replace hardware every 2 years. For people like me who prefer to run their systems as purchased until the hardware fails, the "move forward or get left behind" upgrade mentality is very troublesome.

Hopefully libghostty will be much more permissive. No dependencies (not even libC) is a good sign that will be true.

(written on a 2018 macbook pro running macOS 10.14.6, which still works great in every way)

I would pay money to never have users like you, even if my software incidentally worked on your intentionally terribly out-dated system.
i desperately want to use ghostty but cmd+f support is just such a dealbreaker. excited about this development though!
I have heard this from a lot of people, yet here I am, using a terminal that supports this, and have yet to ever do it. Can you help me understand what workflows you depend on Ctrl+f for? I wonder if I am missing something big.
You could run tmux inside it and bind cmd f to copy-mode + /
> i desperately want to use ghostty

Is there any particular reason?

You can map something like cmd+shift+f to open the entire buffer in your default text editor, this has been sufficient for a lot of folks - myself included - while we wait for native scrollback search to land.
I started using it months ago and don't miss that so much, if I really can't rerun the command and pipe it to less/grep. I'll just use the mouse to copy it to the clipboard and then run `xclip -o` (linux) or `pbpaste` (mac) and pipe it to grep. I know there's a keybinding for putting the buffer in a file, but copying with the mouse is faster than finding it.

Also, not sure if this is by default or it picked it up from my old iTerm2 configuration, but cmd+shift+up/down navigates through prompt lines so it's easy to find the start of a long command. My PS1 in zsh is:

    PS1='%1~ %F{green}»%f '
I love how this guy founds + takes public + sells a multibillion company and then just goes right back to hacking. Legend.
Hashimoto is an absolute wizard, but what I find most compelling about him is his absolutely uncanny ability to segment and abstract systems and interfaces in a way for maximum composability and minimal entanglement. He's like the walking embodiment of Rich Hickey's Simple Made Easy philosophy. It's like he designs software systems in such a way that they have no choice but to operate correctly and predictably.

Also I just tried Ghostty for the first time. With iTerm2 and the Zsh/Powerlevel10k theme, there's an extremely brief but perceptible lag from running a command and the render. In ghostty it feels actually instant.

Basically MariaDB. He (original creator of MySQL) sold MySQL for a Billion dollars (iirc) forked it, created MariaDB and kept at it. It's been what 15 years now?
Wow, I wonder what his everyday life must be like.
Also, in real life, he's a genuine nice guy. I had lunch with him and Armon at a conference when they worked at Kiip, before they founded Hashicorp. Mitchell (to me) was the proper hacker. He just loved everything about computing. This particular conference was about distributed systems and he was just geeking out on everything.

I walked away thinking that no matter what they did, they'd probably be successful. I was extremely happy to find Ghostty and have been using it ever since.

You made me look into HashiCorp again. It's a great company from a developers perspective, in terms of the many useful tools created: Vagrant, Packer, Nomad, Consul, etc

However their financials are... LOL

Revenue US$583 million (2024)

Operating income US$−254 million (2024)

50% loss margin :-)))

I just want to say, what a dream. To have wealth and be able to create projects for the sake of going the projects. To not have to make the concessions of quality for profits.

There's an old Knuth quote:

  > In fact what I would like to see is thousands of computer scientists let loose to do whatever they want. That's what really advances the field.
And I think we're seeing more and more that these projects made with love are successful. That without the hyper fixation on money we can build good projects that make big changes in a world.

In some sense I'm a bit envious of Mitchell but truthfully these types of things make me more question how we've constructed our society and economy. It shouldn't require one to start with wealth to be able to build things that have such an impact. What needs to be changed where we can live up to what Knuth proclaimed. I'm sure all of us have had experiences where were we given the time (and usually not much) we could make things so much better. But we make many sacrifices when we rush. Which leads to more good advice by Knuth

  > If you optimize everything, you will always be unhappy.
At what point do we push back? We see that the people we really look up to did things so differently. Knuth himself expressed how detail obsessed he was, and such a claim is common among the grey breads. Of course, things change, but are we creating a world with no wizards? Are we creating a world where we reward people for solving problems and making our lives easier? Or are we just maximizing some score of a pointless game?

I'd love to live in a world with a thousand more Mitchells, following their passions without the burden of needing to justify decisions to a board who has no interest in quality. How do we create that world?

Like you said, what a legend. But, how do we make more legends?

(comment deleted)
Yeah, it is so hard to be born and raised in California.

I cannot imagine what he went through.

Hero.

The passion and attention to detail Mitchell has for developer experience is beyond me. I remember the first time I used Vagrant (2011, Santa Monica California) like it was yesterday it was that impactful.

I never thought in a million years I would even think of ditching iTerm2 but when Ghostty dropped I installed it and fell in love.

What exactly does it do better than iTerm2? I gave it a try a few weeks ago and wasn't at all impressed, but maybe I just don't know what I'm missing.
Great question. For me it feels faster (anecdotally) and certain TUI components don’t break. It also is probably my bias of loving his work as well as everyone at work using it. Hive mentality I suppose.
Kind of surprised that we haven’t created this library before now. But glad to see it coming.
On the very day ghostty refuses to load my theme because themes now start with an uppercase letter; the same day I'm no longer able to enter `^` (a caret) for some reason. Not to mention the multiple times where the clipboard suddenly and completely stopped functioning, in the last few weeks.

I love ghostty, but if it keeps suddenly failing for no apparent reason I might have to go back to wezterm.

You seem to be using tip. Switch to using a stable release (1.2 is the latest one) instead if you don't want to be exposed to potential issues.

FWIW I've using tip since the closed beta and never had major issues.

Super exciting. I hope to be able to embed a Ghostty-backed terminal into my Rust app in the future. Amazing work as always, Mitchell!
(comment deleted)
I love the idea of libghostty making terminal tunnels cleaner and less leaky, because I hate messy pipes.
problem: we have ten different VT terminal parsers

solution: write a new VT terminal parser to replace the other ten

result: we have eleven different VT terminal parsers

I really want a little adapter that can plug into a monitor to make it a dumb terminal. Instantly on, no full OS, just a VT100 or something.

I've looked into it with a PiZero and some HATs but I'd like something made by smarter people. This would be perfect for that.

Ideally just some dip-switchs to set the terminal to emulate and set the display resolution.

Then what would you do? serial port? ssh? what is your terminal connected to if you don’t have an OS?
I was really excited to try ghostty, but the text looks blurry when I place it on my mac's external monitor
I enjoy ghostty and zellij. Zig and rust built.
Will there also be a React component? Or is this not intended for web frontends? I was wondering, because Vercel et al. were mentioned in the beginning.
I use ghostty daily now. Switched recently. In macOS I can re-map now caps lock to be cmd and it works for cmd+c. Everything else is great, sensible defaults and what's not easily customizable.

Gruvbox light theme looks great too.

The fact it's written in Zig is awesome too, if you ever question if Zig is ready, ghostty is your answer to that.

Not seeing myself going back. It's great experience.

Tip: if you combine your ghostty flow with aerospace, it's nearly perfect setup for your keyboard only experience on mac.

I want to use this to modernize vterm in Emacs. If I could only synchronize the terminal cursor and the Emacs point, and preserve lines as lines, not split them...
How easy would it be to implement a tmux shim application that just has line numbers natively in the pty itself for copying?

Tmux copy mode is already great, my one gripe is no line numbers.

This script https://gist.github.com/Nimmidev/2cf4d5cc80dce32d0240ec7b3cf... is pretty good, but I still get frequent bugs with it, and also it just doesn't work in fullscreen mode (2 panes).

The core issue is that it's allocating a new tmux pane with the sole goal of mirroring line numbers; it would be nice if they synced up in the same pane, avoiding the above issue.

Piping it into neovim is an option that you can do on both neovim and zellij. zellij loses colors, and neovim is probably the best solution to this problem but then again I don't want to have to remember to turn on/off line numbers every time and I personally like one-off panes. Separation of responsibilities, I guess.

Long-winded rant to basically say: would a standard like this solve my issue easier? From what I understand of terminals, I would need to parse the underlying pty, maintain a scrollback buffer internally in the wrapper shim, and also be able to dynamically adjust toggling line numbers on/off.

If I'm doing this kind of translation, how "leaky" will the abstraction be until I'm basically re-implementing the logic in my middle layer, assuming that "for free" I can get the translation both in and out from the pty?

I've been trying to look closer at TUI tools, but that's what really bothered me. Given just how god awful the VT protocol is, you could get the state machine parsing correct, but the developer still has to learn basically every little quirk that was added over the years, no?

(And before someone makes a false equivalence, no, this isn't the case even with languages like c++ - I'm still learning quirks about it to this day, but I don't have to learn the entire thing to build proper, robust code. It does not seem the same with something like the VT protocol. So yes, I'm aware that some learning should take place, but I'm wondering how structured of a developer experience this will end up being.)

I have a confession: I don't know the difference between a console, terminal (-emulator?!?), shell, bash and all these things. It's all just a black window with text for me. I've never understood why people talk so much about git shell when my normal windows cmd/Powershell can do just the same git commands. I'm also a prolific and successful software engineer. These two things shouldn't mix. So please tell me what I missed in life when these things are completely alien to me.
Really looking forward to this, writing my own personal editor in Ruby and not having a library for parsing terminal input is leading me to write my own kitty keyboard protocol parser (which ghostty implements) and having to hand-code lookup tables is driving me batty. I really don't like the idea of using an existing TUI framework as none of them actually implement the kitty protocol.

* https://sw.kovidgoyal.net/kitty/keyboard-protocol/#

I recently ditched VS Code in favor of Neovim and thanks to Ghostty transition has been a success. As a Mac user I use the cmd key in tons of shortcuts and it just worked out of the box, no need to send weird escape sequences