Skip to main content

Module graphics

Module graphics 

Source
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:

  1. What was transmitted, and where the cursor was. That is terminal state. It belongs to the authority, exactly like a cell.
  2. 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§

GraphicProtocol
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.