Hacker News new | past | comments | ask | show | jobs | submit login
Ghostty 1.0 (ghostty.org)
2319 points by matrixhelix 32 days ago | hide | past | favorite | 681 comments



<3 This has been a work of passion for the past two years of my life (off and on). I hope anyone who uses this can feel the love and care I put into this, and subsequently the amazing private beta community (all ~5,000 strong!) that helped improve and polish this into a better release than I ever could alone.

Ghostty got a lot of hype (I cover this in my reflection below), but I want to make sure I call out that there is a good group of EXCELLENT terminals out there, and I'm not claiming Ghostty is strictly better than any of them. Ghostty has different design goals and tradeoffs and if it's right for you great, but if not, you have so many good choices.

Shout out to Kitty, WezTerm, Foot in particular. iTerm2 gets some hate for being relatively slow but nothing comes close to touching it in terms of feature count. Rio is a super cool newer terminal, too. The world of terminals is great.

I’ve posted a personal reflection here, which has a bit more history on why I started this, what’s next, and some of the takeaways from the past two years. https://mitchellh.com/writing/ghostty-1-0-reflection


Just make sure not to get caught in the pitfall that is maximum render speed, which can lead to missing out on efficiency during slow and partial rendering.

Missing damage tracking, always painting everything (even when the window is a full 4k monitor), etc. kills performance and input latency when dealing with realistic redraw workloads like text editing, blinking cursors and progress bars. Much too often to terminals worry only about the performance of `cat /dev/urandom`...


> kills performance

And battery.

I gave up on alacritty because it was always using the dedicated graphics card of my MacBook and there was no reasonably way to use the integrated graphics card because it was “low performance”.


- Ghostty does vsync by default and supports variable refresh rates (DisplayLink). If you're on battery and macOS wants to slow Ghostty down, it can and we respect it.

- Ghostty picks your integrated GPU over dedicated/external

- Ghostty sets non-focused rendering threads as QoS background to go onto E-cores

- Ghostty slows down rendering significantly if the window is obscured completely (not visible)

No idea if Alacritty does this, I'm not commenting about that. They might! I'm just talking from the Ghostty side.


That's a great approach.

Not sure on the current state of Alacritty, but a few years back the suggested solution for users interested in battery performance was to switch to a different terminal emulator: https://github.com/alacritty/alacritty/issues/3473#issuecomm...


I, a person who don't care about battery performance one iota (because my computer has no battery), love this answer and approach. Not every software is for everyone, and authors drawing a line in the sand like that works out better for everyone in the long-term, instead of software that kind of works OK for everything.


In some cases yes. In this case, in my opinion it can be strictly wrong.

The GPU requirements of a terminal are _minuscule_ even under heavy load. We're not building AAA games here, we're building a thing that draws a text grid. There is no integrated GPU on the planet that wouldn't be able to keep a terminal going at an associated monitor's refresh rate.

From a technical standpoint, there is zero downside whatsoever to always using the integrated GPU (the stance Ghostty takes) and plenty of upside.


Because _my_ computer has no battery. There is a plethora of computers out there with batteries who can run Linux, Windows, and macOS. These computers can, on paper, run Alacritty.

Cherry on top is me being a former user of a MBP 2010 who'd crash when using discrete GPU (it was _the_ reason Apple went with AMD later on). And some apps insisted on using it, even when I disabled it.

I like Rust applications but I don't like this response. The dev sounds worn out; whereas the dev of Ghostty seems to be a pleasure to deal with.


More than happy for software authors to draw a line in the sand - I’ve done that myself too.

I just find myself on the other side of the line for Alacritty.


This is the Alacritty answer to a lot of queries. I took the advice, eventually.


Yep. That comment was when I stopped using Alacritty.


> - Ghostty slows down rendering significantly if the window is obscured completely (not visible)

About this. For whatever reason, I often end up with foreground windows (e.g. Chrome) covering the background window entirely, except for a sliver a few pixels wide.

Would Ghostty handle this case? I don't believe there's any point in full-speed rendering if less than a single line of text is shown, but the window isn't technically obscured completely.


We rely on the OS to tell us when we're obscured, and macOS will only tell us if the window is fully obscured (1 pixel showing is not obscured).


> - Ghostty sets non-focused rendering threads as QoS background to go onto E-cores

Assuming you're referring to Apple Silicon chips, how does Ghostty explicitly pin a thread to an E-core? IIRC there isn't an explicit way to do it, but I may be misremembering.


The QoS influences the core threads are placed on https://developer.apple.com/documentation/apple-silicon/tuni....


You can tell something to run on e-core just not p-cores


can i configure it to run on dedicated? im on desktop, power consumption is not an issue.


I struggle to understand why any of the above approaches would cause any impact worth maintaining a configuration flag over.


> Missing damage tracking, always painting everything (even when the window is a full 4k monitor),

Out of curiosity, what GPU accelerated terminal does this.


+1, no idea.

But maybe to add a little bit of context, "damage tracking" means for example, that if there is any ongoing animation (like a spinner), then only a small part of the screen will be re-rendered (with proper vertex-time scissors, so only relevant pixels will be computed). I am not sure if it makes sense in the context of a terminal emulator, but it's certainly a big issue for any non-toy GUI toolkits.

GPUs are incredibly fast parallel computers, so you will likely not observe any perf difference (unless you need order-dependent transparency which you don't), but it might improve your battery life significantly.


No, damage tracking is important as it about reporting that you only updated that spinner, which means that your display server also knows to only redraw and repaint that area, and in turn that your GPU knows during scanout that only that area changed.

Without, even if you only redrew your spinner, your display server ends up having to redraw what might be a full screen 4k window, as well as every intersecting window above and below until an opaque surfaces are hit to stop blending.


Well it sounds like ghostty is like all the other major GPU terminal emulators (unless you know of a counterexample) and does full redraw, though it appears to have some optimizations about how often that occurs.

The power issue might be true in some cases, but even as foot’s own benchmarks against alacritty demonstrate, it’s hyperbolic to say it “kills performance”.


We do a full redraw but do damage tracking ("dirty tracking" for us) on the cell state so we only rebuild the GPU state that changed. The CPU time to rebuild a frame is way more expensive than the mostly non-existent GPU time to render a frame since our render pipeline is so cheap.

As I said in another thread, this ain't a AAA game. Shading a text grid is basically free on the GPU lol.


It's actually not at all free, even if you're barely using the shading capacity. The issue is that you keep the power-hungry shader units on, whereas when truly idle their power is cut. Battery life is all about letting hardware turn off entirely.

Also, if you do damage tracking, make sure to report it to the display server so they can avoid doing more expensive work blending several sources together, and in case of certain GPUs and certain scanout modes, also more efficient scanout. Depending on your choice of APIs, that would be something like eglSwapBuffersWithDamage, wl_surface_damage_buffer, and so forth.


> The issue is that you keep the power-hungry shader units on, whereas when truly idle their power is cut.

Even in the most perverse scenario of a single cell update the load for a terminal is still bursty enough that it's not like the GPU doesn't enter some power saving states. Running intel_gpu_top in kytty with a 100ms update is at least suggestive, it never drops below 90% RC6 (even at 50ms, which is a completely uselessly fast update rate we're still in the high 80s). If you're updating faster than 100ms legitimately, it's probably video or animation that is updating a large percentage of the display area anyway. The overall time my terminal is doing some animation while on battery is low enough that in practice it just doesn't matter.

https://en.wikipedia.org/wiki/Amdahl%27s_law

The problem you're up against is that, maybe if this was optimized most people would get 2 or 3 (or even 10) more minutes on a 12 hour battery life or something. No one really cares. Maybe they should, but they don't. And there's plenty of other suck in their power budget.

You make it sound like a binary power saving scenario, but it tends to be more nuanced in practice.

Most people run their terminal opaque, most display systems optimize this common case.

> Also, if you do damage tracking, make sure to report it to the display server

I'm not unsympathetic to your point of view. But I am skeptical that the power savings for most use cases ends up being much of a big deal in practice for most people (even accepting there may be some annoying edge cases that annoy some). I am interested in this topic, but I am still awaiting an example of a GPU accelerated terminal emulator that works this way to even make a real world comparison.


It is very nuanced, but it's important to realize how small the power budget is and how just tens of milliwatt here and there make a huge difference.

To get over 12 hours of battery life out of a 60 Wh battery - which isn't impressive nowadays with laptops rocking 20+ hours - you need to stay below 5 watts of battery draw on average, and considering that the machine will likely do some actual computation occasionally, you'll need to idle closer to 2-3 watts at the battery including the monitor and any conversion losses.

The really big gains in battery life are from cutting tens to hundreds of mW off things at the bottom by keeping hardware off and using fixed function hardware like e.g. avoiding rendering and doing direct scanout and using partial panel self refresh. Execution units do not turn on and off instantly so pinging them even briefly is bad, and the entire system needs to be aligned with the goal of only using them when necessary for them to stay off.

Efforts like libliftoff to do efficient plane offload to avoid render steps in the display server can save in the area of half a watt or more, but it's not a whole lot of help if applications don't do their part.

Bigger GPUs than your iGPU (or even just later iGPUs) will also likely see even bigger impacts, as their bigger shader units are likely much hungrier.

(As an aside, I am not a fan of kitty - they have really weird frame management and terrible recommendations on their wiki. Foot, alacritty or if ghostty turns out good, maybe even that would be better suggestions. Note that comparing to foot can give a wrong image, as CPU-based rendering pushes work to the display server and gives the illusion of being faster and more efficient than it really is.)


Well I would be very interested in some of this, but it all seems theoretical and mythical. Seriously, what terminal is giving 20% better battery life (or whatever number that people will notice) than kitty.

How can I observe any of these claims in practice? You’ve put some down some bold claims about how things should be done but no way to verify or validate them at all. Put up with some real power benchmarks or this is just crack pot.

> To get over 12 hours of battery life out of a 60 Wh battery - which isn't impressive nowadays with laptops rocking 20+ hours

I used 12 hours to be nice. The sell of getting another 10 minutes or so out of 20 hours is even more stark.

The cases where you push a line and scroll, you're repainting most of it anyway. The cases where you're not are end up being infrequent enough that optimizing them in the ways suggested makes an unnoticeable impact. Build it and they will come maybe?

> Bigger GPUs than your iGPU (or even just later iGPUs) will also likely see even bigger impacts.

In most cases people can get by with an iGPU for a battery laptop cases. If you're in a must pull down more graphical power case, you're often plugged in and few care about 10s of milliwatts then.

> (As an aside, I am not a fan of kitty - they have really weird frame management and terrible recommendations on their wiki. Foot, alacritty or if ghostty turns out good, maybe even that would be better suggestions. Note that comparing to foot can give a wrong image, as CPU-based rendering pushes work to the display server and gives the illusion of being faster and more efficient than it really is.)

Once again, what is the exemplar of an efficient terminal then. We've already established ghostty doesn't operate the way you think it should so how can it turn out good?


Perhaps that came across wrong, no shade intended, what was meant was that ghostty seems to be like all the other mature GPU based emulators. Which means there's no damage reporting to a display server or anything like that. I don't think it's quite the deal breaker the GGP implies.


That's what I meant to say. There are 2 parts, and both need to work correctly, otherwise you're wasting power.


Right, input latency is what matters for me. I'm not seeing whether they've measured that in the docs/on Github.


He mentions input latency[1] as one of 4 aspects of being fast that were considered during development. I’m not aware of how that was tested, but would trust that it outperforms Iterm2 in that regard.

[1] https://www.youtube.com/watch?v=cPaGkEesw20&t=3015s


Congrats on your 1.0 release! Building a term from scratch is no small task. And it looks like after 2 years you already have something I'm seriously considering switching to. That's seriously impressive. And though I'm mostly a Linux supremacist, I genuinely appreciate and respect your dedication to providing native applications on all major platforms. I see too many projects do one of two things: only support one platform at first, with some vague promise of doing others in the future left unfulfilled for years. Or going the easy route of using electron or some other cross-platform toolkit, getting cross-platform support at the cost of a significantly worse experience. There is no substitute for doing the extra work, at the end of the day, and you're already well on your way there at such an early point. Again, I'm impressed!

Now, the one thing I've coveted for years is a linux term with tmux control mode support, ever since I used iterm2 during my short tenure as a Mac user. I can see from your github issues that this is in the works(https://github.com/ghostty-org/ghostty/issues/1935), which is great. It looks like a lot of the necessary UI elements are already in place, as well as partial support for the control mode protocol. Do you have any idea how far off this is from being completed? I don't wanna make demands or anything, I know this is a passion project with lots of things still to work on. As far as I know(and I look around quite often) control mode support is still something no existing term for linux supports. Being the first could drive a lot of adoption! I'd also like to offer my help in pushing it over the goal line. I haven't touched Zig, but I'm a polyglot with plenty C experience and Im highly motivated to bring this feature to my Linux systems. Some guidance on things I might do to help would be welcome. The final 3 points of the checklist don't have much detail provided.

Again, no pressure, thanks for all your amazing work, and good luck with continued development!


This. To add some words why this is important:

Given the remote-first container-based world we're heading towards, decoupling UI (terminal emulator) from its "backend" (tmux, code-server) is a great design decision, which I think will ultimately define what the "next generation" of terminal emulators is. Imagine being able to open tabs directly on remote host, reconnect without losing state, etc, all while using native UI (so Cmd+T to open new tab, Cmd+F to search, etc). Productivity game changer, which currently only the iTerm2 users can fully enjoy.

Ptyxis (putting its backend in running containers), WezTerm (native handling of ssh sessions) and VSCode's terminal (starting a proprietary code-server binary and connecting to its TCP port) have reached some of this functionality, but in their design they need some out-of-band mechanisms to handle the connections, ultimately limiting the scenarios they can handle.

Meanwhile tmux -CC [0] and ht [1] are sending both their control channel and data channel over the opened terminal itself (in-band), making them flexible enough to support any configuration. Something complex like `ssh jumpbox -- ssh prod -- podman exec -it prod /bin/bash -- tmux -CC` should just work, as if everything was running on your local machine.

[0] https://github.com/tmux/tmux/wiki/Control-Mode

[1] https://github.com/andyk/ht


> Given the remote-first container-based world we're heading towards

You might want to expand on who "we" are here, because to me it seems to be a very small section of developers who want a "remote-first" experience and most (if not everyone) I speak with want software and tools that work local/offline-first, including our dear development environment.

If a tool requires a internet connection to work (so this "remote-first container-based world" you mention), I don't think either me nor many of the developers I know would even give it a try, because we need to be able to use our tools regardless if we have a working internet connection and/or the service-provider has downtime.

In fact, the only ones I know who are using a "remote-first" environment are developers who are forced to do so by their employer, and it's not a short-list of complaints about it when we meet over beers.


Good point, I also want things to work offline. By "remote" here I was also thinking of scenarios like:

- Connecting from Windows/macOS host to a local VM

- Connecting to a build server over LAN (I have a beefy PC but prefer to work from my couch)

Both work offline just fine, but from tooling perspective you are connecting to remote host over the network


Not very small; most corporate non-Windows development uses containers, I'd bet on the ratio above 90%.

Not that developers want remote-first experience, but they face it. Containers in this regard behave like remote systems, even when run locally. A tool that helps juggle multiple remote contexts in a sane way may be very helpful. Say, tmux does a lot to help, but more is of course possible.


For those interested, the link below from Mitchell's blog explains the different goals he's trying to reach, compared to other terminal emulators.

https://mitchellh.com/writing/ghostty-is-coming


I love this page in your docs:

https://ghostty.org/docs/about

Clear, friendly, modest, respectful and with the right balance of detail vs overview.

Congratulations on your launch.


I'm not sure why they couldn't put that on the front page. Or at least on the front page of the documentation.

As it stands now, the front page is pretty useless if you never heard of ghostty. It's a ghost in a terminal? And there's tty in the name.... so is it a program to show ghosts in your terminal?


Absolutely agree, even if it was just the tagline on the first page of the documentation - "Ghostty is a fast, feature-rich, and cross-platform terminal emulator that uses platform-native UI and GPU acceleration." - underneath the "screenshot" and above the buttons on the homepage.


On mobile I thought this thing was some ascii art game for a hot minute before I tried clicking on the download link. Seems silly to admit that but there you have it.


I'd never heard of it before today, so yeah, my first thought was exactly what you postulated. "Cool? Maybe it's a tool for generating animations in the terminal?"

*edit - oh, no Windows support for now (my hands are tied at work).


How you've managed to communicate effectively with so many people who were using the beta version to craft the final release is beyond me! I downloaded it last night, wrote one line of theme configuration (I picked the batman theme). and For me it just works fine and faster than any other terminal emulator I've ever worked with. Also great with 'less' and 'tmux'. I just switched to 'Ghostty'! so thank you.


Just downloaded it because of the animation on the site. How did you make that? it's cute.

The terminal is good. I don't have any issues with the stock mac os terminal app but I'll give yours a go for a bit. I can't tell exactly how, but it does feel faster - I'm not sure exactly how it is but it looks like it renders text faster.


Stock Terminal.app doesn’t do 256 or 24-bit colour, that’s really the big thing that drew me to ghostty.


If the stock Terminal was updated to support nerd fonts, extra colors and horizontal/vertical panes - then would switch back to it in a jiffy.


Lower inout latency can make something feel faster. I haven't measured it but it's possible that's why with ghostty


I've been a beta tester from very early on. I came for the performance but stayed for the stability. I've only had a rare few crashes and all but one was a duplicate in the bug tracker.

I thought I needed search but as Mitchell put it, not a 1.0 feature. Ripgrep was always the answer.

Very happy to share the ghostty experience with the world!


Search was the first thing I noticed it was lacking. I hope it can be added at some point, sometimes you can't just run a command again to grep it.


Guessing y’all mean search of the scrollback buffers?


(probably, I was also looking for that)


Mitchell said it is planned in a recent interview on the Changelog podcast[1], just not in time for 1.0.

[1]: https://changelog.com/podcast/622


The kitty method of piping the scroll back buffer to a pager is more general - it also seems like a quick fix to achieve this desired feature.


I really like how Kitty handles search. I thought it was a hack at first - then came to realize why re-implement search if less works better?


I noticed a keybinding for write_scrollback_file (defaults to super+shift+j) which does this. So you can use `grep something <super+shift+j>` to search for things. It's a nice workaround until search is implemented.


Looks great. Switching from wezterm and kitty before that, and the native feel on macOS is indeed better than those emulated tabs. Also it is really quite zero config where to me it seems only one line of color theme is needed, together with setting TERM for ssh. (Default font happens to be mine.) Bundling so much color theme felt a bit waste of space, but it is nice that I don’t need to define them myself which also makes switching theme tedious. I also love to see it lands at 1.0 where features, documentation, and promotional materials seem polished already.

Chances are, it will become my default terminal in 2025!

The only nitpicking is the doc does not seem to have a search function. It would be great if I can search color or ssh and find the relevant page address that immediately, without navigating the tree or relying on external search engines.


Use the browser's search on the page?


Search through the whole documentation, not just current page.


I haven't heard of Ghostty before today. I'm reading the docs; but what are the main selling points?

Personally, I've used Terminal.app (for a bit), iTerm (for a long while), Konsole (in the past, on Linux) and more recently I standardized on Alacritty (macOS) and Kitty (Linux). GPU acceleration puts it in the same general bin as my current toolchain, but your comment alludes to it pulling in some concepts from iTerm, possibly -- is that the case?



Thank you!


Thanks so much for this. I really enjoy using it and I also refer to the source code quite a bit as I'm trying to get more familiar with Zig :)


How do you plan on sustaining the project? Do you have enough committers so you’ll not burn out? Will you need support? Is there a way to donate? I guess what I’m getting at is what is the long term sustainability work around this?


Discussed near the last part of an earlier post.

“… exploring not-for-profit structures to help ensure the long-term sustainability of Ghostty.”

https://mitchellh.com/writing/ghostty-is-coming


Thank you!!! Glad to see this.


I think you've done an excellent job running the community for Ghostty and it is a prime example of how to do it right. From the Discord to Github repos you've been a class act all the way through and have pushed folks to be good, civil internet denizens. Much respect.

If anyone cares to search through Github, they will see loads and loads of Issues and PRs created by Mitchell in many of the related Open Source projects that Ghostty uses/references. From zig to kitty to supporting libraries, Mitchell has been trying to get the terminal community working together and have some sort of standards. A lot of them are like "X does this, Y does that, why are you doing it this way? Can we all do it this way?" and then having Ghostty follow the most reasonable solution (or supporting several!).


You've saved me an immeasurable amount of time and sanity over the last few years with the tools you've been building, and simply put: thank you.

I'm extremely excited to give Ghostty a whirl.


Just built this from source on Fedora and I have to say the experience even for building-from-source is flawless. Immediately replaced Kitty for me; it feels smoother and faster. Amazing work.


Alacritty on macOS and Linux user here (Windows Terminal on Windows due to easily different shells available, formerly used iTerm2 on macOS). I make up for lack of tabs with zellij locally (tmux remotely). Also allows me to relog or close/update Alacritty. I will give Ghostty a whirl but why no shout out to Alacritty? Which features am I missing out on?


Ghostty's community is much nicer compared to Alacritty :)


Thanks. I'm interested in seeing examples (of Alacritty community not being nice). I'm aware of one now [1] but I have not been involved with the Alacritty community much. I read/write a few bug reports when the project was born; after that it has served me very well (compared to iTerm2 and Terminal.app). IIRC there was something with ligatures but I don't remember.

Thus far I have not been able to get my italic bold font (Cartograph CF) working on Ghostty, but this is a minor issue.

[1] https://news.ycombinator.com/item?id=42532762


One issue I noted was when they advertised poorly implemented cross-platform support https://news.ycombinator.com/item?id=27079234 and then told Mac users to use other terminals.

And then another where one of their maintainers had a meltdown and his fellow dev jumped in to protect him from... a bug report on the color green https://github.com/alacritty/alacritty/issues/1561

This was a few years ago so maybe they grew up since then.


Yikes, that ramblerman who was all over that HN thread still posts today. The distance by which he missed the point is shocking. How does one get that far off without doing it deliberately?


I’m trying to figure out the same thing, sounds like just tabs?


I'm a fan of your work! I'm curious about how you decided to work on building a terminal for your next project among your other ideas. If you have time later, could you share your main motivation with us or link to an existing post if you already mentioned it elsewhere?



Thank you for making this. Does it support quake mode? It's hard to tell looking at the docs.


From https://ghostty.org/docs/features:

> macOS

> Quick Terminal: Lightweight terminal that animates down below the menu bar for instant access without interrupting work.


It does, natively.


> Ghostty has different design goals and tradeoffs and if it's right for you great, but if not, you have so many good choices.

I was looking on the website to try and understand this more but couldn’t find any information. Perhaps I missed it?



Looks cool man.

Does it have a way to do tabs, and split terminal vertical and horizontal? Those are the only features keeping me on Terminator.

I've tried Tmux, but it isn't the same, so please commenters, avoid from the suggestion.


Yes we have both as native UI elements.


Shoutout to you sir for Shouting out the other terminals. It’d be easy for someone of your fame and talent and history to ride the hype to the GOAT of all terminals. But you stayed humble. Props.


Thank you for building this! I’ve loved using this over the last two months or so and really appreciate the work you’ve put into it.

I’ve been a very happy iTerm2 user and support the dev on GitHub Sponsors (and I’ll continue to do that), but I love your commitment to making a fast, native app (and cross platform, no less) and really appreciate this very obvious labor of love that has also been really interesting to watch from afar as the development has progressed!


Congrats Mitchell! It has been really cool to see Ghostty progress as a project, and I've enjoyed having it as my daily driver these past few years :)


I've been looking forward to it for a while, I'm really happy about this. Thanks for your work on this project.


super cool!

kitty has been my default for a few years now— highly superficial, but my designer side landed on kitty as it was one of the few that supports ligatures by default, specifically for the fira code font for my bias.

does ghostty support ligatures?



not only does it support them, but the default font provides them. although it splits the ligature in half if your cursor is in the middle of it which feels a little weird to me


what was the motivation to start this project? it got so many points here, hence I assume there must be something really useful about it - but I so far fail to see it.


Congratulations.

On the cross-platform library, I wonder why "libGhostty" and not libTerminal. Which seems like a more appropriate in term of library?


Calling it libTerminal might be confusing. There are other terminal emulation libraries—for example libvterm[1], notably used to power the embedded terminal in Neovim.[2]

[1] https://www.leonerd.org.uk/code/libvterm/

[2] https://neovim.io/doc/user/terminal.html


Terminals are always welcome :) I hope you can add Win supoort so I can try it at work.

Congrats for the release and happy new year.


Thank you for making this! I've been waiting to use it for quite some time. Really happy to take it for a spin.


It's surprisingly convenient and works as I expect it to work all the time. Fantastic job!


Thank you for all the hard work you’ve done and for sharing your passion project with us.


how did you decided on building for arch and NixOS but not for red hat or debian?


thank you and the community for the work. i hope to see blocks (not sure if this is a shell thing or a terminal thing) the same way warp does it :)


