Original Link
Original Text
On Linux, I used [[Guake]], then after switching to macOS, I used Kitty, until recently I switched to Warp, but unexpectedly, these days I discovered another excellent terminal called Ghostty. I hadn’t known before, but after looking into it, I found that the story behind Ghostty’s author is quite fascinating, and the Zig language used by Ghostty is also the first time I’ve heard of it.
Ghostty is a terminal emulator written in Zig language by the famous developer Mitchell Hashimoto (co-founder of HashiCorp), with notable advantages in speed and functionality.
Ghostty aims to be a faster, more feature-rich next-generation terminal application. It not only supports GPU acceleration, is built with SwiftUI on macOS and GTK on Linux, but also comes with many modern features, striking a balance between performance and ease of use.
Mitchell Hashimoto
Before further introducing Ghostty, I want to first formally introduce its author Mitchell Hashimoto. If you work in DevOps, cloud computing, or software development fields, you must be very familiar with tools like Vagrant, Terraform, Packer, etc. Mitchell Hashimoto is the core contributor behind these tools. He has been passionate about programming from early on and founded HashiCorp based on his use of these technologies, greatly advancing cloud computing and infrastructure automation, profoundly changing the construction and management of modern infrastructure.
- Vagrant: A tool for building and managing virtualized development environments, greatly simplifying environment configuration and sharing.
- Packer: An automation tool for creating identical machine images.
- Terraform: An Infrastructure as Code (IaC) tool that allows defining and managing cloud resources through code.
Mitchell Hashimoto once served as CEO and CTO, but ultimately chose to return to coding, announcing the birth of the Ghostty terminal.
Simply put, Ghostty is a cross-platform, GPU-accelerated modern terminal emulator. Its core advantages include:
- Outstanding Performance: Like Alacritty, Ghostty leverages the GPU for rendering, ensuring very low latency and high throughput, maintaining smoothness even when handling massive output. By using modern graphics APIs and offloading rendering tasks to the GPU, whether it’s fast scrolling, complex text output, or running real-time updating commands like htop, Ghostty delivers a very smooth user experience.
- Rich Functionality: Unlike Alacritty’s minimalism, Ghostty maintains high performance while integrating many developer-needed features, such as window/tab management (Multiplexing), theme systems, etc. It includes built-in terminal multiplexing as an alternative to Tmux, with native windows, tabs, panes, etc., switchable via hotkeys.
- Modern Design: Ghostty considers many modern usage scenarios and strives to address some pain points in traditional terminals regarding interaction and security. It supports True Color, 24-bit color, font ligatures, image protocols, hyperlinks, and hundreds of themes.
- Powerful configurable options and theme support: You can deeply customize according to your usage habits, from fonts to colors to shortcuts. Ghostty already has a very active community with many users sharing their configurations and themes. It uses pure text configuration with TOML format.
Ghostty’s goal is to resolve pain points of existing terminal emulators in performance, functionality, stability, and cross-platform consistency. Although Ghostty is still rapidly evolving and under development, from Mitchell’s shared content and project goals, we can see some core features and design philosophies of Ghostty.
Installation
On macOS, you can use the following command:
brew install --cask ghostty
Ghostty is mainly customized through a pure text configuration file, which is very friendly for users familiar with Linux environments who prefer configuring via text editors. You can also manage your configurations through dotfiles.
Usage
Configuration File Path
After the first launch, the configuration file is located at:
- Linux –
$HOME/.config/ghostty/config - macOS –
$HOME/Library/Application\ Support/com.mitchellh.ghostty/config
The configuration file uses key-value pair format.
font-family = "Monaco"
Remember to reload the configuration in Ghostty after editing the file through the menu option “Reload Configuration”.
Colors and Themes
Background and foreground colors
background = #ff66ccforeground = #000000
Themes
Ghostty comes with hundreds of built-in themes. You can list all available themes using the command ghostty +list-themes, which provides a preview of each theme’s appearance.
theme = GruvboxDark
Font Configuration
Ghostty provides rich font configuration options.
font-family: Sets the preferred font family. Can be specified multiple times for fallback fonts.font-family-bold,font-family-italic,font-family-bold-italic: Set font families for bold, italic, and bold-italic styles respectively.font-style,font-style-bold,font-style-italic,font-style-bold-italic: Specify named font styles used by terminal fonts, e.g., the style “Heavy” for “Iosevka Heavy”. Setting the value tofalsedisables that specific style.font-synthetic-style: Controls whether styles like bold, italic, bold-italic are synthesized. Can betrueorfalse, or disable specific syntheses like “no-bold”, “no-italic”.font-feature: Apply font features, such asss20or-ss20(to disable). To disable programming ligatures, use-calt.font-size: Sets the font size (in points), supporting non-integer values.font-variation,font-variation-bold,font-variation-italic,font-variation-bold-italic: Set font variation values for variable fonts, format isid=value, e.g.,wght=700.
You can list available system fonts with the command ghostty +list-fonts.
Hotkeys
You can customize keyboard shortcuts for specific operations. For example, to create a shortcut Ctrl+d that splits the current Ghostty window into two panes side by side to the right:
keybind = ctrl+d=new_split:right
Ghostty also supports many other configurations covering mouse and clipboard behavior, terminal behavior, startup sessions, etc. For example, you can control startup tabs, window layouts, working directories, and started programs by creating session files and using the --session command line flag.
A complete list of configuration options can be found in Ghostty’s official documentation or related configuration guides.
Usage
Configure shortcut Ctrl+D to split the window
keybind = ctrl+d=new_split:right
Custom Themes
List themes
ghostty +list-themes
Use in configuration file
theme = Unikitty
You can configure Ghostty’s window and content to use the same theme color
window-theme = ghostty
The emergence of Ghostty provides us, efficiency-driven developers, with another new option. It is more than a simple terminal emulator — it feels like a modern development workstation. It combines Alacritty’s speed and Kitty’s features while innovating and optimizing on this foundation.
Although Ghostty is still young, with its outstanding design philosophy, strong performance, and active community, I believe it has the potential to become a strong contender in the future terminal emulator arena. If you are looking for a new terminal tool, give Ghostty a try — perhaps it will bring you unexpected surprises.
- [[Guake]]
- [[Kitty]]
- [[wezterm-terminal]]
- [[Alacritty Terminal]]
- [[Mac app iTerm2]]
- [[Warp]]