Skip to content
Alejandro Quintanar edited this page Nov 30, 2025 · 1 revision

Welcome to the term39 wiki!

Welcome to the TERM39 Wiki

TERM39 is a modern terminal multiplexer with a classic MS-DOS aesthetic, built in Rust. It provides a full-screen text-based interface with authentic DOS-style rendering, complete terminal emulation, and window management capabilities.

TERM39 Logo


Quick Links

Getting Started Usage Advanced
Installation Keyboard Shortcuts Framebuffer Mode
Building from Source Mouse Controls Configuration
Platform Support Window Mode Themes

Features at a Glance

Core Features

  • Retro DOS Aesthetic - Classic blue-and-white color scheme with authentic box-drawing characters
  • Multiple Terminal Windows - Create, drag, resize, minimize, and maximize windows
  • Window Management - Automatic tiling, snap-to-corners, focus management with ALT+TAB
  • Session Persistence - Auto-save/restore window layouts and terminal content
  • Command Launcher - Quick command palette with Ctrl+Space
  • Clipboard Support - System clipboard integration with drag-to-select and keyboard shortcuts

Customization

  • 13 Built-in Themes - Classic, Dark, Monochrome, Green Phosphor, Amber, Dracula, NDD, QBasic, Turbo, Norton Commander, XTree, WordPerfect, dBASE
  • Character Set Options - Unicode (default), Single-line Unicode, or ASCII compatibility mode
  • Terminal Tinting - Optional theme-based color transformation for terminal output

Platform Features

Feature Linux macOS Windows
Terminal Backend OK OK OK
Framebuffer Mode OK - -
Console Mouse OK - -
System Clipboard OK OK OK
Battery Indicator OK OK OK

Quick Start

Install

# From crates.io (recommended)
cargo install term39

# With framebuffer support (Linux only)
cargo install term39 --features framebuffer-backend

Run

term39                    # Unicode mode (recommended)
term39 --ascii            # ASCII compatibility mode
term39 --theme dark       # With a different theme

Essential Shortcuts

Key Action
t New terminal window
T New maximized terminal
F2 / ALT+TAB Switch windows
Ctrl+Space Command launcher
? / F1 Help screen
q / ESC Exit (from desktop)

Architecture Overview

TERM39 uses a layered architecture designed for performance and cross-platform compatibility:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    User Interface                       β”‚
β”‚  (Window Manager, UI Rendering, Input Handling)         β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                   Video Buffer                          β”‚
β”‚  (Double-buffered, Dirty Region Tracking)               β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                 Rendering Backend                       β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”‚
β”‚  β”‚  Terminal Backend   β”‚   Framebuffer Backend     β”‚    β”‚
β”‚  β”‚  (crossterm)        β”‚   (/dev/fb0, Linux)       β”‚    β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚               Terminal Emulation                        β”‚
β”‚  (VTE ANSI Parser, PTY Integration)                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key Components

Component Description
Video Buffer Double-buffered rendering with dirty region tracking for efficient updates
Window Manager Z-order management, focus handling, drag/resize operations
Terminal Emulator Full VT100/ANSI support via VTE parser with portable-pty
Render Backend Abstraction layer supporting terminal and framebuffer rendering
Mouse Input Unified input system supporting crossterm, raw /dev/input, and framebuffer modes

Version Information

  • Current Version: 0.15.0
  • Rust Edition: 2024
  • Minimum Rust Version: 1.70+
  • License: MIT

Contributing

We welcome contributions! Please see our Contributing Guidelines for details on:

  • Code style and formatting
  • Pull request process
  • Issue reporting
  • Development setup

Support


Navigation

Clone this wiki locally