# Spectral Terminal Emulator A next-generation terminal emulator written in Rust, designed to be **faster than Ghostty** while solving its biggest user frustration: **font rendering that looks too thin**. ## What Makes Spectral Different ### 1. Cross-Platform Font Thickening (Finally!) Ghostty's #1 user complaint is that fonts look thinner than other terminals — and on Linux there's no fix. Spectral solves this with a **shader-based thickening system** that works identically on **macOS, Linux, and Windows**. ```ini # Spectral config (works on ALL platforms) font-thicken = true font-thicken-strength = 0.5 # 0.0 = thin, 1.0 = bold ``` The MSDF (Multi-Channel Signed Distance Field) renderer allows per-pixel threshold adjustment in the GPU fragment shader. No platform-specific hacks — just one clean cross-platform solution. ### 2. True Cross-Platform Native GPU Backend | Platform | Graphics API | Why | |----------|-------------|-----| | macOS | **Metal** (via wgpu) | Unified memory, triple buffering | | Linux | **Vulkan** (via wgpu) | Low overhead, explicit control | | Windows | **DirectX 12** (via wgpu) | Native Windows compositor | One wgpu codebase renders everywhere. No separate Metal/OpenGL backends like Ghostty. ### 3. SIMD-Optimized ANSI Parser The VT100/ANSI parser uses `memchr` for bulk ESC byte scanning — a SIMD-accelerated search that skips large text runs without per-byte dispatch. ### 4. GPU-First Architecture | Component | Traditional Terminal | Spectral | |-----------|---------------------|----------| | Font rasterization | CPU (FreeType) | CPU initial cache, GPU rendering | | Text rendering | Per-glyph draw calls | Single instanced draw (6 vertices × N cells) | | Background | CPU compositing | GPU instanced colored quads | | Frame pacing | VSync blocked | `PresentMode::AutoNoVsync`, 1-frame latency | ### 5. Zero System Dependencies for Font Discovery Unlike Ghostty/Alacritty which require `fontconfig`/`pkg-config` on Linux, Spectral uses `fontdue` (pure Rust) + manual font file scanning. No `apt install fontconfig-dev` needed. ## Architecture ``` spectral/ ├── spectral-core/ # Terminal grid, ANSI parser, damage tracking ├── spectral-font/ # Font loading, MSDF atlas, metrics ├── spectral-render/ # wgpu GPU renderer ├── spectral-pty/ # PTY abstraction └── src/main.rs # winit window + event loop ``` ## Build ```bash # Requires: Rust 1.75+, a Vulkan/Metal/DX12 capable GPU cargo build --release ``` ## Performance Targets | Benchmark | Kitty | Ghostty | Alacritty | **Spectral Target** | |-----------|-------|---------|-----------|-------------------| | `cat /dev/urandom` | 121 MB/s | ~90 MB/s | 43 MB/s | **>150 MB/s** | | Key-to-screen latency | ~8ms | ~8ms | ~10ms | **<8ms** | | Startup time | ~200ms | ~150ms | ~120ms | **<100ms** | ## License MIT/Apache-2.0 dual license.