Enjoyed hearing about this on The Changelog recently!


Looks really awesome. I'm going to sound like I don't belong in the hipster terminal club, but the reason I shied away from some of the other terminals is the lack of tabs, which looks like yours has when I did a quick Google question/search. (if wezterm and the like have them, I must have missed it or it wasn't obviously apparent in the settings how to achieve them).

I know everyone will say but tmux and/or native multiplexing bla, but I'm kind of old school and only do screen remotely if needed, and I just like a lot of terminal tabs in my workflow with a quick mod left/right arrow to navigate between (and if native multiplexing in Ghostty is simple and easy I'd probably do some of that too). Perhaps this is why I've never left iterm2.


Wezterm does have tabs, and their related keyboard shortcuts are configurable.

See https://wezfurlong.org/wezterm/config/lua/keyassignment/Spaw... for a starting point in the config.


WezTerm has emulated tabs, not OS-native tabs. Some people will find that to be enough to suit their needs. Others will want 'real tabs'.

For example, I can select a tab in Ghostty, pull it out into its own window, and then stick it into another window. This doesn't work in WezTerm, nor can you drag them around to rearrange them (keyboard shortcuts allow this however).


I'm honestly not sure what a OS native tab is supposed to be, on Linux. And I do not see why "emulated tabs" of WezTerm couldn't just do the actions that you describe. The Firefox tabs do after all, and they do not look like they are built according to some (GTK?) tab standard (GTK.Notebook?). I'm pretty sure that X11 does not have native tabs, while some window manager do. Is there a linux standard I'm just not aware of that you are referencing here?

Maybe it does not matter, the difference in functionality should count. Just highlighting that this messaging might not be understandable for linux users. I guess you are talking about some macOS thingie that's irrelevant to us.


They mean that WezTerm doesn’t use the tab widgets of the platform’s first-party UI tookit.

AppKit/SwiftUI on macOS and GTK/Qt on Linux.


So is Ghostty a faster version of iTerm2 and it is Linux compatible?


iTerm2 has way more features, more than I realistically use, but feels slower too.


Thanks!


We've got native tabs and splits on both macOS and Linux. :)

WezTerm has tabs but they're not native UI elements.


Right, I was admittedly too lazy to dig far enough with wezterm it appears. Was looking for the button to click I guess.


You can click the tabs in wezterm


I also use tmux, but I love the native tabs of Konsole in KDE. I have Shift-Arrow configured to move between them, it is far more comfortable than the dual shortcuts needed by tmux, Ctrl-B to call tmux's attention then l (if I remember correctly) to get to the last tab.

Konsole also has easy resizing of text and supports images in the console, you might like it.


I just tried, "tmux bind -n S-Left prev"... works. Thank you, good idea. I now have 'S-Up switch-client -n' and 'S-Down last'


I am a happy konsole user. I have bookmarked all the tabs relevant to my project, in a folder. As soon as I start konsole, I open the folder in tabs.

Then as a ritual (and a bit of OCD), I quickly cycle through all the tabs with Shift-Right Arrow once.


Try binding the tmux leader key to '`' (grave accent). This changed my life!


I second this. I wouldn't have been able to make tmux such an integral part of my daily workflow if it weren't for this binding that I came across in someone's starter tmux conf many years ago.


jj or qq can also be used. As I once started with GNU Screen ages ago, I like prefix to ctrl+a but it interferes with going to front of command in bash mode. For that, I use vi keybind mode in my shell (fish or bash) which feel very natural to me. For zellij, I use default prefix so that it does not interfere with remote (yes I am aware remote requires double prefix; I prefer using tmux remotely and zellij locally).


How are you configuring jj without interfering with using the key regularly? I used to have jj bound to ESC in VIM, loved it, but I've since trimmed back my config as I SSH into to many foreign systems to depend upon nonstandard behaviour. But I'd love to have it in Tmux.

The obvious `set -g prefix jj` throws an error that the key j is a bad key. Various experimenting with bind and unbind have not resulted in success, and I can't seem to find an example .tmux.conf with that config to copy.


Konsole is super solid. Just Works.


As a longtime KDE fan I've used Konsole for years and it is seriously underrated. However, after I discovered Kitty a few months ago, I fully converted and cannot be happier. You can also move between tabs using keyboard shortcuts as well as move the tabs themselves. What I like about Kitty more is its straightforward text file based approach for configuration and absence of any gui elements. Konsole's GUI and configuration menus are overwhelming and I think are in need of a deep redesign.


Quick correction: I currently use Wezterm on Linux and it has tabs. Alacritty does not for developer philosophical reasons.

Looking forward to checking out Ghostty.


So does kitty.

I agree with the philosophy of no tabs, but I simultaneously live in an intermediate desktop environment situation where I don't have access to the "right" solution yet. So I'm happy to have terminal emulator tabs, browser tabs and IDE tabs for lack of a more integrated solution.


Wezterm has tabs right out of the box and they are fully customizable, though I prefer tmux since I prefer to not have my data extinguished if I accidentally close the terminal :D

WezTerm shines in ease and breadth of configurability due to using lua, so it's simple to have the theme change between light/dark depending on host OS theme.


Interestingly there’s another comment ITT complaining that they need to use a programming language for configuring wezterm :)

As a wezterm user I’ll admit that configuring it was mildly annoying to start, but ended up feeling like an accomplishment. A few years in, it’s just another annoying program I have to re-remember how to use when i update twice a year.


I don't know Lua either but c'mon now. It's just some config. Copy and paste from the docs and tweak the values as needed. If you really want to write something funky in there, ChatGPT knows Lua. It's not that bad.


It took me all of 30 seconds to get the Lua config to compile from copy pasting the documentation..


Your data isn't extinguished if you're running wezterm on the server too. It'll reconnect.


Yeah. I could get by with the default Linux terminal and tmux really. Tmux is just the best. Second to vim it’s the single most useful thing I’ve ever used.


No mention of Cool Retro Term!?!? Typical elitist behavior... /s

I'm just having a bit of fun, but it is a fun terminal every once in a while. https://github.com/Swordfish90/cool-retro-term


you can use glsl shaders with Ghostty including this CRT one to mimic what cool retro does

https://github.com/m-ahdal/ghostty-shaders/blob/main/crt.gls...


Awesome! Thanks!

For anyone else curious about how to configure these, check out the docs: https://ghostty.org/docs/config/reference#custom-shader


Will these work on MacOS or does it use metal for the mac version?


I'm using them on a new mac mini. Haven't tried on my older intel mac mini yet though.


Thanks, I managed to enable the shader, I think the glsl path needs to be absolute, it doesn't work starting with ~ (tilde).


I LOVE Cool Retro Term! I mean, every once in a while. But if I’m sharing it in Zoom, I’m damn sure re-opening my tmux session in CRT.


I use that one as my daily driver. Works great.


Wow that's great


this guy is a billionaire guys...


After a quick test this looks incredibly good and fast. I'll use it as a terminal for the next weeks to see how it goes, but I have good feelings. Thank you so much for writing it.

EDIT: WOOOW, for me this is going to be a game changer. I was just working at Redis stuff outputting a ton of debugging info and results, and normally the terminal was the bottleneck, and here instead it printed half million of results in the blink of an eye. And then I could go back in the history without any performance degradation. I love this: for development of systems it makes a big difference.


Really need scrollback search though. Was a bit surprised it was launched without that.



why don't you just pipe it into a file and then less it? if your redis stuff prints so much stuff you might want to reevaluate the respective program logic.


Sure, I redirect when there is to redirect, but sometimes during debugging you want to spam yourself to see what is happening during some stress testing when some code path is full of printfs. Also sometimes I'm just on the redis-cli and to test the system at scale I directly ask (like yesterday) for half million of similar vectors. It is very convenient I can type this on the CLI and see the result immediately, instead of flooding myself for seconds or minutes.


so, it's convenience. fair enough. i'm just trying to make sense of why it is so popular on hn. i often see stuff rated to mount everest here and i just don't get it. and then i'm wondering is it me? or is it them? am i one of those weak engineers who just don't know what's going on? that's all.


Since you asked, your point above effectively says "why don't you just work around your terminal emulator being slow by making more work for yourself?" That's not a compelling argument.


not really - the use case mentioned where you suffer from a slow terminal is a code smell as far as i am concerned


No it isn’t.


“why would you want your work to be easier” — yea, it’s you


Please don't be snarky or cross into personal attack. We're trying for the opposite here.

https://news.ycombinator.com/newsguidelines.html


Telling to creator of Redis that they might want to reevaluate their respective program logic (Redis) is pretty funny, only on HN :)


