Moving from iTerm2 to Kitty for simplicity and performance

I love iTerm2, but it can be sluggish sometimes on my old late 2016 MacBook Pro. Plus, many of its features I never use. I had tried Alacritty before, but making it look and act like iTerm2 was a no-go. This time, I tried Kitty, and within two hours of work, it looked and behaved just like my iTerm2 configuration. This exploration was fueled by a performance comparison I came across that piqued my interest.

To really put Kitty to the test, I used my older MacBook Pro, deliberately looking for CPU usage spikes via fan noise and Activity Monitor. My "benchmark" was simple: opening an 800-line Rails schema and scrolling through it using Vim's Shift + ]. Unlike iTerm2, which often caused my fans to ramp up, Kitty handled the same tasks with significantly less strain on the CPU.

I quickly realized that syntax highlighting was a major bottleneck. To address this, I switched to vim-polyglot for faster Ruby syntax highlighting. The improvement was modest but noticeable. In a deliberately unrealistic test where I scrolled through the file quickly, latency felt lower and I did not notice dropped frames. These are anecdotal observations from my machine, not controlled benchmarks.

Configuration tweaks

To further optimize Kitty, I made several configuration tweaks: - Integrated it into my dot-files as a git submodule . - Set the text_composition_strategy to legacy to emulate the thin strokes from iTerm2. You can find the setting here . - Used the Monokai Pro theme from kitty-themes for a familiar and visually appealing look. - Benefited from Kitty leveraging vector CPU instructions, which can enhance its overall performance .

My Kitty configuration explained

Here are some specific Kitty configurations I used and what they do:

vim:fileencoding=utf-8:foldmethod=marker
# Ensures that the configuration file is encoded in UTF-8 and uses marker-based folding.

include ./theme.conf
# Includes an external theme configuration file for consistent theming.
font_family Berkeley Mono Variable
# Sets the font to Berkeley Mono Variable.
font_size 16.0
# Sets the font size to 16.0 points.
text_composition_strategy legacy
# Uses the legacy strategy for text composition, emulating thin strokes similar to iTerm2.

enable_audio_bell no
# Disables the audio bell to prevent sound alerts.
visual_bell_duration 0.0
# Sets the visual bell duration to zero, effectively disabling it.
Side-by-side comparison of iTerm2 and Kitty
iTerm2 versus Kitty terminal rendering comparison

Figure: iTerm2 versus Kitty with my configurations.

If Kitty performs well under these stressful and unrealistic contexts, it will certainly be even faster on my M1 Pro MacBook Pro. Plus, the switch was a fun and rewarding project. Kitty not only matches the appearance and functionality of iTerm2 but also offers a performance boost that makes my old MacBook Pro feel more responsive and efficient.

Overall, I highly recommend giving Kitty a try if you're looking for a terminal emulator that combines simplicity and performance.

Tagged under: