TERM39
A modern terminal multiplexer with classic MS-DOS aesthetic, built with Rust. Full-screen interface with window management and complete terminal emulation.
Screenshots
Features
- 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
Installation
From crates.io
# Standard installation
# Linux with framebuffer support
Requires Rust (Install)
Linux Packages
Homebrew (Recommended):
Or download from Releases:
- Fedora/RHEL:
# or: sudo dnf install term39-*-1.x86_64.rpm - Arch (AUR):
yay -S term39-binoryay -S term39 - Tarball:
macOS
Homebrew (Recommended):
Or 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)
# Apple Silicon (ARM64)
Windows
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"
From Source
# Add --features framebuffer-backend for Linux framebuffer
Android/Termux
For Android/Termux, install or build without the clipboard feature:
# Install Rust in Termux
# Option 1: Install from crates.io (disable clipboard for Android compatibility)
# Option 2: Build from source
Note: 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.
Usage
# green_phosphor, amber
Keyboard Shortcuts
General
| 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 |
Mouse Controls
- Title bar: Drag to move | [X]/[+]/[_]: Close/Maximize/Minimize | ╬ handle: Resize
- Click window: Focus | Bottom bar: Switch | Drag/Right-click: Select/Context menu
Architecture
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
Development
Prerequisites: Rust 1.70+ (Install)
&& &&
Contributing
Fork, create branch, test with cargo test && cargo clippy, commit, push, open PR. Follow Rust best practices, run cargo fmt, keep commits atomic.
Dependencies
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)
Cargo Features
clipboard (Default: ON)
System clipboard integration with Ctrl+Shift+C/V.
- Enable: Desktop usage, copy/paste between apps
- Disable: Android/Termux, headless servers →
--no-default-features
framebuffer-backend (Default: OFF)
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
# Run framebuffer
License
MIT License - see LICENSE file.
Support
Issues | Discussions | Wiki