Rio
A GPU-accelerated terminal emulator written in Rust, focused on typography, performance, and WebAssembly scripting.
Rio is a GPU-accelerated terminal emulator written in Rust that emphasises typography, low latency, and configurability. It uses WebGPU for rendering, supports font ligatures and subpixel antialiasing, and is designed to be a visually polished alternative to terminals like Alacritty or WezTerm — with a native feel on each platform and a clean TOML configuration.
Features
- GPU rendering via WebGPU — smooth, tear-free rendering at high frame rates even with large scrollback buffers
- Typography-first — careful attention to font rendering, ligatures, subpixel antialiasing, and line spacing; supports any system font
- Tabs and navigation — built-in tab support without needing a multiplexer, with keyboard-driven navigation
- Multiple windows — open and manage multiple terminal windows from a single Rio instance
- Splits — split panes horizontally and vertically within a single tab
- True colour — full 24-bit colour support; themes configurable via TOML
- Sixel and Kitty graphics protocol — display images inline in supported applications
- Cross-platform — runs natively on macOS, Linux, and Windows
- TOML configuration — clean, well-documented config file with live reload
Installation
Download a pre-built binary from the releases page:
# macOS (Homebrew)
brew install --cask rio
# cargo
cargo install rioterm --locked
# Arch Linux (AUR)
paru -S rio-terminal
# Nix
nix-env -iA nixpkgs.rio# Debian / Fedora
# Pre-built Linux binaries (.deb and .rpm) are available on the
# [releases page](https://github.com/raphamorim/rio/releases).Configuration
Rio reads from ~/.config/rio/config.toml (Linux/Windows) or
~/Library/Application Support/com.raphamorim.rio/config.toml (macOS):
[editor]
program = "hx"
[window]
opacity = 1.0
blur = false
decorations = "Enabled"
width = 1200
height = 800
[fonts]
family = "JetBrains Mono"
size = 14
[fonts.features]
# Enable font ligatures
ligatures = true
[colors]
background = "#0f1117"
foreground = "#e2e4ed"
cursor = "#e8673c"
# ...
[navigation]
mode = "BottomTab" # TopTab | BottomTab | Breadcrumb | Plain
use-current-path = true
[shell]
program = "/bin/zsh"
args = ["--login"]Keybindings
Default keybindings follow platform conventions (Cmd on macOS, Ctrl+Shift on Linux/Windows):
| Key | Action |
|---|---|
Cmd+T / Ctrl+Shift+T | New tab |
Cmd+W / Ctrl+Shift+W | Close tab |
Cmd+[1-9] | Switch to tab N |
Cmd+D | Split pane horizontally |
Cmd+Shift+D | Split pane vertically |
Cmd+N | New window |
Cmd+, | Open config file |
Cmd+Shift+, | Reload config |
Cmd+K | Clear scrollback |
Cmd+F | Search in scrollback |
All keybindings are fully remappable via config.toml.
Themes
Rio ships with a set of built-in themes and supports custom ones. Apply a theme in your config:
[colors]
# Built-in: "dracula", "catppuccin-mocha", "tokyo-night", "gruvbox-dark", etc.
# Or define your own colour palette inline
background = "#1e1e2e"
foreground = "#cdd6f4"
cursor = "#f5e0dc"Rio vs Alacritty
Both are GPU-accelerated Rust terminals, but they take different stances:
| Feature | Alacritty | Rio |
|---|---|---|
| Built-in tabs | ❌ (use tmux/zellij) | ✅ |
| Built-in splits | ❌ | ✅ |
| Font ligatures | ❌ | ✅ |
| Rendering backend | OpenGL | WebGPU |
| Config reload | ✅ Live | ✅ Live |
| Image protocol | ❌ | ✅ Kitty + Sixel |
| Philosophy | Minimal, delegate to multiplexer | Batteries included |
If you prefer a thin, fast terminal and already use tmux or Zellij for tabs and splits, Alacritty is the natural choice. If you want those features built in with polished typography, Rio is worth trying.