<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
arghwhat 23 days ago [-]
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`...
imron 23 days ago [-]
> 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”.
mitchellh 23 days ago [-]
- 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.
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.
mitchellh 22 days ago [-]
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.
Fnoord 21 days ago [-]
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.
imron 22 days ago [-]
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.
indemnity 22 days ago [-]
This is the Alacritty answer to a lot of queries. I took the advice, eventually.
imron 22 days ago [-]
Yep. That comment was when I stopped using Alacritty.
Filligree 22 days ago [-]
> - 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.
mitchellh 22 days ago [-]
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).
ayushgun 23 days ago [-]
> - 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.
You can tell something to run on e-core just not p-cores
tuananh 22 days ago [-]
can i configure it to run on dedicated? im on desktop, power consumption is not an issue.
stouset 22 days ago [-]
I struggle to understand why any of the above approaches would cause any impact worth maintaining a configuration flag over.
epcoa 23 days ago [-]
> Missing damage tracking, always painting everything (even when the window is a full 4k monitor),
Out of curiosity, what GPU accelerated terminal does this.
cztomsik 22 days ago [-]
+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.
arghwhat 22 days ago [-]
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.
cztomsik 16 days ago [-]
That's what I meant to say. There are 2 parts, and both need to work correctly, otherwise you're wasting power.
epcoa 22 days ago [-]
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”.
mitchellh 22 days ago [-]
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.
arghwhat 20 days ago [-]
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.
epcoa 20 days ago [-]
> 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.
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.
arghwhat 20 days ago [-]
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.)
epcoa 20 days ago [-]
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?
epcoa 22 days ago [-]
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.
cayley_graph 23 days ago [-]
Right, input latency is what matters for me. I'm not seeing whether they've measured that in the docs/on Github.
CalebJohn 23 days ago [-]
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.
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!
pzmarzly 22 days ago [-]
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.
> 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.
pzmarzly 22 days ago [-]
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
nine_k 22 days ago [-]
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.
underdeserver 23 days ago [-]
For those interested, the link below from Mitchell's blog explains the different goals he's trying to reach, compared to other terminal emulators.
Clear, friendly, modest, respectful and with the right balance of detail vs overview.
Congratulations on your launch.
balou23 22 days ago [-]
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?
frereubu 22 days ago [-]
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.
cruffle_duffle 22 days ago [-]
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.
Daneel_ 22 days ago [-]
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).
mahdihabibi 22 days ago [-]
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.
worldmerge 23 days ago [-]
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.
commandersaki 23 days ago [-]
Stock Terminal.app doesn’t do 256 or 24-bit colour, that’s really the big thing that drew me to ghostty.
lenkite 23 days ago [-]
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.
pfg_ 23 days ago [-]
Lower inout latency can make something feel faster. I haven't measured it but it's possible that's why with ghostty
KolenCh 23 days ago [-]
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.
feketegy 22 days ago [-]
Use the browser's search on the page?
KolenCh 22 days ago [-]
Search through the whole documentation, not just current page.
jbergstroem 23 days ago [-]
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!
sionisrecur 23 days ago [-]
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.
mixmastamyk 23 days ago [-]
Guessing y’all mean search of the scrollback buffers?
3r7j6qzi9jvnve 23 days ago [-]
(probably, I was also looking for that)
rainbowjelly 22 days ago [-]
Mitchell said it is planned in a recent interview on the Changelog podcast[1], just not in time for 1.0.
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.
sionisrecur 19 days ago [-]
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.
WD-42 22 days ago [-]
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?
verandaguy 23 days ago [-]
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?
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 :)
gigatexal 23 days ago [-]
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?
LVB 23 days ago [-]
Discussed near the last part of an earlier post.
“… exploring not-for-profit structures to help ensure the long-term sustainability of Ghostty.”
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!).
redserk 23 days ago [-]
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.
reissbaker 23 days ago [-]
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.
Fnoord 23 days ago [-]
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?
feketegy 22 days ago [-]
Ghostty's community is much nicer compared to Alacritty :)
Fnoord 21 days ago [-]
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.
This was a few years ago so maybe they grew up since then.
albedoa 15 days ago [-]
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?
PcChip 23 days ago [-]
I’m trying to figure out the same thing, sounds like just tabs?
howon92 23 days ago [-]
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?
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.
mitchellh 23 days ago [-]
Yes we have both as native UI elements.
gigatexal 23 days ago [-]
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.
filmgirlcw 23 days ago [-]
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!
slimsag 23 days ago [-]
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 :)
Emigre_ 22 days ago [-]
I've been looking forward to it for a while, I'm really happy about this. Thanks for your work on this project.
tylerchilds 23 days ago [-]
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.
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
tessierashpool9 22 days ago [-]
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.
ksec 22 days ago [-]
Congratulations.
On the cross-platform library, I wonder why "libGhostty" and not libTerminal. Which seems like a more appropriate in term of library?
jez 22 days ago [-]
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]
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.
jdmg94 17 days ago [-]
how did you decided on building for arch and NixOS but not for red hat or debian?
levlaz 23 days ago [-]
Thank you for making this! I've been waiting to use it for quite some time. Really happy to take it for a spin.
Nekorosu 22 days ago [-]
It's surprisingly convenient and works as I expect it to work all the time. Fantastic job!
samgranieri 23 days ago [-]
Thank you for all the hard work you’ve done and for sharing your passion project with us.
blondin 22 days ago [-]
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 :)
timvdalen 22 days ago [-]
Enjoyed hearing about this on The Changelog recently!
indigodaddy 23 days ago [-]
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.
onli 23 days ago [-]
Wezterm does have tabs, and their related keyboard shortcuts are configurable.
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).
onli 23 days ago [-]
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.
wongogue 22 days ago [-]
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.
22 days ago [-]
22 days ago [-]
nyclounge 23 days ago [-]
So is Ghostty a faster version of iTerm2 and it is Linux compatible?
rererereferred 23 days ago [-]
iTerm2 has way more features, more than I realistically use, but feels slower too.
indigodaddy 23 days ago [-]
Thanks!
mitchellh 23 days ago [-]
We've got native tabs and splits on both macOS and Linux. :)
WezTerm has tabs but they're not native UI elements.
indigodaddy 23 days ago [-]
Right, I was admittedly too lazy to dig far enough with wezterm it appears. Was looking for the button to click I guess.
Zizizizz 23 days ago [-]
You can click the tabs in wezterm
dotancohen 23 days ago [-]
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.
tessellated 23 days ago [-]
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'
rgun 23 days ago [-]
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.
smw 23 days ago [-]
Try binding the tmux leader key to '`' (grave accent). This changed my life!
bhasi 22 days ago [-]
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.
Fnoord 23 days 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).
dotancohen 17 days ago [-]
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.
whateveracct 23 days ago [-]
Konsole is super solid. Just Works.
kombine 22 days ago [-]
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.
jyap 23 days ago [-]
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.
sshine 23 days ago [-]
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.
GreenWatermelon 23 days ago [-]
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.
threecheese 23 days ago [-]
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.
8n4vidtmkvmk 23 days ago [-]
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.
cevn 23 days ago [-]
It took me all of 30 seconds to get the Lua config to compile from copy pasting the documentation..
8n4vidtmkvmk 23 days ago [-]
Your data isn't extinguished if you're running wezterm on the server too. It'll reconnect.
gigatexal 23 days ago [-]
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.
23 days ago [-]
cmgriffing 23 days ago [-]
No mention of Cool Retro Term!?!? Typical elitist behavior... /s
Will these work on MacOS or does it use metal for the mac version?
cmgriffing 22 days ago [-]
I'm using them on a new mac mini. Haven't tried on my older intel mac mini yet though.
dsego 21 days ago [-]
Thanks, I managed to enable the shader, I think the glsl path needs to be absolute, it doesn't work starting with ~ (tilde).
bioneuralnet 23 days ago [-]
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.
Blackthorn 23 days ago [-]
I use that one as my daily driver. Works great.
xrd 23 days ago [-]
Wow that's great
brandoniscool 23 days ago [-]
this guy is a billionaire guys...
antirez 23 days ago [-]
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.
ilrwbwrkhv 22 days ago [-]
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.
antirez 22 days ago [-]
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.
tessierashpool9 22 days ago [-]
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.
robenkleene 22 days ago [-]
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.
tessierashpool9 22 days ago [-]
not really - the use case mentioned where you suffer from a slow terminal is a code smell as far as i am concerned
dcre 22 days ago [-]
No it isn’t.
klohto 22 days ago [-]
[flagged]
dang 22 days ago [-]
Please don't be snarky or cross into personal attack. We're trying for the opposite here.
Telling to creator of Redis that they might want to reevaluate their respective program logic (Redis) is pretty funny, only on HN :)
antirez 22 days ago [-]
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
noisy_boy 22 days ago [-]
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.
22 days ago [-]
23 days ago [-]
dsjkvf 22 days ago [-]
[dead]
mitchellh 22 days ago [-]
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.
moktavizen 21 days ago [-]
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.
dsjkvf 22 days ago [-]
...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.
hitekker 22 days ago [-]
You could also provide your own terminal benchmarks; that would help Mitchell debug if needed.
22 days ago [-]
Jarred 23 days ago [-]
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`.
SnowingXIV 23 days ago [-]
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.
modernerd 23 days ago [-]
Ghostty has a hard-to-find "quake mode" that may interest some.
During the beta I had it configured like this on macOS:
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.
milgrim 23 days ago [-]
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.
tecleandor 22 days ago [-]
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)
manmal 22 days ago [-]
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).
22 days ago [-]
tecleandor 22 days ago [-]
Aaaaaah! Ok, what a confusion :D
dsp_person 23 days ago [-]
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
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.
For now, splits are the way to go in the quick terminal.
rplnt 22 days ago [-]
Note, if someone is trying this, that you need to grant accessibility permissions for it to work when Ghostty isn't focused.
phatskat 18 days ago [-]
Thanks for the heads up - not sure I’ll be able to use it on my work laptop womp womp
alejoar 23 days ago [-]
This is the first thing I went looking for when looking at the docs, thank you.
swyx 23 days ago [-]
what does quake mode do?
diggan 23 days ago [-]
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.
sangnoir 23 days ago [-]
> 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.
throw9986bbdhi 22 days ago [-]
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.
diggan 22 days ago [-]
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.
sangnoir 22 days ago [-]
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.
Dashos 21 days ago [-]
> 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.
DanielHB 22 days ago [-]
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.
swyx 23 days ago [-]
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
rgun 23 days ago [-]
Same. I have been using this in Yakuake since 5 years but I never knew it was called a "quake mode"
nosrepa 22 days ago [-]
This is especially amusing to me given your choice of terminal.
vorpalhex 23 days ago [-]
Scroll down from top on any screen
thomaslutz 23 days ago [-]
Downside is that the quick terminal doesn't support tabs. Unfortunately that's currently a dealbreaker for me.
poincaredisk 23 days ago [-]
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.
freehorse 23 days ago [-]
Thank you! First thing I was looking for too. Cannot imagine trying a terminal without this.
emmelaich 23 days ago [-]
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.
modernerd 22 days ago [-]
I disable cmd+space for Spotlight in macOS System Preferences.
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.
gigatexal 20 days ago [-]
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.
johng 23 days ago [-]
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.
dsego 22 days ago [-]
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.
I have found the following community site for generating Ghostty config quite helpful https://ghostty.zerebos.com/
zerebos 23 days ago [-]
Hey this is my tool, thanks for sharing! I've been very happy with how well received it has been so far!
mvdwoord 22 days ago [-]
Well, thanks! Sometimes GUI makes for easier discovery than a wall of text, even when the docs are good.
23 days ago [-]
matwood 22 days ago [-]
Great tool! Thank you.
8bithero 21 days ago [-]
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
elAhmo 23 days ago [-]
This is great, thanks! It would be amazing if CMD + , would open this directly.
shpx 23 days ago [-]
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.
matwood 22 days ago [-]
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.
rainbowjelly 22 days ago [-]
A GUI for settings is planned so you can try again in the future.
computerfriend 22 days ago [-]
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.
rplnt 22 days ago [-]
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.
Filligree 22 days ago [-]
That could have been acceptable. The problem is it's empty; it should instead contain the default configuration.
rererereferred 22 days ago [-]
You can see the default configuration by running `ghostty +show-config --default`
Filligree 21 days ago [-]
In that case it should be easy to prefill the config file if it doesn't already exist.
wpm 22 days ago [-]
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.
agos 22 days ago [-]
no, especially for an app that boasts to be "native"
homebrewer 22 days ago [-]
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?
Houstan 21 days ago [-]
Similarly documented config file can be generated on linux with:
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.
fishgoesblub 23 days ago [-]
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..
mitchellh 23 days ago [-]
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.
fishgoesblub 23 days ago [-]
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.
BoingBoomTschak 22 days ago [-]
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.
22 days ago [-]
barnabee 22 days ago [-]
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].
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.
BoingBoomTschak 23 days ago [-]
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.
emmelaich 23 days ago [-]
Curious as to how much it matters; if a TTF font looks similar and is fast?
BoingBoomTschak 22 days ago [-]
> if a TTF font looks similar
It doesn't, especially on average DPI monitors. Oh, you mean the OTF trick.
fishgoesblub 23 days ago [-]
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.
TheSmoke 22 days ago [-]
fyi, I have just tried Unifont and worked perfectly.
opan 23 days ago [-]
>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.
nasretdinov 23 days ago [-]
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.
Gormo 19 days ago [-]
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.
mike31fr 21 days ago [-]
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?
danhau 21 days ago [-]
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?
umvi 19 days ago [-]
> 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.
itsn0tm3 21 days ago [-]
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 ;)
mike31fr 21 days ago [-]
Have you ever experienced vim being slow? If so, would you know how I could reproduce this?
ksec 23 days ago [-]
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.
I couldn't find any screenshots, also, why is this being hyped so much? What have I missed?
homebrewer 22 days ago [-]
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.
rererereferred 22 days ago [-]
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.
d3m0t3p 22 days ago [-]
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.
metaltyphoon 22 days ago [-]
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.
d3m0t3p 22 days ago [-]
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.
rererereferred 22 days ago [-]
Sounds like a feature request for spotlight to add aliases or tags. Personally I always keep a terminal open.
itishappy 22 days ago [-]
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!
mrjbq7 23 days ago [-]
This is a neat blog post explaining part of the magic:
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.
conaclos 22 days ago [-]
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, ...?
christophilus 22 days ago [-]
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.
aleden 22 days ago [-]
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.
opan 21 days ago [-]
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.
ramon156 22 days ago [-]
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.
globular-toast 22 days ago [-]
What about when you tell someone you "cat" a file or use "sudo"? Who cares what normies think?
emmelaich 23 days ago [-]
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"
CraigJPerry 16 days ago [-]
Thanks for this lead - i eventually figured out there's 7 options:
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.
feznyng 23 days ago [-]
The author has a dev log I’d recommend if you’re curious about what makes it different + general goodies on Zig/terminal emulators.
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.
vrnvu 22 days ago [-]
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.
rauanm 20 days ago [-]
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.
metaltyphoon 22 days ago [-]
Ctrl+W: delete last word
eviks 22 days ago [-]
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
rauanm 22 days ago [-]
But `ghostty +list-themes` is damn impressive.
leetrout 23 days ago [-]
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.
> 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).
SG- 23 days ago [-]
native UI is so much more than how a border of a window looks like.
poincaredisk 23 days ago [-]
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 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 :(
phatskat 17 days ago [-]
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
nateb2022 23 days ago [-]
> 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.
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.
marginalia_nu 21 days ago [-]
I was looking into this recently. If you add this to the config, it'll blend in better with XFCE.
Dunno if anyone will see this comment, but if they do, here is the solution :D
Gormo 19 days ago [-]
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.
nvlled 21 days ago [-]
Thanks, ghostty looked really off in KDE by default.
23 days ago [-]
urbandw311er 23 days ago [-]
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.
robertlagrant 23 days ago [-]
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.
progbits 22 days ago [-]
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.
poincaredisk 23 days ago [-]
>first bit of high quality open source software
That feels like an exaggregation. L
High quality open source software is uploaded daily to GitHub.
brcmthrowaway 23 days ago [-]
What was the last one? Ghidra?
BSDobelix 23 days ago [-]
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.
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.
loeg 23 days ago [-]
> 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).
eliaspro 23 days ago [-]
On X11, Gnome and KDE Plasma supported session/state restore, but this was based on XSMP and couldn't be simply reused for Wayland.
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)
dcre 22 days ago [-]
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.
robertlutece 22 days ago [-]
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"
navigate8310 23 days ago [-]
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.
For the 10th time WSL is not windows, it's a Linux emulator.
ckrailo 21 days ago [-]
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...
TranquilMarmot 20 days ago [-]
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...
metaltyphoon 23 days ago [-]
When on windows I have been happy with WezTerm
ComputerGuru 22 days ago [-]
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.
karmakaze 23 days ago [-]
> Windows support is planned after the 1.0 release.
This really does aim to be the terminal for all.
kristopolous 23 days ago [-]
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.
mrjbq7 23 days ago [-]
I imagine package managers will start picking this up shortly since it just released publicly.
kristopolous 23 days ago [-]
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.
e3bc54b2 23 days ago [-]
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.
23 days ago [-]
sfuller808 19 days ago [-]
[dead]
pabs3 23 days ago [-]
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.
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.
AndyKelley 23 days ago [-]
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.
eddythompson80 23 days ago [-]
Good point. I’m on pacman, but I remember installing adwaita last year when I started using Ghostty.
sundarurfriend 23 days ago [-]
Funny to see a "doesn't work" response even on Hacker News, with no details or error messages.
It also seems to need a fairly new gtk4. At least the version in Ubuntu 22.04 is too old.
SG- 23 days ago [-]
it's a Mac and Linux thing.
23 days ago [-]
hei-lima 23 days ago [-]
Yeah, it's not available in the Debian/Ubuntu package managers, but building from source is quite trivial.
aleden 22 days ago [-]
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.
codedokode 22 days ago [-]
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.
pvillano 22 days ago [-]
I am asking this in good faith
Why would you not ssh?
codedokode 22 days ago [-]
Because I wanted to see how a new Ubuntu looked. Not to do something useful.
codedokode 22 days ago [-]
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.
denolfe 21 days ago [-]
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:
- 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 ?
jitl 23 days ago [-]
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.
herpdyderp 23 days ago [-]
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.)
1-more 22 days ago [-]
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.
peanball 22 days ago [-]
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.
drewbitt 22 days ago [-]
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.
whoisstan 22 days ago [-]
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?
oefrha 23 days ago [-]
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.
> 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.
0x6c6f6c 22 days ago [-]
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.
oefrha 22 days ago [-]
I only settled on Alacritty after giving all the new and supposedly fast terminal emulators a spin (at least a day for various tasks).
nathansherburn 23 days ago [-]
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?
gpanders 23 days ago [-]
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.
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.
dcre 23 days ago [-]
Built-in terminal doesn’t support truecolor. Many CLI programs rely on that to look good.
herpdyderp 23 days ago [-]
What CLI programs? I have yet to run into any issues after using the built in terminal for its entire lifespan.
dcre 23 days ago [-]
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).
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.
dcre 22 days ago [-]
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.
ryanponce 19 days ago [-]
Off topic but what Helix theme are you using here?
dcre 17 days ago [-]
Some small tweaks on the built-in theme ayu_evolve.
oefrha 23 days ago [-]
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.
x3ro 23 days ago [-]
Proper text-based configuration made me switch from iTerm to WezTerm, and i’ll give this a try as well :)
reconvene1290 22 days ago [-]
Why create new art when we already have galleries full of it?
eviks 23 days ago [-]
Iterm is slow
chipsrafferty 23 days ago [-]
Yeah or vscode integrated bash?
TranquilMarmot 20 days ago [-]
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.
Gormo 22 days ago [-]
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.
tux1968 22 days ago [-]
They should work if you exit and restart ghostty.
Gormo 22 days ago [-]
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!
howon92 23 days ago [-]
To people who tried using it, what are the reasons to use it over iTerm2?
jitl 23 days ago [-]
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.
howon92 23 days ago [-]
Thank you! Interesting, because I haven't perceived "terminal performance" as a problem before. I will try it out
Where should I look first if I only get around 160 fps, while WezTerm gets 400+ fps?
kaycey2022 23 days ago [-]
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.
oneeyedpigeon 22 days ago [-]
> 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.
kaycey2022 22 days ago [-]
which is prefix+number in tmux. I don't know if you can easily jump to a tab with a visible index in ghostty.
barnabee 22 days ago [-]
On Mac at least it seems to be cmd+number
Jcampuzano2 23 days ago [-]
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.
kaycey2022 23 days ago [-]
I just use rcmd for that. But that iterm feature is nice.
metaltyphoon 23 days ago [-]
Why is the CLI args so weird with the + sign?
tuananh 22 days ago [-]
- 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
l-p 22 days ago [-]
> - 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.
tuananh 22 days ago [-]
there's a black box after i click the burger menu button.
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)
nhumrich 23 days ago [-]
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.
eapotapov 22 days ago [-]
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:
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!
commandersaki 22 days ago [-]
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.
thenipper 23 days ago [-]
This is great. I’m middle aged and I’ve definitely noticed my eyesight needs more and more help in the contrast dept
rand0m4r 23 days ago [-]
thanks for sharing
sureglymop 23 days ago [-]
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.
sionisrecur 23 days ago [-]
That's usually a feature of the Desktop Environment. If you configure it there then it works everywhere.
st3fan 23 days ago [-]
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.
lilyball 23 days ago [-]
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.
zimpenfish 23 days ago [-]
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.
lilyball 23 days ago [-]
See `macos-option-as-alt`
zimpenfish 23 days ago [-]
Ah, damn it, I searched for "meta" and completely missed that. Apologies to Ghostty!
samatman 23 days ago [-]
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.
yakshaving_jgt 22 days ago [-]
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.
jhatemyjob 23 days ago [-]
Upon installing this, I went straight for this part of the documentation:
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.
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
CarlitosHighway 21 days ago [-]
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:
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%.
pjz 17 days ago [-]
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.
xtat 22 days ago [-]
My takeaway is that it's mostly useful for apple stuff-- why would "platform native" matter on Linux?
ur-whale 22 days ago [-]
You should try it.
I'm on Linux, and first impression is ghostty is really good.
Speed in particular is impressive.
makapuf 23 days ago [-]
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)
noisy_boy 22 days ago [-]
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
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.
skerit 23 days ago [-]
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).
aidenn0 23 days ago [-]
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.
tristan957 23 days ago [-]
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.
aidenn0 22 days ago [-]
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.
docandrew 23 days ago [-]
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.
AMD_DRIVERS 22 days ago [-]
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.
happens 23 days ago [-]
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).
hysan 23 days ago [-]
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.
ComputerGuru 22 days ago [-]
> 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.
hysan 19 days ago [-]
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.
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.
bogantech 22 days ago [-]
Looks really out of place for me on KDE, big fat gnome title bar and buttons etc...
dismalaf 23 days ago [-]
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...
a_e_k 23 days ago [-]
For Fedora, at least, there's been a recent proposal to upgrade KDE to the same status as Gnome.
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).
dismalaf 23 days ago [-]
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.
hysan 23 days ago [-]
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.”
dismalaf 22 days ago [-]
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.
FergusArgyll 22 days ago [-]
KDE is standard in my house
diimdeep 22 days ago [-]
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.
rererereferred 22 days ago [-]
That's neat but how do I select a panel afterwards? Arrow keys do nothing and hjkl start a search.
crabique 21 days ago [-]
On my system it's ctrl+tab to cycle through tabs, then escape to open the one that is currently highlighted.
tecleandor 22 days ago [-]
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.
nickorlow 23 days ago [-]
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.
jitl 23 days ago [-]
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.
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.
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.
abound 23 days ago [-]
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.
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!
ComputerGuru 22 days ago [-]
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.
wonger_ 23 days ago [-]
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.
micahkepe 23 days ago [-]
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!
petepete 23 days ago [-]
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.
lifeinthevoid 22 days ago [-]
This product just breathes craftsmanship and love. Respect and thank you!
cornel007 23 days ago [-]
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?
needlesslygrim 22 days ago [-]
I'm also interested in why the MIT license was chosen. I guess it's because of the plan to create 'libghostty'?
lopkeny12ko 22 days ago [-]
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?
infensus 18 days ago [-]
Are there any use cases for running `cat` on a binary without at least piping it somewhere? The output will be mostly garbage
matrixhelix 22 days ago [-]
The cool part is that you don’t have to “get” Ghostty, you can continue using whatever you prefer
jwr 22 days ago [-]
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!
anaumann 21 days ago [-]
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)
yourapostasy 22 days ago [-]
Neat, this [1] looks like the project uses vttest [2] to test DEC VT terminal compatibility?
Does Ghostty support TiteInhibit? The docs say "if xterm does something we should do it", but I don't see any mention of "tite".
RainyDayTmrw 23 days ago [-]
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.
themadsens 22 days ago [-]
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"
robinsonrc 23 days ago [-]
Lack of true colour support was the first thing that got me looking at other options
matwood 22 days ago [-]
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.
m1keil 22 days ago [-]
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.
barnabee 22 days ago [-]
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.
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.
oneeyedpigeon 22 days ago [-]
> 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.
wiseowise 22 days ago [-]
This is a very specific question.
vinhnx 22 days ago [-]
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.
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.
23 days ago [-]
jedisct1 23 days ago [-]
This is by far the best terminal emulator I've ever used.
Emigre_ 22 days ago [-]
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.
Kylejeong21 23 days ago [-]
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.
LambdaComplex 23 days ago [-]
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
paoda 22 days ago [-]
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!
kaycey2022 23 days ago [-]
I love the terminal. But I'm seeing relatively high CPU usage. Maybe there's some non default setting that can reduce that?
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
xbeta 23 days ago [-]
Great stuff! Does it have a Session/Workspace concept? Maybe we can learn from how Alacritty does it integrating with tmux?
rewgs 23 days ago [-]
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.
eviks 23 days ago [-]
Since this has some plans for being the best, will it add the great unique feature of wezterm: scripting config support?
turnsout 23 days ago [-]
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!
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
rharb 22 days ago [-]
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 :)
stmonty 23 days ago [-]
Awesome, I have been waiting for this since you originally announced it. I also enjoyed the blog posts.
ur-whale 22 days ago [-]
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 Arch auto migrate the Aur package for me, or should I uninstall and install from the repo.
999900000999 23 days ago [-]
Thanks!
This is why I love HN. I had already installed from source, but this makes updating easier after all.
23 days ago [-]
frou_dh 23 days ago [-]
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).
geodel 22 days ago [-]
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.
luckydata 23 days ago [-]
Could someone give me an idea why I would want to use this instead of any other terminal?
orliesaurus 23 days ago [-]
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.
jeremy_k 23 days ago [-]
Same request. As someone who uses the standard Teriminal application on my MBP I'm wondering what benefits I might find from Ghostty
spopejoy 23 days ago [-]
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.
luismedel 22 days ago [-]
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.
jeremy_k 23 days 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.
23 days ago [-]
gregwebs 23 days ago [-]
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.
There are MANY problems with the default configuration.
For example, the UP/DOWN key doesn't work, the TERM is xterm-ghostly...
artooro 22 days ago [-]
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
johan914 23 days ago [-]
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?
m1keil 22 days ago [-]
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.
rererereferred 22 days ago [-]
It works for me with cmd+shift+up/down. I had it set up with the iterm2 shell integration and it just worked.
Not even cmd up/down, just hit up/down key, no cmd needed
johan914 23 days ago [-]
There's a difference between moving the window and inserting text.
slater 22 days ago [-]
Oh i thought you meant "go through previously-entered commands"
CSDude 22 days ago [-]
I wanted something as fast as Alacritty that had native tabs, could divide horizontal/vertical without tmux. And this seems like it!
iambvk 23 days ago [-]
Does this support the non-standard key-press, key-release, etc. events proposal by kitty project? They are necessary for nicer terminal UI projects.
mitchellh 23 days ago [-]
Yes.
iambvk 23 days ago [-]
Cool. Thanks.
pilgrim0 22 days ago [-]
I would love to try but it doesn’t support Monterey
exabyte 23 days ago [-]
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
asdf147 23 days ago [-]
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.
PhilipRoman 22 days ago [-]
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.
tsrez 23 days ago [-]
This is such a cool project, looks amazing!
favadi 23 days ago [-]
For some reasons, the font looks thinner compare to Kitty on macOS. Not sure if it is a bug or intentional.
Startup time was very bad until I disabled adwaita with
gtk-adwaita = false
YorickPeterse 23 days ago [-]
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.
HeliumHydride 23 days ago [-]
Will the eventual windows release support GPU shaders like Windows terminal does?
aizk 22 days ago [-]
Wow, I had no idea ghostty was this much of a big deal. Really cool!
danielmartins 22 days ago [-]
Looks awesome, amazing work!
Any particular/strong reason for choosing Zig for this?
I tried and it looks really nice, best christmas gift this year
uncomplexity_ 23 days ago [-]
anyone know if this can be plugged into vscode to replace xtermjs?
pfg_ 23 days ago [-]
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)
tristan957 22 days ago [-]
VSCode would switch from xterm.js to a libghostty WASM build.
brundolf 22 days ago [-]
What's the elevator pitch vs other terminals?
slantedview 23 days ago [-]
Congrats on the release! I'm excited to try this out.
thornewolf 22 days ago [-]
i use the base mac/Windows terminals and have never had any issues. what are the main things that draw people to alternatives?
ur-whale 22 days ago [-]
> what are the main things that draw people to alternatives?
Speed.
cakealert 23 days ago [-]
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
tristan957 22 days ago [-]
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.
cakealert 22 days ago [-]
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".
tristan957 14 days ago [-]
Then don't use it.
SSLy 22 days ago [-]
Should have used a grammar checker.
block_dagger 23 days ago [-]
Nice work! How does this compare to Warp?
do_not_redeem 23 days ago [-]
- 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
alecthomas 23 days ago [-]
Preach!
icapybara 23 days ago [-]
Congratulations
VeejayRampay 23 days ago [-]
thanks Mitchell for all the hard work, it's nice to see quality and competition in this field
23 days ago [-]
mikkelam 23 days ago [-]
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!
ahmadabouadla 18 days ago [-]
Beautiful
stainablesteel 22 days ago [-]
looks really cool! i'm gonna play with it, thanks for this awesome project
sspiff 22 days ago [-]
Does this have sixel support?
matrixhelix 22 days ago [-]
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
23 days ago [-]
MyKiwi 23 days ago [-]
any tips on how to install it if you have nix (without nixos)?
text is missing left padding on macOS otherwise nice
poetril 22 days ago [-]
There is a config setting for this “window-padding-x” I believe.
sigmonsays 23 days ago [-]
any nix users aware of a derivation?
vluft 23 days ago [-]
there's a flake in the official repo that works fine for me (nixos unstable)
23 days ago [-]
22 days ago [-]
cryptozeus 23 days ago [-]
You can downvote this but Why they never put a single screen shots !
dchest 23 days ago [-]
The whole home page is a screenshot and two buttons.
mkl 22 days ago [-]
But not showing any of the native interface elements that are supposed to set this terminal emulator apart.
oneeyedpigeon 22 days ago [-]
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.
cruffle_duffle 22 days ago [-]
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”.
23 days ago [-]
sitkack 23 days ago [-]
Is there a bounty for zero days?
selectnull 23 days ago [-]
Yes, your name will forever be on that pull request.
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!
medimikka 23 days ago [-]
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.
thiht 23 days ago [-]
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
eviks 23 days ago [-]
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
root_axis 23 days ago [-]
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.
jitl 23 days ago [-]
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.
zaruvi 23 days ago [-]
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.
gigatexal 23 days ago [-]
I have a similar setup could you link your config? Id like to adapt it.
gigatexal 23 days ago [-]
Hmmm this actually has me thinking of looking at WezTerm now hah
jakkos 22 days ago [-]
> 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
Fnoord 23 days ago [-]
I solve that by using zellij locally (I use tmux remotely). Bonus points: I can close or upgrade Alacritty without losing session.
daft_pink 23 days ago [-]
Best. Christmas. Gift. Ever.
alberth 23 days ago [-]
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)
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).
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.
23 days ago [-]
saberience 23 days ago [-]
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.
marcus0x62 23 days ago [-]
> 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.
Fnoord 23 days ago [-]
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]
| 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.
SG- 23 days ago [-]
are you still running DOS too?
pzo 23 days ago [-]
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
kelvinjps10 23 days ago [-]
Cross platform doesn't mean every single platform, and it is not common of terminals supporting android
bigstrat2003 23 days ago [-]
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.
grantcarthew 23 days ago [-]
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.
punkspider 23 days ago [-]
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.
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.
someothherguyy 22 days ago [-]
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.
23 days ago [-]
elashri 23 days ago [-]
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.
I dunno if this was obvious to everyone but OP is one of the founders of Hashicorp
22 days ago [-]
unit149 23 days ago [-]
> 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.
dr_kretyn 23 days ago [-]
[flagged]
dang 23 days ago [-]
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.
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.)
unsungNovelty 23 days ago [-]
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.
Udo 23 days ago [-]
> 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.
geodel 23 days ago [-]
> I hate things in "if you know then you know" category. This is one of them.
A little too constructive I guess.
Udo 23 days ago [-]
You're right, maybe I read the post a bit too charitably.
dbmnt 23 days ago [-]
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.
dr_kretyn 23 days ago [-]
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.
23 days ago [-]
btheunissen 23 days ago [-]
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.
23 days ago [-]
torstenvl 23 days ago [-]
It's constructive criticism. You don't have to respond with "Well get fucked then"
hombre_fatal 23 days ago [-]
It's okay to filter people out who are too uninterested to click a "Documentation" link yet vocal enough to come post about it.
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"
dmkolobov 23 days ago [-]
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.
torstenvl 23 days ago [-]
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.
dmkolobov 23 days ago [-]
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.
23 days ago [-]
btheunissen 23 days ago [-]
The original commenter posted a shallow dismissal by putting the effort into posting a comment without clicking a single button on the page :)
torstenvl 23 days ago [-]
No. He didn't post any kind of dismissal at all.
twoparachute45 23 days ago [-]
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).
reanimus 23 days ago [-]
> 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.
chooma 23 days ago [-]
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.
__rito__ 23 days ago [-]
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.
metaltyphoon 23 days ago [-]
I swear this makes 1000% sense but it never occurred to me before.
boomboomsubban 22 days ago [-]
I thought it was some modern cowsay with a ghost in the tty.
lawgimenez 23 days ago [-]
The description is in the documentation. What’s the trouble by clicking on it? It won’t take a second.
dr_kretyn 23 days ago [-]
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.
tptacek 23 days ago [-]
People who are interested in this are talking about it because they're interested in it. Nobody is trying to convert you.
abenga 23 days ago [-]
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".
halostatue 23 days ago [-]
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."
twoparachute45 23 days ago [-]
> 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?
lawgimenez 23 days ago [-]
Whatever dude, you hating because of a missing label on the intro page.
23 days ago [-]
zug_zug 23 days ago [-]
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).
crystaln 23 days ago [-]
Yeah I was wondering why there’s an ascii animation at #1 on HN. Flash back to 2008.
uncomplexity_ 23 days ago [-]
just different tastes i guess
midjourney still has the same thing on their homepage and i dig it
23 days ago [-]
baq 23 days ago [-]
[flagged]
loeg 23 days ago [-]
No, cross-platform just means more than one platform. It obviously is that: Mac and Linux.
BrouteMinou 23 days ago [-]
Obviously!
...
robotresearcher 23 days ago [-]
Or young. Some HN readers remember cross-platform software before Windows.
Our pony tails are long, grey, and maybe metaphorical.
qup 23 days ago [-]
How many platforms are required? I noticed it doesn't have an OS/2 download.
azinman2 23 days ago [-]
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.
timeon 22 days ago [-]
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.
oneeyedpigeon 22 days ago [-]
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".
Edit: Joined the discord, turns out this feature is MacOS only :/
gpanders 23 days ago [-]
It's a macOS-only feature, for now.
IceDane 22 days ago [-]
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.
tristan957 23 days ago [-]
GTK does not support the Wayland protocol to implement a Quake style terminal.
brcmthrowaway 23 days ago [-]
Could GPT5 or Claude written this from scratch?
loeg 23 days ago [-]
In the same sense that a million monkeys on typewriters could theoretically produce Shakespeare.
throwaway0665 23 days ago [-]
of course not
bun_terminator 23 days ago [-]
The little it says about what this even is seems to be wrong. This is not cross-platform at all
SG- 23 days ago [-]
Windows is a third class citizen when it comes to the development world.
justmarc 22 days ago [-]
It's its own doing
metaltyphoon 23 days ago [-]
Lmao this statement is so funny.
mitchellh 23 days ago [-]
It works on both macOS and Linux.
wetpaws 23 days ago [-]
[dead]
tntxtnt 22 days ago [-]
> 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.
isametry 22 days ago [-]
The minimum number of platforms for “cross-platform” software is by definition two (2).
jFriedensreich 22 days ago [-]
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.
__float 22 days ago [-]
> 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.
CarlitosHighway 21 days ago [-]
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.
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
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`...
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 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.
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...
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.
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.
I just find myself on the other side of the line for Alacritty.
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.
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.
Out of curiosity, what GPU accelerated terminal does this.
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.
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.
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”.
As I said in another thread, this ain't a AAA game. Shading a text grid is basically free on the GPU lol.
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.
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.
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.)
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?
[1] https://www.youtube.com/watch?v=cPaGkEesw20&t=3015s
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!
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
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.
- 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 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.
https://mitchellh.com/writing/ghostty-is-coming
https://ghostty.org/docs/about
Clear, friendly, modest, respectful and with the right balance of detail vs overview.
Congratulations on your launch.
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?
*edit - oh, no Windows support for now (my hands are tied at work).
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.
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.
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!
[1]: https://changelog.com/podcast/622
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?
“… exploring not-for-profit structures to help ensure the long-term sustainability of Ghostty.”
https://mitchellh.com/writing/ghostty-is-coming
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!).
I'm extremely excited to give Ghostty a whirl.
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
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.
> macOS
> Quick Terminal: Lightweight terminal that animates down below the menu bar for instant access without interrupting work.
I was looking on the website to try and understand this more but couldn’t find any information. Perhaps I missed it?
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.
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!
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?
On the cross-platform library, I wonder why "libGhostty" and not libTerminal. Which seems like a more appropriate in term of library?
[1] https://www.leonerd.org.uk/code/libvterm/
[2] https://neovim.io/doc/user/terminal.html
Congrats for the release and happy new year.
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.
See https://wezfurlong.org/wezterm/config/lua/keyassignment/Spaw... for a starting point in the config.
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).
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.
AppKit/SwiftUI on macOS and GTK/Qt on Linux.
WezTerm has tabs but they're not native UI elements.
Konsole also has easy resizing of text and supports images in the console, you might like it.
Then as a ritual (and a bit of OCD), I quickly cycle through all the tabs with Shift-Right Arrow once.
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.
Looking forward to checking out Ghostty.
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 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.
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'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
https://github.com/m-ahdal/ghostty-shaders/blob/main/crt.gls...
For anyone else curious about how to configure these, check out the docs: https://ghostty.org/docs/config/reference#custom-shader
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.
https://news.ycombinator.com/newsguidelines.html
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.
---
> 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.
It's also some very well-written Zig code. We use some of the code for graphemes in Bun for `Bun.stringWidth`.
Nicely done.
During the beta I had it configured like this on macOS:
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.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.
That seems to work for me (macOS 15.2 here)
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...
At the same time, Yakuake seems to be in maintenance mode, and you should be happy when it works with new KDE versions.
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.
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.
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.
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.
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.
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.
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.
It may not work for you, of course.
Also, why cmd+space? That's the MacOS spotlight search binding.
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.
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
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.
Ghostty is nice. Haven’t had much time with WezTerm.
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'm not going to learn more configuration languages or type 30 characters (or paste them from the browser) to toggle a binary setting.
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.
As a DSL, it's key-value pairs. It doesn't get much simpler than that.
Also, having an explorable and searchable UI doesn't mean it's not saved in the same shareable and readable file.
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.
Uninstalled it right away, I'll keep using the default MacOS Terminal app.
edit: alas, it doesn't support bitmap fonts..
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.
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
It doesn't, especially on average DPI monitors. Oh, you mean the OTF trick.
Very disappointing. Not sure why people are trying to kill off bitmap support in everything these days. Will stick with foot.
A commenter in this thread mentioned sifting through log / debug output… but why wouldn‘t you pipe it to a file instead?
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.
Together with Bun I believe that is two high profile open source software made with Zig.
[1] https://news.ycombinator.com/item?id=1175901
https://gpanders.com/blog/ghostty-is-native-so-what/
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"
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.
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 I get output in the initial normal shell.And if I run tmux, then inside of it from
I get output 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.https://mitchellh.com/ghostty
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.
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.
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.
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/
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).
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 :(
> On macOS, the GUI is written in Swift and uses AppKit and SwiftUI.
(https://ghostty.org/docs/about#native)
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.
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.
That feels like an exaggregation. L High quality open source software is uploaded daily to GitHub.
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).
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...
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)
See this other user's comment: https://news.ycombinator.com/item?id=42518033
These days, I actually just use the terminal that's built-in to VSCode for everything...
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.
This really does aim to be the terminal for all.
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.
https://mentors.debian.net/intro-maintainers/ https://bugs.debian.org/995670
$ cd ghostty
$ zig build -Doptimize=ReleaseFast
$ ./zig-out/bin/ghostty
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
I'm quite surprised they don't provide a .deb package as that checks off 90% of Linux users.
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.
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.
Why would you not ssh?
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.
https://github.com/clayrisser/debian-ghostty
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.
Wezterm moves instantly.
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.
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.
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
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.
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
- “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.
https://imgur.com/a/terminal-app-left-vs-truecolor-tddRL0C
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.
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.
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.
- some visual artifacts with the gtk menu
- sometimes prompt got clear when openning 2nd / 3rd windows
- cant get keybinding quick toggle to work
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.
olps, it's macOS only feature.
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...
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)
I installed on linux inside WSL, then launched it, and it looks/works great. Clipboard also works.
https://github.com/microsoft/wslg/issues/1008 https://github.com/microsoft/wslg/issues/633
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!
[0] e.g. `keybind = alt+f=esc:f`
[1] Which affects both option keys, sadly.
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.
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.
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
$ 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.
Maybe contribute to https://github.com/jesseduffield/lazydocker/issues/610 ?
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%.
I'm on Linux, and first impression is ghostty is really good. Speed in particular is impressive.
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.
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.
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.
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.
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.
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.
KDE is standard on what, Steam deck? Every enterprise-y distro ditched it some time ago...
https://www.phoronix.com/news/Fedora-KDE-Desktop-Promoted
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.”
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.
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.
I mostly appreciate Alacritty's simplicity and use tmux to manage multiple windows/panes.
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...
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 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'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.
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?
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)
[1] https://github.com/ghostty-org/ghostty/blob/main/TODO.md
[2] https://invisible-island.net/vttest/
- "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"
[0] https://wezfurlong.org/wezterm/quickselect.html
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.
That's the point. Different browsers or word processors behave completely differently. They were asking what differences there are between this and other TEs.
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
Anyways this is a great piece of software. I've never been this hyped for a software ever before. Great work team.
i'd rather use a nice-looking and well designed (UX) terminal than have to use a clunky ai native one.
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
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!
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.
I did not realize it would be THAT much faster. I guess I should have started using better terminals earlier
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 :)
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.
There is a ghostty-git AUR repo for tracking the main branch: https://aur.archlinux.org/packages/ghostty-git
This is why I love HN. I had already installed from source, but this makes updating easier after all.
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.
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.
Switched from WezTerm which was working cross platform but not quite as good.
Both are low latency and written in Rust.
I'm sorry what?
Any particular/strong reason for choosing Zig for this?
https://mitchellh.com/writing/ghostty-and-useful-zig-pattern...
Speed.
> 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
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".
- 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
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!
https://github.com/nix-community/nixGL
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”.
https://github.com/ghostty-org/ghostty/security/advisories/G...
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.
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
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.
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.
Insanely good ;)
Being able to quickly script minor functionality into my terminal emulator is my favorite thing about WezTerm
- 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
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.
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.
[1] https://danluu.com/term-latency/
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.
- 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
I like the product as well, however, I need to use it for a week to comment.
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.
- 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.
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/
If there are any other features you look for in a terminal not on the comparison table please let us know!
https://terminaltrove.com/categories/ (1)
Or any other category on the page? (2)
We can change (1) alphabetically if that is what you mean.
I found it confusing to look for a category among the unsorted boxes. It would help if they were sorted.
https://terminaltrove.com/categories/
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.
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.
(The first sentence in the docs page does explain what it is but if that's too much for you, it's all good.)
> 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.
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.
A little too constructive I guess.
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.
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.
It works for https://www.midjourney.com/home and apparently this project too with its 1100+ upvotes.
It's especially not okay to be so rude on HN. "Please don't post shallow dismissals"
Not clicking on a documentation link on a technical project is the definition of a shallow dismissal in my opinion.
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.
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).
> 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'll give it a spin later, looks interesting.
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."
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?
midjourney still has the same thing on their homepage and i dig it
Our pony tails are long, grey, and maybe metaphorical.
[0] But that one is still Linux.
Having my terminal session available on a hotkey has become a critical part of my workflow
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 :/
Doesn't have a binary for Windows so it's not "cross-platform" yet.
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.