Hasty Briefsbeta

Bilingual

Terminal Graphics Protocol

10 hours ago
  • #terminal-graphics
  • #protocol-specification
  • #image-rendering
  • The specification outlines a protocol for rendering pixel graphics in terminal emulators without requiring them to understand image formats.
  • Key design goals include pixel-level positioning, integration with text (including alpha blending and scrolling with text), and optimizations for local client-terminal setups.
  • Demonstrates the protocol with a command example: `kitten icat path/to/some/image.png`.
  • Lists applications utilizing the kitty graphics protocol, such as `awrit`, `blackcat`, `broot`, and libraries like `notcurses` and `rasterm`.
  • Explains how to get window size in pixels and cells using `TIOCGWINSZ` ioctl across different programming languages.
  • Details the graphics escape code format (`<ESC>_G<control data>;<payload><ESC>\`) and its components.
  • Describes transferring pixel data in formats like 24-bit RGB, 32-bit RGBA, and PNG, including compression options.
  • Covers transmission mediums (direct, file, shared memory) and considerations for local vs. remote clients.
  • Explains querying terminal support for the graphics protocol and available transmission mediums.
  • Details displaying images on screen, controlling layout, and using Unicode placeholders for flexible image integration.
  • Introduces relative placements for positioning images relative to others, enhancing flexibility with Unicode placeholders.
  • Describes methods for deleting images, including specific placements or all visible images.
  • Covers animation support, including frame data transfer, controlling animations, and composing frames.
  • Discusses image persistence, storage quotas to prevent denial-of-service, and interaction with terminal actions like resetting or scrolling.