Introduction to the New Generation Terminal Tool ghostty

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 to false disables that specific style.
  • font-synthetic-style: Controls whether styles like bold, italic, bold-italic are synthesized. Can be true or false, or disable specific syntheses like “no-bold”, “no-italic”.
  • font-feature: Apply font features, such as ss20 or -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 is id=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]]