I'm the original creator of Ghostty. It's been a few years now! I don't know why this is on the front page of HN again but let me give some meaningful updates across the board.
First, libghostty is _way more exciting_ nowadays. It is already backing more than a dozen terminal projects that are free and commercial: https://github.com/Uzaaft/awesome-libghostty I think this is the real future of Ghostty and I've said this since my first public talk on Ghostty in 2023: the real goal is a diverse ecosystem of terminal emulators that aim to solve specific terminal usage but all based on a shared, stable, feature-rich, high performant core. It's happening! More details what libghostty is here: https://mitchellh.com/writing/libghostty-is-coming
I suspect by the middle of 2027, the number of people using Ghostty via libghostty will dwarf the number of users that actually use the Ghostty GUI. This is a win on all sides, because more libghostty usage leads to more stable Ghostty GUI too (since Ghostty itself is... of course... a libghostty consumer). We've already had many bugs fixed sourced by libghostty embedders.
On the GUI front Ghostty the apps are still getting lots of new features and are highly used. Ghostty the macOS app gets around one million downloads per week (I have no data on Linux because I don't produce builds). I'm sure a lot of that is automated but it's still a big number. I have no telemetry in Ghostty to give more detailed notes. I have some data from big 3rd party TUI apps with telemetry that show Ghostty as their biggest user base but that is skewed towards people consuming newer TUIs tend to use newer terminals. The point is: lots of people use it, its proven in the real world, and we're continuing to improve it big time.
Ghostty 1.3 is around the corner, literally a week or two away, and will bring some critically important features like search (cmd+f), scrollbars, and dozens more. In addition to GUI features it ships some big improvements to VT functionality, as always.
Organizationally, Ghostty is now backed by a non-profit organization: https://mitchellh.com/writing/ghostty-non-profit And just this past week we signed our first 4 contributor contracts to pay contributors real money! Our finances are all completely public and transparent online. This is to show the commitment I have to making Ghostty non-commercial and non-reliant on me (the second part over time).
That's a 10,000 foot overview of what's going on. Exciting times in Ghostty land. :) Happy to answer any big questions.
What's it been like managing a fairly large project with Zig? I know you've spoken highly of the language in the past, but recently it seems like Zig has been through some substantial changes that would be relevant to a terminal emulator. I'm curious how painful the churn has been for project maintainers.
It's been extremely good. I should really blog about it in more detail because I do get asked this question regularly. It's been very good.
The large language changes are a burden, but it's something I knew going into it. And so far in every case, it's been well worth it. For example, 0.15 introduced the std.Io.Writer overhaul, but I really love the new API. I haven't started the std.Io change yet for 0.16. We'll see. And honestly, LLMs make this all way less painful... even though they're not trained on it, agents are able to run builds, reference docs, and work their way through the upgrade with huge success.
I thought that finding contributors would be an issue, but it hasn't at all. There's a lot of people out there eager to use Zig, the language isn't hard to learn (as long as you're already familiar with systems concepts), etc. It has been good.
I'll think about more to say if I write about this more but overall, I'm very happy with the language, the community, and the leadership. All good.
That's super interesting to hear. I see people say all the time "oh I would never use it in a big project because it's changing so fast", but then see awesome projects like Ghostty and Tiger Beatle written in it, so clearly they're doing something right.
I'm surprised to hear LLMs have been helpful. What little I tried to use them for with Zig, all the information was way too out of date. But I was mainly just doing research, not running an agent at the time, so that's probably why.
Yes, LLMs with Zig are absolutely useless without agentic behaviors. Throw an agent in the mix and it's totally fine. Bonus points if you pair it with some basic agent skills so it knows how to look up language references, stdlib files, etc. then it does even better.
Do you get frustrated in using a low training data language like zig with AI models? I've noticed that models tend to be better with languages like TypeScript than Swift because of issues like that.
What has it been like witnessing terminal emulators make such a huge comeback with the advent of Claude Code et. all? I remember comments here in the early days of Ghostty along the lines of "Why is he working on a terminal emulator? We need people working on future problems, not the past!" Pretty funny considering I regularly hear people say they are in the terminal more than the browser now. Crazy times!
If you told me 3 years ago that terminal usage would _increase_ I would've laughed. Beyond that, I'm now having regular conversations with the frontier agentic coding companies (since they're far and away the largest terminal users at the moment) and if you had told me 2 years ago that that would be happening because of a terminal, I would've laughed even harder.
Wait, really? So Iāve used the terminal for everything for decades, and now, because of vibe coding, all The Kids have joined me? I donāt even know how to feel about that. Better terminals are nice though.
I think terminal workflows are intimidating for a lot of people, because the discoverability is lower than GUIs. You can't necessarily intuit how a CLI works, you have to read the documentation or watch a tutorial, which my 10 years in the IT industry has taught me a big barrier even for really experienced SWEs. The new coding TUIs are a more gentle introduction to that.
Right? Itās been kind of funny watching everyone ārediscoverā the terminal and Iām over here feeling like a true graybeard āsilly kids, Iāve been here the whole time.ā
Whatās old is new again is apparently just as true in tech as it is in fashion.
It's because the web developers who destroyed the web are now taking their mess with them into more obscure places, such as terminals, hardware and AI.
That's probably why it is so hyped up as it is right now.
/* Claude Code is the strongest case of the return to the mainframe: a closed, bespoke, paid service that nothing locally run compares to. Terminals are just a natural part of the mainframe world! */
Coincidentally I was just listening to your interview with The Pragmatic Engineer [1] this morning. Loved hearing the stories of early days at HashiCorp, taking it public, and the near-miss with VMware.
It also got me wondering how things would be different if you haven't crossed paths with the guy who unplugged your mouse :) It's fascinating how life is full of these small yet defining moments. We don't always appreciate them right away, but beautiful to look back.
Thanks for Ghostty! It has been my daily terminal driver for the past year.
I was also just recommended this interview on youtube. honestly it makes sense if the algo decided it was the right time to recommend this video and resultantly this post is making it's way to front page of HN
I subscribe to the channel, so I had already downloaded the episode. But glad PE is getting some algorithm-love; it's a great channel/podcast. Gergely is a great interviewer.
Thanks for all the work you do! I had used terminal just a few dozen times before November ā and now i am in terminal more than any app (even more than the web browser).
Itās common for me to have 15-25 different terminal windows open for using Claude code. I shifted to Ghostty because I was looking for more features.
Unfortunately, none of the features I wanted are available anywhere (though Iāve come to appreciate Ghostty anyway). Hereās what I had wanted:
1. Basic text editing features (ie click to place cursor in the text input field; highlight to delete)
2. Change colors or fonts mid session (to make it easier to find particular windows)
3. Window management and search (eg, a way to find my windows when I lose them and to otherwise control them)
Apparently, it is really hard to develop features like these for terminal emulators. Iād love to understand whyā¦
The next release includes a way to use a command palette to search for and jump between surfaces (windows, panes), which sounds like it partially addresses your third point. I had a small hand in it, by building the initial UI for the Linux version.
IMO this isnāt the job of the emulator. You can do this all in `tmux` for example.
As for editing text, ghostty+tmux most definitely supports editing text with the mouse (even an in terminal right click menu!) although sounds like your intended use of select to delete isnāt common so youāll need to do some customizations.
What makes you say that isn't the job the emulator? Sure it is. In fact, tmux itself is a terminal emulator that you just so happen to run inside of another terminal emulator that you want to multiplex.
Iāve been using scroll back search for 15+ years with Terminal.app and iTerm2, and thereās no way thatās not the job of the terminal. You donāt know how good that is until you use it.
Having incorporated libghostty into my current web-based project, I can't say enough thanks. I've lived in the terminal since 2003, resisting IDEs, VSCode, everything because I'm a die hard Vim + tmux guy. Vibe coding coming back to the terminal, and being able to use libghostty to facilitate that is a serious vindication of my steadfast resistance to move away from the terminal.
I'm sure you feel the same watching Ghostty become what it has. Big thank you.
Now that Ghostty is part of a real org, is there any way people can sponsor specific features/bugfixes? I've been waiting for drag/drop to be working on KDE before I make the switch, and I'd be happy to pay for a fix.
Many thanks for everything. Without Ghostty I wouldn't have been able to create https://github.com/rcarmo/webterm and have a decent browser-based terminal that works the way I expect it to.
Is there any chance of a stable release that fixes the memory leak issue? I know I could run nightly but for something I spend all day every day using I'd much rather run a stable version.
mitchellh: What is the current thinking WRT adding client/server functionality (like built-in tmux+mosh)? I recall you talking about it on the Changelog podcast, and that would be a killer feature for me; I really make a lot of use of the wezterm equivalent, it's so nice having first-class UI windows rather than tmux's faking of it.
Just to clarify, it's more about the ability to run a terminal on my Linux box and connect and disconnect to it from my Mac that I'm looking for. Wezterm does a good job of this. Previously I was using tmux and mosh and Nebula, and that worked really great for reconnecting (I almost never had to reconnect, it just stayed live, wezterm I need to reconnect all the time, but that works reliably). But copy-paste with tmux is meh.
Hey Mitchell, thanks for ghostty (happy user here for a month or two). Is there anywhere I can look to see the status of the next planned release?
I've been waiting for the vim feature to hit stable, and have just been checking to see if there's a new release every so often, but I couldn't find a discussion or anything to see when it was planned.
Random advice question. My brother taught himself to program and has been making a terminal-based game. What started out small has turned into a highly polished game with ascii art, sound, you name it.
Iāve been trying to figure out how I could actually help him distribute it and I keep coming back to the best option being to wrap his programs terminal output into a host process that can emulate and render it. It seems that the lib Ghostty might be perfect for the former, but not quite yet on the latter?
I use Ghostty as my main TUI at work and absolutely love it. Most of my day lives in terminals, and Ghostty just feels fast, clean, and out of the way in the best possible sense.
I was a long-time Kitty user, but switching to Ghostty has been a big upgrade for my workflow. Hard to go back now. Thank you
I started using it a few days ago and then I need to find something in the terminal. But....there is no find! Why? Can you guys add it? This is such a basic and critical feature that I may have to just go back to...just about anything else.
I literally discovered Ghostty yesterday when googling "best terminal macos" and surfaced a ~year-old reddit thread recommending it [0]. Just needed something other than Terminal so I could Cmd-Tab between distinct command-line work (e.g. claude code and ipython tabs). Was nice to find something that just worked
Excited to see the further development of libghostty! It is an exciting project in this new world of being able to develop your own agentic development environments rather effortlessly. These things are possible because of projects like yours. Thank you!
I just wanted to say "thank you". I switched to Ghostty over a year ago and it's been working out great. It's now my default terminal. My favorite features are responsiveness and ease of splitting panes.
> On Linux, the quick terminal is only supported on Wayland and not X11, and only on Wayland compositors that support the wlr-layer-shell-v1 protocol. In practice, this means that only GNOME users would not be able to use this feature.
Hi Mitchell, thanks for creating Ghostty. Been part of my workflow ever since I found it. Just a small question, when do you see Ghostty can fully replicate iTerm2 popular features like output copy/selection?
Recently tried multiple terminals because I am gradually migrating off of Macs and I liked Ghostty but the lack of searching the scrollback has turned me away from it. Opening another editor to do the same I tried but didn't like.
WezTerm has everything I need and is closest to iTerm2, minus being able to quit it and have it restore all windows and tabs on restart -- but oh well, it's not an important enough feature. It also renders my prompt perfectly; no small pixel divergences like all other terminals have.
Kitty I don't remember why I rejected.
Alacritty I like but the lack of tabs is not acceptable for the moment... and before you ask: I hate tmux. So much more key presses to achieve basic functionality, it boggles my mind why people love it. But, to each their own obviously.
It's also likely I'll settle for some Linux-exclusive terminal but as I'm not yet possessing a Linux workstation (just a laptop) I haven't put the requisite time to do this research.
Maybe worth another look at then? I'm far from a Kitty power user, but it does pretty much everything else I want it to, including working as a quake-style terminal[0]. And you can extend it with kittens[1] if you so desire. Also, the next release should presumably include smooth scrolling[2] which I'm quite looking forward to.
Maybe more than any one feature though, I appreciate the hard work that Kovid (the creator of Kitty) has done to tastefully add new VT standards and try to make terminals as useful as they can be in the 21st century.
Kitty is the best one. It has several features which have proven so useful I wasn't able to stay on anything else for more than a couple of hours (including the one this topic is about).
Ctrl+Shift+G wraps the output of the previous command into a pager (say, less). You often only know you needed a pager after that output is printed.
Ctrl+Shift+E highlights all links on the current screen and assigns short alphanumeric codes to them, so you can open links without using the mouse. For example, `Ctrl+Shift+E 1` opens the first link, `.. 2` the second one, etc.
Ctrl+Shift+U opens symbol search where you can find & insert symbols using their unicode names. Emoji, TUI blocks, rare accented characters you need once in a blue moon, CJK ideographs, whatever.
Kitty is great, but its author has very strong opinions, strongly held; this keeps a number of popular requests summarily rejected. In particular, there is no way to color plain bold text, which is possible in basically any other emulator. This is a deal-breaker for me personally, it makes reading e.g. man pages unnecessarily hard.
I'm not the GP, but I do remember why I rejected Kitty when I tried several terminal emulators last years: it broke quite a few of my workflows.
For instance, in vim the F3 key was broken[^1]. It was very surprising and weird, and a portable workaround required some arcane vim configuration.
Another important pain point was that the font rendering was different in Kitty to any other app, and very dependent on the screen DPI. IIRC, for a DPI around 100, I had to switch to "legacy rendering" because the default rendering was barely readable.
I also remember issues with SSH. And Kitty crashed at least once. And I wasn't a fan of Kitty's mix of C and Python. After a week or two of usage, my Kitty config file was big, with an extra hundred lines of Python for the tabbar. Despite some nice features (like the shortcut to put the output of the last command into a file), I got uneasy with all this mess. I tried Ghostty, which was as good as Kitty with much less oddities.
I wouldn't say I love tmux, but I have a configuration file that I put on every computer I use regularly that is very comfortable for me. I basically live in the terminal across many different machines, and having the same interface for managing panes and tabs even when using ssh is invaluable.
I also use vim (well neovim) as my primary editor, and have set up tmux to integrate well with it, so that might contribute to my appreciation and continued usage of it.
Yep, I've been using tmux for almost 10 years. Its config has followed me across every terminal I've used in Windows with WSL 2, macOS (work laptop) and native Linux. It's a nice abstraction over getting split panes, windows (tabs), sessions, search, scroll back, consistent key binds and the overall theme to work the same across environments.
If you spend any amount of time on remote machines with unreliable connections, local tmux is insta-reject because tmux inside tmux is very inconvenient. As with GP, it's also why I don't consider terminal emulators without tabs at all.
I hold Control and double-tap b for managing the remote session, then everything else is the same.
Granted, I'm not a power user, so there may be numbers that get frustrating. I could imagine complex splits getting confusing (I don't use splits at all).
C-b is less ergonomic than C-a that is the default on GNU screen. The first thing in tmux is to remap to C-a. (Triply so if you remap caps lock to ctrl.)
Scrollback does exist on Ghostty! But you need to switch to ātipā. This can be done in the config file.
The tip build is very stable and has many bugs fixed (like various memory leaks).
I haven't seen anyone else mention Terminology yet. It uses an unconventional GUI framework (Enlightenment / EFL), but that aside, it's fast and has more or less all of the features you'd expect of a terminal:
Back in 2018 I thought it felt kind of sluggish and consumed quite a bit of resources, but looked pretty. Have they improved on performance since then?
Are you sure you're thinking of the same terminal? Its standout feature has been performance. Granted, that was 10+ years ago, but I've never noticed it regressing.
there's scrollback search in the nightly build if that's an option for you (I've been using it a ton for a few months and haven't seen any bugs so far):
I like tmux because it does more than tabs in an emulator. I can detach from a session on a remote host to leave a process running after I disconnect, or to pick the session back up on another PC.
I do use tabs rather than repeatedly switching tmux sessions, but I do end up running tmux for splitting the GUI into side by side layouts.
Detaching is working just fine with `screen` as well.
I like the idea of tmux but as another poster suggested, I prefer to just get better at my
window manager to achieve similar results. tmux requires way too many key presses for me.
Very glad for that--it's what made me stop my evaluation the first time around. I looked for the feature in issues and just saw #9821 about memory use of the buffer which could be an issue if configuring very large scrollback as I do.
BTW is there feature parity between macOS and Linux, e.g. scrollback buffer searching on Linux?
> Alacritty I like but the lack of tabs is not acceptable for the moment... and before you ask: I hate tmux. So much more key presses to achieve basic functionality, it boggles my mind why people love it. But, to each their own obviously.
Tabs usually mean mouse+click to switch which takes way more effort that a simple alt+number or similar keybinding used to switch "tabs" in tmux. I'd guess that some terminal emulator tabs allow keybindings to switch tabs as well but, modelling OP, I'm focusing on the expected default experience.
No, zero mouse usage, you can both address each tab by number and just moving between them. I wouldn't have any terminal emulator without the latter feature at least, and all I've tried support it.
Personally kitty is the only one I keep coming back too. Mostly because it's very customisable, fast, lean, ligatures, separate font for italics, great macro support, and supports automatic tiling panes.
You can search scroll back on Ghostty nightly. I switched straight from iTerm2 (after 20 years of iTerm), but _do_ remember the reason I rejected Kitty: it has a ton of Python in it, which is usually indicative of software which is going to be a pain in the ass.
I love Ghostty, especially the UI is so much nicer than Kitty. However, for some reason ghostty sometimes has severe issues with dealing with SSH connections. The terminal is like broken and wrongly displayed and you can't properly type something. Therefore, I still use Kitty, especially for SSH connections. I don't know what `kitten ssh` does, but it makes my terminal work with SSH.
This is what kills it for me. Half the time I'm using a terminal I'm sshing and the fact that I need to copy over term-info on virtually every machine keeps me from using it more often. Even copying term-info doesn't always fix it. From what I've read it's not entirely ghostty's fault but as a user it's frustrating.
No I haven't seen that before. I used to just run the terminfo tic command that's recommended in the top searches and when that started failing I just swapped back to default terminal for SSH
Same. On the tip of main, at least, I can open the command palette and choose reset to bring it back to life. I set a keybinding for reset to skip the command palette.
Big one are the tabs. Kitty has tabs, but rendered in the text rows, so it's missing features that the native OS tabs provide (drag and drop, easy to move around and split into windows...)
He probably refers to the fact that Ghostty aims to use the native window decorations etc.. So for example on Ubuntu it uses gtk, on mac the native macOS tab bar etc. Same goes for the scrollbar and search window.
When Ghostty was publicly announced, I used it for a few months and gave up on it due to the lack of support for the CMD+F feature that I use Terminal.app. This is a critical feature for me while tailing logs on my local. I tried the workaround of capturing the text into a text file and then searching it. It just didn't work for my workflow and dropped it. Ghostty is great otherwise. But, without the CMD+F, it's of no use to me.
> Ghostty 1.3 is around the corner, literally a week or two away, and will bring some critically important features like search (cmd+f), scrollbars, and dozens more. In addition to GUI features it ships some big improvements to VT functionality, as always.
The fetishization of tools is one of the things that mark a dilettante mindset.
You see it on all hobbies, e.g. when the someone sees a photograph and their first question is about what camera and optics were used. No question about composition, light, the moment, creativity... they only care for the tools.
The technique and knowledge is the important thing, not the tools. They forget the good practitioner can do a great photo with a $200 phone than they with the best Canon DSLR.
I have seen this in all hobbies I have practiced, be it musical instruments, kolinsky brushes on miniature painting, montain bikers, running apparell...
As I'm getting older I care less about editors, terminals, Linux distros... and after seeing what can be done with agentic coding tools less so.
I don't feel like this is a fair argument because different tools help different workflows. Since there is always a continuous growth of new people learning new things, it would make sense that tools change over time. Especially in a realm that is digital, not physical.
FWIW once I found my workflow (vim + tmux) I stopped caring so much about chasing "new" tools. Now have the luxury to wait 3-5 years and see what's worth adopting, most of it isn't only because I already found a workflow that works for me; but if you're new or still finding what works best, you'll always be experimenting.
I have no idea why I am responding to someone who flippantly uses a phrase like "dilittante mindset", but here we go
there is definitely a tendency for noobs and amateurs in any hobby or industry to obsess over expensive gear and things that don't matter (I love the term "buyhard" for it). you're out of your mind if you think the professionals in literally any industry do not discuss the specific technical tradeoffs of tools they are using among themselves.
When art critics get together they talk about Form and Structure and Meaning. When artists get together they talk about where you can buy cheap turpentine.
Yes, and one of my favorite anecdotes like this: at one of the greatest jazz concert ever recorded, Charlie Parker played a cheap plastic saxophone because he hadn't brought his own.
This is a very weird take. For people who spend their entire day in the terminal, having the right terminal is incredibly important. Like saying track athletes shouldn't spend money on running shoes if they own a pair of slippers.
I like the look of this terminal, but it doesn't work correctly with SSH (top, ncdu for example) unless you hack the $TERM variable. It feels a bit vibecoded even though it isn't.
To give a little productive criticism, one thing I really miss is when having tiled terminals, I want to be able to full screen one of them temporarily. Double click in iterm allows this, so does mod+f in i3wm. It really is the only thing stopping me from switching to this (and I admit it might be buried somewhere in the settings)
> To give a little productive criticism, one thing I really miss is when having tiled terminals, I want to be able to full screen one of them temporarily.
I think you're looking for the `toggle_split_zoom` binding which has existed since Ghostty 1.0 and is default bound to `cmd+shift+enter` on macOS which is the same binding as iTerm. It's also visible in the menu and command palette.
We recently added a kind of split title bar, making it double click to zoom is a good idea. I'll add an issue for that to the roadmap.
Can I take advantage of you being here and express some desiderata?
1. The quick terminal feature is ghostty's killer feature for me, I switched to ghostty because of it. Could we make it first-class feature? Like, i'd love to have tabs over there too (like in guake/yakuake).
2. I have a white on black theme (white text on black background) but when i split vertically/horizontally, the borders between one shell and the next are not really visible and I have an hard time resizing them... Can you do something about it? Setting the colors of borders would be an okay fix for me.
also, from not that long time ago, you can change the focus of panes and you can tell it to respect the zoom state if you want, which is super convenient
Using its own TERM is a deliberate design decision. I don't remember how to fix the terminal database, but it's pretty easy (your favorite search engine or LLM should be able to help you there).
If I install a terminal and SSH doesn't work from it out of the box, I would describe that as a bug and wonder if I need to read the full manual to not fall foul of other gotchas
Servers throwing "missing or unsuitable terminal" even when the connecting terminal is available and very suitable. And this is just because they hardcode xterm as the "standard".
I definitely have had to poke at things a bit, even where they "should" work. I use salt in my homelab and eventually got the xterm-ghostty.terminfo file and I put it in my baseline salt config, then you run 'tic -x xterm-ghostty.terminfo'.
I don't know enough about these things to know why, but I have pretty much always had to hack $TERM to get things working smoothly with any remotely featureful terminal emulator. I have occasionally needed similar hacks for Kitty and urxvt, for example (though top and ncdu seem to work fine).
The way terminal applications handle different terminal emulators on Linux just seems to be a bit broken. I don't think it's a particular indictment of Ghostty or any one emulator.
I wish TERM would contain a list of terminal types in decreasing order of specificity, like 'ghostty:xterm-256color', so a system that doesn't know what ghostty is would fall back to xterm-256color, but that ship has sailed long ago.
Same here. I have a Ghostty often open but end up using iTerm2 for pretty much everything. It's not just having to hack the TERM (which I ended up doing), it's that sometimes something about the TERM internally breaks anyway and I'm back to seeing ESC codes when I press an arrow. Quit & restart fixes it but it's just enough friction to keep me away.
It sounds like you simply forgot to update your terminfo on your remote system.
You must do this if your chosen terminal requires settings that are not compatible with "xterm-256color".
Alacritty, kitty, and wezterm also require this, as they implement features that xterm doesn't (and most likely never will), if your terminfo DB is too old to already include them.
If you have to configure the host to support the client rather than the client supporting unknown existing hosts, then what you have is a terminal, not a terminal emulator.
In 1970 all terminals were their own thing, tied to a single host somewhere in the same building by a dedicated serial cable. The terminal didn't move or connect to random other hosts, and the host had to be specially configured to work with any terminal connected to it.
Since then, a few terminal definitions have become standardized across all hosts for decades, and terminals are emulators that emulate one of those 40 year established standard definitions, because today terminals connect to countless unknown new random and varied hosts that the terminal user didn't install and configure before connecting, and may not even have the admin rights to do so after the fact either, and even if they do, it's wildly and inexcusably awful to require that.
It's entirely backwards for a terminal today to default to asserting it's own new $TERM, and to characterize the problems caused by this as "the user forgot to do this totally unreasonable thing" that no other terminal or terminal emulator has required for 40 years.
It's 100% a bug. The fact that it's intentional just means it's a design goal bug.
It might be a bug in remote handling and I might have unfairly called out GhostTTY for this, but "forgetting to update terminfo on my remote system" just doesn't hold with the way I work.
I work managing different systems for different clients and often login to systems for the first time. The servers aren't mine, and configuring something like Ansible to configure my home just seems like a waste of time for little benefit. It means that generally I end up using systems that are likely to be already instead - Bash not zsh, Perl, basic vim without any bindings. It might sound special but I'm sure I'm far from the only person working this way.
So given this, I'd always prefer a terminal that doesn't require me to change remote servers. In this particular case I can modify $TERM in my local .zshrc and it works fine so it's a moot point, but if I had to modify the remote system it would be a no go.
My only issue with ghostty is it isnāt immediately recognized by some programs through ssh (eg less) and they donāt operate properly. However thereās a one liner that solves the problem permanently on the remote machine[0] so it isnāt too bad. Hopefully in the near future ghosttyās terminfo will be shipped with common linux distros.
I find this docs page fairly hilarious. Complaining about how the rest of the world is in the stone ages, and that is why ghostty doesnāt work with it.
For me, a terminal program that requires me to muck with every machine I log into to get it to work is pretty horrible. I connect to a lot of different machines every work dat. Often theyāre not machines I maintain. Making that harder is exactly the opposite of what I want from a key tool like a terminal program.
Note in Ghostty 1.3 we disable discretionary ligatures (I think dlig/calt) by default as recommended by font standards. We still enable liga though that usually contains far less controversial ligatures.
I've only ever stuck with urxvt and more recently foot since moving to Wayland. On Mac the default terminal works for me, though I've been using Ghostty to follow a trend, but I seriously don't understand the benefits netted to me? (other than the cool icon)
I stayed with Terminal.app for quite awhile. Until very recently (not when Ghostty was released) it didn't have 24-bit colour support. It also didn't have shell integrations such as triple click to select all output of the last command. The configuration system is arse and is kind of a lock-in as it is in all plist form, so I had a hard time extracting the colours I used for my terminal and using them elsewhere.
Now that they've updated it recently, it is a better terminal, but otherwise Ghostty has a few bells and whistles that make the experience nicer.
Loving how well Ghostty works and looks.
When running several Projects I need quite a few tabs as all these AI agents take sometime to complete. Overhead tabs get real messy very quickly. Multiple windows become a nightmare quickly. Side bar tabs have been my solution.
I love iTerms sidebar tabs - I add emojis to mine for my key projects and any subtask just lives under the master tab like a folder.
Would love to see sidebar tabs - or it sounds like I can code my own.
I have been using computers and terminal for a long time, and this kind of comment makes me think I must have missed a whole bunch of things which can be done with a terminal
Since people are mentioning latency Iāll mention throughput. Basically the idea is that you accidentally cat a large file to your terminal and we are measuring how much time it takes for the terminal to finish displaying it. This test generally favors GPU-accelerated terminals.
Ghostty performs very well on this regard, among the same league as Alacritty and Ptyxis.
Rather, what will win is a terminal that internally builds an efficient, symbolic representation of what is on the display, rather than a pixel representation with all the font glyph, and which efficiently sychronizes that symbolic representation to the graphical canvas, skipping intermediate updates when the abstract display is changing too fast.
Thatās already happening I think. Newer terminals redraw at a fixed rate equal to the display refresh rate, usually 60Hz. But if there are more than 60 new characters being printed per second, some of these intermediate states are never rendered on screen.
Have you tried kitty with more aggressive settings? It feels very responsive out of the box, but the defaults are balanced for sane energy use on portable machines.
on my machine, noticeable. I seriously tried it, but went back because I could notice a small end-end latency, between keypress and action. But I'm also 240hz user.
Where are you measuring the keypress from? The nerve signal to your finger muscles?> Or the time the keycap hits bottom? What if the switch closes before the cap hits bottom: then we are getting a latency figure that looks better than it really is.
Nerve signals yes. I just try them side by side, usually running vim on both terminals and measuring how it feels. If you can feel difference, the latency is bad.
I've had a keyboard like that and with it, xterm (and nothing else) felt like it was displaying the characters even slightly before I had pressed them. It was a weird sensation (but good)
I've been following this before it was made public and I'm a big Zig fan so I would definitely switch to this, but I've tried and failed many times. Currently it just keeps crashing multiple times (on three different machines) each day on my mac and the quick terminal doesn't support full screen mode (it still shows the menu bar). I could live with the menu bar showing, but because of the constant crashing I'll wait for a bit and check back in a few months.
I have a terminal manager project[0] I'm currently using xterm for, but very curious to try libghostty. Have mainly been hesitant because it hasn't been promoted from an internal ghostty dependency (only awareness of the place was from this article by the creator[1]), but from the sounds of it here people are finding it stable enough. Gonna give it a whirl today.
Feature request: renaming tabs! Helps keep tabs organized instead of 20 tabs with similar names. (See Zed for example)
Also! I'm considering Ghostty web (https://github.com/coder/ghostty-web) for my project Ink Web. It's awesome that Ghostty can work in the browser to replace xterm.js.
Tried Ghostty several times and I really appreciate the font rendering, but I keep going back to iTerm2 and Terminal.app mostly because of lack of scroll back & CMD-F, etc. Looking forward to what is coming in the next release.
Ghostty is awesome, ill echo the sentiment regarding lack of IPC/scripting API being my current hold back. Sticking with kitty til then. I still keep the ghostty binary on hand so I can +boo :^)
for libghostty consumers, favorite i've tried so far is neurosnap/zmx.
In my experience it actually is. I went through multiple terminals and they all had issues for me (missing key remapping functionality, slowness, not working across platforms, UI ugly...), but Ghostty is solving most of these.
Curious to hear some more recommendations, I settled on using lxterminal which works well enough. I couldn't get wezterm to recognize fonts on ALpine no matter what I did, kitty doesn't support tabs and ghosttty sounds like it has issues with ssh connections? I feel like I tried most at some point but if anyone has suggestions for a tabbed terminal emulator nicer than lxterminal, ideally with transparency, I'd love to hear them.
As a counterpoint to Ghostty ssh. I have literally never had an issue and I manage a large cluster of boxes that run everything from centos 7 to rocky 10. All from ghostty on a Mac.
Ghostty's terminfo entry doesn't enable 24-bit color*, and as far as I can tell they don't provide a "ghostty-direct" entry that does. It just seemed odd that it's completely supported and working, yet not easily enabled. Maybe I just missed a trick, and didn't need to make a custom terminfo entry myself?
* "msgcat --color=test" is an easy test that shows the blending of 24-bit color, or blocky gradients otherwise.
Ghostty is extremely performant. I had a bug in some concurrent software; when I added logging the bug would disappear because the threads acquiring the lock on STDERR was sufficient to make the bug go away. On Ghostty this happened fast enough that I was able to reproduce the bug.
Maybe I should have been writing everything to a file. ĀÆ\_(ć)_/ĀÆ Anyway, I didnāt think of it at the time and Ghostty saved me.
Unfortunately scrolling in terminal apps via mouse wheel seems to be broken (on release and main branch), which is currently a blocker for me. Hope this will be fixed soon.
I tried this out after getting annoyed for the 100th time by a recent bug in kgx/console that will occasionally fail to launch windows leaving incomplete windows as tabs.
Console has long since become abandonware pushing people towards ptyxis which is now the default gnome terminal. A damn shame considering console is basically complete software (the quality of software in gnome is on a downhill).
I would have given ptyxis a chance if they didn't take a basic terminal and added some fluff (features related to distrobox) on top of other annoying things I can't be bothered to remember about because I ended up removing the software every time I gave it a spin.
In just a few days I've been able to replace console with ghostty-nightly and I don't miss anything.
What features related to distrobox? I use both ptyxis and distrobox and I donāt notice any integration between them. I do notice an integration between ptyxis and sudo however. It simply turns the title bar red.
> Ptyxis: Your Container-Oriented Terminal for GNOME
> A modern terminal emulator built for the container era.
Seamlessly navigate between your host system and local containers like Podman,
Toolbox, and Distrobox with intelligent detection and a beautiful, responsive
GNOME interface.
Itās been posted many times, I think mostly due to itās association to Mitchell Hashimoto. Itās left as an exercise the reader to determine why this is important.
When I tried Wezterm last year, you couldn't select more than 3-5 lines of text. I went to fix the 'bug', I found that it was intentional because it allocates a string and copies multiple times every time you click and drag.
Even if that's fixed, that design put me off the terminal forever.
Been using/abusing wezterm for years, my scrollback is set to 1000000 and text selection has never been a problem... copy mode however does make it even easier
I switched from iTerm2 because at the time (possibly still), iTerm2 had a performance bug where large amounts of underlined text would cause the terminal to slow down noticeably. Wezterm works perfectly, and I appreciate the .lua configuration over iTerm2's mess of menus.
Ghostty is fast and feels native, but WezTerm occupies a different niche: it's a terminal you program rather than configure.
The Lua config isn't just "dynamic" in the abstract sense. I built a tmuxinator-style workspace manager that spawns project-specific layouts - named tabs, splits, working directories, startup commands - from a fuzzy launcher. Session state auto-saves every 10 minutes with timestamped snapshots and crash recovery. Theme toggling between dark and light mode triggers a system-wide theme switch script. These are runtime behaviors, not static settings - try doing any of that in TOML.
The built-in multiplexer is the other major differentiator. Splits, directional navigation, pane zoom, pane selection with alphabet overlays, moving panes between tabs or windows, all without a tmux prefix key. It's not just "WezTerm has splits too, it's that the interaction model is fundamentally more fluid when there's no mode switching.
WezTerm isn't trying to be the fastest terminal. It's trying to be the most programmable one, and for people who want their terminal to work as a development environment rather than a PTY renderer, that tradeoff is worth it.
On the new mac tahoe with rounded corners (which are really frustrating to me), ghostty should add small margin on the bottom, because the font is sometimes renedered on it and letters are cut (rarely but infuriating, when it happens)
I can't find an alternative to Terminator, being able to drag and drop panels to create layouts is such a strong workflow that it's very hard to give up
I did give Ghostty a try, the turn off was Adwaita, the tablet UI for the tabs and context menu.. i just can't
When I had 3 or more panes open one of them would freeze and be not recoverable without quitting the app. That's a deal killer when I'm trying to run 2 or 3 agents.
It's a nice terminal but it cannot be configured to the same level as iTerm, e.g. in terms of colors, look and feel, how the menus work, how the tabs work, etc.
Also, in practice, I find it hard to detect any performance difference between iTerm and Ghostty even though I know in theory that Ghostty is more performant...
So for now I go with iTerm because I prefer the UI.
I used to use the iTerm programmable notification bell which would ring when a particular output was printed in the terminal. Don't think I can do that in Ghostty
just installed ghostty, looks cool. but my honest question is how it is significantly better than iterm2 to justify such a switch? I am aware of the fact that it is faster, uses less memory, various configurations is more straight forward. but is that all?
I have the feeling that I must be missing something big here.
Iāve been using iTerm2 for years. Iāve tried ghostty a few times and quickly went back to iterm each time for various reasons I canāt immediately recall. There is nothing I can think of lacking from iterm.
That said; if I was working more on Linux or Windows where iterm doesnāt exist it looks like ghostty would be a good option.
Same. As far as I can tell, Ghostty is still in active development and unfinished. For regular use iTerm 2 is a complete product that can be relied upon.
Itās a shame that version 1.2.x got abandoned and didnāt receive any important bug fixes. That has severely cut my trust into this project. Itās been over 4 months since the last 1.2.3 release, so the memory leak when using Claude is not addressed, my Ghostty crashes are not addressed (crash reporter doesnāt work), I donāt even bother looking at the issues anymore, as I know I am not getting the fixes for a long time.
And Iām not running a critical piece of productivity software on a nightlies channel!
I'm not doubting your personal experience, but I find the crashes you mentioned surprising; I have never once, since v1.0.1, had Ghostty crash. Tbf I use it with tmux, so I'm not exercising some of its capabilities. But with tmux, I have at any given time 5-7 sessions, each with 2-5 windows, some with panes.
Datapoint: Iām running nightly now because the latest 1.2 release has a known crash-on-wake bug when disconnecting an external monitor. Accordingly the issue tracker it was fixed months ago, but itās not in a release. The nightly is stable though.
Didnāt realize how may projects use libghostty, will try cmux one of these days.
Ghostty calls itself "feature rich" but only added cmd+F / find functionality a few months ago. Makes me wonder what other basic functions it's missing.
I'm the original creator of Ghostty. It's been a few years now! I don't know why this is on the front page of HN again but let me give some meaningful updates across the board.
First, libghostty is _way more exciting_ nowadays. It is already backing more than a dozen terminal projects that are free and commercial: https://github.com/Uzaaft/awesome-libghostty I think this is the real future of Ghostty and I've said this since my first public talk on Ghostty in 2023: the real goal is a diverse ecosystem of terminal emulators that aim to solve specific terminal usage but all based on a shared, stable, feature-rich, high performant core. It's happening! More details what libghostty is here: https://mitchellh.com/writing/libghostty-is-coming
I suspect by the middle of 2027, the number of people using Ghostty via libghostty will dwarf the number of users that actually use the Ghostty GUI. This is a win on all sides, because more libghostty usage leads to more stable Ghostty GUI too (since Ghostty itself is... of course... a libghostty consumer). We've already had many bugs fixed sourced by libghostty embedders.
On the GUI front Ghostty the apps are still getting lots of new features and are highly used. Ghostty the macOS app gets around one million downloads per week (I have no data on Linux because I don't produce builds). I'm sure a lot of that is automated but it's still a big number. I have no telemetry in Ghostty to give more detailed notes. I have some data from big 3rd party TUI apps with telemetry that show Ghostty as their biggest user base but that is skewed towards people consuming newer TUIs tend to use newer terminals. The point is: lots of people use it, its proven in the real world, and we're continuing to improve it big time.
Ghostty 1.3 is around the corner, literally a week or two away, and will bring some critically important features like search (cmd+f), scrollbars, and dozens more. In addition to GUI features it ships some big improvements to VT functionality, as always.
Organizationally, Ghostty is now backed by a non-profit organization: https://mitchellh.com/writing/ghostty-non-profit And just this past week we signed our first 4 contributor contracts to pay contributors real money! Our finances are all completely public and transparent online. This is to show the commitment I have to making Ghostty non-commercial and non-reliant on me (the second part over time).
That's a 10,000 foot overview of what's going on. Exciting times in Ghostty land. :) Happy to answer any big questions.
What's it been like managing a fairly large project with Zig? I know you've spoken highly of the language in the past, but recently it seems like Zig has been through some substantial changes that would be relevant to a terminal emulator. I'm curious how painful the churn has been for project maintainers.
It's been extremely good. I should really blog about it in more detail because I do get asked this question regularly. It's been very good.
The large language changes are a burden, but it's something I knew going into it. And so far in every case, it's been well worth it. For example, 0.15 introduced the std.Io.Writer overhaul, but I really love the new API. I haven't started the std.Io change yet for 0.16. We'll see. And honestly, LLMs make this all way less painful... even though they're not trained on it, agents are able to run builds, reference docs, and work their way through the upgrade with huge success.
I thought that finding contributors would be an issue, but it hasn't at all. There's a lot of people out there eager to use Zig, the language isn't hard to learn (as long as you're already familiar with systems concepts), etc. It has been good.
I'll think about more to say if I write about this more but overall, I'm very happy with the language, the community, and the leadership. All good.
That's super interesting to hear. I see people say all the time "oh I would never use it in a big project because it's changing so fast", but then see awesome projects like Ghostty and Tiger Beatle written in it, so clearly they're doing something right.
I'm surprised to hear LLMs have been helpful. What little I tried to use them for with Zig, all the information was way too out of date. But I was mainly just doing research, not running an agent at the time, so that's probably why.
Yes, LLMs with Zig are absolutely useless without agentic behaviors. Throw an agent in the mix and it's totally fine. Bonus points if you pair it with some basic agent skills so it knows how to look up language references, stdlib files, etc. then it does even better.
Do you get frustrated in using a low training data language like zig with AI models? I've noticed that models tend to be better with languages like TypeScript than Swift because of issues like that.
Not at all. Give it tools and skills and it figures it out very quickly. Must be an agent. Don't use chat.
Mitchell,
What has it been like witnessing terminal emulators make such a huge comeback with the advent of Claude Code et. all? I remember comments here in the early days of Ghostty along the lines of "Why is he working on a terminal emulator? We need people working on future problems, not the past!" Pretty funny considering I regularly hear people say they are in the terminal more than the browser now. Crazy times!
Overall I would describe it as "amusing."
If you told me 3 years ago that terminal usage would _increase_ I would've laughed. Beyond that, I'm now having regular conversations with the frontier agentic coding companies (since they're far and away the largest terminal users at the moment) and if you had told me 2 years ago that that would be happening because of a terminal, I would've laughed even harder.
So, it's amazing. But overall, its amusing.
Would a terminal deal with them have added another billion to your account if it hadnāt been nonprofit?
Wait, really? So Iāve used the terminal for everything for decades, and now, because of vibe coding, all The Kids have joined me? I donāt even know how to feel about that. Better terminals are nice though.
I think terminal workflows are intimidating for a lot of people, because the discoverability is lower than GUIs. You can't necessarily intuit how a CLI works, you have to read the documentation or watch a tutorial, which my 10 years in the IT industry has taught me a big barrier even for really experienced SWEs. The new coding TUIs are a more gentle introduction to that.
Right? Itās been kind of funny watching everyone ārediscoverā the terminal and Iām over here feeling like a true graybeard āsilly kids, Iāve been here the whole time.ā
Whatās old is new again is apparently just as true in tech as it is in fashion.
The terminal was _always awesome_, the bar to realized that was just a tad high for many people. Until now!
here-doc usage has probably 100x-ed in the last year
It's because the web developers who destroyed the web are now taking their mess with them into more obscure places, such as terminals, hardware and AI.
That's probably why it is so hyped up as it is right now.
Embrace, Embellish, Enshittify.
Yeah itās been amusing to see people rediscovering tmux as well
/* Claude Code is the strongest case of the return to the mainframe: a closed, bespoke, paid service that nothing locally run compares to. Terminals are just a natural part of the mainframe world! */
Once he fixes the past he will have more time to fix the future
He was on a podcast recently where he talked about that a little. Itās on Youtube.
I'm the author of Trolley[0] (Electron for TUIs).
It was so easy to get the terminal functionality going with `libghostty`. Most time was spent building the functionality around it.
Thanks for making it.
[0]: https://github.com/weedonandscott/trolley
Coincidentally I was just listening to your interview with The Pragmatic Engineer [1] this morning. Loved hearing the stories of early days at HashiCorp, taking it public, and the near-miss with VMware.
It also got me wondering how things would be different if you haven't crossed paths with the guy who unplugged your mouse :) It's fascinating how life is full of these small yet defining moments. We don't always appreciate them right away, but beautiful to look back.
Thanks for Ghostty! It has been my daily terminal driver for the past year.
[1] https://www.youtube.com/watch?v=WjckELpzLOU
I was also just recommended this interview on youtube. honestly it makes sense if the algo decided it was the right time to recommend this video and resultantly this post is making it's way to front page of HN
I subscribe to the channel, so I had already downloaded the episode. But glad PE is getting some algorithm-love; it's a great channel/podcast. Gergely is a great interviewer.
https://www.pragmaticengineer.com/
Thanks for all the work you do! I had used terminal just a few dozen times before November ā and now i am in terminal more than any app (even more than the web browser).
Itās common for me to have 15-25 different terminal windows open for using Claude code. I shifted to Ghostty because I was looking for more features.
Unfortunately, none of the features I wanted are available anywhere (though Iāve come to appreciate Ghostty anyway). Hereās what I had wanted:
1. Basic text editing features (ie click to place cursor in the text input field; highlight to delete)
2. Change colors or fonts mid session (to make it easier to find particular windows)
3. Window management and search (eg, a way to find my windows when I lose them and to otherwise control them)
Apparently, it is really hard to develop features like these for terminal emulators. Iād love to understand whyā¦
The next release includes a way to use a command palette to search for and jump between surfaces (windows, panes), which sounds like it partially addresses your third point. I had a small hand in it, by building the initial UI for the Linux version.
IMO this isnāt the job of the emulator. You can do this all in `tmux` for example.
As for editing text, ghostty+tmux most definitely supports editing text with the mouse (even an in terminal right click menu!) although sounds like your intended use of select to delete isnāt common so youāll need to do some customizations.
What makes you say that isn't the job the emulator? Sure it is. In fact, tmux itself is a terminal emulator that you just so happen to run inside of another terminal emulator that you want to multiplex.
Iāve been using scroll back search for 15+ years with Terminal.app and iTerm2, and thereās no way thatās not the job of the terminal. You donāt know how good that is until you use it.
Tmux does it better
+1
What am I missing?
For 1, take a look at https://github.com/alex-903/zsh-mouse-and-flex-search. It runs as a zle-line-init hook, so it works in any terminal. A full terminal app implementation would be cleaner, however.
Having incorporated libghostty into my current web-based project, I can't say enough thanks. I've lived in the terminal since 2003, resisting IDEs, VSCode, everything because I'm a die hard Vim + tmux guy. Vibe coding coming back to the terminal, and being able to use libghostty to facilitate that is a serious vindication of my steadfast resistance to move away from the terminal.
I'm sure you feel the same watching Ghostty become what it has. Big thank you.
Now that Ghostty is part of a real org, is there any way people can sponsor specific features/bugfixes? I've been waiting for drag/drop to be working on KDE before I make the switch, and I'd be happy to pay for a fix.
Many thanks for everything. Without Ghostty I wouldn't have been able to create https://github.com/rcarmo/webterm and have a decent browser-based terminal that works the way I expect it to.
Is there any chance of a stable release that fixes the memory leak issue? I know I could run nightly but for something I spend all day every day using I'd much rather run a stable version.
New stable release in 1 to 2 weeks.
mitchellh: What is the current thinking WRT adding client/server functionality (like built-in tmux+mosh)? I recall you talking about it on the Changelog podcast, and that would be a killer feature for me; I really make a lot of use of the wezterm equivalent, it's so nice having first-class UI windows rather than tmux's faking of it.
Zellij has been holding me over with tabs and panes (in quick terminal) while I wait for them to come to ghostty directly.
Tabs (and panes? I haven't tried yet) should work fine for regular terminal windows though.
Just to clarify, it's more about the ability to run a terminal on my Linux box and connect and disconnect to it from my Mac that I'm looking for. Wezterm does a good job of this. Previously I was using tmux and mosh and Nebula, and that worked really great for reconnecting (I almost never had to reconnect, it just stayed live, wezterm I need to reconnect all the time, but that works reliably). But copy-paste with tmux is meh.
There's a PR out there for tabs in quick terminal https://github.com/ghostty-org/ghostty/pull/9857
Did a double take on this one since my Ghostty has had panes for a while now (I run tip/nightly). Didn't realize it's not part of the current release.
Also, Zellij is nice.
Ah I just started using ghostty maybe a week ago and I mostly use quick terminal so I might be missing the panes on the regular windows.
Hey Mitchell, thanks for ghostty (happy user here for a month or two). Is there anywhere I can look to see the status of the next planned release?
I've been waiting for the vim feature to hit stable, and have just been checking to see if there's a new release every so often, but I couldn't find a discussion or anything to see when it was planned.
Random advice question. My brother taught himself to program and has been making a terminal-based game. What started out small has turned into a highly polished game with ascii art, sound, you name it.
Iāve been trying to figure out how I could actually help him distribute it and I keep coming back to the best option being to wrap his programs terminal output into a host process that can emulate and render it. It seems that the lib Ghostty might be perfect for the former, but not quite yet on the latter?
Maybe as an SSH app? See https://snakes.run for a recent example.
I use Ghostty as my main TUI at work and absolutely love it. Most of my day lives in terminals, and Ghostty just feels fast, clean, and out of the way in the best possible sense.
I was a long-time Kitty user, but switching to Ghostty has been a big upgrade for my workflow. Hard to go back now. Thank you
I started using it a few days ago and then I need to find something in the terminal. But....there is no find! Why? Can you guys add it? This is such a basic and critical feature that I may have to just go back to...just about anything else.
find is provided by the OS, not a terminal emulator like Ghostty. Most likely something is wrong with your paths.
I think they mean like CTRL+F kind of find.
This is addressed in paragraph 5 of the post they replied to.
I literally discovered Ghostty yesterday when googling "best terminal macos" and surfaced a ~year-old reddit thread recommending it [0]. Just needed something other than Terminal so I could Cmd-Tab between distinct command-line work (e.g. claude code and ipython tabs). Was nice to find something that just worked
[0] https://www.reddit.com/r/macapps/comments/1loiw2z/comment/n0...
Fwiw x the program alt-tab on Mac gives macOS a more sane alt-tab behavior.
Cmd+` is also a useful shortcut for switching between windows of the same application
Excited to see the further development of libghostty! It is an exciting project in this new world of being able to develop your own agentic development environments rather effortlessly. These things are possible because of projects like yours. Thank you!
I just wanted to say "thank you". I switched to Ghostty over a year ago and it's been working out great. It's now my default terminal. My favorite features are responsiveness and ease of splitting panes.
Congrats on creating and helming such a cool project!
Out of curiosity, does ghostty do the Quake terminal thing - I use yakuake for this, but it feels a bit long in the tooth.
It does. See https://ghostty.org/docs/config/keybind/reference#toggle_qui...
This works on MacOS, and on Linux sometimes:
> On Linux, the quick terminal is only supported on Wayland and not X11, and only on Wayland compositors that support the wlr-layer-shell-v1 protocol. In practice, this means that only GNOME users would not be able to use this feature.
Hi Mitchell, thanks for creating Ghostty. Been part of my workflow ever since I found it. Just a small question, when do you see Ghostty can fully replicate iTerm2 popular features like output copy/selection?
Thanks for your awesome work. Never thought Iād switch to a terminal without cmd-f, but ghostty made it worth it. Canāt wait for v1.3!
Hi,
Big fan. Can I get a ride on your jet?
> front page
Nice! Looks like I should have rushed the interview. :D
Recently tried multiple terminals because I am gradually migrating off of Macs and I liked Ghostty but the lack of searching the scrollback has turned me away from it. Opening another editor to do the same I tried but didn't like.
WezTerm has everything I need and is closest to iTerm2, minus being able to quit it and have it restore all windows and tabs on restart -- but oh well, it's not an important enough feature. It also renders my prompt perfectly; no small pixel divergences like all other terminals have.
Kitty I don't remember why I rejected.
Alacritty I like but the lack of tabs is not acceptable for the moment... and before you ask: I hate tmux. So much more key presses to achieve basic functionality, it boggles my mind why people love it. But, to each their own obviously.
It's also likely I'll settle for some Linux-exclusive terminal but as I'm not yet possessing a Linux workstation (just a laptop) I haven't put the requisite time to do this research.
Suggestions are welcome.
> Kitty I don't remember why I rejected.
Maybe worth another look at then? I'm far from a Kitty power user, but it does pretty much everything else I want it to, including working as a quake-style terminal[0]. And you can extend it with kittens[1] if you so desire. Also, the next release should presumably include smooth scrolling[2] which I'm quite looking forward to.
Maybe more than any one feature though, I appreciate the hard work that Kovid (the creator of Kitty) has done to tastefully add new VT standards and try to make terminals as useful as they can be in the 21st century.
[0] https://sw.kovidgoyal.net/kitty/kittens/quick-access-termina...
[1] https://sw.kovidgoyal.net/kitty/kittens_intro/
[2] https://github.com/kovidgoyal/kitty/pull/9330
Kitty is the best one. It has several features which have proven so useful I wasn't able to stay on anything else for more than a couple of hours (including the one this topic is about).
Ctrl+Shift+G wraps the output of the previous command into a pager (say, less). You often only know you needed a pager after that output is printed.
Ctrl+Shift+E highlights all links on the current screen and assigns short alphanumeric codes to them, so you can open links without using the mouse. For example, `Ctrl+Shift+E 1` opens the first link, `.. 2` the second one, etc.
Ctrl+Shift+U opens symbol search where you can find & insert symbols using their unicode names. Emoji, TUI blocks, rare accented characters you need once in a blue moon, CJK ideographs, whatever.
Kitty is great, but its author has very strong opinions, strongly held; this keeps a number of popular requests summarily rejected. In particular, there is no way to color plain bold text, which is possible in basically any other emulator. This is a deal-breaker for me personally, it makes reading e.g. man pages unnecessarily hard.
WezTerm is a very good replacement.
> author has very strong opinions.
So true. To the point I have to maintain my own fork to make the command key my meta
I'm not the GP, but I do remember why I rejected Kitty when I tried several terminal emulators last years: it broke quite a few of my workflows.
For instance, in vim the F3 key was broken[^1]. It was very surprising and weird, and a portable workaround required some arcane vim configuration.
Another important pain point was that the font rendering was different in Kitty to any other app, and very dependent on the screen DPI. IIRC, for a DPI around 100, I had to switch to "legacy rendering" because the default rendering was barely readable.
I also remember issues with SSH. And Kitty crashed at least once. And I wasn't a fan of Kitty's mix of C and Python. After a week or two of usage, my Kitty config file was big, with an extra hundred lines of Python for the tabbar. Despite some nice features (like the shortcut to put the output of the last command into a file), I got uneasy with all this mess. I tried Ghostty, which was as good as Kitty with much less oddities.
[^1]: https://github.com/vim/vim/issues/13328
Kitty is the GOAT terminal
Foot is worth a look. Itās the only terminal Iāve ever seen that starts up in sub-50ms cold, without a service already running.
But you do have to run a proper window manager so you donāt have to require tab support in every single app. ;)
I wouldn't say I love tmux, but I have a configuration file that I put on every computer I use regularly that is very comfortable for me. I basically live in the terminal across many different machines, and having the same interface for managing panes and tabs even when using ssh is invaluable.
I also use vim (well neovim) as my primary editor, and have set up tmux to integrate well with it, so that might contribute to my appreciation and continued usage of it.
Yep, I've been using tmux for almost 10 years. Its config has followed me across every terminal I've used in Windows with WSL 2, macOS (work laptop) and native Linux. It's a nice abstraction over getting split panes, windows (tabs), sessions, search, scroll back, consistent key binds and the overall theme to work the same across environments.
If you spend any amount of time on remote machines with unreliable connections, local tmux is insta-reject because tmux inside tmux is very inconvenient. As with GP, it's also why I don't consider terminal emulators without tabs at all.
> because tmux inside tmux is very inconvenient.
Hitting c-b c-b isn't that inconvenient?
Agreed.
I hold Control and double-tap b for managing the remote session, then everything else is the same.
Granted, I'm not a power user, so there may be numbers that get frustrating. I could imagine complex splits getting confusing (I don't use splits at all).
C-b is less ergonomic than C-a that is the default on GNU screen. The first thing in tmux is to remap to C-a. (Triply so if you remap caps lock to ctrl.)
Yep same, I install ohmytmux and I'm ready to go.
Scrollback does exist on Ghostty! But you need to switch to ātipā. This can be done in the config file. The tip build is very stable and has many bugs fixed (like various memory leaks).
Tip is good but depending on your platform you might need to build it yourself and then you need a particular zig version.
Does it work all the time? I'm using tip and had scrollback stop working after a long ssh session.
I haven't seen anyone else mention Terminology yet. It uses an unconventional GUI framework (Enlightenment / EFL), but that aside, it's fast and has more or less all of the features you'd expect of a terminal:
https://github.com/borisfaure/terminology
Its "moment" as a new novel terminal was over a decade ago, but it still chugs on working just fine. Notably(?), gregkh uses it (or used to use it):
https://www.linuxfoundation.org/blog/blog/greg-kroah-hartman...
Back in 2018 I thought it felt kind of sluggish and consumed quite a bit of resources, but looked pretty. Have they improved on performance since then?
Are you sure you're thinking of the same terminal? Its standout feature has been performance. Granted, that was 10+ years ago, but I've never noticed it regressing.
there's scrollback search in the nightly build if that's an option for you (I've been using it a ton for a few months and haven't seen any bugs so far):
https://github.com/ghostty-org/ghostty/releases/tag/tip
I like tmux because it does more than tabs in an emulator. I can detach from a session on a remote host to leave a process running after I disconnect, or to pick the session back up on another PC.
I do use tabs rather than repeatedly switching tmux sessions, but I do end up running tmux for splitting the GUI into side by side layouts.
Detaching is working just fine with `screen` as well.
I like the idea of tmux but as another poster suggested, I prefer to just get better at my window manager to achieve similar results. tmux requires way too many key presses for me.
SecureCRT is a paid program Iāve used for years and itās just so comprehensive. Itās not cheap but the quality shows.
Scroll back search is coming. You can try it in the nightly.
Very glad for that--it's what made me stop my evaluation the first time around. I looked for the feature in issues and just saw #9821 about memory use of the buffer which could be an issue if configuring very large scrollback as I do.
BTW is there feature parity between macOS and Linux, e.g. scrollback buffer searching on Linux?
I'll wait for the stable release and will retest it. Not in a rush and not the early adopter kind of guy.
Give it "a week or two"
> Alacritty I like but the lack of tabs is not acceptable for the moment... and before you ask: I hate tmux. So much more key presses to achieve basic functionality, it boggles my mind why people love it. But, to each their own obviously.
Tabs usually mean mouse+click to switch which takes way more effort that a simple alt+number or similar keybinding used to switch "tabs" in tmux. I'd guess that some terminal emulator tabs allow keybindings to switch tabs as well but, modelling OP, I'm focusing on the expected default experience.
No, zero mouse usage, you can both address each tab by number and just moving between them. I wouldn't have any terminal emulator without the latter feature at least, and all I've tried support it.
I hate mixed mouse + keyboard workflows as well.
Personally kitty is the only one I keep coming back too. Mostly because it's very customisable, fast, lean, ligatures, separate font for italics, great macro support, and supports automatic tiling panes.
> Alacritty I like but the lack of tabs is not acceptable for the moment... and before you ask: I hate tmux.
Another option is to leave the tabbing to your window manager.
Cool, but I'm 100% clueless as to how. Haven't migrated to Linux yet and this one of the next important items for me to learn.
Kitty has poor security
https://github.com/kovidgoyal/kitty/issues/2084
You can search scroll back on Ghostty nightly. I switched straight from iTerm2 (after 20 years of iTerm), but _do_ remember the reason I rejected Kitty: it has a ton of Python in it, which is usually indicative of software which is going to be a pain in the ass.
I love Ghostty, especially the UI is so much nicer than Kitty. However, for some reason ghostty sometimes has severe issues with dealing with SSH connections. The terminal is like broken and wrongly displayed and you can't properly type something. Therefore, I still use Kitty, especially for SSH connections. I don't know what `kitten ssh` does, but it makes my terminal work with SSH.
This is what kills it for me. Half the time I'm using a terminal I'm sshing and the fact that I need to copy over term-info on virtually every machine keeps me from using it more often. Even copying term-info doesn't always fix it. From what I've read it's not entirely ghostty's fault but as a user it's frustrating.
Have you seen the `ssh-terminfo` option for shell integration? https://ghostty.org/docs/config/reference#shell-integration-...
No I haven't seen that before. I used to just run the terminfo tic command that's recommended in the top searches and when that started failing I just swapped back to default terminal for SSH
you can always export TERM=xterm or some other value if that's causing you grief while distros catch up.
Same. On the tip of main, at least, I can open the command palette and choose reset to bring it back to life. I set a keybinding for reset to skip the command palette.
> I love Ghostty, especially the UI is so much nicer than Kitty.
What are you talking about? What UI does Kitty have?
Big one are the tabs. Kitty has tabs, but rendered in the text rows, so it's missing features that the native OS tabs provide (drag and drop, easy to move around and split into windows...)
He probably refers to the fact that Ghostty aims to use the native window decorations etc.. So for example on Ubuntu it uses gtk, on mac the native macOS tab bar etc. Same goes for the scrollbar and search window.
I really like this a lot.
These look like the major past threads (in reverse order) - have I missed any?
AI Usage Policy - https://news.ycombinator.com/item?id=46730504 - Jan 2026 (273 comments)
Finding and fixing Ghostty's largest memory leak - https://news.ycombinator.com/item?id=46568794 - Jan 2026 (138 comments)
Why users cannot create Issues directly - https://news.ycombinator.com/item?id=46460319 - Jan 2026 (310 comments)
Ghostty is now non-profit - https://news.ycombinator.com/item?id=46138238 - Dec 2025 (289 comments)
Ghostty compiled to WASM with xterm.js API compatibility - https://news.ycombinator.com/item?id=46110842 - Dec 2025 (115 comments)
Vibing a non-trivial Ghostty feature - https://news.ycombinator.com/item?id=45549434 - Oct 2025 (147 comments)
Ghostty 1.2.0 - https://news.ycombinator.com/item?id=45252026 - Sept 2025 (26 comments)
AI tooling must be disclosed for contributions - https://news.ycombinator.com/item?id=44976568 - Aug 2025 (464 comments)
We rewrote the Ghostty GTK application - https://news.ycombinator.com/item?id=44905808 - Aug 2025 (224 comments)
Release Notes for Ghostty 1.1.0 - https://news.ycombinator.com/item?id=42884930 - Jan 2025 (79 comments)
Déjà vu: Ghostly CVEs in my terminal title - https://news.ycombinator.com/item?id=42562743 - Dec 2024 (55 comments)
Ghostty: Reflecting on Reaching 1.0 - https://news.ycombinator.com/item?id=42527355 - Dec 2024 (7 comments)
Ghostty 1.0 - https://news.ycombinator.com/item?id=42517447 - Dec 2024 (681 comments)
Ghostty 1.0 Is Coming - https://news.ycombinator.com/item?id=41914025 - Oct 2024 (32 comments)
When Ghostty was publicly announced, I used it for a few months and gave up on it due to the lack of support for the CMD+F feature that I use Terminal.app. This is a critical feature for me while tailing logs on my local. I tried the workaround of capturing the text into a text file and then searching it. It just didn't work for my workflow and dropped it. Ghostty is great otherwise. But, without the CMD+F, it's of no use to me.
The tip releases have had search support for a few months:
https://github.com/ghostty-org/ghostty/issues/189
https://x.com/mitchellh/status/1993728538344906978
As Mitchell stated above:
> Ghostty 1.3 is around the corner, literally a week or two away, and will bring some critically important features like search (cmd+f), scrollbars, and dozens more. In addition to GUI features it ships some big improvements to VT functionality, as always.
The fetishization of tools is one of the things that mark a dilettante mindset.
You see it on all hobbies, e.g. when the someone sees a photograph and their first question is about what camera and optics were used. No question about composition, light, the moment, creativity... they only care for the tools.
The technique and knowledge is the important thing, not the tools. They forget the good practitioner can do a great photo with a $200 phone than they with the best Canon DSLR.
I have seen this in all hobbies I have practiced, be it musical instruments, kolinsky brushes on miniature painting, montain bikers, running apparell...
As I'm getting older I care less about editors, terminals, Linux distros... and after seeing what can be done with agentic coding tools less so.
I don't feel like this is a fair argument because different tools help different workflows. Since there is always a continuous growth of new people learning new things, it would make sense that tools change over time. Especially in a realm that is digital, not physical.
FWIW once I found my workflow (vim + tmux) I stopped caring so much about chasing "new" tools. Now have the luxury to wait 3-5 years and see what's worth adopting, most of it isn't only because I already found a workflow that works for me; but if you're new or still finding what works best, you'll always be experimenting.
I have no idea why I am responding to someone who flippantly uses a phrase like "dilittante mindset", but here we go
there is definitely a tendency for noobs and amateurs in any hobby or industry to obsess over expensive gear and things that don't matter (I love the term "buyhard" for it). you're out of your mind if you think the professionals in literally any industry do not discuss the specific technical tradeoffs of tools they are using among themselves.
When art critics get together they talk about Form and Structure and Meaning. When artists get together they talk about where you can buy cheap turpentine.
-- Pablo Picasso
They don't discuss tradeoffs of every tool, just the ones that offer the most leverage
Yes, and one of my favorite anecdotes like this: at one of the greatest jazz concert ever recorded, Charlie Parker played a cheap plastic saxophone because he hadn't brought his own.
https://jazzfuel.com/charlie-parker-the-plastic-saxophone-th...
Composition, lighting and creativity are no more than tools either.
From one old man to another it's tough when you lose that spark.
This is a very weird take. For people who spend their entire day in the terminal, having the right terminal is incredibly important. Like saying track athletes shouldn't spend money on running shoes if they own a pair of slippers.
I like the look of this terminal, but it doesn't work correctly with SSH (top, ncdu for example) unless you hack the $TERM variable. It feels a bit vibecoded even though it isn't.
To give a little productive criticism, one thing I really miss is when having tiled terminals, I want to be able to full screen one of them temporarily. Double click in iterm allows this, so does mod+f in i3wm. It really is the only thing stopping me from switching to this (and I admit it might be buried somewhere in the settings)
> To give a little productive criticism, one thing I really miss is when having tiled terminals, I want to be able to full screen one of them temporarily.
I think you're looking for the `toggle_split_zoom` binding which has existed since Ghostty 1.0 and is default bound to `cmd+shift+enter` on macOS which is the same binding as iTerm. It's also visible in the menu and command palette.
We recently added a kind of split title bar, making it double click to zoom is a good idea. I'll add an issue for that to the roadmap.
I could have sworn I checked every menu option but it is there, thank you
Can I take advantage of you being here and express some desiderata?
1. The quick terminal feature is ghostty's killer feature for me, I switched to ghostty because of it. Could we make it first-class feature? Like, i'd love to have tabs over there too (like in guake/yakuake).
2. I have a white on black theme (white text on black background) but when i split vertically/horizontally, the borders between one shell and the next are not really visible and I have an hard time resizing them... Can you do something about it? Setting the colors of borders would be an okay fix for me.
> The quick terminal feature is ghostty's killer feature for me
Just FYI, it's in Kitty nowadays too: https://sw.kovidgoyal.net/kitty/kittens/quick-access-termina.... The quick-access terminal is a regular terminal, so you get normal tabs, splits, etc. there.
2. I think split-divider-color does what you want.
also, from not that long time ago, you can change the focus of panes and you can tell it to respect the zoom state if you want, which is super convenient
Using its own TERM is a deliberate design decision. I don't remember how to fix the terminal database, but it's pretty easy (your favorite search engine or LLM should be able to help you there).
https://ghostty.org/docs/help/terminfo#ssh
Or the manual, which describes the features for automatically handling it.
If I install a terminal and SSH doesn't work from it out of the box, I would describe that as a bug and wonder if I need to read the full manual to not fall foul of other gotchas
It is a bug.. But not with Ghostty...
What do you think the bug is, exactly?
Servers throwing "missing or unsuitable terminal" even when the connecting terminal is available and very suitable. And this is just because they hardcode xterm as the "standard".
i had to do this for ssh
host * SetEnv TERM=xterm-256color
I definitely have had to poke at things a bit, even where they "should" work. I use salt in my homelab and eventually got the xterm-ghostty.terminfo file and I put it in my baseline salt config, then you run 'tic -x xterm-ghostty.terminfo'.
I don't know enough about these things to know why, but I have pretty much always had to hack $TERM to get things working smoothly with any remotely featureful terminal emulator. I have occasionally needed similar hacks for Kitty and urxvt, for example (though top and ncdu seem to work fine).
The way terminal applications handle different terminal emulators on Linux just seems to be a bit broken. I don't think it's a particular indictment of Ghostty or any one emulator.
I just checked Kitty and top fails on Debian 12, so I think I was unfair in just calling out Ghostty for this
I wish TERM would contain a list of terminal types in decreasing order of specificity, like 'ghostty:xterm-256color', so a system that doesn't know what ghostty is would fall back to xterm-256color, but that ship has sailed long ago.
I have tried every possible setting but SSH ends up breaking more often than not. As opposed to iTerm which just works.
Same here. I have a Ghostty often open but end up using iTerm2 for pretty much everything. It's not just having to hack the TERM (which I ended up doing), it's that sometimes something about the TERM internally breaks anyway and I'm back to seeing ESC codes when I press an arrow. Quit & restart fixes it but it's just enough friction to keep me away.
It sounds like you simply forgot to update your terminfo on your remote system.
You must do this if your chosen terminal requires settings that are not compatible with "xterm-256color".
Alacritty, kitty, and wezterm also require this, as they implement features that xterm doesn't (and most likely never will), if your terminfo DB is too old to already include them.
Using Alacritty as an example, you'd take a file that looks like this, https://github.com/alacritty/alacritty/blob/master/extra/ala... , and run `tic -x -o "~/.terminfo" "that.info"` on it.
Its been this way for like 30 years, and it'll never change.
If you have to configure the host to support the client rather than the client supporting unknown existing hosts, then what you have is a terminal, not a terminal emulator.
In 1970 all terminals were their own thing, tied to a single host somewhere in the same building by a dedicated serial cable. The terminal didn't move or connect to random other hosts, and the host had to be specially configured to work with any terminal connected to it.
Since then, a few terminal definitions have become standardized across all hosts for decades, and terminals are emulators that emulate one of those 40 year established standard definitions, because today terminals connect to countless unknown new random and varied hosts that the terminal user didn't install and configure before connecting, and may not even have the admin rights to do so after the fact either, and even if they do, it's wildly and inexcusably awful to require that.
It's entirely backwards for a terminal today to default to asserting it's own new $TERM, and to characterize the problems caused by this as "the user forgot to do this totally unreasonable thing" that no other terminal or terminal emulator has required for 40 years.
It's 100% a bug. The fact that it's intentional just means it's a design goal bug.
It might be a bug in remote handling and I might have unfairly called out GhostTTY for this, but "forgetting to update terminfo on my remote system" just doesn't hold with the way I work.
I work managing different systems for different clients and often login to systems for the first time. The servers aren't mine, and configuring something like Ansible to configure my home just seems like a waste of time for little benefit. It means that generally I end up using systems that are likely to be already instead - Bash not zsh, Perl, basic vim without any bindings. It might sound special but I'm sure I'm far from the only person working this way.
So given this, I'd always prefer a terminal that doesn't require me to change remote servers. In this particular case I can modify $TERM in my local .zshrc and it works fine so it's a moot point, but if I had to modify the remote system it would be a no go.
you could also stick this in ssh config, generally makes terminals work with ancient systems...:
Ancient systems like Debian 12?
Ghostty did not submit their terminfo to the database until the Dec 30th 2025 release of ncurses 6.6.
Any distro older than this does not include Ghostty by default.
Alacritty was added in the Feb 2020 release, as well as Kitty. Wezterm was added in the April 2024 release.
My only issue with ghostty is it isnāt immediately recognized by some programs through ssh (eg less) and they donāt operate properly. However thereās a one liner that solves the problem permanently on the remote machine[0] so it isnāt too bad. Hopefully in the near future ghosttyās terminfo will be shipped with common linux distros.
[0] https://ghostty.org/docs/help/terminfo
I find this docs page fairly hilarious. Complaining about how the rest of the world is in the stone ages, and that is why ghostty doesnāt work with it.
For me, a terminal program that requires me to muck with every machine I log into to get it to work is pretty horrible. I connect to a lot of different machines every work dat. Often theyāre not machines I maintain. Making that harder is exactly the opposite of what I want from a key tool like a terminal program.
I haven't used ghostty but terminal having issues with ssh sounds like a major oversight.
For anyone using this terminal that hates != (and others) being turned into a single character, I have the following to turn off ligatures:
This can be updated in `$HOME/.config/ghostty/config`.Note in Ghostty 1.3 we disable discretionary ligatures (I think dlig/calt) by default as recommended by font standards. We still enable liga though that usually contains far less controversial ligatures.
Or maybe you can solve it like I did -- by using a font that does the (IMHO) right thing with regards to ligatures
https://github.com/0xType/0xProto#4-ligatures-that-dont-defo...
I can't recommend 0xProto enough, the only thing I'm sorry about is that I didn't find it sooner :)
Going to give this one a try; I'm still partial to Atkinson hyper legible, but this one looks fun.
I've only ever stuck with urxvt and more recently foot since moving to Wayland. On Mac the default terminal works for me, though I've been using Ghostty to follow a trend, but I seriously don't understand the benefits netted to me? (other than the cool icon)
I stayed with Terminal.app for quite awhile. Until very recently (not when Ghostty was released) it didn't have 24-bit colour support. It also didn't have shell integrations such as triple click to select all output of the last command. The configuration system is arse and is kind of a lock-in as it is in all plist form, so I had a hard time extracting the colours I used for my terminal and using them elsewhere.
Now that they've updated it recently, it is a better terminal, but otherwise Ghostty has a few bells and whistles that make the experience nicer.
Loving how well Ghostty works and looks. When running several Projects I need quite a few tabs as all these AI agents take sometime to complete. Overhead tabs get real messy very quickly. Multiple windows become a nightmare quickly. Side bar tabs have been my solution.
I love iTerms sidebar tabs - I add emojis to mine for my key projects and any subtask just lives under the master tab like a folder.
Would love to see sidebar tabs - or it sounds like I can code my own.
Ghostty with sidebars and more https://github.com/manaflow-ai/cmux
While I quite liked Ghostty to being with, the lack of a scripting API quickly drove me to WezTerm before long. See: https://github.com/ghostty-org/ghostty/discussions/2353
I hope they prioritize scriptability soon. It's quite important to my personal git worktree ergonomics.
How's the latency? I've had to keep using xterm even though it kind of sucks just because it's got the lowest latency by quite a bit.
According to this (at least 11 months old) benchmark, Ghostty has the worst input latency across all contenders: https://github.com/moktavizen/terminal-benchmark?tab=readme-...
More benchmarks from 4 months ago: https://news.ycombinator.com/item?id=45253927
14 months old discussion of input latency in Ghostty with comments from the author: https://github.com/ghostty-org/ghostty/discussions/4837
I donāt type more than 100 characters a second so Iāve never ran into bits limits.
If you're typing just one character per second you'll still feel the difference. Latency is stress inducing.
I have been using computers and terminal for a long time, and this kind of comment makes me think I must have missed a whole bunch of things which can be done with a terminal
Since people are mentioning latency Iāll mention throughput. Basically the idea is that you accidentally cat a large file to your terminal and we are measuring how much time it takes for the terminal to finish displaying it. This test generally favors GPU-accelerated terminals.
Ghostty performs very well on this regard, among the same league as Alacritty and Ptyxis.
Rather, what will win is a terminal that internally builds an efficient, symbolic representation of what is on the display, rather than a pixel representation with all the font glyph, and which efficiently sychronizes that symbolic representation to the graphical canvas, skipping intermediate updates when the abstract display is changing too fast.
Thatās already happening I think. Newer terminals redraw at a fixed rate equal to the display refresh rate, usually 60Hz. But if there are more than 60 new characters being printed per second, some of these intermediate states are never rendered on screen.
Have you tried kitty with more aggressive settings? It feels very responsive out of the box, but the defaults are balanced for sane energy use on portable machines.
on my machine, noticeable. I seriously tried it, but went back because I could notice a small end-end latency, between keypress and action. But I'm also 240hz user.
Where are you measuring the keypress from? The nerve signal to your finger muscles?> Or the time the keycap hits bottom? What if the switch closes before the cap hits bottom: then we are getting a latency figure that looks better than it really is.
Nerve signals yes. I just try them side by side, usually running vim on both terminals and measuring how it feels. If you can feel difference, the latency is bad.
I've had a keyboard like that and with it, xterm (and nothing else) felt like it was displaying the characters even slightly before I had pressed them. It was a weird sensation (but good)
Funny, I was just configuring ghostty. I finally made the jump in order to get rid of tmux as a layer of indirection.
Here's what I landed on: This config tries to emulate as much of tmux with native ghostty features (splits and tabs).
https://codeberg.org/jfkimmes/dotfiles/src/branch/master/gho...
I've been following this before it was made public and I'm a big Zig fan so I would definitely switch to this, but I've tried and failed many times. Currently it just keeps crashing multiple times (on three different machines) each day on my mac and the quick terminal doesn't support full screen mode (it still shows the menu bar). I could live with the menu bar showing, but because of the constant crashing I'll wait for a bit and check back in a few months.
I have a terminal manager project[0] I'm currently using xterm for, but very curious to try libghostty. Have mainly been hesitant because it hasn't been promoted from an internal ghostty dependency (only awareness of the place was from this article by the creator[1]), but from the sounds of it here people are finding it stable enough. Gonna give it a whirl today.
[0]: https://github.com/ouijit/ouijit [1]: https://mitchellh.com/writing/libghostty-is-coming
Feature request: renaming tabs! Helps keep tabs organized instead of 20 tabs with similar names. (See Zed for example)
Also! I'm considering Ghostty web (https://github.com/coder/ghostty-web) for my project Ink Web. It's awesome that Ghostty can work in the browser to replace xterm.js.
https://github.com/cjroth/ink-web/pull/1
Project: https://www.ink-web.dev/
Tried Ghostty several times and I really appreciate the font rendering, but I keep going back to iTerm2 and Terminal.app mostly because of lack of scroll back & CMD-F, etc. Looking forward to what is coming in the next release.
Ghostty is awesome, ill echo the sentiment regarding lack of IPC/scripting API being my current hold back. Sticking with kitty til then. I still keep the ghostty binary on hand so I can +boo :^)
for libghostty consumers, favorite i've tried so far is neurosnap/zmx.
We often see Ghostty on the front page. What makes this project special? Is it solving a big problem with current terminal apps?
In my experience it actually is. I went through multiple terminals and they all had issues for me (missing key remapping functionality, slowness, not working across platforms, UI ugly...), but Ghostty is solving most of these.
i hope they implement something that can be used with tmux -CC mode.
Curious to hear some more recommendations, I settled on using lxterminal which works well enough. I couldn't get wezterm to recognize fonts on ALpine no matter what I did, kitty doesn't support tabs and ghosttty sounds like it has issues with ssh connections? I feel like I tried most at some point but if anyone has suggestions for a tabbed terminal emulator nicer than lxterminal, ideally with transparency, I'd love to hear them.
As a counterpoint to Ghostty ssh. I have literally never had an issue and I manage a large cluster of boxes that run everything from centos 7 to rocky 10. All from ghostty on a Mac.
If you don't mind, can you share your config?
Ghostty's terminfo entry doesn't enable 24-bit color*, and as far as I can tell they don't provide a "ghostty-direct" entry that does. It just seemed odd that it's completely supported and working, yet not easily enabled. Maybe I just missed a trick, and didn't need to make a custom terminfo entry myself?
* "msgcat --color=test" is an easy test that shows the blending of 24-bit color, or blocky gradients otherwise.
Ive been using Ghostty after AI recommended it for lightweight claude sessions.
No complaints been happy using it for my claude swarms for about a month
Why use this over iterm 2?
Ghostty is extremely performant. I had a bug in some concurrent software; when I added logging the bug would disappear because the threads acquiring the lock on STDERR was sufficient to make the bug go away. On Ghostty this happened fast enough that I was able to reproduce the bug.
Maybe I should have been writing everything to a file. ĀÆ\_(ć)_/ĀÆ Anyway, I didnāt think of it at the time and Ghostty saved me.
Really nice terminal.
Unfortunately scrolling in terminal apps via mouse wheel seems to be broken (on release and main branch), which is currently a blocker for me. Hope this will be fixed soon.
What kind of features am I missing if I just use GNOME Terminal?
The biggest boon is that it's a development target for making TUIs etc. App developers get the most benefit out of it.
Can't use it yet because I need cmd-f find.
I expected this to point to the 1.3.0 release since itās expected in March. Hopefully we get that soon.
If there wasn't kitty I'd definitely be using Ghostty, but I have no reason to switch.
I tried this out after getting annoyed for the 100th time by a recent bug in kgx/console that will occasionally fail to launch windows leaving incomplete windows as tabs.
Console has long since become abandonware pushing people towards ptyxis which is now the default gnome terminal. A damn shame considering console is basically complete software (the quality of software in gnome is on a downhill).
I would have given ptyxis a chance if they didn't take a basic terminal and added some fluff (features related to distrobox) on top of other annoying things I can't be bothered to remember about because I ended up removing the software every time I gave it a spin.
In just a few days I've been able to replace console with ghostty-nightly and I don't miss anything.
What features related to distrobox? I use both ptyxis and distrobox and I donāt notice any integration between them. I do notice an integration between ptyxis and sudo however. It simply turns the title bar red.
> Ptyxis: Your Container-Oriented Terminal for GNOME
> A modern terminal emulator built for the container era. Seamlessly navigate between your host system and local containers like Podman, Toolbox, and Distrobox with intelligent detection and a beautiful, responsive GNOME interface.
https://gitlab.gnome.org/chergert/ptyxis/-/blob/main/README....
Damn Iām jealous that they figured out how to pay their contributors. Iāve been toiling away for free
Why is it in the main page? It's a super well-known project no?
Because someone thought it was interesting, and enough other people upvoted it.
Just because you know about it doesnāt mean others canāt benefit from the mention.
https://xkcd.com/1053/
Looking at the comments it seems like there are still people not using it
Itās been posted many times, I think mostly due to itās association to Mitchell Hashimoto. Itās left as an exercise the reader to determine why this is important.
https://en.wikipedia.org/wiki/HashiCorp
The minimum-contrast feature is great, to help in those times when some color combination would have been unreadable otherwise.
why does everyone freak out about this terminal whenever it's posted?
I like how snappy Ghostty is. I do not like how it starts lagging after a few alt-tabs to Chrome and back on Linux.
I enjoy it, and itās great to have another modern high performance terminal as an option for macOS and Linux.
For me, Kitty still has the edge:
https://sw.kovidgoyal.net/kitty/
WezTerm is also a strong contender:
https://wezterm.org/
When I tried Wezterm last year, you couldn't select more than 3-5 lines of text. I went to fix the 'bug', I found that it was intentional because it allocates a string and copies multiple times every time you click and drag.
Even if that's fixed, that design put me off the terminal forever.
I regularly select hundreds of lines in Wezterm. I have never had a problem.
Been using/abusing wezterm for years, my scrollback is set to 1000000 and text selection has never been a problem... copy mode however does make it even easier
Wezterms is certainly nice. I guess they haven't release another update? Currently stick to iTerm2.
I switched from iTerm2 because at the time (possibly still), iTerm2 had a performance bug where large amounts of underlined text would cause the terminal to slow down noticeably. Wezterm works perfectly, and I appreciate the .lua configuration over iTerm2's mess of menus.
Ghostty is fast and feels native, but WezTerm occupies a different niche: it's a terminal you program rather than configure.
The Lua config isn't just "dynamic" in the abstract sense. I built a tmuxinator-style workspace manager that spawns project-specific layouts - named tabs, splits, working directories, startup commands - from a fuzzy launcher. Session state auto-saves every 10 minutes with timestamped snapshots and crash recovery. Theme toggling between dark and light mode triggers a system-wide theme switch script. These are runtime behaviors, not static settings - try doing any of that in TOML.
The built-in multiplexer is the other major differentiator. Splits, directional navigation, pane zoom, pane selection with alphabet overlays, moving panes between tabs or windows, all without a tmux prefix key. It's not just "WezTerm has splits too, it's that the interaction model is fundamentally more fluid when there's no mode switching.
WezTerm isn't trying to be the fastest terminal. It's trying to be the most programmable one, and for people who want their terminal to work as a development environment rather than a PTY renderer, that tradeoff is worth it.
On the new mac tahoe with rounded corners (which are really frustrating to me), ghostty should add small margin on the bottom, because the font is sometimes renedered on it and letters are cut (rarely but infuriating, when it happens)
Worth posting here: https://github.com/ghostty-org/ghostty/discussions
I keep trying it but keep coming back to alacritty on Linux and iterm2 on osx.
I use it but have people trier cmux?
I can't find an alternative to Terminator, being able to drag and drop panels to create layouts is such a strong workflow that it's very hard to give up
I did give Ghostty a try, the turn off was Adwaita, the tablet UI for the tabs and context menu.. i just can't
Bigger than ghostty is libghostty which enables things like: https://www.cmux.dev/
I tried it when it last had an HN post (a week ago?) and found it to be very buggy and went straight back to Ghostty.
what bugs did you hit? I have been using it a few days now no issues.
When I had 3 or more panes open one of them would freeze and be not recoverable without quitting the app. That's a deal killer when I'm trying to run 2 or 3 agents.
This is a test comment
It's a nice terminal but it cannot be configured to the same level as iTerm, e.g. in terms of colors, look and feel, how the menus work, how the tabs work, etc.
Also, in practice, I find it hard to detect any performance difference between iTerm and Ghostty even though I know in theory that Ghostty is more performant...
So for now I go with iTerm because I prefer the UI.
I used to use the iTerm programmable notification bell which would ring when a particular output was printed in the terminal. Don't think I can do that in Ghostty
just installed ghostty, looks cool. but my honest question is how it is significantly better than iterm2 to justify such a switch? I am aware of the fact that it is faster, uses less memory, various configurations is more straight forward. but is that all?
I have the feeling that I must be missing something big here.
Iāve been using iTerm2 for years. Iāve tried ghostty a few times and quickly went back to iterm each time for various reasons I canāt immediately recall. There is nothing I can think of lacking from iterm.
That said; if I was working more on Linux or Windows where iterm doesnāt exist it looks like ghostty would be a good option.
Same. As far as I can tell, Ghostty is still in active development and unfinished. For regular use iTerm 2 is a complete product that can be relied upon.
Itās a shame that version 1.2.x got abandoned and didnāt receive any important bug fixes. That has severely cut my trust into this project. Itās been over 4 months since the last 1.2.3 release, so the memory leak when using Claude is not addressed, my Ghostty crashes are not addressed (crash reporter doesnāt work), I donāt even bother looking at the issues anymore, as I know I am not getting the fixes for a long time.
And Iām not running a critical piece of productivity software on a nightlies channel!
I'm not doubting your personal experience, but I find the crashes you mentioned surprising; I have never once, since v1.0.1, had Ghostty crash. Tbf I use it with tmux, so I'm not exercising some of its capabilities. But with tmux, I have at any given time 5-7 sessions, each with 2-5 windows, some with panes.
Datapoint: Iām running nightly now because the latest 1.2 release has a known crash-on-wake bug when disconnecting an external monitor. Accordingly the issue tracker it was fixed months ago, but itās not in a release. The nightly is stable though.
Didnāt realize how may projects use libghostty, will try cmux one of these days.
Bro randomly decides to post a link to ghosty docs and gets 275 points
Submission upvotes don't count nearly as much as comment upvotes in terms of points.
Ghostty calls itself "feature rich" but only added cmd+F / find functionality a few months ago. Makes me wonder what other basic functions it's missing.
I have Ghostty 1.2.3 and it STILL does not have cmd+F find.