KTerminal
2026A GPU-accelerated terminal core in Rust — one VT implementation, pluggable clients from a GTK4 workspace down to a C ABI for mobile.
- Year
- 2026
- Stack
- Code
- GitHub ↗

KTerminal is a cross-platform terminal built as a stack of Rust crates: a pure VT/emulator core at the bottom, toolkit-specific clients at the top, and a hard rule between them — clients never fork VT logic, and GUI toolkits never leak into the core.
The crate stack
| Crate | Responsibility |
|---|---|
| kterminal-core | VT/ANSI, grid, damage, effects, key encode — no I/O, no GPU |
| kterminal-pty | Unix PTY, Windows ConPTY, NullPty for tests |
| kterminal | Session facade (default: core + PTY only) |
| kterminal-host | Shared client kit — paste, fonts, clipboard helpers |
| kterminal-render | Optional wgpu cell renderer |
| kterminal-gtk | GTK4 project workspace → bin kterminal |
| kterminal-winit | winit + wgpu → bin kterminal-winit |
| kterminal-ffi | C ABI with Swift / Kotlin binding stubs for mobile hosts |
The runtime loop is the classic one: read bytes from the PTY, advance the grid, take the damage, draw only what changed. Kitty keyboard modes and Kitty graphics are in; scrollback reflows on resize; OSC 52 clipboard goes through explicit host policies.
The GTK4 workspace
The main client is terminal-centered but project-oriented: projects on the left, terminal or editor in the center, Info / Files / Git / Agent on the right. The Agent panel opens coding CLIs — Claude Code, Codex, and friends — as interactive terminal sessions. KTerminal stays a terminal, not an IDE agent host.
Install
curl -fsSL https://raw.githubusercontent.com/SihanTeng/KTerminal/main/scripts/install.sh | sh
Pin a release or prefix:
curl -fsSL https://raw.githubusercontent.com/SihanTeng/KTerminal/main/scripts/install.sh | sh -s -- --version v0.1.0
curl -fsSL https://raw.githubusercontent.com/SihanTeng/KTerminal/main/scripts/install.sh | sh -s -- --prefix ~/.local
From source (GTK4 dev packages required for the GTK client):
cargo test -p kterminal-core
cargo run -p kterminal-gtk
cargo run -p kterminal-winit
Release tarballs for Linux x86_64 and ARM64 ship from CI on version tags.
Design language is locked in design.md and applied via GTK tokens in
crates/kterminal-gtk/style/.