Rio

A GPU-accelerated terminal emulator written in Rust, focused on typography, performance, and WebAssembly scripting.

Screenshot of Rio

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):

KeyAction
Cmd+T / Ctrl+Shift+TNew tab
Cmd+W / Ctrl+Shift+WClose tab
Cmd+[1-9]Switch to tab N
Cmd+DSplit pane horizontally
Cmd+Shift+DSplit pane vertically
Cmd+NNew window
Cmd+,Open config file
Cmd+Shift+,Reload config
Cmd+KClear scrollback
Cmd+FSearch 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:

FeatureAlacrittyRio
Built-in tabs❌ (use tmux/zellij)
Built-in splits
Font ligatures
Rendering backendOpenGLWebGPU
Config reload✅ Live✅ Live
Image protocol✅ Kitty + Sixel
PhilosophyMinimal, delegate to multiplexerBatteries 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.