Smooth Scrolling
Scrolling a terminal shouldn’t feel worse than scrolling a web page. On Damson it doesn’t.
What you feel
- ProMotion 120 Hz. On displays that support it, Damson draws at up to 120
frames per second, synced to the panel via
CVDisplayLink. - Per-pixel, sub-line scrolling. Content moves by the pixel, not by whole rows, so a flick or a two-finger drag tracks your fingers exactly.
- Momentum and rubber-banding. Flick and the scrollback glides to a stop; hit the top or bottom and it springs back — the same physics as Safari.
The headline goal is simple: the same feel as scrolling a web page in Safari.
Why cross-platform terminals can’t match it
Momentum scrolling, rubber-banding, and ProMotion vsync are macOS-specific behaviors. A cross-platform renderer built on the lowest common denominator of Linux, Windows, and macOS either reimplements them approximately or skips them. Damson talks to AppKit, QuartzCore, and CoreVideo directly, so it inherits the real thing instead of an approximation.
Under the hood
The renderer is GPU-driven (see GPU Rendering) and
paints each frame on a CAMetalLayer synchronized to the display’s refresh via
CVDisplayLink. Terminal I/O runs off the main thread through a lock-free ring
buffer, so even a flood of output never stalls the scroll.
Curious about the exact recipe? The repository’s
docs/SMOOTH-SCROLL.mddocuments the concrete approach to guaranteed-smooth scrolling.