Haha, the question makes sense per se but there are definitely times where you want to see the output in real time. I'm a big fan of printf-debugging :D


It feels good to hear support for printf-debugging coming from such esteemed corner. I have been doing that for a significant majority of my career instead of dropping into debugger. The side effect is you become pretty good at crafting meaningful logs.


[dead]


These benchmarks are all flawed.

You can't measure input latency properly without a camera (or pixel access to the screen but then have to be careful it's not impacting your benchmark). The latency benchmark is just testing VT IO throughput for a specific zsh prompt. Not at all related to input latency.

The plaintext IO benchmark is suspiciously slow for both Alacritty and Ghostty relative to Kitty. I ran the same on my machine and got within 15% between all three. They're all fast but something looks wrong here. I also have issue with the contents, which aren't representative in my opinion of human output (that's why I like to use books as my plaintext IO benchmark). This changes things.

The memory usage doesn't explain the setup at all, nor exactly how memory is read (I'm not sure what the `mem` column is reading in btop). Memory usage on macOS is tricky to benchmark because the OS tries very hard to _not free memory_. As a macOS kernel guy told me once: "freed memory is wasted memory" [so long as you're not using all memory]. There are other metrics you can get out of the kernel to get accurate _allocated and used memory_. Activity Monitor exposes these well. (EDIT: Just realized the tests were on Linux, which should be better, so this might be okay but test setup still matters here)

I'm not saying any are directionally wrong, and I'm also not trying to claim Ghostty is the fastest (I don't, I claim it's just "fast", not the fastest). But this is not good benchmarking.


Author here, I will try to implement your suggestions. I made the benchmarks out of curiosity and excitement for ghostty release and never intended to pick on any specific terminal. Considering it's first initial release (1.0) ghostty performance is very good and I'm sure it will improve even more given a few months. I know ghostty doesn't just focus on performance, it excels in other area like utilizing native components and having a growing community that is very supportive.


...And you can also cc this your comment to the issues section of the provided repo, so that the author could answer these points and possibly improve their benchmarking process :).

---

> I claim it's just "fast"

Me, I have three terminal emulators installed on my main machine, alacritty, kitty and xterm. Definitely haven't noticed anything "game changing" (as mentioned in the comment above) from ghostty in this regard.


You could also provide your own terminal benchmarks; that would help Mitchell debug if needed.


I've been using Ghostty for several months now (used Alacritty before that). Ghostty is really, really good. It's fast, it gets the text rendering right (many cross-platform terminals struggle with this), and it has all the features I need.

It's also some very well-written Zig code. We use some of the code for graphemes in Bun for `Bun.stringWidth`.


Likewise coming from alacritty myself. This out of the box gives me everything I really want and does it well. Not to mention the development process was quite refreshing to see. Decision making process for sane defaults and to allow customization quite easily.

Nicely done.


Ghostty has a hard-to-find "quake mode" that may interest some.

During the beta I had it configured like this on macOS:

    keybind = global:cmd+space=toggle_quick_terminal
    quick-terminal-animation-duration = 0.1
There isn't an option to set the default height of the "quick terminal" window that I'm aware of but you can drag the bottom of the window after it opens and it will persist between toggles.


Unfortunately no tab support yet in the quick terminal, and it does not work on top of fullscreen applications. Would be great if these things would work at some point.

Currently I am using Wezterm and iTerm2 for the quake style terminal, but using two different terminals is quite annoying. I really miss Visor and TotalTerminal.


About tab support, you mean pressing the tab key to, for example, autocomplete a command?

That seems to work for me (macOS 15.2 here)


