Recently, I discovered a new terminal project while surfing, tried it out, and felt it was great, so I’m writing an article to recommend it:
Features#
The image below is from the developer's blog:
You can check the developer's original blog post here for his explanations of each feature of the project.
In short, the author believes that current mainstream terminal programs make unnecessary trade-offs in speed, feature richness, and platform-native GUI, which should be achievable simultaneously.
I felt that the existing terminal emulators pushed an unnecessary choice between speed, features, and platform-native GUIs.
The Ghostty project is the author's answer to this.
-
Fast
Ghostty has performance comparable to the widely recognized fast Alacritty, placing it in the top tier. -
Feature-rich
It supports almost all modern terminal standards, built-in support for split screens, multiple tabs, and includes many configurable options. -
Platform-native GUI experience
Compared to other mainstream terminal programs, Ghostty is written in a more native way. It shares most of the core code across different platforms but uses platform-native GUI toolkits for each platform. Specifically, it uses Swift on macOS and GTK on Linux. This allows Ghostty to better leverage platform-native features, such as better dock integration, input method support, desktop notifications, and even macOS's secure input mode.
My Experience#
Since I started using macOS, I have been trying to find a fast and highly customizable terminal.
For a long time, I used the recommended Iterm2, which provided a generally satisfactory experience, but the main issue was that it was too slow. In my personal experience, the performance of Iterm2 was even worse than the built-in terminal of Vscode, as I could feel noticeable delays when catting large texts or even typing quickly.
Because of this, my first choice when seeking a switch was the performance-renowned Alacritty:
Its overall experience was quite satisfactory, but I wasn't sure if it was a configuration error or a program bug, as there were always some discomforts during daily use.
Poor support for transparent title bars on macOS#
The more mainstream appearance on Mac integrates the traffic light buttons with the window, and in the terminal, the title bar is the same color as the text background. This is very well supported in Iterm2, but not in Alacritty.
Alacritty supports configuring the title bar to be transparent, which can achieve the appearance I described above, but the strange point is that its implementation of the transparent title bar seems to merely force three buttons onto a window without a title bar. This means:
- The part that clearly belongs to the title bar can display content and will be obscured by the traffic lights.
- When hovering over the title bar, the mouse cursor remains in text style.
- While dragging the title bar to move the window, mouse events can still be passed through to select text in the terminal, causing flickering.
If the description doesn't provide a clear picture, you can check the GIF below:
I had no choice but to set the title to buttonless and use cmd + ctrl + left mouse button click anywhere in the window
on macOS to drag the window to avoid these issues.
Jitter and flickering when resizing the window#
When resizing, Alacritty's characters constantly jitter, and existing text gradually moves out of the window, as if I were constantly wrapping lines, accompanied by occasional white flickering.
You can check my GIF below (a flicker actually occurred once, but it seems it couldn't be recorded):
Occasional startup freezes#
I couldn't reproduce this during the writing of the article, but it has definitely happened quite a few times, speculated to be caused by quickly reopening the window after exiting the program with cmd + Q
.
Experience and Configuration Process with Ghostty#
Due to the above issues, I immediately had the idea to try Ghostty when I saw it.
After a brief experience, I did not find similar bugs as in Alacritty, nor did I feel any difference in speed compared to Alacritty. As the author said in the 1.0 preview:
In short, Ghostty 1.0 aims to be the best drop-in replacement for your current terminal emulator on macOS and Linux.
At least for macOS, a native application that performs on par with Alacritty can indeed be called "the best drop-in replacement for your current terminal emulator."
Even aside from performance, it is clear that Ghostty places more emphasis on support for macOS compared to Alacritty. Whether it is adapting the native Metal API for rendering specifically for macOS or using Swift to write the macOS GUI, it is evident that this project is developed with macOS as the primary platform.
Thus, I ultimately decided to switch over. Ghostty's official documentation is very detailed, and it is easy to migrate the existing Alacritty appearance to Ghostty by referring to the official documentation.
Below are my configuration results and reference configuration items.
Result Image#
On the left is Alacritty, and on the right is Ghostty. After configuration, the main parts are almost indistinguishable.