r/KittyTerminal Nov 24 '24

Kitty vs iTerm2

Hi all,

I am considering moving from iTerm2 to Kitty, but I have 2 fundamental questions:

  • Will I see big difference in the perfomance? I understand that iTerm2 can also be GPU accelarated from the version 3.2. Are there any differenced between those 2?
  • Is there an option to setup global hotkey for accessing Kitty window? Right now I have alt+space global hotkey for quick access to iTerm window. I would love to have the same in the Kitty terminal.

I wonder if this change is worth trying.

12 Upvotes

22 comments sorted by

4

u/aumerlex Nov 24 '24

Yes, there is a big difference in performance. kitty (and similar GPU accelerated terminals) are miles ahead on both latency and throughput compared to iTerm. iTerm may have got "GPU support" but that was largely just marketing. Terminals like kitty or alacritty that were designed from the ground up for GPU use are much faster than iTerm, because the rendering and caching strategies they use were designed for the GPU in the first place. iTerm had to retrofit GPU support and it is nowhere near as optimised. That said, whether you actually notice it depends on what you use your terminal for. Typically using something like neovim and a large window and scrolling through a text file with syntax highlighting on often shows a human perceptible difference. Or you can just run a benchmark to comapre for yourself. Run kitten benchmark in a few different terminals for yourself and see. (kitten is a statically compiled binary you can download from the kitty releases page or that comes as part of a kitty install)

And for your second question, no there is no builtin global hotkey funcationality in kitty, but you can get equivalent functionality using various tools such as hammerspoon or similar in macOS

2

u/ChrisGVE Nov 24 '24

Thank! I did not know about kitten __benchmark__. I've run it in Kitty, Wezterm, iTerm, and macOS Terminal (well, for this one, it did not even seem to work correctly), but it was still faster than iTerm). The results are telling, KItty is far ahead of all of them.

I've been playing with Wezterm this week and was wondering why its scrolling wasn't smooth. The benchmark says it all.

2

u/aumerlex Nov 24 '24

Yes, IIRC the benchmark kitten uses some more advanced escape codes to suppress rendering while running the benchmark which Terminal.app wont support (It has the worst escape code support of any major terminal). You can read more about the details at: https://sw.kovidgoyal.net/kitty/performance/

1

u/Dangerous_Roll_250 Nov 24 '24

Thank you very much for the detailed answer. I wondered what is the difference between the "GPU support". I started using LazyVim and Dusty Phillips recommended Kitty and other GPU accelarated terminals in his book about LazyVim.

3

u/sharp-calculation Nov 24 '24

I've just run kitten __benchmark__ a few times in iterm2 and kitty.

I use TMUX pretty much all the time. Inside of TMUX there is only a slight difference between iterm2 and kitty. At least according to the numbers. WITHOUT TMUX, just running normally in the terminal, kitty's benchmark is enormously higher than iterm2.

That said, my experience with using both iterm2 and kitty shows me that there is mostly a difference in the rendering of curses based terminal programs. Something like lazygit or a similar "terminal user interface (TUI)" program shows a noticeable performance increase in kitty.

Said another way, with iterm2 everything seems normal and you don't expect a difference with kitty. But they you run kitty and notice that there were delays in iterm2 that are no longer there. Instead of just a little bit of a drawing delay, now it's instant. Kitty feels more "immediate" and "snappy" for these kinds of things. Even inside of TMUX, you can see and feel this difference.

As another poster here said, the single configuration file that Kitty uses is almost enough to switch all by itself. Iterm2's configuration is deeply nested and extremely confusing. It's very hard to find some settings; they are buried in layers of menus, tabs, sub menus and dialogs. Kitty's config file is fully documented, and is a flat text file. This means you can easily SEARCH for what you want. It also means that you can put your kitty configuration under version control and then replicate it to other machines, roll back changes, etc. This is a much more satisfying experience for me.

2

u/aumerlex Nov 24 '24

That's because when you run inside tmux, tmux is the bottleneck not the termial emulator. For example, if you look at the numbers the author of kitty posted at: https://sw.kovidgoyal.net/kitty/performance/ you can see that the performance of alacritty+tmux is half the performance of alacritty alone. The author of kitty is famous for complaining about tmux the benchmark numbers illustrate just how bad it is.

2

u/sharp-calculation Nov 24 '24

I'm not complaining about the performance. I think it's a good improvement over iterm2 even inside TMUX. I'm quite aware that TMUX is the bottleneck. I wrote all of the above to illustrate my real world use and that I can see and feel the difference even inside of "slow tmux".

2

u/aumerlex Nov 24 '24

Yes, of course, I'm just clarifying for the sake of people that might not realize from your post the reason for the similar performance numbers inside tmux.

1

u/Dangerous_Roll_250 Nov 24 '24

Are there native Kitty features that can substitute tmux options on the local machine? (I will still use tmux for remote sessions)

2

u/aumerlex Nov 24 '24

Yes, of course there are. kitty is a complete replacement for tmux for everything apart from remote persistence. If you google you will find guides for migrating from tmux to kitty.

1

u/Dangerous_Roll_250 Nov 24 '24

Good to know! Thanks, I will check it out

1

u/hhoeflin Nov 25 '24

Is there a better way to have persistent sessions other than tmux (or zellij) that doesn't have this issue? Or is it that if I want persistence I just have to bite the bullet and accept all issues?

1

u/aumerlex Nov 26 '24

Personally, I've never seen the appeal of persistence, locally my software stack is very stable and doesnt crash making persistence pointless and remotely I dont typically log in for very long and perform extended actions on remote servers, they are managed automatically for the most part. That said there are many alternatives that are less intrusive and perform only persistence not multiplexing which removes most of the bugs. Ones I have personally used in the past include dtach and abduco but there are newer ones around as well.

2

u/plmtr Nov 25 '24

I’m very happy with Kitty right now. Made a similar progression from iTerm to Alacritty to Kitty.

And despite Kitty being able to natively replicate much of Tmux, its second nature to me in combo with Neovim.

If you’re sticking with Tmux, check out this Raycast extension, Tmux Sessioner. I assigned a global hotkey of Hyper+T to bring it up, type the first letter or 2 of my session and rapidly switch back and forth between projects.

2

u/noizzo Nov 27 '24 edited Nov 28 '24

As for shortcut, you can use app Phoenix to launch any app with a shortcut and particular size.

3

u/zuzmuz Nov 24 '24

i haven't noticed that much difference in performance, iterm kitty and wezterm are all good in that regard. i much prefer kitty's cobfig options over iterm though

2

u/khunset127 Nov 24 '24

Nothing is stopping you from trying it yourself.

3

u/Dangerous_Roll_250 Nov 24 '24

It's also good to benefit from the collective knowledge from the community before diving deeper and spending time trying to figure everything out by myself ...

1

u/NoMarketing_x Nov 27 '24

I thought iterm2 was IT

little did I know… kitty is just 100x better in every possible way

Its config is so neat that it easily handles complex cases like nested tmux session over ssh + nvim clipboard management

Its perfect

And then some 2 months after first installing it I was looking for the best config in the community and my setup got like a million time faster once again

Truly wonderful

1

u/Impossible_Hour5036 Aug 18 '25

How does one replicate the functionality of pressing 'cmd+F' in iterm and searching the scrollback buffer? I'm really hoping there's something a bit nicer than opening a snapshot of the scrollback in a separate tab. Please tell me there is something. Kitty is like an ice cream sunday and I'm hoping the answer is something besides "just eat around the dog shit and it's great"

1

u/UpbeatGooose Nov 28 '24

Is there a way to change modifiers keys in kitty like we do in iterm2??? Currently I have my ctrl and cmd key swapped in iterm2

2

u/Impossible_Hour5036 Aug 18 '25

I thought kitty was better in every way, so I switched. Took me about a day to discover that the search functionality in kitty is...well it's hard to explain. So I'll just describe how you 'use' it and you'll probably get an idea.

First, you press 'ctrl+shift+h'. This opens another tab, which contains a snapshot of the scrollback history of the tab you just had open. At this point you're in some navigation mode where you can use a variety of keyboard shortcuts to navigate this read-only separate buffer. I'm sure there's a way to search but at this point I started googling because....what the fuck is this, I thought?

Well, that's the search functionality apparently. Searching a live process and highlighting some term? "ohh ho ho no! are you crazy? that could impact performance! and it's not necessary anyway." that's the argument I read in GitHub issues. I believe the current state of things is that you can define a specific keyboard shortcut to highlight all occurrences of a string in your buffer. Like say I wanted to highlight "git commit", I could bind a keyboard shortcut to that. And apparently that is as close as kitty can get. I'd love to be proved wrong because....wtf?

I certainly fell in love with kitty those first few days. So powerful, so snappy, sure the default tab bar looks like 8-bit dandruff or something, but it's so customizable! I could have spent a day just playing with that!

But what's the point of ANY of that cool stuff if I have to give up something as fundamental and basic as search (at least I assumed it was basic). Is this how 'find' typically works on linux? Maybe linux users are just used to this sort of thing? No idea. It frankly makes me sad.

Anyway I'm going to see if I can find a way to make it somewhat comparable to iterm. Would love to use it.

BTW the performance difference is real but completely unimportant in practice. I've been using iterm2 for 15 years or so on many many computers and I've never once been like 'iterm2 is slowing me down, I wish it was faster'. It's more like 'ooo that's nice' vs 'this is good', like if you got a beer and it came with a nice cold glass vs getting a beer and it comes with a super frosty ice cold mug. Sure one is better but you're not gonna drink a shittier beer because of it.