What WezTerm Does
- GPU rendering — OpenGL/Metal
- Tabs and splits — built-in multiplexer
- SSH multiplexer — multiplex over SSH without tmux
- Lua config — full programming language for config
- Image display — Sixel, iTerm2, Kitty protocols
- Ligatures — font ligature support
- Workspaces — multiple workspace layouts
- Mouse — selection, scrollback, hyperlinks
- Scrollback search — regex search in scrollback
- Multiplexing domains — local, SSH, TLS, Unix socket
Architecture
Rust binary with Lua interpreter (mlua) for configuration. Rendering via wgpu (WebGPU abstraction layer). Terminal state machine handles VT parsing. Built-in multiplexer replaces tmux for many use cases.
Comparison
| Terminal | Config | Multiplexer | Image |
|---|---|---|---|
| WezTerm | Lua | Built-in | Multiple |
| Alacritty | TOML | No | No |
| Ghostty | INI-like | Built-in | Kitty |
| Kitty | kitty.conf | kitten | Own |
| iTerm2 | GUI | Built-in | Own |
FAQ
Q: WezTerm vs Alacritty? A: WezTerm is more feature-rich (built-in tabs/splits/SSH mux/image display/Lua config); Alacritty is more minimal and faster. If you don't want to use tmux, WezTerm is a better all-in-one solution.
Q: Is Lua config hard? A: Not hard. Basic config is just setting properties (as above). Advanced usage can use Lua to build dynamic status lines, switch themes by time, auto-connect SSH, and more.
Q: SSH multiplexing? A: WezTerm can open multiple remote panes/tabs over a single SSH connection without needing tmux on the remote side. Just configure an SSH domain.
Sources
- Docs: https://wezterm.org/docs
- GitHub: https://github.com/wezterm/wezterm
- License: MIT