Back to News
Advertisement
Advertisement

⚡ Community Insights

Discussion Sentiment

68% Positive

Analyzed from 1849 words in the discussion.

Trending Topics

#terminal#shitty#https#ghostty#com#name#project#best#github#using

Discussion (65 Comments)Read Original on HackerNews

3eb7988a1663about 1 hour ago
Gutenberg's copy of Moby Dick is 1.2MB[0]. Which is to say the slowest benchmarked terminal could display a paltry ~53 Moby Dicks per second, while shitty gives you ~98 Moby Dicks.

I am not sure how many Moby Dicks I require per second, but it is good to have options.

[0] https://www.gutenberg.org/ebooks/2701

genxy2 minutes ago
Sometimes you want to dump a LOT of debug to the console but not have the console slow down that program. Or you accidentally cat a TB file?
actionfromafar24 minutes ago
Besides, most screen only show 60 images per second. That's not many Moby Dicks per second.
p1necone32 minutes ago
This is cool, but I gotta say - I care much more about keypress-to-screen latency on my terminals than throughput - would love to see some numbers on that.
pg836 minutes ago
It's VERY difficult to measure. But I can say that shitty has the best damage tracking model among foot/kitty/alacritty/ghostty. It's best in the sense that it's cell-exact; I only draw to the screen what has actually changed.

Furthermore, on Linux, I reuse buffers from the swapchain after the wayland compositor returns them, and I only update the areas that changed after I sent the buffer to the window system. In other words, I'm provably doing the minimum amount of work possible. Unfortunately, this isn't possible on MacOS, since the Metal documentation states that it can (and does) corrupt a buffer while displaying it.

Basically, based on code, not actual measurements, shitty is the best terminal in terms of change delivery latency.

yjftsjthsd-habout 2 hours ago
> The executable is named st; the desktop application and icon are named shitty

That conflicts with the already existing suckless st.

Also I am suitably impressed with the perf numbers, but I also somewhat take away that I could stick with (at least) alacritty or ghostty and not be much slower.

pg83about 1 hour ago
I know, but there aren't that many two-letter abbreviations!
functionmouseabout 1 hour ago
on one hand I wanna say you shouldn't make conflicting names

on the other hand what gives them the right to st but not you?

voakbasdaabout 1 hour ago
Let the best tool win.
cyanregimentabout 1 hour ago
Geeking out on terminals is like geeking out on shoelaces.

I'm glad you guys are out there - someone has to do it.

butterisgoodabout 1 hour ago
Optimize the aglets!
cyanregiment32 minutes ago
I only use the finest of gold.

They also count my steps.

(also I had to look up aglet)

egeuvuvy67 minutes ago
I once took around two weeks worth of evenings to get my zsh startup from 300ms down to 50ms because it felt laggy.

Fuck nvm btw.

joncpabout 1 hour ago
Nice work!

I do wonder, however, whether people really have issues with perf on any terminal emulator in 2026

I’ve been living in Terminal.app / zsh / tmux / vim for 15 years and have never once thought “this is slower than I want.”

marvinborner31 minutes ago
To me, the most relevant aspect is the time it takes to open. I can't believe how slow the startup time in common linux distributions is by default, it's so annoying, by the time it opens I already forgot what I wanted to do. Alacritty has this cool feature where you only ever have to "open" a single terminal, whereas new windows can be created very efficiently with `alacritty msg create-window`, being forks of the initial window. It makes using my pc a lot more comfortable.
Evidlo12 minutes ago
Also present in urxvt and kitty.
boltzmann6424 minutes ago
this is is not new. we have had factory model (forking the initial window) in terminal emulator since 1990s.
thayne12 minutes ago
IME, usually you care more about latency than throughput for normal interactions, and there is a noticeable difference between the slowest ones, and the fastest ones, but I've tried a lot of terminal emulators, and any of the ones that put some effort into performance are plenty fast enough.

However, there is one case when throughput matters: when an application has a lot of output. But then the problem isn't the speed that it displays the text, it's going by too fast to read anyway, the problem is that the application can be slowed down by blocking on writing to stdout when the buffer is full. And honestly, the best approach in that case is probably not to actually render all the text, but send most of the output straight to the scrollback buffer, and only render some of the frames.

pg83about 1 hour ago
Speed itself may not be very important, but it is a very interesting challenge in itself - to prove to yourself that you can surpass the state of the art!
krackers25 minutes ago
Terminal.app is amongst the best, if these old danluu benchmarks still hold https://danluu.com/term-latency/
mellosouls13 minutes ago
Going by the childish naming of the project, it doesn't inspire confidence in the professionalism of the author going forward, and neither will it help with getting it installed on corporate networks.

