Skip to main content

Module surface

Module surface 

Source
Expand description

Surface presenters: the kitty strategies (whole frames with alternating image ids, tile patches, terminal-side animation), sixel tiles for terminals without kitty graphics, and the damage-tracked blocks fallback every truecolor terminal runs.

Structs§

AnimatedKitty
The animated kitty surface presenter: the first frame becomes the root frame of one image, placed once, and every later surface appends a frame composed onto the previous one plus the rectangles that changed. Playback runs in the terminal: loading mode plays the frames it holds at the gap pace and waits for more, so the wire is a buffer, jitter never reaches the screen, and motion happens at the compositor’s rate rather than the client’s. An unchanged frame writes nothing.
BlocksSurface
The stateful blocks presenter: renders a pixel surface as quarter-block cells once, then repaints only the cells whose pixels changed.
BufferSurface
The stateful cell-buffer presenter: writes a buffer’s cells once, then per frame only the cells that changed, inside synchronized output. Indexed and truecolor cell colors travel through verbatim, which makes this the presenter cell-plane demos drive directly and the engine behind the blocks path. A fresh or resized buffer clears and repaints everything; an unchanged frame writes nothing.
KittySurface
The full-frame kitty surface presenter: every frame transmits the whole surface compressed under one of two alternating image ids and places it, deleting the previous frame’s placement, so the terminal never shows a half-updated image.
PatchedKitty
The patched kitty surface presenter: transmits the whole surface once, then per frame retransmits only the tiles whose pixels changed, each as its own small image under a stable tile id, placed over the base. The kitty protocol has no in-place pixel update (retransmitting an id replaces the image and its placements), so a tile id is simply retransmitted and its placement replaced without flicker. A frame with more damaged tiles than the patch budget, a resize, or anything that loses the base image falls back to one whole retransmit. An unchanged frame writes nothing.
PixelScreen
Renders a pixel surface full-screen through the best strategy the terminal offers.
SixelSurface
The sixel surface presenter. Sixel images have no scaling, so we scale the surface to whole cells ourselves, nearest pixel. We leave the bottom row out, because a sixel touching it scrolls the screen.

Traits§

Stash
Puts pixels where a terminal on this machine reads them, so a frame skips compression, base64 and the terminal connection.