A modern terminal multiplexer with classic MS-DOS aesthetic, built with Rust. Full-screen interface with window management and complete terminal emulation.
███████████ ██████████ ███████████ ██████ ██████ ████████ ████████
░█░░░███░░░█░░███░░░░░█░░███░░░░░███ ░░██████ ██████ ███░░░░███ ███░░░░███
░ ░███ ░ ░███ █ ░ ░███ ░███ ░███░█████░███ ░░░ ░███░███ ░███
░███ ░██████ ░██████████ ░███░░███ ░███ ██████░ ░░█████████
░███ ░███░░█ ░███░░░░░███ ░███ ░░░ ░███ ░░░░░░███ ░░░░░░░███
░███ ░███ ░ █ ░███ ░███ ░███ ░███ ███ ░███ ███ ░███
█████ ██████████ █████ █████ █████ █████░░████████ ░░████████
░░░░░ ░░░░░░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░░░░ ░░░░░░░░
- Retro DOS Aesthetic: Classic blue-and-white color scheme with box-drawing characters, ~60fps rendering
- Multiple Terminal Windows: Create, drag, resize, minimize, and maximize windows with mouse or keyboard
- Window Management: Automatic tiling, snap to corners, focus management with ALT+TAB
- Clipboard Support: System clipboard integration with drag-to-select, Ctrl+Shift+C/V, right-click menu
- Customizable Themes: Classic, Dark, Monochrome, Green Phosphor, Amber (via
--themeflag) - Cross-Platform: Linux, macOS, Windows with full VT100/ANSI support and true color
- Linux Framebuffer Mode: Direct
/dev/fb0rendering with DOS text modes (40x25, 80x25, ... , 320x200), requires--features framebuffer-backend - ASCII Compatibility:
--asciiflag for maximum terminal compatibility
# Standard installation
cargo install term39
# Linux with framebuffer support
cargo install term39 --features framebuffer-backendRequires Rust (Install)
Homebrew (Recommended):
brew tap alejandroqh/term39
brew install term39Or download from Releases:
- Fedora/RHEL:
sudo rpm -i term39-*-1.x86_64.rpm # or: sudo dnf install term39-*-1.x86_64.rpm
- Arch (AUR):
yay -S term39-binoryay -S term39 - Tarball:
tar xzf term39-v*-linux-x86_64.tar.gz sudo mv term39 /usr/local/bin/
Homebrew (Recommended):
brew tap alejandroqh/term39
brew install term39Or download from Releases:
Option 1: PKG Installer
- Intel:
term39-v*-macos-intel.pkg - Apple Silicon:
term39-v*-macos-apple-silicon.pkg
Right-click the PKG file and select "Open" to install (macOS will show a security warning for unsigned apps). The binary will be automatically placed in /usr/local/bin/.
Option 2: DMG Installer
- Intel:
term39-v*-macos-intel.dmg - Apple Silicon:
term39-v*-macos-apple-silicon.dmg
Right-click the DMG file and select "Open", then drag the app into the Applications folder.
Option 3: Manual Installation
# Intel (x86_64)
tar xzf term39-v*-macos-64bit-x86-binary.tar.gz
sudo mv term39 /usr/local/bin/
# Apple Silicon (ARM64)
tar xzf term39-v*-macos-64bit-arm-binary.tar.gz
sudo mv term39 /usr/local/bin/Download from Releases:
# Option 1: Run the installer (x86_64)
.\term39-v*-windows-x86_64-pc-windows-msvc-installer.exe
# Option 2: Portable - Extract ZIP
Expand-Archive term39-v*-windows-x86_64.zip
# Add to PATH (optional)
$env:Path += ";$PWD\term39-v*-windows-x86_64"git clone https://github.com/alejandroqh/term39.git
cd term39
# Add --features framebuffer-backend for Linux framebuffer
cargo build --release
./target/release/term39For Android/Termux, install or build without the clipboard feature:
# Install Rust in Termux
pkg install rust
# Option 1: Install from crates.io (disable clipboard for Android compatibility)
cargo install term39 --no-default-features
# Option 2: Build from source
git clone https://github.com/alejandroqh/term39.git
cd term39
cargo build --release --no-default-features
./target/release/term39Note: The --no-default-features flag disables system clipboard integration (which is not supported on Android). Copy/paste will still work within the app using an internal buffer.
./term39 # Run with Unicode (recommended)
./term39 --ascii # ASCII mode for compatibility
./term39 --theme dark # Themes: classic, dark, monochrome,
# green_phosphor, amberGeneral
| Key | Action | Key | Action |
|---|---|---|---|
t / T |
New window / Maximized window | q / ESC |
Exit (desktop) |
F1 / h |
Show help | s |
Settings |
l |
License | c |
Calendar |
Window & Session
| Key | Action | Key | Action |
|---|---|---|---|
F2 / ALT+TAB |
Switch windows | F3 |
Save session |
F4 / Ctrl+L |
Clear terminal |
Copy & Paste
| Key | Action | Key | Action |
|---|---|---|---|
F6 / Ctrl+Shift+C |
Copy selection | F7 / Ctrl+Shift+V |
Paste |
Cmd+C (macOS) |
Copy selection | Cmd+V (macOS) |
Paste |
Dialog Controls
| Key | Action | Key | Action |
|---|---|---|---|
TAB / Arrow keys |
Navigate buttons | ENTER |
Activate button |
ESC |
Close dialog |
- Title bar: Drag to move | [X]/[+]/[_]: Close/Maximize/Minimize | ╬ handle: Resize
- Click window: Focus | Bottom bar: Switch | Drag/Right-click: Select/Context menu
Core: Double-buffered video system, window manager (Z-order/focus), VT100/ANSI parser (VTE), PTY integration (portable-pty) Rendering: Front/back buffers with dirty tracking, save/restore regions, shadow system for depth
Prerequisites: Rust 1.70+ (Install)
cargo build --release # Build optimized binary
cargo run -- --ascii # Run in ASCII mode
cargo test && cargo clippy && cargo fmt # Test, lint, formatFork, create branch, test with cargo test && cargo clippy, commit, push, open PR. Follow Rust best practices, run cargo fmt, keep commits atomic.
Core: crossterm (terminal I/O), chrono (clock), portable-pty (PTY), vte (ANSI parser), clap (CLI args), serde/toml (config)
Optional: arboard (clipboard, default), framebuffer (Linux FB mode)
System clipboard integration with Ctrl+Shift+C/V.
- Enable: Desktop usage, copy/paste between apps
- Disable: Android/Termux, headless servers →
--no-default-features
Direct Linux framebuffer rendering with DOS text modes (40x25, 80x25, ... , 320x200).
- Modes: 40x25, 80x25, 80x43, 80x50, 160x50, 160x100, 320x100, 320x200
- Enable: Linux console (TTY), pixel-perfect retro rendering →
--features framebuffer-backend - Disable: Terminal emulators, SSH, macOS/Windows
- Requires:
/dev/fb0access (root or 'video' group), physical console only
# Build/Install
cargo build --release # Standard
cargo build --release --no-default-features # No clipboard
cargo build --release --features framebuffer-backend # + framebuffer
cargo install term39 # Standard
cargo install term39 --no-default-features # No clipboard
cargo install term39 --features framebuffer-backend # + framebuffer
# Run framebuffer
sudo ./target/release/term39 --fb-mode=80x25MIT License - see LICENSE file.
Issues | Discussions | Wiki