WezTerm — GPU-Accelerated Terminal Emulator and Multiplexer
WezTerm is a GPU-accelerated cross-platform terminal emulator and multiplexer written in Rust. Configured entirely in Lua with built-in tabs, splits, SSH multiplexing, image display, and a rich set of terminal features.
What it is
WezTerm is a GPU-accelerated cross-platform terminal emulator and multiplexer written in Rust. It is configured entirely in Lua, providing programmable control over appearance, keybindings, and behavior. Built-in features include tabs, splits, SSH multiplexing, image display (iTerm2 and Kitty protocols), ligature support, and a rich set of escape sequences.
This tool is for developers and power users who want a fast, highly configurable terminal that replaces both a terminal emulator and a multiplexer like tmux.
How it saves time or tokens
WezTerm combines the terminal emulator and multiplexer into one application, eliminating the need to run tmux or screen inside another terminal. Lua configuration allows dynamic behavior: change themes based on time of day, adjust fonts per SSH host, or create custom status bars. GPU acceleration means scrolling through large log files stays smooth.
How to use
- Download WezTerm for your platform.
- Create a
~/.wezterm.luaconfiguration file. - Customize keybindings, appearance, and behavior in Lua.
- Use built-in multiplexer features instead of tmux.
# Install on macOS
brew install --cask wezterm
# Install on Linux
flatpak install flathub org.wezfurlong.wezterm
Example
A ~/.wezterm.lua configuration:
local wezterm = require 'wezterm'
local config = wezterm.config_builder()
-- Appearance
config.color_scheme = 'Catppuccin Mocha'
config.font = wezterm.font('JetBrains Mono', { weight = 'Medium' })
config.font_size = 14.0
config.window_background_opacity = 0.95
-- Tab bar
config.use_fancy_tab_bar = false
config.tab_bar_at_bottom = true
-- Key bindings for splits
config.keys = {
{ key = 'd', mods = 'CMD', action = wezterm.action.SplitHorizontal { domain = 'CurrentPaneDomain' } },
{ key = 'd', mods = 'CMD|SHIFT', action = wezterm.action.SplitVertical { domain = 'CurrentPaneDomain' } },
}
return config
Related on TokRepo
- Automation tools — Terminal and workflow automation
- DevOps tools — Tools for terminal-based workflows
Common pitfalls
- Lua configuration has a learning curve if you are used to TOML or YAML config files. The flexibility comes at the cost of verbosity.
- GPU acceleration requires compatible graphics drivers. Some older systems or VM environments may fall back to software rendering.
- WezTerm's built-in multiplexer is not a drop-in replacement for tmux. Session persistence across reboots requires WezTerm's mux server.
- Image display protocols vary. Not all terminal applications support the same image protocols that WezTerm implements.
- WezTerm's binary size is larger than minimal terminals like Alacritty due to the built-in multiplexer and Lua runtime.
- Review the official documentation before deploying to production to ensure compatibility with your specific environment and requirements.
Frequently Asked Questions
Both are GPU-accelerated terminals written in Rust. WezTerm includes a built-in multiplexer (tabs, splits, sessions), Lua scripting, image display, and ligature support. Alacritty is minimal and relies on tmux for multiplexing.
For many workflows, yes. WezTerm has built-in tabs, splits, and session management. However, tmux offers features like session sharing between terminals and more mature session persistence. Some users run both.
Yes. WezTerm supports font ligatures out of the box. Fonts like Fira Code and JetBrains Mono render their ligatures correctly without additional configuration.
Yes. WezTerm supports the iTerm2 and Kitty image protocols. Tools like imgcat and timg can display images inline in the terminal.
Yes. WezTerm runs on macOS, Linux, Windows, and FreeBSD. The same Lua configuration file works across all platforms with minor adjustments for OS-specific paths.
Citations (3)
- WezTerm GitHub— WezTerm is a GPU-accelerated terminal written in Rust
- WezTerm Documentation— WezTerm configuration and features
- WezTerm Multiplexing Docs— Terminal multiplexer concepts and architecture
Related on TokRepo
Discussion
Related Assets
NAPI-RS — Build Node.js Native Addons in Rust
Write high-performance Node.js native modules in Rust with automatic TypeScript type generation and cross-platform prebuilt binaries.
Mamba — Fast Cross-Platform Package Manager
A drop-in conda replacement written in C++ that resolves environments in seconds instead of minutes.
Plasmo — The Browser Extension Framework
Build, test, and publish browser extensions for Chrome, Firefox, and Edge using React or Vue with hot-reload and automatic manifest generation.