Album art
cover_mode = "auto" picks the best renderer available:
- Kitty graphics. Placements are sized in cells, so the terminal does the scaling and no pixel measurement is involved. This is the only protocol immune to the sizing problems below, and it is preferred wherever it works: kitty, WezTerm, Ghostty, Konsole, and zellij from 0.45.0 onward.
- Sixel. Takes pixel dimensions, so it needs the terminal’s cell size in pixels. Only used when that size is pinned or successfully measured.
- Half-blocks. Two pixels per cell, drawn into the normal cell grid. Always correctly sized, works anywhere, just softer.
Support is confirmed by the protocol’s own capability query rather than
guessed from TERM_PROGRAM — a wrong guess would dump kilobytes of base64
across the screen as literal text.
b shows and hides the art. Which renderer is used is a setting, not
something to cycle past on the way to turning it off: set cover_mode, or
pick it from the options pane.
auto only picks sixel when the cell size has been pinned by hand, because
nothing reports it reliably — under a multiplexer the numbers are simply
wrong. Half-blocks are always correctly sized, so they are the safe default.
Fixing the scale
Section titled “Fixing the scale”If sixel art is the wrong size, [ and ] resize it by eye while you watch,
and the result is saved. Or pin it directly:
cell_px = [16, 32] # whatever your terminal actually usesBehind the menu
Section titled “Behind the menu”Pixel images are not part of the cell grid, so nothing drawn into the terminal buffer can cover them — an overlay would render underneath. While the escape menu is open, ytkew takes the image off screen rather than substituting coarse block art, which would read as the picture going blurry.