PyQt6 · QTermWidget · plugin-driven
Tile your terminal. Then automate it.
QTerminator brings the beloved split-and-tile workflow of Terminator to a fast, Qt-native terminal. Arrange panes however you think — recursive splits, tabs, groups, broadcast input — then extend it with dozens of built-in plugins. It even speaks to AI coding agents over a local socket and MCP.
A Qt port of Terminator · ~40 built-in plugins · ~1,400 tests · GPL-3.0 · 6 languages
Split & tile
Recursive horizontal and vertical splits with nesting, a full tab bar, named groups, and broadcast input — type once and reach every pane in a group at once.
A plugin for everything
Around forty built-in plugins — recording, telemetry, triggers, snippets, instant replay, smart clipboard and more — plus clean hooks for dropping in your own.
Built for AI agents
A local agent-control socket and an MCP server let tools like Claude Code introspect tabs, inject input, and read the rendered screen — same-user-only by design.
The layout in your head, on your screen
Terminator's tiling philosophy, rebuilt on a modern Qt stack — with the conveniences power users keep asking for.
-
Tile
Splits, tabs & groups
Recursive horizontal/vertical splits, a tab bar with rename/reorder/close, named terminal groups, broadcast-to-group or broadcast-to-all input, and a read-only lock to prevent stray keystrokes.
-
Theme
Profiles & live theming
Named profiles (font, color scheme from 13 built-ins, cursor, scrollback) you switch and cycle per terminal — and
auto_profilecan turn a prod host red automatically. -
Bind
50+ rebindable shortcuts
Every common operation has a keyboard shortcut, all rebindable from a searchable, category-grouped Preferences dialog.
-
Persist
Layouts & sessions that survive restarts
Splits and tabs are saved as TOML and restored on launch; optional tmux-backed sessions keep your running processes alive across restarts entirely.
Drive it with AI
QTerminator exposes a local Unix-socket JSON-RPC surface — and a matching
qterminator-mcp server — so an agent can list tabs, inject input,
tail the PTY, and snapshot the rendered screen. An event channel pushes
command-finished, trigger-match, and cwd-changed events instead of polling.
Access is same-UID-only, and shell integration parses OSC 133/7/8 (the same sequences kitty, iTerm2 and starship use) into structured per-command history.
Share your session
Hand off a live tmux-backed terminal three ways: over mosh, through a local SSH server, or straight to a browser over WebSocket.
The browser bind is secured with Ed25519 challenge-response auth and timing-safe verification — read-only or read-write, your call — and stays loopback-bound by default.
Batteries very much included
Plugins hook into URL handling, context menus, and an output watcher backed by a
shared pyte screen — so each one sees a consistent view of the grid
at near-zero idle cost. A taste of what ships in the box:
…plus logger, screenshot, PDF/HTML export, print, text transforms, process control, scheduler, notifications, file & output monitors, stacked panes, pattern links, paste history, timestamps, dynamic profiles and more — and your own drop into a config directory.
Real VT emulation, modern stack
Packaged for openSUSE, Ubuntu/Debian and Fedora with a desktop file, AppStream metadata, icons and man pages, and translated into Czech, German, French, Japanese, Russian and Simplified Chinese. Requires Python 3.10+, PyQt6 6.5+, and QTermWidget 6.
Get QTerminator
QTerminator is early (v0.1) but substantial, with a deep feature set and a large automated test suite. The vendored bindings build from source in one step.
git clone https://codeberg.org/qterminator/qterminator
cd qterminator
# Requires Python 3.10+, PyQt6 6.5+, QTermWidget 6 + Python bindings
just run