I'm all for vulgar wit but this isn't that (yes I'm aware of the -tty convention) & just reinforces the cliche of tech skills inversely proportional to social ones

sublinear5 minutes ago
Why did you make this comment? It's completely off topic.

Your appeals to authority do not apply when the author is clearly telling you not to use it for that. We're well past the point where this kind of software eventually ends up under corporate use policy or any policy at all.

mellosouls1 minute ago
The name screams for attention, so of course it's on topic. I made no appeal to authority, just maturity.
mellosouls3 minutes ago
Yes, see also gimp, thefuck and other equally depressing juvenile names. I'm aware of precedence.

It's partly frustrating because the laziness of the naming presumably doesn't actually reflect the effort that has gone into the project.

egeuvuvy68 minutes ago
What's the boot time for shitty?

I can't use half of the terminal emulators because theyre so slow that after hitting my key bind to open them and I start typing half of the first word is missing.

pg835 minutes ago
I don't know, I haven't measured it. For me, it's "instantaneous" enough that I don't have to think about it.
protocolture4 minutes ago
Project seems too good to be squatting on that name. I imagined some joke terminal when I first saw it.
butterisgoodabout 1 hour ago
Best named project I've seen this year!
pg83about 1 hour ago
I hoped that at least someone would like it :))
Barbingabout 2 hours ago
Unironically better name than “CRM“ for a CRM https://news.ycombinator.com/item?id=49142360

With this you can DuckDuckKagi for the crappy terminal (versus “CRM crm”… ah guess they wanted you to remember their company name)

al_borlandabout 2 hours ago
Except others are already using it, with proper capitalization.

https://github.com/fearlessgeekmedia/shiTTY

This one just tried to reserve the name with an empty repo a year ago... probably where the LLM got the name.

https://github.com/immz4/shitty

chamomealabout 1 hour ago
I will def try this out and I absolutely love the name. Just an A++ name
Advertisement
tulio_ribeiroabout 1 hour ago
This is obligatory read: https://blog.royalsloth.eu/posts/it-takes-a-phd-to-develop-t...

Later, Microsoft fixes the issue but fails to give Muratori credit. After backlash, they went back and gave him a footnote: https://devblogs.microsoft.com/commandline/windows-terminal-... (atlas release section)

GitHub thread in question: https://github.com/microsoft/terminal/issues/10362#issuecomm...

And this gem: https://github.com/microsoft/terminal/issues/10362#issuecomm...

sgarland17 minutes ago
I will forever love reading or watching Casey dunking on people from so far above that they’re unaware of the delta.
grg024 minutes ago
Why are you using pthread instead of std::thread?
pg8315 minutes ago
I guess I just didn't notice. In any case, it wouldn't have been std::thread, but https://github.com/pg83/std/blob/master/std/thr/thread.h from my bike lib!
grg07 minutes ago
What do you mean you didn't notice? I saw another comment about Claude below, are you not even reviewing the output?

I just browsed the project for two minutes and it's one of the first things I noticed. std::thread is more portable (Windows, if anyone cares) and allows you to pass in a lambda, which keeps the code local and also has the compiler generate the closure for you instead of having to pass function pointers and void* captures around. I don't see any advantage to using pthread directly.

quotemstr7 minutes ago
One advantage to using pthread is the ability to call pthread_setname_np to name threads and thereby make debugging easier. Granted, you can call it with std::thread by using std::thread::native_handle() to get the pthread handle, but you're still using a non-std::thread API.
grg05 minutes ago
I see, I wasn't aware of that one. Typically I'd assign an ID, but yeah, names make things easier.
beareadabout 1 hour ago
I prefer Ghostty as there is no this "Claude" thing in its contributors. But I guess it's always good to have competitions.
throwatdem12311about 1 hour ago
Mitchell is a big proponent of using AI to code. He’s just not a dummy and knows his sh*t and he reviews the code diligently. Hell, he just promoted that he started a company for making tooling for AI agents. There is lots of LLM code in Ghostty it’s just not attributed.
pg83about 1 hour ago
I'm a huge proponent of AI, as long as there's a human in the loop and strong models are used. In fact, it's even reflected in our CONTRIBUTING.md that we prefer LLM-assisted code!

https://github.com/pg83/shitty/blob/master/CONTRIBUTING.md

fishgoesblub16 minutes ago
> Shitty is moving from the imported GPL baseline to an MIT-only codebase. It does not intend to retain the GPL as the final project license.

An interesting, and disappointing choice. Shitty, one may say.

quotemstr15 minutes ago
Excellent use of Ragel to generate fast state machines. Everyone should check it out: https://www.colm.net/open-source/ragel/

The author of shitty encoded the whole terminal state machine in Ragel: https://github.com/pg83/shitty/blob/master/parser.rl