GP means creating a new tab with CMD+T, which works in the normal ghostty terminal. iTerm2 does support tabs in its hotkey windows (~= ghostty's quick terminal).


Aaaaaah! Ok, what a confusion :D


Hmm any way for this to work in kde plasma wayland?

In yakuake they have to register the Open/Retract shortcut with KGlobalAccel [1] and I don't think global shortcuts are implemented otherwise

[1] https://github.com/KDE/yakuake/blob/164d24b8bad1175199260c62...


It's a macOS-only feature, for now.


Let's hope it will become available for Linux, too. I have been using Yakuake for over a decade now, mostly because I love how I can access the terminal everywhere with one button press.

At the same time, Yakuake seems to be in maintenance mode, and you should be happy when it works with new KDE versions.


I'm using ctrl+` :

    keybind = global:ctrl+grave_accent=toggle_quick_terminal
It was the first thing I made sure ghostty supported it before trying it.

Setting the initial height of the quick terminal is under development: https://github.com/ghostty-org/ghostty/issues/2384

Lack of tab support in the quick terminal is a bummer, but it should come eventually: https://github.com/ghostty-org/ghostty/issues/2329#issuecomm...

For now, splits are the way to go in the quick terminal.


Note, if someone is trying this, that you need to grant accessibility permissions for it to work when Ghostty isn't focused.


Thanks for the heads up - not sure I’ll be able to use it on my work laptop womp womp


This is the first thing I went looking for when looking at the docs, thank you.


what does quake mode do?


Comes from video games where you usually can hit ~ (tilde) or other character to make a in-game console appear, usually sliding down from above or at least in the top half/third/quarter of the screen. Popularized by Quake and games from that heritage (like Source engine) I suppose.

Desktop equivalent is that you have a terminal available at a short-cut/button-press that will always show it but not fully hide the rest, no matter what other context you're in. Pretty handy.


> a terminal available at a short-cut/button-press that will always show it but not fully hide the rest, no matter what other context you're in

I cant be the only person who uses Quake-style terminals at fullscreen. The second part of your sentence is the crucial bit: the ability to instantly conjure a persistent terminal regardless of whatever else I have on screen.


Can you then detach it to make it "non-quick", if you want to keep working on that separate context thing?

What I find annoying with my workflow (linux) is that starting a terminal and shell takes a lot of time. I wonder if it's possible to have a terminal always loaded so that my keybinding for creating a terminal would actually: move terminal in current workspace, focus it, then spawn another invisible terminal in the background.


I kind of use tmux for this, to have a persistent session. Even if my desktop manager (Gnome3) crashes, which happens sometimes when I run a bazillion VMs and run out of memory, my tmux session still survives and I can `tmux attach` once logged in again.

So the idea would be that you start tmux somehow/somewhere, then in your new shell you can do `tmux attach` to get into that session from anywhere, and if you close this new shell, you can still do `tmux attach` to get back to where you were.


Yakuake supports invoking the terminal in windowed-mode, if that's the profile you choose for it. I don't follow the purpose served by spawning an invisible background terminal; that doesn't seem to be common workflow, but I suspect you could wrangle it in your shell startup file so that the terminal self-invokes in hidden mode - but having 2 running copies (invisible and windowed) may result in both appearing when you press your global shortcut.


> I wonder if it's possible to have a terminal always loaded so that my keybinding for creating a terminal would actually: move terminal in current workspace, focus it, then spawn another invisible terminal in the background.

Use rxvt-unicode or another terminal that has a client/server mode. Start up a server in the background on boot or login (e.g. as a systemd user service), and make your keybind launch a new client process. Should be pretty much instant.


Yeah I have been using quake-style terminals (guake on linux, iterm2 on mac) for _years_. I never met another dev in person who also uses it.

I am a single massive monitor kind of person. Quake-style terminal + all apps in maximized window + multiple desktops (with a shortcut to switch between them) is so good. Pull up the same terminal no matter which desktop you are on.


TIL. thank you for taking the time to answer - wasnt obvious from above whether or not this was some kind of joke easter egg thing


Same. I have been using this in Yakuake since 5 years but I never knew it was called a "quake mode"


This is especially amusing to me given your choice of terminal.


Scroll down from top on any screen


Downside is that the quick terminal doesn't support tabs. Unfortunately that's currently a dealbreaker for me.


You can always run tmux inside. I personally don't use tabs in my terminal emulator at all, because I use tmux tabs for everything.

It may not work for you, of course.


Thank you! First thing I was looking for too. Cannot imagine trying a terminal without this.


Doesn't seem to like that keybind now, and searching the docs doesn't give me answer. Do you know if something still works?

Also, why cmd+space? That's the MacOS spotlight search binding.


I disable cmd+space for Spotlight in macOS System Preferences.

You could try another keybind:

https://ghostty.org/docs/config/reference#keybind

Also be sure to quit and reopen Ghostty or use the reload configuration option from the Ghostty menu.


Love me some quake style terminals, will check this out


Amazing, thanks! This is most of how I use a terminal. Will give it a go.


Does this work under Wayland? I remember that being an issue for Guake.


it should do. on Linux it uses GTK which supports Wayland these days


Where does one add this? Is there a config file?


https://ghostty.org/docs/config

On macOS, pressing ⌘+comma with Ghostty in focus opens the config file.

Quit and reopen Ghostty to load the updated config (or bind another key to the reload_config action: https://ghostty.org/docs/config/keybind/reference#reload_con... ).

Keybinds are explained here: https://ghostty.org/docs/config/reference#keybind


I just saw this https://ghostty.org/docs/config and was coming to update my post when I saw your comment.

Thank you!

Imma try out ghostty, WezTerm, and Rio thanks to this thread. And why not use them all. For terminal minded folks we are surely spoiled.


Brief update: I really really like rio. Out of the box it has the best theme, best setup. It’s fast. Pretty. I like it tons.

Ghostty is nice. Haven’t had much time with WezTerm.


It also has reload config in the Apple menu items which I found handy as the default keybinds didn't seem to work for me.


And you can reload the config with Cmd+Shft+, so Cmd+, to open the config (standard mac shortcut) and then the same with Shift to reload it, it's genius.


Super handy!


Related. Others?

Ghostty 1.0 Is Coming - https://news.ycombinator.com/item?id=41914025 - Oct 2024 (32 comments)

Ghostty Devlog 004 - https://news.ycombinator.com/item?id=37709113 - Sept 2023 (2 comments)

Talk: Ghostty and Some Useful Zig Patterns - https://news.ycombinator.com/item?id=37491031 - Sept 2023 (2 comments)

Mitchell Hashimoto's Ghostty Devlog - https://news.ycombinator.com/item?id=36736686 - July 2023 (1 comment)


I have found the following community site for generating Ghostty config quite helpful https://ghostty.zerebos.com/


Hey this is my tool, thanks for sharing! I've been very happy with how well received it has been so far!


Well, thanks! Sometimes GUI makes for easier discovery than a wall of text, even when the docs are good.


Great tool! Thank you.


Oh wow, this great! Is it your project? Either your post deserves more upvoted, or this link deserves it's own post. Thanks for this one! <3


This is great, thanks! It would be amazing if CMD + , would open this directly.


I uninstalled the app when I saw that Cmd+, opens an empty text file called config.

I'm not going to learn more configuration languages or type 30 characters (or paste them from the browser) to toggle a binary setting.


Interesting take. Settings are typically something I setup once and move on. A GUI is nice (I'm sure there will be one), but not required in a v1. One of Ghostty's stated goals is sane defaults that mostly work out the box. I just checked my settings file and I changed 3 things. I think they did a pretty good job with defaults.

Finally, somewhere else in this thread someone linked a web tool that will generate the settings if you absolutely can't look up the couple you need to change.


A GUI for settings is planned so you can try again in the future.


Aren't plaintext configuration files standard? It's how I configure most applications (and how I like it, because it makes the configuration shareable).

As a DSL, it's key-value pairs. It doesn't get much simpler than that.


It's a desktop/GUI application. It's definitely not a standard for those, no. I share the OPs frustation that I don't even know what I can configure and have to search web to be able to change something. And while the documentation is nice, it's not exactly great for this.

Also, having an explorable and searchable UI doesn't mean it's not saved in the same shareable and readable file.


That could have been acceptable. The problem is it's empty; it should instead contain the default configuration.


You can see the default configuration by running `ghostty +show-config --default`


In that case it should be easy to prefill the config file if it doesn't already exist.


The ultimate end format for the config stored on disc is completely irrelevant to how the config is created. Simple doesn’t mean easy to experiment with, simple to understand, fast to write and so on.

No one is confused as to how the ghostty config works. Key value pairs. Sure. A window full of GUI controls and system color pickers can create that config file, or I can manually by hand. I’d prefer the former.


no, especially for an app that boasts to be "native"


kitty has a nicely formatted config which lists all settings along with their default values and a very detailed description of each one. It's pretty much the same as having a GUI. Maybe Ghostty can adopt this?


Similarly documented config file can be generated on linux with:

  mkdir -p ~/.config/ghostty  
  ghostty +show-config --default --docs >> ~/.config/ghostty/config


Same here. I was curious, so I installed it. First thing I tried to do was to change the text color, and saw there was no settings UI. This is a bit baffling to be honest.

Uninstalled it right away, I'll keep using the default MacOS Terminal app.


I initially scoffed when I read "platform-native UI" as I've found programs made in Electron typically proclaim something similar when they are anything but native, so when I saw it used GTK for Linux (SwiftUI for MacOS) my interests were piqued. Always fun to mess around with new terminal emulators.

edit: alas, it doesn't support bitmap fonts..


You can get pixel perfect bitmap fonts by using their TrueType conversions and using fractional point font sizes. There are dozens of bitmap enthusiasts that were in the beta and they're totally convinced because well... it's pixel identical.

I've noted before in issues I'm open to supporting bitmap fonts if someone contributes it, but not interested in adding it myself. The workaround above is very good.


When using the original Terminus font failed, I tried the TTF version (Terminess) which in VSCode at specific point sizes is crisp and sharp. But with Ghostty, it was blurry and hard to read. At that point I gave up trying.


The reason might be that you need to have an "anti-aliasing" checkbox to untick on MacOS (generally in the font selection menu). I switched from Terminal to iTerm for that reason, on my work MBP.


Looks like a very nice project overall. I was initially interested in the "native" UI but after trying Ghostty I think I've realised that in a terminal app I actually want all the UI to be terminal/TUI based within the terminal itself. This is a personal preference I've discovered rather than a criticism of Ghostty.

It seems fast and really nice otherwise, so I'll keep fiddling with it, but so far I still prefer, for example, the "non-fancy" tabs in WezTerm (where the tabs are just rendered as line of terminal cells at the top or bottom of the window rather than GUI elements), and the way that modals ("Really quit WezTerm?" etc.) are also rendered within the terminal.

I'd also struggle to live without quick select mode[0].

[0] https://wezfurlong.org/wezterm/quickselect.html


Yeah I also searched for a quick select in ghostty while checking now. I am probably too deep in wezterm with my lua configuration anyway, but still.


Thanks for this post, first thing I did was search "bitmap" in the thread. If I can't use Terminus (+Unifont fallback), it's not for me.


Curious as to how much it matters; if a TTF font looks similar and is fast?


> if a TTF font looks similar

It doesn't, especially on average DPI monitors. Oh, you mean the OTF trick.


It was the first thing I check whenever I try a new terminal. If Terminus doesn't work then the terminal doesn't work for me.


fyi, I have just tried Unifont and worked perfectly.


>it doesn't support bitmap fonts

Very disappointing. Not sure why people are trying to kill off bitmap support in everything these days. Will stick with foot.


IMO the main reason is high DPI screens. On macs it's essentially the default, and it'll probably become the default in the future for everything. Since bitmap fonts make much more sense with low pixel density I think it's not going to be a priority for any newly developed apps.


Bitmap fonts can be scaled by integer factors without losing any crispness, and most high-DPI displays in common use today would look just fine with a 2x or 3x font upscale.


Many people here seem impressed about speed/performance. I have been using all sorts of terminals / emulators over the past 20 years and it never occurred to me a terminal can be slow. When I type a command, I just get the result instantaneously, for any terminal. What are the use cases that can make a terminal be slow?


I don‘t get it either. The only use case I can see is for programs that output basically a video feed in text form.

A commenter in this thread mentioned sifting through log / debug output… but why wouldn‘t you pipe it to a file instead?


TESTED:

1. Create a file with 1 million lines:

  for i in {1..1000000}; do echo "Line $i: This is a test of terminal performance."; done > bigfile.txt
2. cat the file and see how much time it takes:

  time cat bigfile.txt
RESULTS:

- iterm2: 3.5s

- Default macOS terminal: 2.3s

- Ghostty: 1.8s


> What are the use cases that can make a terminal be slow?

Rendering huge stdout/stderr can be a bottleneck. Try running a program that writes half a million lines of text to stdout without file redirects and a lot of terminal emulators will struggle to keep up.


I think this mostly plays a role when using modal text editors like vim in your terminal. Speed matters so very much then! Give it a try if you want ;)


Have you ever experienced vim being slow? If so, would you know how I could reproduce this?


This feels like the Vagrant moment [1] again. Cant believe 15 years have passed already.

Together with Bun I believe that is two high profile open source software made with Zig.

[1] https://news.ycombinator.com/item?id=1175901


Wayland WM "River" is great too.


What do you mean the "vagrant moment"?


and it’s the same guy


I couldn't find any screenshots, also, why is this being hyped so much? What have I missed?


I'm wondering about this too. I looked at it and don't see any reasons to switch away from kitty, which is just as fast, has more features, and has never given me trouble. Kovid is a fantastic developer who's very responsive and fixes bugs in sometimes literal minutes after they were reported.


I guess the hype is from the series of blogposts about the lengths they've gone to make it fast. Also it looks like mac doesn't get a lot of native terminals so this has them excited.


Just try it. I tried and the launch was so smooth that I'm keeping it a few days to test it. My current biggest problem is that I launch my terminal using the spotlight shortcut (⌘-space on mac) and while iterm2 is found when I search for term, ghostty isn't.


It took a minute for me, but it did find it. Something is off with macOS indexing. Any app that you install via brew takes a bit to show up.


I'm not complaining about the indexing (you can start the indexing by starting spotlight on and off). I'm complaining about having to search for "ghos..." instead of "term...". Because I don't don't like to remember the specific app name. But this complaint is the same for everything; when searching for Excel, I would like "Numbers" to also show up in the results. When looking for vscode I would like "Visual Studio code" to also show up, but I need to type either code, visual or studio.


Sounds like a feature request for spotlight to add aliases or tags. Personally I always keep a terminal open.


Huh, you've got me curious, and the Windows start menu does in fact launch Visual Studio Code when searching for "vscode." Color me pleasantly surprised!


This is a neat blog post explaining part of the magic:

https://gpanders.com/blog/ghostty-is-native-so-what/


I use Foot as my terminal and Niri as my WM. It’s a great combo. Niri handles splits for me, and I don’t need tabs. I also turn off all window decorations, so my terminal content gets 100% of the terminal’s screen real estate-- so I don't need a native UI. All that said, it looks like Ghosty can be configured to match this setup, so I’ll give it a try. I just wanted to mention Foot to anyone who is running Linux. Foot is a simple, focused project.


I am a happy foot user and I am considering switching from Sway to Niri. What has been your experience with Niri? One thing that concerns me about Niri is that it is not wlroots based. This means that many tools I accustomed to don't work with Niri. Do you have some dedicated tools for screen sharing, screen recording, screen printing, multi-monitor management, ...?


I absolutely love Niri. It has a built-in screen capture which is good enough for me. Screensharing works fine from Firefox (which is where I do all of my video conferencing). I stopped using multiple screens a long time ago, but I do occasionally hook my laptop up to my TV, and that works out of the box. Though, for stuff like that, I might log into to a Gnome + PaperWM session simply because I don’t remember how to fiddle with things, and I’m not generally trying to optimize for my workflow when I’m giving a live talk or watching TV.


What I like about foot is the heuristics governing text selection with the mouse. I find that more often than not, if I double click with the mouse on some text, what it ends up selecting is just the part I need.


I actually have to fight this feature a lot, but I appreciate what it's trying to do. For me the issue is I'm often trying to triple click to select full IRC lines and it keeps only selecting parts of the line because the person had put some quotes in part of what they said, and the selection "smartly" will only select the area between two quotes, even if those quotes were the ending of a pair on the left and start of a pair on the right, aka not even truly quoted text is being selected, but all the un-quoted text between two pairs of quoted text. The solution is to click a different spot, usually the timestamp is the safest, but I find I naturally drift toward the far right side of the terminal for selecting lines, or sometimes somewhere in the middle.


Is it weird that I never considered foot because of the name? At least when you say "alacritty" i understand that it's a terminal. When I tell someone I use "foot"... I don't know, it doesn't give a good feeling.


What about when you tell someone you "cat" a file or use "sudo"? Who cares what normies think?


Already in homebrew if you want to use that!

I'm very new to Ghostty and went looking for my favorite theme "Solarized Light"; it's listed as "iTerm2 Solarized Light" -- in contrast (heh) to "Solarized Dark"


Thanks for this lead - i eventually figured out there's 7 options:

    $ ghostty +list-themes
    /solari
    <... lists 7 options ...>
And then in the ghostty config i could:

    theme = dark:Builtin Solarized Dark,light:Builtin Solarized Light


The author has a dev log I’d recommend if you’re curious about what makes it different + general goodies on Zig/terminal emulators.

https://mitchellh.com/ghostty


When I try to ssh into one of my servers using this terminal I get the following:

  missing or unsuitable terminal: xterm-ghostty
  Connection to xxx.xxx.xxx.xxx closed.
(IP address removed by me.)

It turned out that this is associated with how I automatically run tmux by having the following kind of config for how I connect to that server.

  Host server3000
   IdentityFile ~/.ssh/host_specific/foo/bar/server3000/id_ed25519_baz
   RequestTTY yes
   RemoteCommand /usr/bin/env tmux new-session -A -s '%L'
Whereas if I outcomment the RemoteCommand setting in my ~/.ssh/config of the laptop I'm connecting form, I can connect fine even using Ghostty as my terminal and from

  env | grep ^TERM=
I get output

  TERM=xterm-256color
in the initial normal shell.

And if I run tmux, then inside of it from

  env | grep ^TERM=
I get output

  TERM=tmux-256color
So there seems to be some termcap stuff I'd have to figure out if I want to use Ghostty and still be able to run tmux automatically in the way I'm currently doing without problem when using the Terminal that ships with macOS and ssh'ing into my servers.



Thank you. I’ll probably go with sticking their suggestion into my ssh client config

  SetEnv TERM=xterm-256color
mentioned in the end of your link. I’ll put it next to the line where I set RemoteCommand and include a comment for myself that this SetEnv is for being able to still use RemoteCommand tmux thing even when using Ghostty.


I tried to install and play around with it, it's really nice.

Took a bit of tinkering to set a theme and my favourite Pragmata Pro, but what ultimately annoys me is the lack of 'turnkey' selecting for text.

When I run `Cmd + A`, I want my terminal to make a full text selection of an entered command, not of the screen content. Or when I run `Option + Shift + Arrow left/right`, I want to select words from an entered command, not to type '4D;4C;4D;4C'.

I'm not a vimer or emacser, I want to have normal macos experience. For this reason alone I thought it's too early to switch and Warp is still great for me.


Cmd+A to select the entered command isn't standard.

You could try:

- Ctrl+A: Move to the beginning of the line.

- Ctrl+E: Move to the end of the line.

- Ctrl+K: Cut the command from the cursor position to the end.

- Ctrl+U: Cut the command from the cursor to the beginning of the line.

- Ctrl+Y: Paste the text back.

This should work in all terminals.


You're just forcing me to be a vimer at this point. :)

By normal macos experience I mean key bindings for regular text fields, not regular terminal (whatever they're supposed to be). Afaik, Warp was the first one ever to treat terminal input as a regular text field input.


Ctrl+W: delete last word


Good ideas (and possible in Wezterm if shell marks the semantic zones, not sure whether possible if not), though not really a normal macos experience given mac's default terminal doesn't select of an entered command on Cmd+A


But `ghostty +list-themes` is damn impressive.


I'm very excited to have this because it's the first bit of high quality open source software to hit the streets in a while.

I like where we're headed with tools like this and Ladybird[0] for hope of a subscriptionless future.

Thank you, Mitchell!

[0] https://ladybird.org/


> I like where we're headed with tools like this and Ladybird[0] for hope of a subscriptionless future.

That's a weird statement. I've been running a free, open-source and subscription-less browser (firefox) and terminal emulator (many) for close to 20 years.

Actually I like what ladybird is doing in the browser space, given firefox is quite dependent on google cash. But this is just yet another terminal emulator in a sea of them. The only two distinguishing features I can see are hype and native UI (which mac users care about for some reason -- my native UI is a borderless rectangle in tiling WM).


native UI is so much more than how a border of a window looks like.


What is native UI in this context? My terminal emulator is also always basically a full-screen black textarea with white letters. No window borders, no tabs, no buttons, no menus, nothing else. Is there anything native UI would give me in this case (and what is a native UI, I can't find it defined anywhere)?


This gets brought up a lot, so I wrote about it here https://gpanders.com/blog/ghostty-is-native-so-what/


> This also means that native features like pressing Shift+⌘+\ open the tab overview, just as in other applications.

Ah, so this is a macos thing and not just Safari. Can anyone help me select a tab using a keyboard? I use the shortcut, type in the search box and...have to use the mouse :(


I don’t recall where, and don’t have my laptop handy, but there is a macOS system option to enable tabbing through all controls (not just inputs), that _should_ do it


> The big picture of "native" is that Ghostty is designed to look, feel, and behave like you expect an application to behave in your desktop environment.

> On macOS, the GUI is written in Swift and uses AppKit and SwiftUI.

(https://ghostty.org/docs/about#native)


I'm using Linux with Xfce, but it seems to be locked into a Gnome-like look and feel, with header bars and CSDs that can't be disabled in favor of standard title bars and menus, so it's actually very inconsistent with the rest of my desktop environment.


I was looking into this recently. If you add this to the config, it'll blend in better with XFCE.

  window-theme = system
  gtk-titlebar = false
  gtk-wide-tabs = false
  gtk-adwaita = false
Dunno if anyone will see this comment, but if they do, here is the solution :D


These settings worked, thanks!

After testing Ghostty out for a while, though, I've realized that input lag is higher than xfce4-terminal, font rendering is blurrier with equivalent settings, the UI is still less consistent with my desktop, and it has three to four times the memory footprint on top of all that. Since xfce4-terminal is already using native GTK, so there's nothing gained on that front.

Disabling the UI cruft just turns it into a less performant version of Xterm, so unfortunately, this is going to be an uninstall for me.


Thanks, ghostty looked really off in KDE by default.


Your rebuttal is not mutually exclusive to the parent comment. They say it’s the first _new_ such thing in a while, not that there aren’t any in existence.


It does where it says they give hope for a wunsciptionless future. We've always had subscriptionless, and the software that was subscriptionless is still around.


Can't edit my post anymore so replying to myself with an addendum:

I wrote the comment in a rush last night and I think it sounds like I'm dumping on ghostty. That is not my intention, it looks very well made and a true passion project which I have lot of respect for.

I just took issue with GP adding yet more hype to this.


>first bit of high quality open source software

That feels like an exaggregation. L High quality open source software is uploaded daily to GitHub.


What was the last one? Ghidra?


So I will see how well it works on FreeBSD, but I love the development model, keeping it "closed" for the 1.0 (focus and polish), I have not tested it yet, but it already "feels" like professional engineering work.



Only as of 1.0 release I believe was their point.


Cool to finally see a 1.0 release of Ghostty! Will definitely check it out. One very strange and niche question though, do you support font switching with SGR escape codes? After the Monaspace font family was released I made a PR to Vim to support highlighting by font switching, but I've yet to find a terminal emulator to my liking that supports it. I'm building an eink laptop and its monochrome display requires some neat tricks like this to get the most out of the device.


Any love for Windows. I'm getting restless to ditch putty but unable to find any good emulator that has select and login style of management screen.


I've been happy enough with Microsoft Terminal instead of PuTTY (and I appreciate the open source github repo). If you're comfortable with editing JSON files, you can save the SSH connections as profiles so you can click to open a new tab to whatever SSH session (or WSL setup, or Powershell setup) you want. Example: https://www.howtogeek.com/devops/how-to-set-up-custom-ssh-pr...


Yeah, I've never had a reason to use anything other than Microsoft Terminal on Windows with WSL.

These days, I actually just use the terminal that's built-in to VSCode for everything...


Apparently it works great on WSL

See this other user's comment: https://news.ycombinator.com/item?id=42518033


For the 10th time WSL is not windows, it's a Linux emulator.


When on windows I have been happy with WezTerm


I ditched putty a long time ago. Conemu is better than putty these days (latest Windows 10 or Windows 11 if you’re unlucky enough).

I don’t like the “feel” of the new Windows Terminal “app” but it is more “modern” and “capable” (running a newer conhost under the hood).

But if you’re willing to use non-standard software then WezTerm, Alacritty, and Kitty (WSL with an XServer) are all good options.


> Windows support is planned after the 1.0 release.

This really does aim to be the terminal for all.


> For example, on macOS, Ghostty supports Quick Look, force touch, the macOS secure input API, built-in window state recovery on restart, etc. These are all native APIs provided by macOS that don't have equivalents in Linux desktop environments.

I believe window state recovery has some approximate equivalent in GNOME and KDE, but maybe not exactly the same (and I don't know how easy it is to integrate with).


On X11, Gnome and KDE Plasma supported session/state restore, but this was based on XSMP and couldn't be simply reused for Wayland.

There's an ongoing standardization effort to provide equivalent functionality for Wayland: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/m...

KDE Plasma provides a "fake session restore" for the time being: https://invent.kde.org/plasma/plasma-workspace/-/merge_reque...


Ah, good to know.


> Split Right | Split Down

Thanks for this. After 7 years of using iterm2 I still don't know what will happen with the ambiguous "Split Horizontally | Split Vertically". I know the issue is I'm thinking about it and should just learn it, but it would be more helpful if it was named "Split A | Split B".

(might be a non-native language problem)


I’m a native English speaker and I also have trouble with this. When the panes are arranged horizontally, the line dividing them is vertical.


I think it ambiguous. vim has vsplit ("Like |:split|, but split vertically.") that is "split right", however, wezterm has "Split Vertically (Top/Bottom). Split the current pane vertically into two panes, by spawning the default program into the bottom half"


I assume this is mostly a mac thing? The effort to get this up and running on debian appears to be a bit more work than normal.


I imagine package managers will start picking this up shortly since it just released publicly.


well you'll have to get a DD on board to do the work and zig isn't even in debian so that'd have to get there first and the person wanting the terminal probably doesn't want to maintain the programming language as well. So that probably means 2 DDs. Again, there is a non-normal distance here.


That seems like a very Debian problem.

Perhaps if one was inclined, Nix can provide immediate resolution, since it can be installed and used on Debian and ghostty project provides convenient flake.

Granted I'm on NixOS, but took me grand total of 60 seconds to update config and 8 minutes of actually building on a slow machine.


Non-DDs can get packages in too via the RFS process, there is a Zig package by a non-DD, not yet in Debian though.

https://mentors.debian.net/intro-maintainers/ https://bugs.debian.org/995670


$ git clone git@github.com:ghostty-org/ghostty.git

$ cd ghostty

$ zig build -Doptimize=ReleaseFast

$ ./zig-out/bin/ghostty


tried this doesn't work do i need some specific zig version?


0.13.0

https://github.com/ghostty-org/ghostty/blob/4b4d4062dfed7b37...

The full script is pretty much:

$ wget https://ziglang.org/download/0.13.0/zig-linux-x86_64-0.13.0....

$ tar xvf zig-linux-x86_64-0.13.0.tar.xz

$ git clone git@github.com:ghostty-org/ghostty.git

$ cd ghostty

$ ../zig-linux-x86_64-0.13.0/zig build -Doptimize=ReleaseFast

$ ./zig-out/bin/ghostty


Looks like there are a few deps needed:

  sudo apt install libgtk-4-dev libadwaita-1-dev git
Otherwise you'll get this error:

  error: unable to spawn glib-compile-resources: FileNotFound
  Build Summary: 78/83 steps succeeded; 2 failed (disable with --summary none)
  install transitive failure
  └─ install ghostty transitive failure
     └─ zig build-exe ghostty ReleaseFast native transitive failure
        ├─ run glib-compile-resources (ghostty_resources.c) failure
        └─ run glib-compile-resources (ghostty_resources.h) failure
  error: the following build command failed with exit code 1:
  /home/tlhunter/Downloads/ghosttty/ghostty/.zig-cache/o/57acb02f2b1ccf1b03b9597a8c5f2d09/build /home/tlhunter/Downloads/ghosttty/zig-linux-x86_64-0.13.0/zig /home/tlhunter/Downloads/ghosttty/ghostty /home/tlhunter/Downloads/ghosttty/ghostty/.zig-cache /home/tlhunter/.cache/zig --seed 0xb4306e7d -Z11426c6f3a70c8b9 -Doptimize=ReleaseFast
```

I'm quite surprised they don't provide a .deb package as that checks off 90% of Linux users.


It's uncommon for upstream to provide .deb packages. That's not really how it's supposed to work. The Debian community creates Debian packages. Upstream's job is only to avoid making the Debian community's job more difficult than necessary. Unfortunately due to the decisions made by various popular Linux projects (mainly an obscene obsession with dynamic linking), it's not really feasible for upstreams to provide GUI applications on Linux. I hope someday this can change, but realistically there's not enough effort being put towards this goal.


Good point. I’m on pacman, but I remember installing adwaita last year when I started using Ghostty.


Funny to see a "doesn't work" response even on Hacker News, with no details or error messages.


Zig 0.13 is required according to https://ghostty.org/docs/install/build


It also seems to need a fairly new gtk4. At least the version in Ubuntu 22.04 is too old.


it's a Mac and Linux thing.


Yeah, it's not available in the Debian/Ubuntu package managers, but building from source is quite trivial.


I went to ghostty.org and spent a long time staring at that animated ghost, and thought of clippy. Except this guy seems to have wider range of emotions.

Anyways, I eventually learned this was about a terminal emulator (which is awesome), but the ghost on the front page really inspired my imagination. I think it would be a good thing to have some kind of companion like that, when it's me, by myself, constantly surrounded by terminals all day. Is the choice of having the ghost be rendered in a text-mode terminal important? I think it is for me.


I have a traumatic experience with GPU-based GUI. Long time ago I tried to run Ubuntu in a VM, and they switched to GPU-based rendering. But as VM doesn't have a GPU, the system fell back to something called "llvmpipe". The result was that the widgets reacted approximately with 30 second lag to every action.

So what I am asking, if you are making a GPU-based rendering toolkit, please write also SIMD software fallback without shaders. Remember how fast Windows 95 was and make it a little bit faster.


I am asking this in good faith

Why would you not ssh?


Because I wanted to see how a new Ubuntu looked. Not to do something useful.


Also to SSH into a VM you need to setup a second network card and to do this you need at least log into a text console.


I took this for a spin today. Coming from a long-time iTerm2 user, the first thing I noticed was how snappy everything feels, especially when resizing the window. The straight-forward configuration was extremely nice as well and can be stored in my dotfiles now (iTerm was a giant dump of XML).

A few things that keep me from switching to it full time:

- Missing search scrollback (cmd+f). This appears to be coming soon: https://github.com/ghostty-org/ghostty/issues/189

- More of a nitpick than anything, but the only way to disable cursor blinking is to disable shell integration. Unfortunately, this means taking away things like native scrolling and likely some other things I don't know about. I see there is a discussion here to possibly address this: https://github.com/ghostty-org/ghostty/discussions/2812

I feel like this would be a no-brainer switch for me once the above are addressed.


What am I missing? Can someone please explain what reason there is to switch/build a new terminal when we can use e.g. iTerm ?


I was using iTerm up until about a week ago when I unboxed a new Mac and decided to test out alternatives while setting it up. Ghostty wasn't out yet so I started with Wezterm, and was shocked to find how much it's speed improved my terminal experience. Typing latency is much better in nvim, and scrolling is vastly improved in nvim and tmux.

Ghostty feels like a Mac app like iTerm2 while being fast and having fewer features. Wezterm feels more like an app ported from Linux, but has a much richer config system and features like build-in multiplexing which means it's replaced tmux for me - while keeping all my tmux keybinds.


Is iTerm2 noticeably slow? I just use the built in Terminal app and I can’t imagine “speed” being a reason to switch away from it. (There is no lack of speed.)


The reason I switched from iTerm2 is it took multiple seconds to resize a window on macOS. I use Rectangle to resize windows, and by default my shortcut for "put this window on the left half" cycles through window sizes when the window is already on the left. So a common workflow is to tap Hyper-J to move a window to the left half, then make it the left third, then the left two thirds of the screen. This is fine for any text editor or browser, but iTerm2 would beachball while I waited multiple seconds for it to resize the window.

Wezterm moves instantly.


I’ve noticed that too when the scroll back buffer is particularly long. iTerm seems to then reflow from the beginning, which can take a while.

I keep using a lot of fresh tabs all the time and iTerm resizes instantly via Rectangle for me.

Ghostty was a bit more sluggish in resizing on an Intel Mac than iTerm in the current latest versions.


No, iTerm is not slow. Ghostty is not noticeably faster in any of my workflows. I am sure Ghostty is faster in some use case, but it's nothing I regularly do or have noticed.


Same, I use it all the time and never perceived it as slow. I am not a tmux user, maybe the speed is noticeable when using more complex terminal apps like that?


Do you have a lot of triggers set up in iTerm 2? IMO that’s what kills performance.

I can understand being frustrated about latency on older Macs — I used to run Alacritty for certain tasks on my Intel Macs for that reason. But on newer Macs like a new M4 Pro I’m back to 100% iTerm 2 again. I can’t fathom having latency problems with iTerm 2 on a new Mac you just unboxed.


Mitchell has a 5 min lightning talk discussing performance of ghostty which is worth a quick watch https://www.youtube.com/watch?v=cPaGkEesw20&t=3015s

It's one of those things that you don't realize how poor the performance is until you experience something better.

Mentioned from his blog: https://mitchellh.com/writing/ghostty-is-coming


> It's one of those things that you don't realize how poor the performance is until you experience something better.

No, it’s one of those things I’ve tested myself extensively and arrived at my own conclusion. Which I already mentioned in the comment you responded to.


The performance talk is about ghostty, which you did not mention trying. You mention alacritty, which is GPU based and offers good performance, but you're quick to rebuttal on unrelated projects.


I only settled on Alacritty after giving all the new and supposedly fast terminal emulators a spin (at least a day for various tasks).


I'm still using the built in MacOS terminal. What am I missing? I mostly do webdev - maybe terminal features are more important for other types of programming?


Apple Terminal has a lot of problems. As others have mentioned, it lacks support for 24 bit color, enforces minimum contrast ratios without any ability to disable them (meaning you cannot set arbitrary color themes), is hopelessly bad at Unicode rendering (particularly with multi-codepoint graphemes, see [1]), and in general misbehaves in other myriad ways [2][3][4].

With both Ghostty and iTerm2 now freely available, there's really no reason to use Terminal.app.

[1]: https://mitchellh.com/writing/grapheme-clusters-in-terminals

[2]: https://github.com/neovim/neovim/issues/26093

[3]: https://github.com/neovim/neovim/issues/28776

[4]: https://github.com/neovim/neovim/pull/28453


Personally, my main reason to prefer Kitty over Terminal.app are (I believe Ghostty support all of them as well, so looking forward to try it out):

- “Kitty Keyboard Protocol” means that a TUI app can detect all keybindings. For example, if you install kkp.el in Emacs, then Emacs running in a terminal will pick up ctrl+shift keys, super keys, etc. on par with a GUI app. I believe NeoVim supports this out of the box now as well, so if you ever felt like binding Cmd+S to :w<cr> you now can. - “Kitty Graphics Protocol” means that I can let e.g. Matplotlib show images inside a terminal, even over SSH connections. If you’re annoyed at pop-up GUI windows, or struggling with viewing remote images often, this is a nice workaround. There are even attempts at making terminal PDF viewers (like termpdf.py); IMO that’s a game changer, even though the app itself is still in a “proof of concept” stage IMO. - Terminal splits. If you work a lot in a terminal, it’s nice to be able to full-screen a terminal and view many different shells or processes side-by-side. Last I checked, Terminal.app just doesn’t have this feature. Sure, you could use multiple windows or a multiplexer like tmux, but that comes with different trade-offs; for example, a native terminal offers smooth scrolling with a trackpad whereas tmux doesn’t. Personally, I use tmux remotely, but stopped using it locally. - I see a lot of people mention 24-bit colors as a main reason to not use Terminal.app. For me, I’m actually pretending that I have a 16-color terminal, because I’m tired of having to theme every command-line utility individually, I’d rather they all just respect my 16 chosen colors instead. The only exception is my editor, just because there are unfortunately few good 16-color themes these days, so I instead change my terminal program to be consistent with my editor theme and then let every other TUI utility believe the terminal only supports 16 colors to match.


Built-in terminal doesn’t support truecolor. Many CLI programs rely on that to look good.


What CLI programs? I have yet to run into any issues after using the built in terminal for its entire lifespan.


As an example, here is the Helix editor (neovim looks just as bad) in Terminal.app vs. ghostty (would look just as good in any other modern terminal).

https://imgur.com/a/terminal-app-left-vs-truecolor-tddRL0C


I appreciate you making an effort to visually display things, but FWIW I don't think that (or sibling) really gets to the root issue, which is less of capability then practical convenience and compatibility. Mac native Terminal perfectly well supports 256 colors (or arbitrary 16 colors with themes), which I've used, so you could absolutely make both sides look identical there. Unless someone is regularly viewing photos inside their terminal (which some do support and can actually sometimes be handy!) then it might not be immediately clear what 24-bit would bring to the table over 8-bit, regardless of editor or shell themes.

But in practice 24-bit was an easy lift for terminals under active development ages ago, and in turn made it trivial to have everyone across any platform specify exact colors more easily without any end user customization or arguments about "not quite what I wanted" in an 8-bit palette or whatever. Thus a lot of the ecosystem now makes use of it. Being able to replicate anything yourself, or get close enough, in a smaller colorspace is still extra grunt work for no particularly valuable reason, and could actually add up to be fairly significant work if one has a lot of more complex code coloring themes and such.


My example is precisely about practical convenience. If I try to do something very normal in Terminal.app, namely use a text editor with a theme, it will look like garbage.


Off topic but what Helix theme are you using here?


Some small tweaks on the built-in theme ayu_evolve.


You wouldn’t realize because 24-bit colors are silently dropped. You don’t get the full experience but you also won’t “run into any issues”, unless you start using something that relies on 24-bit color coding for core functionality, like my own log viewer.


Proper text-based configuration made me switch from iTerm to WezTerm, and i’ll give this a try as well :)


Why create new art when we already have galleries full of it?


Iterm is slow


Yeah or vscode integrated bash?


This is what I use for everything and it works great. Coworkers look at me crazy when I tell them I never open a dedicated terminal.


Why is the CLI args so weird with the + sign?


To people who tried using it, what are the reasons to use it over iTerm2?


It’s fast. In the same league as Alacritty and Wezterm, which is to say on the doom fire benchmark those terminals can do 500fps plus, where iTerm2 does 90fps on my M4 MacBook Pro. In practical terms if you use tmux or vim in the terminal, it makes a big difference for typing latency and scrolling.


Thank you! Interesting, because I haven't perceived "terminal performance" as a problem before. I will try it out


The parent is probably referring to this benchmark: https://github.com/const-void/DOOM-fire-zig/


Where should I look first if I only get around 160 fps, while WezTerm gets 400+ fps?


I am not a very adept terminal user. I just hook in to tmux. So all emulators are basically the same for me. Switching windows in tmux is much faster than clicking on tabs. ghostty at least looks much nicer. It has a lot of built in fonts and themes. Command line editing is similar. Man pages for some reason are very slow to open in iterm2, but that isn't the case here. The only deal breaker for me is that it takes up a lot of cpu (in macbook air). Unless there is a simple, non-consequential config to change that will fix this, I will stay with iterm for now.


> Switching windows in tmux is much faster than clicking on tabs.

Sure, if you're clicking tabs... A fairer comparison would be between the keyboard shortcut to switch windows in tmux and the native keyboard shortcut to switch tabs.


which is prefix+number in tmux. I don't know if you can easily jump to a tab with a visible index in ghostty.


On Mac at least it seems to be cmd+number


I tried it but I just can't jump since it doesn't have support the global hotkey to autofocus iterm that I'm so used to.

I tried using their toggle_visibility keybind but it's a bit wonky since it doesn't return focus back to another window when you toggle away.


I just use rcmd for that. But that iterm feature is nice.


Looks interesting. I'm playing around with it on Linux (with Xfce), but can't figure out how to get rid of the CSD header bar / hamburger menu and use a normal menu bar instead. I see Mac screenshots with a normal Mac-style menu bar, but I don't see how to enable the equivalent on Linux. The `window-theme` and `window-decoration` options do not seem to do anything.


They should work if you exit and restart ghostty.


Thanks, that worked. Apparently, the reload-config hotkey doesn't always work for certain changes. In this case, setting `gtk-titlebar = false` disabled the header bar -- only issue now is that there is no menu bar at all!


- xterm still feel faster to me.

- some visual artifacts with the gtk menu

- sometimes prompt got clear when openning 2nd / 3rd windows

- cant get keybinding quick toggle to work


> - some visual artifacts with the gtk menu

You need a compositor. picom works.

For a proper "native i3 experience" I recommend setting gtk-titlebar=false and unbinding tab/pane management keybinds. I already have a window manager, I don't need a second one.

I also had to disable adwaita because when it's enabled closing a shell with ^D closes all open windows, sometimes it leaves an empty window instead.

> - xterm still feel faster to me.

lxterminal also launches 6 times faster, I guess on a slow laptop without a dedicated GPU these terminals are not the most efficient option.


there's a black box after i click the burger menu button.


In case you mean the quick terminal (ctrl+`):

    keybind = global:ctrl+grave_accent=toggle_quick_terminal


doesn't work for me. i'm using i3.

olps, it's macOS only feature.


Have set it up with Nushell. It’s pretty fast while displaying really long log files. Going to sit alongside iTerm2 until I get comfortable with it.

The only things I miss are (1) right click to copy paste selection (akin to Putty), and (2) profiles (I work with different shells depending on my projects and use Profiles frequently on iTerm2)


Congratulations!

I was hoping 1.0 would mean CMD+F search would work, but looks like that was pushed back to a later release unfortunately.

https://github.com/ghostty-org/ghostty/issues/189#issuecomme...


In case anyone is wondering, this terminal appears to work just great on windows by using WSLg.

I installed on linux inside WSL, then launched it, and it looks/works great. Clipboard also works.


Thanks! I did it, but I'm having problems with window resizing and mouse selection. When I try to resize the window, the actual window is smaller than it appears. Did you encounter the same issue? Related issues:

https://github.com/microsoft/wslg/issues/1008 https://github.com/microsoft/wslg/issues/633


oh, it's actually a problem with ultra-wide screens and there is no simple resolution for this and I gave up https://github.com/microsoft/wslg/issues/590


Did you have to build it? On which OS?


I used Arch. It was already in the AUR, but I believe it did build from source


I just want to say thanks for the minimum-contrast option: https://ghostty.org/docs/config/reference#minimum-contrast

I've grown so sick of tools/TUIs that output unreadable text (like Debian's ls that defaults to dark-blue-on-black for directories). I look forward to never manually theming a terminal app again!


Another goodie is selection-foreground and selection-background config to set the colour for highlight selection, makes a massive difference when it's something you can choose rather than the translucent crap on mac, or the defaults on Windows/Linux.


This is great. I’m middle aged and I’ve definitely noticed my eyesight needs more and more help in the contrast dept


thanks for sharing


Does it support Ctrl+Scroll to zoom? Somehow I got used to this years ago and unfortunately not a lot of software supports it. Have been using Wezterm until now, which does.


That's usually a feature of the Desktop Environment. If you configure it there then it works everywhere.


Looks great. Eagerly waiting to be able to "Use Left Option as Esc+" like iTerm has. Without it, it is nearly impossible to use Emacs.


Look for `macos-option-as-alt`. The Ghostty docs use the term "Alt" here to mean using the key as a terminal input modifier rather than for macOS text input. This setting allows you to specify only one option key to use this behavior for.


Was just looking for how to configure this globally. You can create a keybind for every key[0][1] but that's a bit silly faff nonsense in current year 2024.

[0] e.g. `keybind = alt+f=esc:f`

[1] Which affects both option keys, sadly.


See `macos-option-as-alt`


Ah, damn it, I searched for "meta" and completely missed that. Apologies to Ghostty!


I have this as a system-wide mapping with Karabiner. Complex modifications, "Post esc if left_alt is pressed alone".

There's never a time when I wouldn't want this to work, may as well enable it everywhere.

Edit: It looks like I misunderstood what that setting in iTerm does. But hey if you do want left option to send Esc by itself, that's how to get it.


Looks nice, but the Quick Terminal isn't instant, so I'll stick with iTerm2.

iTerm2 isn't instant either, but they feel about the same[0], although with iTerm2 the full screen Quake-mode (Quick Terminal equivalent) hides the MacOS menu bar, and Ghostty doesn't.

For my taste, I want a full screen terminal, with no menu bar, no delay, and no animations, which I can toggle with a global hotkey.

[0]: Actually, scratch that. I tested again, and iTerm2 opens more quickly.


Upon installing this, I went straight for this part of the documentation:

https://ghostty.org/docs/config/reference#macos-non-native-f...

Unfortunately the "tabs not working in non-native fullscreen" thing is a dealbreaker for me, so I will be switching back to iTerm 2.

But Ghostty as a whole looks promising. I like zig, zig-objc, MIT license, libghostty, config via text file. I will check back every month or so because I really want to use this. But my hate for macOS native fullscreen outweighs everything else.

Edit: Ok here we go, this is why it's not implemented: https://github.com/ghostty-org/ghostty/issues/392#issuecomme...

There's more than one workaround which is superior in my opinion: https://i.imgur.com/iWoqrM0.png

IIRC you can even use AppKit to remove the close/minimize/fullscreen buttons, so it would just be a blank bar.

You could go a step further and use private APIs / objc runtime voodoo to set the height of the titlebar to 0. That might outside your design philosophy though.

Also, FYI, clicking the green fullscreen button still uses macOS native fullscreen, so you definitely want to disable that button (which is a public AppKit API) when you have that option enabled


Just packaged Ghostty for Debian.

https://github.com/clayrisser/debian-ghostty


Love this in theory but the first time user experience could be improved:

$ brew install ghostty

Launch it, don't configure anything, in the new terminal window then enter:

$ lazydocker

Response: 2024/12/28 09:04:42 An error occurred! Please create an issue at https://github.com/jesseduffield/lazydocker/issues

*exec.ExitError exit status 1 /home/runner/work/lazydocker/lazydocker/main.go:96 (0x9397d7) /opt/hostedtoolcache/go/1.21.13/x64/src/runtime/internal/atomic/types.go:194 (0x43bc1b) /opt/hostedtoolcache/go/1.21.13/x64/src/runtime/asm_amd64.s:1650 (0x46b9e1)

Which does not happen with fresh out of the box Mac Terminals, iTerm.

Probably it would be good to have less specific default options for people who just want to try it out before starting to configure it.


That’s a problem with lazydocker, not ghostty.

Maybe contribute to https://github.com/jesseduffield/lazydocker/issues/610 ?


Do you have anything to back up this claim? Because it only crashes in Ghostty, and no other terminal emu I tried it in.

Anyway, not my problem, I will just wait until it's fixed and if not, then I'll use one of the gazillion other ones that work 100%.


Crashing due to lack of a sufficient terminfo is indeed more of a lazydocker problem than a ghostty problem. See the issue above for a workaround.


My takeaway is that it's mostly useful for apple stuff-- why would "platform native" matter on Linux?


You should try it.

I'm on Linux, and first impression is ghostty is really good. Speed in particular is impressive.


Just want to share what I just realised, but the author is no one else than the mitchell hashimoto from hashicorp, so not exactly a newbie ! Would it have killed you to let us poor 99% have a bit of fun releasing useful projects too? (And also reach a bit of your determination, skill and talent)? (no, really, kudos, well done and thanks)


Compiled ok but crashed upon execution:

    info: ghostty version=1.0.1-main+a8e5eef1
    info: ghostty build optimize=ReleaseFast
    info: runtime=apprt.Runtime.gtk
    info: font_backend=font.main.Backend.fontconfig_freetype
    info: dependency harfbuzz=8.4.0
    info: dependency fontconfig=21402
    info: renderer=renderer.OpenGL
    info: libxev backend=main.Backend.io_uring
    info(os): setlocale from env result=en_US.utf8
    info(gtk): GTK version build=4.6.9 runtime=4.6.9
    info: optional config file not found, not loading path=/home/xxxx/.config/ghostty/config
    info(config): default shell source=env value=/usr/bin/bash
    "vulkan-disable" is only available when building GTK with G_ENABLE_DEBUG. See GDK_DEBUG=help
    info(gtk): libadwaita version build=1.1.7 runtime=1.1.7

    (process:164888): Adwaita-WARNING **: 19:33:13.357: Using GtkSettings:gtk-application-prefer-dark-theme with libadwaita is unsupported. Please use AdwStyleManager:color-scheme instead.
    error(gtk): unable to get current color scheme: GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: No such method “ReadOne”
    info(grid): loaded OpenGL 3.2
    warning(grid): OpenGL version is too old. Ghostty requires OpenGL 3.3
    error(gtk_surface): surface failed to realize: error.OpenGLOutdated
    info(sentry): sentry envelope does not contain crash, discarding

    
System:

    OS: Pop!_OS 22.04 LTS x86_64 
    Host: 20QVCTO1WW ThinkPad X1 Extreme 2nd 
    Kernel: 6.9.3-76060903-generic 
    Uptime: 2 hours, 20 mins 
    Packages: 5314 (dpkg), 22 (flatpak) 
    Shell: bash 5.1.16 
    Resolution: 3840x2160 
    DE: Plasma 5.25.5 
    WM: KWin 
    WM Theme: Breeze 
    Theme: [Plasma], Adwaita-dark [GTK2/3] 
    Icons: Papirus-Dark [Plasma], Papirus-Dark [GTK2/3] 
    Terminal: konsole 
    Terminal Font: JetBrains Mono 11 
    CPU: Intel i7-9750H (12) @ 4.500GHz 
    GPU: NVIDIA GeForce GTX 1650 Mobile / Max-Q 
    GPU: Intel CoffeeLake-H GT2 [UHD Graphics 630] 
    Memory: 6307MiB / 31738MiB


You have OpenGL 3.2 but need 3.3


Error is a little misleading. OpenGL is likely much higher than 3.3 since op is using nvidia gpu.

Problem is that this application uses OpenGL ES for which 3.3 was only recently even finalized as a standard and most GPUs like nvidia don’t support.


Also same issue. Seems it’s using a bleeding edge OpenGL ES that even nVidia drivers don’t support.



Is there a way to restore session (windows, tabs, paths) after (application) start? How is this not default everywhere is beyond me (looking at Firefox).

But my main point here would be that the lack of explorable configuration, and the docs not having any search, make it quite challenging search for this.


Are you saying Firefox doesn’t restore state?


This is very nice! How do I work around remote SSH shells complaining like `Error opening terminal: xterm-ghostty`?




I might give this a shot but using GTK4 makes me think this won’t live up to the “native” claim on Linux. It will likely feel out of place on non-GTK DEs with KDE being the big one. And yes, I did read the about page disclaimer about Linux but strongly disagree about calling GTK4 the closest thing. That’s a very GNOME-centric view (e.g., ignores the rest of the Linux ecosystem) and makes me worry that any issues on other DEs will be ignored/deprioritized. It’s possible that I’m wrong and that a sizable population of the closed beta Linux users we’re on KDE, but without knowing, I’m very hesitant and put back by the “native” claim (it feels disingenuous).


It is almost impressive how much worse a GTK4/Adwaita application is compared to a GTK2 application. I just tried this and it has a fucking hamburger menu in a desktop application. If that ever becomes what is considered "native" on Linux I will abandon it after using it for 25 years.


You are free to take libghostty and create an XApp app runtime for it, or even fork it and do what you want. Just because you don't like something does not make it worse.


Oh, GhostTTY is a great project. I also agree that some flavor of Gnome is the default out of the box on most distros. I'm bemoaning that fact, not the existence of an excellent terminal library and 3 frontends for it that I will never use.


FWIW I just tried on KDE (built from source on NixOS) and had some weird cursor dpi issues and GDK errors. Looks like it is tailored more for GTK-based DEs for now.


all GTK apps have the weird cursor issue on KDE if you're using scaling - I believe it's due to how GTK (and GNOME) handles fractional scaling as compared to QT (and KDE). Install the Bottles Flatpak and you'll see the same issue.


Does "native" exist on Linux, in your opinion? Feels to me like both QT and GTK (and maybe iced if cosmic comes to fruition?) could be considered native (or none of them can, depending on your point of view).


I’d answer this differently depending on when you ask. 10 years ago (random, but long enough number) I would have said an easy yes. Both GTK and QT would have been acceptable toolkits to use as the cross DE issues weren’t that many and bugs got fixed. Ask me a few years ago and I’d waver. It wasn’t clear how ecosystem friendly GTK4 would be, so I might have optimistically replied the same. But caveat it with a “maybe support both X11 and Wayland.” But ask me now and I’d say to earn the label *Linux native*, you would have to support a lot. GTK4 has proven to not play well with other DEs. The jump to Wayland has caused a fairly significant split in DEs (this year has greatly closed the gap with many showing great progress in supporting Wayland) which means some apps may not work on your DE of choice. And overall, I’d be hesitant to claim that any app is truly *Linux native* because installing an app no longer guarantees that it’ll just work and look and feel right. You’d need to have builds GTK4 & QT, and make sure that they work in both X11 and Wayland for the next few years. When I look for apps nowadays, I tend to append my DE and/or distribution to my search. I currently think it’s more truthful (on Linux) to say that an app is native to a DE instead of to Linux.

Note: I don’t think GTK4 is bad. One of the best parts of the Linux ecosystem is that we have a lot of great DEs that have gradually differentiated themselves by UX. GTK4 not playing well with others is in part due to how different GNOME’s UX is. The toolkit is meant to serve one DE paradigm now and that’s led to higher quality on that DE. The drawback to that diversification is that there is no easy way to support all DEs. Your toolkit drives what you support (unless you go out of your way to fix things that GTK4 isn’t fixing - which is why I put that bit about seeing how KDE issues would be addressed). The word “Linux”, now more than ever before, describes an ecosystem (or kernel) rather than an operating system.


> You’d need to have builds GTK4 & QT

Isn’t this just a long about way of saying “no”? Very few frameworks let you flip a switch and build against Qt OR Gtk.


The whole point of marketing an app as being native to an operating system is to appeal to users by saying that you are explicitly not using a framework that lets you flip a switch. That you are going out of your way to make separate builds in the operating system’s native framework so that it looks, feels, and performs as best as possible. That’s very clear in the messaging of how and why the macOS version was built. If you are going to go out of your way to market being native as your differentiating factor, I think that yes, you have to make separate builds of GTK and QT (and in the future, libcosmic if it gets a large percentage of users) in order to be able to genuinely market yourself as Linux native. So it is possible. It’s just not as easy as picking one framework and hand waving away the rest of a substantial portion of the userbase.

I’ll repeat that that is what I find disingenuous with the marketing and about page explanation. I have no problem debating whether or not QT-based desktops are a consequential portion of all Linux users. But if you agree that those users account for a sizable percentage of Linux users, then I think my take is a fair one.


GTK-based desktop environments: GNOME, Pantheon, MATE, Xfce, Cinnamon

Qt-based desktop environments: KDE, LXQt

Iced-based desktop environments: COSMIC

By going GTK, you support 5 desktop environments. If you really don't like GTK, just build a Qt app runtime with libghostty. Lots of people want a Qt version.


Looks really out of place for me on KDE, big fat gnome title bar and buttons etc...


Gnome is becoming the de-facto Linux DE. It's standard on Ubuntu, Fedora, RHEL, Suse and Debian.

KDE is standard on what, Steam deck? Every enterprise-y distro ditched it some time ago...


For Fedora, at least, there's been a recent proposal to upgrade KDE to the same status as Gnome.

https://www.phoronix.com/news/Fedora-KDE-Desktop-Promoted


Hasn’t Suse been KDE by default since… as long as I can remember? Debian defaults to GNOME but it lets you pick the DE in the installer IIRC (haven’t installed Debian in a long time since I just use it for servers). Last I heard, Fedora is making KDE an official supported DE. You’re also leaving out other popular user-centric distros like Mint which don’t use either DE (toolkit it GTK but the UX paradigms makes it so just about any toolkit means that it’ll look & feel right on Cinnamon).


Suse has had Gnome as the only supported DE for 5ish years now. They don't even support KDE at all. Talking Suse as in the commercial distros. OpenSuse has choice of DEs like most.


Gotcha. So you really meant enterprise only. Not a tongue in cheek answer (which I thought was a way of just grouping all suse-related distros). To me, that’s not the context for a user oriented product. Any reasonable person looking at a developer tool and listening to that pitch isn’t thinking pure enterprise. So I think that’s not a good interpretation of what I find disagreeable with calling a GTK4-only app “Linux native.”

Also, I thought opensuse (or whatever new name they’re using) was KDE default but with a choice (like Debian)? At least that’s what DE I got last time distro hopped to it. Which is why I don’t consider either as an example of why GNOME would be the “de-facto standard.”


It means what people actually develop, support and use in the real world. KDE has no real support. Suse, Red Hat/IBM and Canonical all develop and support Gnome which is largely what has made it so polished.

Also, I'd wager Gnome is absolutely used by 90% or more of Linux users.

> Also, I thought opensuse (or whatever new name they’re using) was KDE default but with a choice (like Debian)? At least that’s what DE I got last time distro hopped to it.

Depends "which" openSuse. OpenSuse Leap is going away since Suse (the corporation) is doing away with non-immutable distros. Whether it keeps KDE remains to be seen as MicroOS has lots of issues with KDE. Tumbleweed has KDE as the first choice still, but it's basically hobbyist-only from this point since there's no equivalent Suse distro. Aeon is Gnome-only.


KDE is standard in my house


Nice addition.

Slightly more CPU heavy than Kitty.

in MacOS yabai tiling manager has problems dealing with native tabs, that's gonna annoy me like with Finder.

also in MacOS try pressing "Cmd + Shift + \", also works in Finder, it's there, it's cool, but I never use it.


That's neat but how do I select a panel afterwards? Arrow keys do nothing and hjkl start a search.


On my system it's ctrl+tab to cycle through tabs, then escape to open the one that is currently highlighted.


I've been using Alacritty so I can switch back and forth from my work's Mac to my own Linux, and share the config, but I'm testing Ghostty and I'm really liking it. And no silly closed AI somethingsomething integration.


Any Alacritry users have opinions on this? I've been waiting for its release and am looking forward to trying it. Wonder what the big differences are?

I mostly appreciate Alacritty's simplicity and use tmux to manage multiple windows/panes.


You should also check out Wezterm too and see which one you like more. I ported my tmux keybinds to Wezterm - including vim-tmux-navigator style ctrl+{h,j,k,l} for navigating between nvim splits and Wezterm splits, ctrl-a as tmux leader. Getting tmux out of the way between terminal and nvim noticably improved scroll feeling in nvim and just in shell scrollback too.

I styled Wezterm's tabs to look just like my tmux tab bar too, there's no visual difference for me between a Wezterm window with Wezterm tabs, and a Wezterm window with tmux tabs. If you're more of a terminal native than a Mac native, I think you'd enjoy it.

My wezterm config: https://github.com/justjake/Dotfiles/blob/new/config/wezterm...


Does wezterm (or any other terminal emulator) have some way to attach to a session over ssh or over multiple ttys? It's the main thing stopping me from jumping ship.


Yes, Wezterm has this. https://wezfurlong.org/wezterm/multiplexing.html

I haven’t used it yet, and it requires you install Wezterm on the remote. Ideally Wezterm could push a mux server executable to the remote host if needed.


I tested it out really quickly, and something is off with Ghostty's font rendering on my machine -- there's extra vertical space between lines. I didn't see any config options for adjusting the line height, just things like `adjust-cell-height`, which squished the whole font, and `adjust-font-baseline`, which moved everything up.

I tried a few searches ('line height', 'vertical spacing') on the GH issues for the project [1], but didn't see anything. I'm sure it's a simple config option or something with my font, but it works out-of-the-box on Alacritty + xterm and others.

I might file an issue if I can nail it down a bit more.

[1] https://github.com/ghostty-org/ghostty/issues


I was using urxvt for about 10 years and then I switched to alacritty about 5 years ago. Have had the best experience with alacritty- runs on all my systems, super fast, config is great. That being said, I’m gonna give ghostty a well-deserved test drive. I like it a lot so far. Love seeing more zig apps!


Urxvt causes(d) my laptop running Ubuntu to sporadically but spontaneously power cycle, presumably due to bugs in the graphics drivers. Iirc it happened under Nvidia and Intel.


In my experience, Alacritty had a few bugs / unimplemented features that broke certain TUIs. Ghostty seems to be the most complete / least broken terminal emulator.


Been trying it out for a few hours and love it! One feature that I do miss from Kitty is the cursor trail when your cursor moves in a buffer. Excited to see what Ghostty does in the future and thank you for a great new terminal!


Cursor trail?

I've been using Kitty since just about the beginning and didn't know it did that!

Edit. Oh I see it's a really recent addition. I'll definitely be taking that for a spin.


Congrats! I’m curious what the main reason is you ended up going with the MIT license over GPL. Is it because of potentially integrating Ghostty with VS Code like you mentioned during Zig showtime a year ago?


I'm also interested in why the MIT license was chosen. I guess it's because of the plan to create 'libghostty'?


This product just breathes craftsmanship and love. Respect and thank you!


It's the first terminal app that made me switch from Terminal.app on my Mac. It gets basically everything right, and doesn't try to have every feature. Fantastic work, thank you!


To be honest, I don't "get" ghostty. I am not really seeing how this is so much better than the GNOME terminal that ships with my Linux distro.

A lot of people are claiming that ghostty is "faster." I watched the lightning talk where the author claims that catting files and binaries is faster.

I tried this against ghostty itself after building with zig build -Doptimize=ReleaseFast, using: time cat ghostty.

In GNOME terminal, it took 3.340s. In ghostty, it took 16.947s. I must be doing something wrong?


The cool part is that you don’t have to “get” Ghostty, you can continue using whatever you prefer


Are there any use cases for running `cat` on a binary without at least piping it somewhere? The output will be mostly garbage


As someone who uses the default terminal app, I'm curious to learn about other people's use-cases where the choice of terminal app makes a difference and how.


Very impressed with ghostty so far, but: Main reasons for sticking with ITerm2 (for the moment at least):

- "Seamless" cut & paste with paste on "2 X right click" + "Trim trailing LF"

- Quadruple click "Smart selection"

- Brillant search with highlighting in text and scrollbar

- Support for OSC-1 "icon titles" in tabs, as opposed to OSC-0 "header title"


Lack of true colour support was the first thing that got me looking at other options


This. I try to stick with the built ins, but lack of true color on Terminal.app is annoying. I wouldn't consider myself an advanced terminal person, but I do all my git interactions using the terminal and like it to look nice.


I really like to copy on select in the terminal. Terminal.app used to have a hack available to add this feature in, but since SIP days, it is no longer possible.


My most used "unique" feture of WezTerm and one of the main reasons I'd struggle to move to any of the alternatives is quick select mode[0] which massively speeds up copying or typing file names, hashes, IDs, etc. from the output of commands.

[0] https://wezfurlong.org/wezterm/quickselect.html


I am not sure how to answer this.

Why choose a non-default anything? It feels like deeper down, you’re asking why anyone chooses anything.

These terminal emulators all behave slightly differently and have different strengths and weaknesses. Some are configurable. Some are programmable. Some feel “right”. Others can be made to feel “right”. Etc.

Why use any non-default application? Same answer for terminal emulators.


> These terminal emulators all behave slightly differently

That's the point. Different browsers or word processors behave completely differently. They were asking what differences there are between this and other TEs.


This is a very specific question.


Neat, this [1] looks like the project uses vttest [2] to test DEC VT terminal compatibility?

[1] https://github.com/ghostty-org/ghostty/blob/main/TODO.md

[2] https://invisible-island.net/vttest/


I've tried it out and I can notice that ghostty is a little more snappy than Alacritty. I was happy with Alacritty, but I used a face a weird issue where the whole terminal freezes. I'm not sure if this is a Alacritty issue or tmux issue. I can only confirm this by using Ghostty and checking if the same issue happens.

Anyways this is a great piece of software. I've never been this hyped for a software ever before. Great work team.


This is by far the best terminal emulator I've ever used.


Does Ghostty support TiteInhibit? The docs say "if xterm does something we should do it", but I don't see any mention of "tite".


Everything about it is so polished, it’s hard to believe it’s just a v1.0.0 release!

The only thing I’m eagerly waiting for now is the implementation of search [1], but otherwise, it’s absolutely stellar.!

I set Ghostty as my default terminal emulator now.

[1] https://github.com/ghostty-org/ghostty/issues/189


Took me only ten minutes to tweak the config to my liking and recreate my color scheme from iterm.

I’ve been using Ghostty for a day now and it simply works. Smooth, seamless and perfectly integrated to the point where this should just be the default terminal in macOS.

P.S.: If you want to port your iterm color scheme, set:

window-colorspace = display-p3

for the colors to match.

(And bold-is-bright = true if you set this option in iterm)


I'm excited about the fact that this is written in Zig. I'm a Kitty user at the moment, but if this delivers I'll change to Ghostty.


this is way better than using warp (ai gen terminal).

i'd rather use a nice-looking and well designed (UX) terminal than have to use a clunky ai native one.


Warp has been around since 2020, i.e. since before the generative AI craze took off.

Every HN thread about it that I've seen has been full of comments that boil down to "this seems cool but I refuse to use a terminal emulator that's full of telemetry and requires sign-in."

And of course the VC-funded terminal emulator has AI shoehorned in now. I shouldn't be so surprised.

tldr: you're setting a low bar


I've been in the beta for quite a while, the only issues I had were resolved quite quickly. I never got to contribute that much in feedback since I honestly never had anything to complain about, outside of not being able to also use ghostty on Windows (lol).

Congrats on 1.0! It's been a joy to use I wish everyone can enjoy this wonderful piece of software as much as I have!


I love the terminal. But I'm seeing relatively high CPU usage. Maybe there's some non default setting that can reduce that?


Are you perhaps hitting this KDE bug? https://bugs.kde.org/show_bug.cgi?id=497341


I'm on macos


Great stuff! Does it have a Session/Workspace concept? Maybe we can learn from how Alacritty does it integrating with tmux?


Overall nice, but I'm bummed to be running into some bugs regarding a few key binding assignments. Though, I could just be missing something due to the somewhat spartan docs.

Given all the time and hype, I'd have hoped that wrinkles like this would've been ironed out by launch time.

Back to Wezterm for now, but I'll certainly be checking back in at some point.


Since this has some plans for being the best, will it add the great unique feature of wezterm: scripting config support?


Looks pretty cool! Unfortunately I can't use it yet, as I am on a Ubuntu-based distro (Pop! OS 22.04), so my GTK version is not high enough. I imaging that's the case for a lot of people who stick to LTS versions. I may check it out on my Mac for work though


I ran into some funkiness once I ssh’d into a FreeBSD box. The shell history was wonky, and goaccess wouldn’t launch at all, complaining about the terminal environment, which I’ve never seen. With that said, this looks like an awesome project and I’ll be following it closely!



Awesome, I have been waiting for this since you originally announced it. I also enjoyed the blog posts.


Congratulations on making it to the launch!

I really appreciate the levelheadedness of your responses regarding Ghostty, and how clear you are to be speaking positively for your thing instead of negatively about anyone else's.

Going to build it at lunch today and give it a shot :)


Has anyone put up an Arch Aur yet ?



How... did that get in there so fast? I just updated a couple of hours ago and it wasn't there. Now it is.


I'm assuming it's been out for a while, but out of respect package maintainers waited to release it.



Note the AUR package was removed because it's since been packaged in the official Arch repos.

There is a ghostty-git AUR repo for tracking the main branch: https://aur.archlinux.org/packages/ghostty-git


Will Arch auto migrate the Aur package for me, or should I uninstall and install from the repo.


Thanks!

This is why I love HN. I had already installed from source, but this makes updating easier after all.


I wonder how the colour rendering is. Usually when I configure some editor in a terminal to use specific #rrggbb 24bit colours I like, the end result does not render the same as in non-terminal software (confirmed in the past with an eye-dropper tool).


So i've basically been a terminal.app purist, but downloaded ghostty on a whim because of all the excitement...

I did not realize it would be THAT much faster. I guess I should have started using better terminals earlier


Real nice so far.

The fact it does its own window decoration is a bit of a turn-off, but:

A quick test of speed against wezterm and gnome-terminal show ghostty (on my laptop) to be around 3 times faster than both of the other.

Will definitely try it for a couple of weeks.


Could someone give me an idea why I would want to use this instead of any other terminal?


simplicity, feels zen-mode vs a lot of over-the-top-terminals these days

also (from the docs):

> Ghostty supports the Kitty graphics protocol, light/dark mode notifications, hyperlinks, and more. This lets terminal applications like Neovim, Zellij, and others do more than they could in other terminal emulators.

Application features are higher-level features that are useful for interacting with the terminal emulator itself. For example, Ghostty supports native tabs, splits, a drop-down terminal on macOS, theme switching on system dark/light mode, etc.


Same request. As someone who uses the standard Teriminal application on my MBP I'm wondering what benefits I might find from Ghostty


I think "vanilla" terminal users such as myself (e.g. I don't do a bunch of screen/tmuxing, I don't code in terminals etc) probably are not the target audience.

I've had zero issues with standard macos terminal ( once I realized how to speed up key repeat in system settings that is), so I assume I don't need this.


Same club here. I feel comfortable even with the crappiest terminal out there, as far as it allows me to write commands and read/copy output. Even the terminal in the Inferno OS felt good enough for me, like 20 years ago.


Makes a lot of sense, I fall into the same bucket as you so thank you for the response. I use the terminal to start up services and issue git commands. Beyond that, not too much.


I wonder if there is any equivalent of 'iterm2 broadcast input' in ghostty. I use this pattern to deploy same application on multiple servers or checking logs on multiple servers for same service.


Warp has been meeting all my needs other than tab switching behavior. It's not open source but the UX is great.

Switched from WezTerm which was working cross platform but not quite as good.

Both are low latency and written in Rust.



Corresponding Nixpkgs-Tracker link, to track if it's merged into your branches of interest: https://nixpkgs-tracker.ocfox.me/?pr=368404


This happens to be exactly what I was looking for in a Terminal app. Native UI, fast, and native screen splitting, doesn't try to do too much. Five stars


The default macOS terminal app has CMD UP/DOWN to move to previous prompts. This is one of my pet peeves about terminal apps, they seem to lack this command?


Ghostty supports it (like many other terminals) - it is called shell integration and it is supposed to be enabled by default, just like in Terminal.app.


It works for me with cmd+shift+up/down. I had it set up with the iterm2 shell integration and it just worked.


Just for reference, it looks like it's also bound to cmd + up/down (without shift). Documented as "jump_to_prompt" here: https://ghostty.org/docs/config/keybind/reference#jump_to_pr...


Not even cmd up/down, just hit up/down key, no cmd needed


There's a difference between moving the window and inserting text.


Oh i thought you meant "go through previously-entered commands"


There are MANY problems with the default configuration. For example, the UP/DOWN key doesn't work, the TERM is xterm-ghostly...


Does this support the non-standard key-press, key-release, etc. events proposal by kitty project? They are necessary for nicer terminal UI projects.


Yes.


Cool. Thanks.


Genuinely excited to see this land! Can't wait to try it out. This could be the last piece of the puzzle to a nearly flawless terminal experience


I wanted something as fast as Alacritty that had native tabs, could divide horizontal/vertical without tmux. And this seems like it!


I would love to try but it doesn’t support Monterey


how to set tabs to vertical view like in iterm2 ? i googled a lot, but didn't find any


how to set tabs to vertical left view like in iterm2?

also how to set color\name to the particular tab?


General question, how safe is it to use non-stock os terminals? In the end often they need to receiver super user at some point.


I would say it's about as safe as using any other program. On Linux, by default you will not get any isolation within the same user context. So if your account has access to sudo (regardless whether with password or not), assume that any program you've ever run on that account also has sudo access. There are sandboxes and selinux but neither is used consistently enough on consumer systems.


This is such a cool project, looks amazing!


For some reasons, the font looks thinner compare to Kitty on macOS. Not sure if it is a bug or intentional.


Yes, it is. Try setting font-thicken = true https://ghostty.org/docs/config/reference#font-thicken


Thanks, that's exactly what I am used to!


Startup time was very bad until I disabled adwaita with

    gtk-adwaita = false


This sounds like an issue with your environment. For example, on my Fedora 41 setup Ghostty starts up pretty much instantly regardless of the value of this option.


Will the eventual windows release support GPU shaders like Windows terminal does?


Wow, I had no idea ghostty was this much of a big deal. Really cool!


Looks awesome, amazing work!

Any particular/strong reason for choosing Zig for this?



Thanks!


anyone know if this can be plugged into vscode to replace xtermjs?


no. it's planned for the future to make a libghostty that is embeddable, and it would be up to someone to make a modification for vscode to do that (not sure if it can be done with vscode's extension api)


VSCode would switch from xterm.js to a libghostty WASM build.


I tried and it looks really nice, best christmas gift this year


Congrats on the release! I'm excited to try this out.


What's the elevator pitch vs other terminals?


i use the base mac/Windows terminals and have never had any issues. what are the main things that draw people to alternatives?


> what are the main things that draw people to alternatives?

Speed.


Should of used QT.

> error(gtk): unable to get current color scheme: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.portal.Desktop was not provided by any .service files


You would have the same problem with Qt. You don't have the xdg-desktop-portal and an associated backend running. If you're going to build your own Linux system, you should be aware of why something is broken before making a complaint to the wrong people. In this case, you misconfigured your own system.


Odd how a hundred other applications have no issues whatsoever then.

This Portal is something from flatpak btw, no other terminal depends on it.

This is likely some cancer from GTK that metastasized, anything using GTK has to lock it down tight to rely on the absolute minimum of "features".


Then don't use it.


Should have used a grammar checker.


Nice work! How does this compare to Warp?


- open source

- faster

- no AI bloat

- no telemetry

- no obnoxious warning banner if you run without admin access

- no VCs that will enshittify the app in a few years

- doesn't require an internet connection and an account to access motherfucking bash on your local machine


Preach!


Congratulations


thanks Mitchell for all the hard work, it's nice to see quality and competition in this field


I have honestly been so excited to try this after listening to several videos of mitchell talking about his work. What a christmas present!

A terminal is so dear to us software engineers, and this seems like such a love declaration to the terminal.

Time to spend hours tuning my config!


looks really cool! i'm gonna play with it, thanks for this awesome project


Does this have sixel support?


No, and there are no plans to support it from the core developers. However, if there’s a PR, they might consider it. It supports Kitty Image Protocol


any tips on how to install it if you have nix (without nixos)?


You can install it as a Flake using plain Nix. See: https://ghostty.org/docs/install/binary#nix-flake


nixGL is also likely required on non-NixOS Linux distros.

https://github.com/nix-community/nixGL


text is missing left padding on macOS otherwise nice


There is a config setting for this “window-padding-x” I believe.


Beautiful


any nix users aware of a derivation?


there's a flake in the official repo that works fine for me (nixos unstable)


You can downvote this but Why they never put a single screen shots !


The whole home page is a screenshot and two buttons.


But not showing any of the native interface elements that are supposed to set this terminal emulator apart.


The home page is obviously going for 'quirky', but it's mad that it doesn't even say "...is a terminal emulator" anywhere. At first, I thought Ghostty was an ASCII animation library! I guess the name's suffix should've clued me in, but that's easy to overlook in a hurry.


Somebody please read this! I thought it was some goofy JavaScript demo or something. It wasn’t until I clicked on the download link that I realized it was something else entirely. I was thinking “why does this ghost JavaScript demo thing have a download link?” and I expected it to go to some GitHub page or something

The homepage is cool but on mobile it isn’t at all obvious this is software, let alone a terminal emulator. If this HN post didn’t already have like 1000 votes I probably wouldn’t have even bothered with testing the link. I would have said “cool ghost” and moved on with my day.

That being said, I am looking forward to trying this as an iterm2 replacement. Iterm2 has been my default terminal on Mac since forever… it was probably the first hit for “putty for mac” or something, and I probably installed it and never even considered trying something else. It’s always “just worked”.


Is there a bounty for zero days?


Yes, your name will forever be on that pull request.



No cmd+f / ctrl+f ??

I'm sorry what?


I’ve been very disappointed with Alacritty (no support for split term in favor of tmux) and WezTerm (insane config format, config has no business using a full fledged programming language) feature wise, so I have high hopes regarding Ghostty, can’t wait to try it!


Config being a programming language has insane advantages. Not only can I error check my config in vim or Visual Code, I can do insane things with logic that just don't work in other config file approaches. My laptop is connected to a 32" 4k monitor at work, standalone while traveling, and to a 27" 2k at home. WezTerm "knows" that, and sets things such as font size and line height automagically.

Even more, I can have split logic based on window size, window titles that show me who also checked out a file while I am inside an editor, even per-window color and font schemes.

All apps should use something like Lua for their config.


It's great that you (and many others) find it useful, but I genuinely have no idea what this is about. I switch my iTerm from my 13" MBP, 32" monitor, and iPad all the time, and I don't need any config to make it work. Maybe I just don't care enough about this stuff but I don't see what I would even configure this way.

Anyway, this is the reason I love the new wave of terminals, they bring new stuff on the table and anyone can find one they love. I just installed Ghostty and it works as I expect out of the box, with even less config (0) than I have on iTerm. And it's fast. Now I just hope they'll add a config UI some day (one of the reasons I prefer static config files: you can't really get a UI with a programming language) and I'll be in terminal heaven


If you don't care about this stuff you'll just as easily configure in a static key=value table whatever you like, lua doesn't limit you here. It's benefits are all optional


I've used wezterm for years and have never done anything fancy with the config, but this sounds awesome. I'd really appreciate it if you could link your config or a similar resource.


I just started using wezterm, my config isn't as mature or fancy, but I already found a spot where lua config is making me happy. I added a feature so I can command-click on Github PR numbers in Wezterm to take me to that PR on Github.com. Here's a permalink to the code: https://github.com/justjake/Dotfiles/blob/030c5d2b43e944df55...

The way this works in Wezterm is you can add regexes that match text in the terminal and format that text as links. So, I turn #(\d+) into "GITHUB_PR:$1" and then add a "on link clicked" callback to handle that special URL form by shelling out to `gh pr view --web $1` in the same working directory as the clicked pane.


This is what I love about wezterm. I have a whole system that detects lightness and changes themes automatically, and also sends commands down to any open nvim instances to switch colourschemes there. The only downside is that there is no going back for me haha.

Lua is also simple enough that if you want to have a static config, you can have a single table that is very json-like.


I have a similar setup could you link your config? Id like to adapt it.


Hmmm this actually has me thinking of looking at WezTerm now hah


> WezTerm (insane config format, config has no business using a full fledged programming language)

Insanely good ;)

Being able to quickly script minor functionality into my terminal emulator is my favorite thing about WezTerm


I solve that by using zellij locally (I use tmux remotely). Bonus points: I can close or upgrade Alacritty without losing session.


Best. Christmas. Gift. Ever.


For those who don’t have the background:

- created by Mitchell (founder of HashiCorp)

- it’s developed in Zig (and Mitchell recently pledge $300k to Zig foundation)

- uses native UI (which is super rare for cross platform app)

- amazingly performant. e.g. https://hachyderm.io/@mitchellh/111919642467789362

- has lots of amazing small details like below

https://hachyderm.io/@mitchellh/113330304084905500

https://hachyderm.io/@mitchellh/113443002518588524

https://hachyderm.io/@mitchellh/113166930440000852

This has been a passion project of his for the past 2-years and he’s completely MIT open sourced it. He’s spent a lot of time thinking and ensuring this project can persist in the future even without him.

Many people have tremendous respect for Mitchell’s technical abilities, as well as hugely respect how he operates (genuinely nice person and thinks about things long-term and does the hard work for sustainability).

Lots more to read at: https://mitchellh.com/writing/ghostty-is-coming


Ghostty, Mitchell, and the community around Ghostty, are all really amazing and pleasant to work with. I've had a lot of fun hanging out in the Discord, and sending in a couple of PR's. Everyone is really kind and accommodating. It's a pretty great example of how to run a community and open-source project, even this early on.


It doesn't work in Windows so how is it cross platform?

Also, I've been using terminals since DOS in 1990 and never once have I had to say, "I wish this terminal had more performance", so I'm not sure that performance is really relevant here. If I write a command to build my project which takes 10 mins to build, does it matter whether the terminal command ran in 10 milliseconds vs 1 millisecond?

In the linked speed demo one command was 8 milliseconds faster than another. Ok?

Is a terminal written in Zig better than one made in C++ or Rust? Again, unsure why its relavant at all.


> It doesn't work in Windows so how is it cross platform?

Linux and macOS are different platforms. Would calling it multi-platform make you happier?

> Also, I've been using terminals since DOS in 1990 and never once have I had to say, "I wish this terminal had more performance",

I remember the Windows terminal being unbearably slow in the past and wishing it had better performance.

Maybe this just isn’t for you.


If you use something like tmux you will notice higher latencies. Clearly, if you've been using terminals since DOS in 90s and the issue does not bother you, then you are likely happy with whatever it is you are using. If you want to look into the issue and read on methodology used before I recommend Dan Luu's from 2017 [1]

[1] https://danluu.com/term-latency/


| In the linked speed demo one command was 8 milliseconds faster than another. Ok?

For day to day, ls'ing files that speed up won't matter too much. It is when you are tailing logs or working with multi-gig files that it matters.


are you still running DOS too?


Landing page and github README could improve:

- picture or gif is worth a thousand word

- it mentioned its cross-platform but I don't see support for Windows or Android - its better make it explicit it's only for macOS and Linux. Yesterday was looking for some nicer terminal on Android and was hoping ghostty could work.

- I like simple landing pages but this... is too simple and not much useful (only 2 buttons and ASCII image. Why even bother with such landing page and not just stick with github README?

- it doesn't provide me any fast information how to compares to different terminals and why I should switch from Warp


Cross platform doesn't mean every single platform, and it is not common of terminals supporting android


It's true that you wouldn't normally expect a terminal to support Android, but generally one does expect "cross-platform" to mean Linux, Mac, and Windows.


I disagree, the landing page is just fantastic.

I like the product as well, however, I need to use it for a week to comment.


I think it would help if there were more information about it, along with demos, to clearly communicate what it's about. At the moment I'm still confused because I see Ghostty has gotten so much attention, and I'm not clear why it's special.

I am sold thanks to the author's authenticity, but if I had not seen this, I wouldn't know what I'm looking at. So I think it would be very helpful if there were more info on the landing page.


Performance of course but native is a big part of ghostty’s appeal; there’s an article by a neovim dev that expands on that native part a bit - https://gpanders.com/blog/ghostty-is-native-so-what/


I have to enable JavaScript to make it load. It seems the animation on the page requires JavaScript. So, I agree with @pzo that a GIF would be better in this case.


A noscript tag on the landing page with a link to the repository's readme would be appreciated (or ssr the react). There are a small number of users who don't enable javascript for every domain.


I have been waiting to try this out for sometime now. I recently tried various terminal emulator tools and I settled on wave terminal. This is a list of these tools for reference. I would list tools that are on both MacOS and Linux which is comparable to this new emulator. But also because I did not try any on windows.

- Alacritty (https://github.com/jwilm/alacritty)

- waveterminal (https://github.com/wavetermdev/waveterm)

- Hyber (https://github.com/zeit/hyper)

- Kitty (https://github.com/kovidgoyal/kitty)

- Rio (https://github.com/raphamorim/rio)

- Tabby (https://github.com/Eugeny/tabby)

- Wezterm(https://github.com/wez/wezterm)

- Contour (https://contour-terminal.org)

- Extraterm (https://github.com/sedwards2009/extraterm)

- Warp (https://www.warp.dev/)

I didn't like that Warp is VC product as I don't like essential tool like a terminal in my workflow to be dependent on proprietary VC product.


We've added Ghostty to the terminals section of Terminal Trove for comparison.

https://terminaltrove.com/terminals/ghostty/

You can find all terminals for comparison below and also the list of terminals (including Ghostty)

https://terminaltrove.com/compare/terminals/

https://terminaltrove.com/terminals/


The one feature I clicked for is RtL languages support, could that be added to your comparison table please


We will add this to the table, is there a quick test to check if a terminal has RtL / bidirectional language support?

If there are any other features you look for in a terminal not on the comparison table please let us know!


Thanks! Another important factor I find is weather the configurations is file based or menu based.


How come TT's categories aren't listed alphabetically?


Do you mean here?

https://terminaltrove.com/categories/ (1)

Or any other category on the page? (2)

We can change (1) alphabetically if that is what you mean.


Yes, those categories. I should have been more explicit.

I found it confusing to look for a category among the unsorted boxes. It would help if they were sorted.


It is now sorted on the categories section.

https://terminaltrove.com/categories/


Yay, it looks great! Thanks! \o/


I dunno if this was obvious to everyone but OP is one of the founders of Hashicorp


> support native GUIs for configuration in line with our native UI philosophy

As a terminal emulator, running and building it from source in Wayland as a passive process that exists in the shell, while being a method of input-output system call management.


I hate things in "if you know then you know" category. This is one of them.

Opened the page. Only a gif with two buttons - Download and Documentation. No idea what this is. Why would I download a random thing from the Internet not knowing what that is. Documentation? Reading a manual for an unknown thing?

Please provide even a word which describes what this is. Given that it's on HN my guess is that's something to do with computers or nostalgia. My best guess is some old Atari game which was popular in the US and now it's playable in the terminal.


Can you please greet the things that are new to you in a more welcoming spirit? At least as long as you're posting here. What we want on this site (other sites may differ) is a spirit of curiosity [1]. If you post in a "you're doing it wrong" or "you're not providing me with the information I deserve" spirit, that not only isn't the curiosity we're hoping for, it dampens the entire thread for everybody.

https://news.ycombinator.com/newsguidelines.html

[1] https://hn.algolia.com/?dateRange=all&page=0&prefix=true&sor...

Edit: I just saw https://news.ycombinator.com/item?id=42519739, which means you already covered the point, but I'll leave this up pour encourager les autres.


This isn't a company, I'm not trying to convince you to use it, this is more of a personal art project. If that doesn't vibe with you that's completely fine. You're happy to not use it. I'm happy whether you use it or not. It's all good mate.

(The first sentence in the docs page does explain what it is but if that's too much for you, it's all good.)


I had the same problem. I digged through it only cos it was #1 in HN so I knew something's up. If I had come across this any other way, I wouldn't bother looking past the home page. I don't think you have to be selling the project (financially or otherwise). But you will lose a lot of potential users cos you didn't add the description you have in docs right there in the home page.

> Ghostty is a fast, feature-rich, and cross-platform terminal emulator that uses platform-native UI and GPU acceleration.

Now after reading it, the name makes so much sense as well. GhosTTY. My first thought was alternative to ghost.org or something.


> You're happy to not use it. I'm happy whether you use it or not.

I think you misunderstood the OP. The criticism was about the landing page, not the project.

And fwiw, it's not unwarranted. Putting the words "terminal emulator" somewhere on the page would make less people bounce off. You may be fine with them bouncing off, but still, I think it was meant as constructive criticism.


> I hate things in "if you know then you know" category. This is one of them.

A little too constructive I guess.


You're right, maybe I read the post a bit too charitably.


But... don't you want people to use it? You seem passionate about it otherwise.

I'll admit, I almost didn't click past the animation either. I did, and the doc quickly answered "what is it?", but why not just put that sentence on the landing page? I don't get the unnecessary obscurity either.


Fair. And I'm not here to convince you to cater to everyone. The explanation might be on the first page of the doc, but unless you click on it, you won't know. My prior experience is that docs don't necessarily tell "what" but rather "how" which means that you need to know why you're there. Their weight also varies. Thus, I learned to not speculate how many clicks and real time it's going to take me to learn about the project. If the author doesn't want me to know it, I won't be digging into it.

I enjoy personal projects and if you're saying that this is your personal - all the best! Given high praise count it's likely very good.


I think the documentation does a very good job in the first sentence of describing the project. Not sure why the tone of the commenter was so offended they had to click on a single button to find that.


It's constructive criticism. You don't have to respond with "Well get fucked then"


It's okay to filter people out who are too uninterested to click a "Documentation" link yet vocal enough to come post about it.

It works for https://www.midjourney.com/home and apparently this project too with its 1100+ upvotes.


No, it isn't okay to filter people out for giving helpful feedback solely because you don't like the feedback.

It's especially not okay to be so rude on HN. "Please don't post shallow dismissals"


I would think, or hope, that this guideline is geared towards protecting a years-long effort such as writing a performant, feature-rich terminal emulator, rather than a comment which takes 5 minutes max to draft.

Not clicking on a documentation link on a technical project is the definition of a shallow dismissal in my opinion.


No. The rule is about protecting a culture. Having a brief description on the front page is an eminently reasonable suggestion. Mitchell's response was a shallow dismissal of the person (calls out "you" five times in six sentences) and was against site guidelines.


Which culture would that be? Starting off a post with “I hate things… this is one of them”?

I think the discussion here would be different if the tone was more moderated. Seems like you’re dying on a hill for the right to be abrasive without consequence.


The original commenter posted a shallow dismissal by putting the effort into posting a comment without clicking a single button on the page :)


No. He didn't post any kind of dismissal at all.


The feedback provided wasn't helpful. You're absolutely correct in that shallow dismissals aren't kind, but you're wrong about who was shallow and who was not. OP didn't dismiss anyone, nor was their comment shallow. And they don't owe you or anyone else anything as far as "explanation" goes, and they can filter out whoever the hell they want. Click the link and look further, or don't.

Meanwhile, dr_ketyn's comment was both rude and not constructive in the slightest (here's a tip: starting feedback with "I hate this" isn't constructive or kind).


> I hate things in "if you know then you know" category. This is one of them.

> Documentation? Reading a manual for an unknown thing?

Well. Yes? Maybe I'm assuming too much, but I feel like the target audience here (terminal emulator 'enthusiasts') either know about this already or are totally willing to go over to the manual to read what it is. The very first section upon opening the documentation explains it succinctly: Ghostty is a fast, feature-rich, and cross-platform terminal emulator that uses platform-native UI and GPU acceleration.


I wouldn't word it that strongly, however I would've like to see the first line of the documention on the homepage :)

I'll give it a spin later, looks interesting.


Well, it is named GhosTTY. TTY being in the end, it is a terminal emulator. That's obvious to me. Just like AlacriTTY, PuTTY, KiTTY, etc.


I swear this makes 1000% sense but it never occurred to me before.


I thought it was some modern cowsay with a ghost in the tty.


The description is in the documentation. What’s the trouble by clicking on it? It won’t take a second.


I don't know whether it's going to take a second or half a minute. I also don't know whether there will be an answer on the first page, or there's going to be a cute image and then I'll need to find "Getting Started" to learn how to get started with unknown project. My subjective experience on the internet is that if the gate isn't labelled, there's unlikely value on the other side.


People who are interested in this are talking about it because they're interested in it. Nobody is trying to convert you.


People who are interested in things learn about them at different times. You make it seem like it's "learn about it at the outset or gtfo".


And it might be that next month there's a different homepage with more details. For a launch where all "marketing" has been via blog post, discord, and discussions across various nerdy social media sites…I'm more than happy for them to have some fun to celebrate this.

There are people who have been watching this for a few months waiting for it to go 1.0 — and, at least on day 1, "if you know, you know."


> I don't know whether it's going to take a second or half a minute.

You know how you could find out how long it's going to take? By clicking the button. It's free. It's easy. Hell, it would've taken you less time to click that single button and read the first sentence than it would have taken you to post this comment.

You didn't even bother to spend half a second actually opening the documentation page and then you come here complaining about how you don't know whats in the documentation. This is entirely a problem of your own creation. What gives?


Whatever dude, you hating because of a missing label on the intro page.


Yeah I agree. To me the "If you know you know" mentality is a negative signal about something, suggesting that something is possibly seen as cool/trendy (which is a negative signal against being the most practical/utilitarian/unsexy solution).


Yeah I was wondering why there’s an ascii animation at #1 on HN. Flash back to 2008.


just different tastes i guess

midjourney still has the same thing on their homepage and i dig it


[flagged]


No, cross-platform just means more than one platform. It obviously is that: Mac and Linux.


Obviously! ...


Or young. Some HN readers remember cross-platform software before Windows.

Our pony tails are long, grey, and maybe metaphorical.


How many platforms are required? I noticed it doesn't have an OS/2 download.


I think it’s both fair to say Linux and Mac make something cross platform, but it’s also very reasonable to expect Windows as well given its massive install base size.


How is that relevant here? You should have named Android [0] because that is only platform that has more users than Windows.

[0] But that one is still Linux.


But defining it by total users isn't very useful either - in this case, "total users who regularly use a terminal" would be a far more relevant factor. I think the only reasonable, useful, general definition of "cross-platform" is "runs on at least 2 of the 3 main desktop platforms".


missing z/OS as well...



Windows support is planned.


no windows version?


It's pretty slow and buggy for me idk


Is it mining cryto? Caused my mac to slow down, CPU usage shot up to 100%, and it dropped right down after I quit it.


You mentioned that Ghostty gets around 500 FPS, but I tested it myself and only got 160 FPS on M1 Pro (WezTerm gets 400 FPS). What can be the reason?


Sadly another terminal that doesn't seem to support "Quake style" dropdown (that I can find)

Having my terminal session available on a hotkey has become a critical part of my workflow


except it does? View -> Quick Terminal.


I've built from source on Linux, I don't use MacOS.


This just doesn't seem to work :(

quick-terminal-position=top quick-terminal-screen=main quick-terminal-autohide=false keybind=f9=toggle_quick_terminal

Edit: Joined the discord, turns out this feature is MacOS only :/


It's a macOS-only feature, for now.


I think this being part of the terminal is sort of weird. I've had this functionality in my window managers for years. First xmonad, now awesomewm. It's called scratch pads.


GTK does not support the Wayland protocol to implement a Quake style terminal.


Could GPT5 or Claude written this from scratch?


In the same sense that a million monkeys on typewriters could theoretically produce Shakespeare.


of course not


The little it says about what this even is seems to be wrong. This is not cross-platform at all


Windows is a third class citizen when it comes to the development world.


It's its own doing


Lmao this statement is so funny.


It works on both macOS and Linux.


> Ghostty is a fast, feature-rich, and cross-platform terminal emulator

Doesn't have a binary for Windows so it's not "cross-platform" yet.


The minimum number of platforms for “cross-platform” software is by definition two (2).


Am I the only person wondering why we need 100 terminal emulators when there are only 2 or 3 solutions to using command line tools more like a REPL? (to some degree warp, some bash support in hydrogen, advanced edit mode of powershell) I don't care for using "fancy" TUIs all i want is better tooling to interact with these that does not feel like 1970 and more like the chrome console.


> I saw tradeoffs that I didn't like. I saw features that I wanted. I saw performance that I could improve. I saw stagnation. There are many fantastic terminals out there and you should use them if they work for you. But I wanted something different and thought maybe others did too.

This motivation is pretty clearly stated in the article.

Some people use "fancy TUIs" (the famous editors vim and emacs surely count) and if you don't, feel free to ignore this new option.


Unfortunately, launching a fancy TUI like lazydocker inside a fresh install of Ghostty will make the TUI exit with an error, when the same TUI runs just fine on iTerm, alacritty, etc.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: