Docs / Rendering

Pure Rust, one GPU pipeline.

The whole stack is Rust: winit for the window, wgpu for the GPU, cosmic-text for shaping and rasterization, and the battle-tested wezterm-term model underneath. No FreeType, no HarfBuzz, no Electron, no C build steps — verified by CI on the dependency graph.

The pipeline

One textured-quad wgpu pipeline draws everything: background cells, glyphs from a shelf-packed atlas, cursor, dividers, sidebar, and overlays. Text is shaped by rustybuzz and rasterized by swash (both via cosmic-text), with per-row shaping caches so cross-cell ligatures work without re-shaping every frame. JetBrains Mono Nerd Font ships in the binary; system fonts resolve through pure-Rust fontdb.

Text fidelity

  • Truecolor foreground/background, reverse video, bold, italic, and dim/half-intensity
  • Underline styles: single, double, curly, dotted, dashed — plus strikethrough
  • Cursor shapes (block / bar / underline) with blink and a hollow cursor on unfocused panes
  • Procedural box-drawing, block, shade, and Powerline glyphs (U+2500–2593, U+E0B0–E0B3) rasterized for seamless tiling, bypassing the font
  • IME composition, and live DPI changes rebuild metrics on the fly

Graphics & links

Inline terminal graphics work across all three protocols — sixel, iTerm, and kitty. The model decodes to RGBA and the renderer uploads each image (cached by content hash) to its own texture, drawn as per-cell scissored quads. OSC 8 hyperlinks are live: ⌘-click opens the URI.

Scrollback & input

  • 10,000-line scrollback (configurable) with wheel scrolling
  • Mouse selection with copy-on-select, ⌘C/⌘V with bracketed paste; selection defers when the app grabs the mouse
  • Full keyboard encoding: printables, Ctrl/Alt chords, arrows, Home/End/PgUp/PgDn, function keys