The thing generates one of big DFA with actions for everything that can ever happen in the terminal. Precisely correct way to do it. Plus, Ragel is a joy to program once you get the hang of it. You can compose edge-triggered, level-triggered, and recursive operators in surprisingly elegant ways.

theturtletalksabout 1 hour ago
Any plans for a "libghostty" alternative for your terminal?
pg83about 1 hour ago
No, there are no such plans right now, but overall, the project's architecture allows for easy separation of different layers for developing a terminal emulator - the parser, in the form of a ragel state machine, and the vterm state machine, with distinct boundaries between them. The rendering layer is separated slightly less clearly, but it's also solvable.
ddlsmurfabout 1 hour ago
why no iTerm2 in the benchmarks ? It far outperforms the likes of kitty and ghostty
jitl40 minutes ago
> far outperforms the likes of kitty and ghostty

this is not true on my machine, at least for my usual benchmark Doom-fire-zig[1]. on said benchmark, ghostty 1.3.1 runs at about 350fps, wezterm 20260713-212414-b3255666 runs at 415fps, Terminal.app runs at 100fps, iterm2 3.6.11 runs at 80fps.

[1]: https://github.com/const-void/DOOM-fire-zig

pg83about 1 hour ago
I'm not imposing my opinion, but in my experience, iterm2 is the slowest terminal emulator I know of, so I didn't even bother trying. But overall, I'll add iterm2 to the list, too.
collinvandyck7636 minutes ago
has iTerm2 improved significantly in the last couple of years? I remember feeling the speedup when I went from iTerm2 to kitty, so that's surprising to me.
jmyeet32 minutes ago
Two mild criticisms:

1. Don't call your project "shitty". At best it's juvenile humor. At worst, it's going to make adoption within companies difficult for literally no reason; and

2. You don't need a two letter command. I'm sorry but you're not that special. Your tool should instead denote its purpose with its name. In this case something like "sterm" or "stty" would do that perfectly without being verbose.

kelnos26 minutes ago
> At best it's juvenile humor.

I thought it was quite clever, and was surprised I hadn't thought of it (given the prevalence of "tty" puns like kitty and ghostty).

But I'm a 14 year old boy living in a 45 year old body, so I can't get enough juvenile humor. A friend of mine with similar taste in humor once said, "if I ever stop finding this stuff funny, put me in the ground", and I still wholeheartedly agree with the sentiment.

(For example: whenever I need a quick scratch file to put some text in, I call it "shits", because then I can type "cat shits" and giggle inside my head. I'm also have cats, so I deal with cat shits daily.)

> You don't need a two letter command. I'm sorry but you're not that special.

This I agree with, though perhaps in a politer way.

Regardless, though... live and let live? The existence of this doesn't harm you an any way, and your judgey moralizing is a bit much.

Rohansi20 minutes ago
> At worst, it's going to make adoption within companies difficult for literally no reason

I wouldn't want to work somewhere like that. Trying to pretend that people don't swear is just dumb. It's not even offensive.

compiler-devel21 minutes ago
shitty is a perfectly cromulent name.
normie3000about 2 hours ago
Why wouldn't you use this?
Retr0idabout 1 hour ago
Personally, I have never felt constrained by the performance of my terminal, so I pick based on other features.

(I have, also, thought about building my own perf-optimized terminal. It's a fun problem space!)

kelnos22 minutes ago
Because I don't need to. I've never even once thought "my terminal feels slow and I want to find a different one". My terminal (xfce4-terminal) also uses a GUI toolkit that makes it visually fit in my desktop, and I like that.

Regardless, sometimes you just gotta write some code because there's an itch that needs to be scratched. Sounds like this author really wanted to see if he could write a super fast terminal, and make one faster than the incumbents. It's a cool achievement!

tulio_ribeiro36 minutes ago
The lifetime rendering-time savings wouldn’t even offset the five minutes required to install it and make it my default terminal.

I would need to display roughly 70 GB of benchmark-equivalent ASCII output before Shitty recovers a five-minute switching cost relative to GNOME Terminal.

This assumes I’m actively blocked by every byte being rendered.

scuppernong22 minutes ago
Any project I see on HN now, I have no idea if the developer will still be interested in it in a month. I'll stick with ghostty because of its reputation.
pg83about 1 hour ago
For example, flicker free resizes for MacOS, something that neither Kitty, nor Alacritti, nor Ghostty can boast of.
y1n0about 1 hour ago
I'm not knocking your project, but ghostty doesn't flicker for me on resize. Is this a common problem people have?

My main complaint with ghostty is the crappy configuration.

pg83about 1 hour ago
It's not that it's a serious problem, it's just that for me, as a perfectionist, flicker is very noticeable when resizing.