Repository navigation
v0.1.26
The rest of the kitty graphics protocol, sixel and iTerm2 images, and a terminal that answers the pixel size queries programs probe with before they send one.
New
- The terminal answers
CSI 14 tandCSI 16 tfrom the cell sizeEmulator::set_cell_sizemeasured, and every reply leaves in the order its query arrived. - Kitty placements by id:
a=pplaces a stored image,pnames a placement so one image can hold several, andItransmits and names an image by number, echoed in the reply. Every delete carries out its target —a,i,n,c,p,q,x,y,z,r— and an upper-case one frees the data of each image it leaves with no placement. - Kitty display keys:
zlayers an image over the text, under it, or under non-default cell backgrounds;x,y,w,hcrop the source;X,Yoffset it inside its first cell;corralone scales by the image's aspect, and both letterbox it. - Kitty payloads compressed with zlib (
o=z), inflated whole and held to the same 64 MiB ceiling as an uncompressed one. - Kitty Unicode placeholders: a virtual placement (
U=1) is shown wherever the text holdsU+10EEEEcells naming it, which is the path multiplexers take.kitty::PLACEHOLDERis the character. - Kitty file, temporary file and shared memory transmission (
t=f,t=t,t=s, withOandS), off until a host callsEmulator::set_local_media(true). Paths resolve through symlinks,/proc,/sysand/devare refused, only regular files are read, and every failure is the oneEBADFreply. - Kitty relative placements (
P,Q,H,V), found from their parent each frame and deleted with it, refused withENOPARENT,ECYCLE,ETOODEEPpast a chain of eight, orEINVALfor a virtual one. - Kitty animation:
a=fadds or edits a frame over a blank, colored or earlier canvas,a=asets the state, current frame, loop count and gaps,a=ccomposes a rectangle of one frame onto another, andd=fdeletes a frame.view::Imagesplays them and schedules a repaint for when the next frame is due. - Sixel images, placed at the cursor the way
a=Tplaces a kitty image.Emulator::set_advertise_sixel(true)answers DA1 asCSI ? 62 ; 4 ; 22 cfor programs that look for sixel there before sending one. - iTerm2 inline images (
OSC 1337 ; File=), sent whole or in parts betweenMultipartFileandFileEnd, sized in cells, pixels or percent, withpreserveAspectRatio. An animated GIF plays.
Changed
terminal::scannerholdsScanner,Segmentand the newIterm, which were inkitty.Segmentreports sixel data, iTerm2 files andCSI 16 talongside kitty commands and mode 2026.Segment,Iterm,kitty::Action,kitty::Target,kitty::Effect,kitty::Command,kitty::Display,kitty::Reply,kitty::Delete,emulator::Placementandview::PlacedImageare#[non_exhaustive].kitty::Store::applyanswers anEffect— a placement or a delete for the emulator to carry out — rather than aDisplay, andkitty::Replyis a struct carrying theIandpit echoes.Command::compressedisCommand::compression.emulator::Placementcarries the placement'sframe,sourceandz.view::PlacedImagecarries them too, withid,frame_index,next_frameandwake; itsimageis the one frame to paint.- A lower-case
d=aord=itakes placements off the screen and keeps the image data, so the image can be placed again; the upper-case form frees it. - An image of the default z-index paints over the text rather than under it, as the protocol has it.
- New dependencies:
miniz_oxide, already in the tree underpng, andlibcon unix.
Fixed
- Several placements can share one top-left cell; placing a second one there no longer drops the first.
a=qanswers what the same transmission would — a refused medium, an unreadable file, a payload that does not fit its size — and stores nothing.