Docs / Rendering
Terminal rendering
Raven uses Makepad for its native window and GPU rendering, with the wezterm terminal model underneath. This guide covers text, graphics, scrollback, and input in the terminal.
The pipeline
One pipeline draws everything: background cells, glyphs from a shelf-packed atlas, cursor, dividers, sidebar, and overlays — through Makepad, which targets Metal on macOS. Text is shaped by Makepad’s rustybuzz, with per-row shaping caches so cross-cell ligatures work without re-shaping every frame. JetBrains Mono Nerd Font, Fira Code, IBM Plex Mono, Inter and Noto Sans Symbols 2 ship with the app.
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