Introduction
The terminal emulator landscape has a new contender. Ghostty (version 1.0+) is a fast, feature-rich, cross-platform terminal built with the Zig programming language by Mitchell Hashimoto, co-founder of HashiCorp.
In this comprehensive guide, we’ll explore Ghostty’s architecture, features, performance, and why it might become your next terminal emulator.
What is Ghostty?
Ghostty is a modern terminal emulator that emphasizes:
- Performance: Blazing fast rendering
- Cross-platform: macOS and Linux support
- Native feel: Uses platform-native UI
- GPU acceleration: Hardware-accelerated graphics
- Simplicity: Minimal configuration needed
Created by Mitchell Hashimoto
The project comes from a renowned developer:
- Co-founder of HashiCorp (Vagrant, Terraform, Consul, Vault)
- Creator of Nomad and other infrastructure tools
- Now focusing on Ghostty as a passion project
Why Zig?
The Zig Programming Language
Zig is a modern systems programming language that offers:
| Feature | Description |
|---|---|
| No hidden control flow | Explicit error handling |
| Manual memory | Predictable performance |
| C interop | Easy to use C libraries |
| Cross-compilation | Build for any platform |
| Small runtime | Minimal dependencies |
Why Ghostty Uses Zig
// Memory control - no garbage collection
const allocator = std.heap.page_allocator;
// Predictable performance
var buffer = try allocator.alloc(u8, 1024);
defer allocator.free(buffer);
// No hidden allocations
const map = std.AutoHashMap(u32, u32).init(allocator);
defer map.deinit();
Benefits for Ghostty
- Performance: Direct memory control, no GC pauses
- Size: Small binary, minimal dependencies
- Portability: Same code compiles everywhere
- Maintenance: Modern language, easier to contribute
Key Features
1. GPU Acceleration
Ghostty uses GPU for rendering:
- Smooth scrolling: 60fps+ even with large output
- Efficient text: Font rendering with Metal (macOS) and Vulkan (Linux)
- Animations: Smooth transitions
2. Native UI
- macOS: Uses AppKit for native feel
- Linux: GTK for native integration
- Consistent: Same features on both platforms
3. Font Rendering
- Ligatures: Built-in ligature support
- Variable fonts: Full variable font support
- Emoji: Proper emoji rendering with color fonts
4. Window Management
- Tabs: Multiple terminal sessions
- Split: Horizontal and vertical splits
- Floating: Optional floating windows
- Native: Respects system window management
Installation
macOS
# Using Homebrew
brew install ghostty
# Or download from GitHub releases
# https://github.com/ghostty-org/ghostty/releases
Linux
From Source
# Install dependencies
# Ubuntu/Debian
sudo apt install zig libgtk-3-dev libsoup-3.0-dev glib-2.0-dev
# Clone repository
git clone https://github.com/ghostty-org/ghostty.git
cd ghostty
# Build
zig build -Doptimize=ReleaseSafe
# Run
./zig-out/bin/ghostty
From Package Managers
# Arch Linux (AUR)
yay -S ghostty
# Fedora
sudo dnf copr enable ghostty/ghostty
sudo dnf install ghostty
Configuration
Configuration File
Ghostty uses a simple key-value configuration:
# ~/.config/ghostty/config
# Font settings
font-family = "JetBrains Mono"
font-size = 14
# Color scheme
theme = "nord"
# Window settings
window-padding-x = 10
window-padding-y = 10
# Shell
shell = /usr/bin/fish
# Performance
renderer = gpu
Key Configuration Options
| Option | Description | Default |
|---|---|---|
font-family |
Primary font | System default |
font-size |
Font size in pixels | 12 |
theme |
Color theme | Default dark |
shell |
Default shell | System default |
window-padding-x |
Horizontal padding | 0 |
window-padding-y |
Vertical padding | 0 |
renderer |
Rendering backend | auto |
cursor-style |
Cursor appearance | block |
mouse-hide |
Hide mouse while typing | true |
Themes
Ghostty includes built-in themes:
# Use built-in themes
theme = "nord" # Blue-gray
theme = "dracula" # Purple
theme = "gruvbox" # Retro
theme = "catppuccin" # Modern pastel
Performance
Rendering Speed
Ghostty is optimized for speed:
| Metric | Ghostty | iTerm2 | WezTerm |
|---|---|---|---|
| Cold Start | 50ms | 150ms | 80ms |
| Scroll FPS | 60+ | 30 | 60 |
| Memory | 25MB | 45MB | 35MB |
| CPU Idle | 0.1% | 0.5% | 0.3% |
Why It’s Fast
- GPU Rendering: Text rendered on graphics card
- Zig Performance: Minimal runtime overhead
- Efficient Updates: Only redraws changed areas
- No Electron: Native code, not web-based
Comparison with Other Terminals
vs iTerm2 (macOS)
| Feature | Ghostty | iTerm2 |
|---|---|---|
| Platform | macOS + Linux | macOS only |
| Performance | Faster | Good |
| Configuration | File-based | GUI + file |
| Protocols | SSH, local | SSH, local, serial |
| Development | Active | Mature |
vs WezTerm
| Feature | Ghostty | WezTerm |
|---|---|---|
| Language | Zig | Rust |
| Performance | Comparable | Very fast |
| Configuration | Simple | Lua-based |
| Features | Focused | Feature-rich |
| Development | Newer | Mature |
vs Alacritty
| Feature | Ghostty | Alacritty |
|---|---|---|
| Language | Zig | Rust |
| Features | More features | Minimal |
| Configuration | File-based | YAML |
| Development | Active | Less active |
Advanced Features
1. Tabs and Splits
# Keyboard shortcuts
Cmd+T - New tab
Cmd+D - Split vertically
Cmd+Shift+D - Split horizontally
Cmd+W - Close tab
Cmd+[ - Previous tab
Cmd+] - Next tab
2. Search
# Search within terminal
Cmd+F - Open search
# Type to search
# Enter - Next match
# Shift+Enter - Previous match
3. Copy and Paste
# Copy
Cmd+C - Copy selected text
Cmd+Shift+C - Copy to clipboard
# Paste
Cmd+V - Paste
Cmd+Shift+V - Paste without formatting
4. Unicode and Emoji
Ghostty properly renders:
- Color emojis: Native emoji support
- Unicode: Full Unicode 15.0 support
- Ligatures: Programming ligatures
Troubleshooting
Common Issues
-
No display on Linux
# Install required dependencies sudo apt install libgtk-3-dev libsoup-3.0-dev -
Font not found
# Specify full font name font-family = "JetBrains Mono Regular" -
Slow rendering
# Force GPU rendering renderer = gpu # Or CPU fallback renderer = cpu
Getting Help
The Future of Ghostty
Roadmap
The project is actively developed:
- Windows support
- More platform integration
- Additional features
- Performance optimizations
Why It Matters
Ghostty represents a new generation of terminal emulators:
- Modern language: Zig provides safety and performance
- Focused development: Active maintainer
- Community-driven: Open source contributions
- Performance-first: Doesn’t sacrifice speed for features
Tools and Resources
Official Resources
Related Projects
Related Articles
Conclusion
Ghostty brings modern terminal emulation to developers who value performance and simplicity. Built with Zig by an experienced developer, it offers:
- Excellent performance: GPU-accelerated rendering
- Cross-platform: macOS and Linux support
- Simple configuration: Easy to set up
- Active development: Regular updates and improvements
While still newer than established terminals like iTerm2, Ghostty is quickly gaining traction among developers who want a fast, modern terminal experience.
Key takeaways:
- Zig provides performance without complexity
- GPU rendering ensures smooth experience
- Simple config lowers the barrier to entry
- Active development ensures continued improvement
Comments