Expand description
Inline-image payloads carried through the authority.
§The seam: the authority owns TRANSMISSION, the renderer owns PIXELS
A terminal image arrives as an escape sequence carrying encoded bytes — a sixel stream, or a PNG / raw RGBA under the kitty protocol. Two separate facts come out of that, and conflating them is what makes this hard:
- What was transmitted, and where the cursor was. That is terminal state. It belongs to the authority, exactly like a cell.
- What those bytes look like as pixels. That is rendering. It needs a PNG decoder, a sixel decoder, a GPU texture.
tear owns (1) and deliberately not (2). The payload is stored
undecoded, so tear-core needs no image crate, no icy_sixel, and no
GPU dependency — a daemon on a headless box carries images perfectly
well without being able to draw one.
This is what closes the last flip blocker in
SHUKEN.
Before it, GridState implemented no hook/put/unhook and vte
silently swallows APC in its SosPmApcString state, so every sixel
and every kitty image vanished with no error and no flag — a renderer
could not even know content had been dropped. Carrying them undecoded
keeps mado’s decoders exactly where they are while making the authority
lossless.
Structs§
- Graphic
- One transmitted image, undecoded, with the cursor position it arrived at.
Enums§
- Graphic
Protocol - Which protocol delivered a payload. The renderer needs this to pick a decoder; the authority only needs to record it faithfully.
Constants§
- GRAPHIC_
PAYLOAD_ MAX - Largest payload accepted for one image.