Linux Terminal Emulator Shootout 2026
Alacritty, Kitty, WezTerm, Ghostty, and Foot compared on speed, features, Wayland support, and config — pick the right terminal for your workflow.
Before you start
- ▸A working Linux desktop with either Wayland or X11 running
- ▸sudo or root access to install packages
- ▸A Nerd Font installed if you want icon glyphs in prompts or status bars
Choosing a terminal emulator in 2026 feels like choosing a text editor — deeply personal, surprisingly technical, and occasionally tribal. This shootout covers the five terminals that dominate modern Linux desktops: Alacritty, Kitty, WezTerm, Ghostty, and Foot. Each solves the same core problem differently, and the right answer depends on whether you prioritize raw speed, scripting power, Wayland purity, or feature breadth.
The Contenders at a Glance
| Terminal | Written In | GPU Rendering | Wayland Native | Config Format |
|---|---|---|---|---|
| Alacritty | Rust | Yes (OpenGL) | Yes (also X11) | TOML |
| Kitty | C + Python | Yes (OpenGL) | Yes (also X11) | kitty.conf |
| WezTerm | Rust | Yes (WebGPU) | Yes (also X11, macOS, Windows) | Lua |
| Ghostty | Zig | Yes (Metal/OpenGL) | Yes (also X11, macOS) | Simple key=value |
| Foot | C | No (CPU) | Wayland only | INI |
Installation
Alacritty
# Debian/Ubuntu
sudo apt install alacritty
# Fedora
sudo dnf install alacritty
# Arch
sudo pacman -S alacritty
Kitty
# Debian/Ubuntu
sudo apt install kitty
# Fedora
sudo dnf install kitty
# Arch
sudo pacman -S kitty
Kitty also ships a standalone installer that always gives you the latest release:
curl -L https://sw.kovidgoyal.net/kitty/installer.sh | sh /dev/stdin
WezTerm
# Debian/Ubuntu — add the official repo first
curl -fsSL https://apt.fury.io/wez/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/wezterm-fury.gpg
echo 'deb [signed-by=/usr/share/keyrings/wezterm-fury.gpg] https://apt.fury.io/wez/ * *' | sudo tee /etc/apt/sources.list.d/wezterm.list
sudo apt update && sudo apt install wezterm
# Fedora
sudo dnf copr enable wez/wezterm
sudo dnf install wezterm
# Arch
sudo pacman -S wezterm
Ghostty
Ghostty reached 1.0 in late 2024. On most distros you need a recent package or a flatpak; distro packages are catching up fast.
# Arch (AUR)
paru -S ghostty
# Flatpak (all distros)
flatpak install flathub com.mitchellh.ghostty
# Fedora 41+
sudo dnf install ghostty
Foot
# Debian/Ubuntu
sudo apt install foot
# Fedora
sudo dnf install foot
# Arch
sudo pacman -S foot
Performance
GPU-accelerated terminals (Alacritty, Kitty, WezTerm, Ghostty) offload text rasterization to the GPU. For typical shell work the difference is imperceptible. It becomes noticeable when you cat a 50 MB log file or run a tool that floods stdout — GPU terminals stay fluid where software-rendered ones stutter.
Foot is the outlier: no GPU rendering, yet benchmarks consistently show it matching or beating GPU terminals on latency. Its author obsessed over frame scheduling under the Wayland presentation-time protocol, which removes a full compositor frame of lag. On a 165 Hz monitor this matters. The trade-off is hard Wayland dependency — foot refuses to compile with X11 support by design.
Alacritty has historically marketed itself as "the fastest terminal" but that claim is contextual. It wins on raw throughput in some vtebench scenarios, loses to foot on latency, and sits roughly level with Kitty and Ghostty in daily use.
WezTerm's WebGPU backend is more portable but adds startup overhead. It is the heaviest of the five in RAM footprint (~80–120 MB idle versus ~20–40 MB for foot or Alacritty).
Features
Alacritty — Intentional Minimalism
Alacritty draws the line at rendering. No tabs, no splits, no scrollback search UI — those belong to a multiplexer like tmux or zellij. The config is clean TOML and the project moves slowly and deliberately. If you already live inside tmux, Alacritty is an excellent, low-friction window into it.
Kitty — Extensible Power Tool
Kitty invented the Kitty Graphics Protocol (now widely adopted), supports tabs and splits natively, and has a plugin system called kittens — small Python programs that add capabilities like SSH session cloning, diff viewing, and image display. The kitten ssh command transparently forwards your local terminal settings to the remote host, which alone wins converts from other terminals.
# Open a split pane in Kitty
kitty @ launch --location=vsplit
WezTerm — Lua All the Way Down
WezTerm's entire configuration is a Lua script, which means conditional logic, functions, and dynamic keybindings without any external tooling. It supports tabs, splits, multiplexing over SSH, and a built-in status bar. If you want a terminal that does what tmux does without tmux, WezTerm is the strongest contender. Cross-platform consistency (Linux, macOS, Windows) is a genuine advantage for teams with mixed machines.
# WezTerm ships a CLI too
wezterm cli spawn --cwd $HOME/projects
Ghostty — Fast and Opinionated
Ghostty aims for the Alacritty niche — fast, native, minimal config — but ships a few more features by default: tabs, basic splits, and native OS decorations. Its Zig codebase compiles to tight binaries. The simple key = value config reads easily without learning TOML or Lua. Ghostty's native macOS app shares code with the Linux build, making it appealing for Mac/Linux switchers.
Foot — Wayland Purist
Foot implements the full Wayland presentation-time and fractional-scale protocols, supports server-side decorations, and stays deliberately small. It has no tabs or splits. Like Alacritty, it defers multiplexing to an external tool. The INI config is easy to read. Foot is the default terminal in several sway-based distributions precisely because of its Wayland-first design.
Configuration Examples
Alacritty — set font and colorscheme
mkdir -p ~/.config/alacritty
cat > ~/.config/alacritty/alacritty.toml <<'EOF'
[font]
normal = { family = "JetBrainsMono Nerd Font", style = "Regular" }
size = 13.0
[colors.primary]
background = "#1e1e2e"
foreground = "#cdd6f4"
EOF
Kitty — enable tab bar and image protocol
cat > ~/.config/kitty/kitty.conf <<'EOF'
font_family JetBrainsMono Nerd Font
font_size 13.0
tab_bar_style powerline
background #1e1e2e
foreground #cdd6f4
EOF
WezTerm — minimal Lua config
cat > ~/.config/wezterm/wezterm.lua <<'EOF'
local wezterm = require 'wezterm'
return {
font = wezterm.font 'JetBrainsMono Nerd Font',
font_size = 13.0,
color_scheme = 'Catppuccin Mocha',
hide_tab_bar_if_only_one_tab = true,
}
EOF
Which Terminal for Which User?
- Already using tmux/zellij and want zero overhead → Alacritty or Foot (Wayland-only systems).
- Want a full-featured terminal without a multiplexer → WezTerm or Kitty.
- SSH-heavy workflow → Kitty (
kitten ssh) or WezTerm (built-in multiplexing). - Wayland-only sway/river setup → Foot is purpose-built for this.
- Cross-platform (Linux + macOS + Windows) → WezTerm is the only real option here.
- Simple, fast, modern config without Lua → Ghostty.
- Inline image display in the terminal → Kitty (originator) or WezTerm (also supports the protocol).
Verification
After installing your chosen terminal, confirm GPU rendering (where applicable) and check the reported terminal type, which affects how programs detect capabilities:
# Confirm $TERM is set correctly
echo $TERM
# Alacritty → alacritty
# Kitty → xterm-kitty
# WezTerm → wezterm
# Ghostty → xterm-ghostty
# Foot → foot
# Check true-color support
awk 'BEGIN{for(i=0;i<256;i++)printf "\033[38;2;%d;100;100m#\033[0m",i; print ""}'
# Should render a smooth red gradient; banding means no true-color
Troubleshooting
Wrong or missing terminfo
Kitty and WezTerm use custom $TERM values. If you SSH into an older server and see garbled output or missing colors, either install the terminfo on the remote host or fall back:
# Kitty: copy terminfo to remote host
kitten ssh user@remotehost
# Manual fallback for any terminal
infocmp | ssh user@remotehost "mkdir -p ~/.terminfo && tic -x -"
Wayland vs X11 detection
On a mixed session (XWayland active), some terminals default to X11 rendering. Check which protocol is active:
echo $WAYLAND_DISPLAY # Non-empty means Wayland is available
echo $DISPLAY # Non-empty means X11/XWayland is available
Foot will refuse to start if WAYLAND_DISPLAY is unset — that is intentional, not a bug.
Font rendering issues
GPU terminals render fonts themselves, bypassing fontconfig defaults in some cases. If your font looks wrong, explicitly set the family name as reported by:
fc-list | grep -i jetbrainsFrequently asked questions
- Is Alacritty still the fastest terminal in 2026?
- It depends on the benchmark. Alacritty leads in some throughput tests, but Foot consistently beats it on input latency thanks to Wayland presentation-time scheduling. In everyday use the gap is negligible.
- Can I use Foot on an X11-only desktop?
- No. Foot is Wayland-only by design and will not start without a live Wayland compositor. Use Alacritty or Kitty if you are on X11.
- Do I still need tmux if I use Kitty or WezTerm?
- Not for tabs and splits — both handle those natively. You might still want tmux for session persistence across SSH disconnects or for workflows that rely on tmux-specific tooling.
- Ghostty is newer — is it production-ready?
- Yes. Ghostty 1.0 shipped in December 2024 and has been stable since. It is packaged in Fedora and the Arch AUR, and the codebase has had significant real-world testing on macOS prior to the Linux release.
- Which terminal best supports inline image display?
- Kitty invented the Kitty Graphics Protocol and has the most complete implementation. WezTerm also supports it fully. Ghostty has partial support. Alacritty and Foot do not support inline images.
Related guides
Bash Arrays and Associative Arrays
Master bash indexed and associative arrays: declaration, element access, looping, mapfile, namerefs, and practical patterns for real scripting work.
Bash Functions and Variable Scoping
Master Bash function scoping with local variables, source-based libraries, correct use of return codes, and array passing techniques including namerefs.
Bash Loops: for, while and until
Learn all three Bash loop types — for, while, and until — with practical, copy-paste examples covering file iteration, counting, polling, and safe line reading.
Bash Scripting for Beginners
Learn Bash scripting from scratch: shebang lines, variables, conditionals, loops, and arguments, plus a real backup script to tie it all together.