COSMIC Terminal
The terminal emulator for the System76 COSMIC desktop environment, written in Rust with GPU-accelerated rendering, ligatures, and bidirectional text support.
COSMIC Terminal is the terminal emulator built for the
COSMIC desktop environment by System76. Written
entirely in Rust, it builds on the same battle-tested alacritty_terminal
backend used by Alacritty for correctness and compatibility, while layering a
custom renderer on top that adds ligature support and bidirectional text —
capabilities Alacritty intentionally omits. It is pre-alpha software, actively
developed alongside the rest of the COSMIC DE suite, and ships by default on
Pop!_OS.
Features
- GPU-accelerated rendering — Custom renderer built with
wgpuandglyphonfor fast, modern GPU rendering; falls back tosoftbuffer+tiny-skiawhen no GPU is available. - Ligature support — Renders programming ligatures correctly via
cosmic-text, the same high-quality text shaping library used throughout the COSMIC desktop. - Bidirectional text — Full BiDi support for right-to-left scripts alongside left-to-right terminal output.
- Multiple tabs — Open and manage multiple terminal sessions in a single window.
- Custom colour schemes — Import and switch colour schemes through the application menu.
- System theme integration — Automatically follows the COSMIC desktop dark/light theme preference.
- alacritty_terminal backend — Uses the same proven terminal emulation core as Alacritty, ensuring broad compatibility with terminal applications and escape sequences.
- All Rust, no Electron — The entire stack from terminal emulation to rendering is native Rust with no web runtime overhead.
Installation
COSMIC Terminal is pre-alpha and does not yet have stable binary releases outside of Pop!_OS. The recommended ways to obtain it are:
Pop!_OS (ships by default)
COSMIC Terminal is included in Pop!_OS 24.04 and later as the default terminal emulator. No additional installation steps are needed.
Build from source (all Linux distributions)
# Install Rust via rustup if you haven't already
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Install system dependencies (Debian / Ubuntu)
sudo apt install just libxkbcommon-dev libwayland-dev libinput-dev \
libdbus-1-dev pkg-config
# Install system dependencies (Fedora)
sudo dnf install just libxkbcommon-devel wayland-devel libinput-devel \
dbus-devel pkg-config
# Clone and build
git clone https://github.com/pop-os/cosmic-term
cd cosmic-term
just build-release
just install
Arch Linux (AUR)
paru -S cosmic-term-git
Nix / NixOS
nix-env -iA nixpkgs.cosmic-term
Note: As pre-alpha software, the build dependencies and process may change between commits. Check the repository README for the most up-to-date instructions.
Quick Start
After launching COSMIC Terminal, it behaves like any standard terminal emulator. A few things worth knowing out of the box:
# Open a new tab
# Ctrl+Shift+T
# Close the current tab
# Ctrl+Shift+W
# Scroll up / down
# Shift+PageUp / Shift+PageDown
# Increase / decrease font size
# Ctrl+= / Ctrl+-
# Open settings and colour scheme picker
# Access via the hamburger menu (top-right)
To test ligature rendering, open any font that ships with ligatures (JetBrains Mono, Fira Code, Cascadia Code) and type common programming tokens:
# These sequences should render as ligatures with a supporting font:
# -> => != == <= >= <!-- --> ::
echo "Ligature test: -> => != =="Architecture
COSMIC Terminal is deliberately layered to separate concerns:
| Layer | Crate | Role |
|---|---|---|
| Terminal emulation | alacritty_terminal | PTY management, escape sequence parsing, cell grid |
| Text shaping | cosmic-text | Font loading, shaping, ligatures, BiDi, glyph rasterisation |
| GPU rendering | wgpu + glyphon | Draw shaped glyphs to screen via GPU |
| Software fallback | softbuffer + tiny-skia | CPU rendering when no GPU is available |
| UI chrome | libcosmic (iced-based) | Tabs, menus, settings panel, system theme |
This architecture means COSMIC Terminal inherits Alacritty's terminal
correctness while adding the rendering features (ligatures, BiDi) that
Alacritty's maintainers have explicitly chosen not to support. The tradeoff is
that cosmic-text adds complexity and the renderer is newer and less
battle-tested than Alacritty's VTE-based pipeline.
COSMIC Terminal vs Other Rust Terminals
| Feature | COSMIC Terminal | Alacritty | WezTerm | Rio |
|---|---|---|---|---|
| GPU rendering | ✅ (wgpu) | ✅ (OpenGL) | ✅ (WebGPU) | ✅ (wgpu) |
| Ligatures | ✅ | ❌ | ✅ | ✅ |
| Bidirectional text | ✅ | ❌ | ✅ | ❌ |
| Native tabs | ✅ | ❌ | ✅ | ✅ |
| Multiplexer built-in | ❌ | ❌ | ✅ | ❌ |
| COSMIC DE integration | ✅ | ❌ | ❌ | ❌ |
| Stable release | ❌ (pre-alpha) | ✅ | ✅ | ✅ |
| Written in Rust | ✅ | ✅ | ✅ | ✅ |
If you are not using the COSMIC desktop and want a stable Rust terminal with ligatures today, WezTerm or Rio are the closest alternatives. Alacritty remains the best choice for a minimal, maximally compatible terminal without ligatures.