Termorq draws images where a terminal or an API sends them. Settings → Inline images turns it on or off. It is on by default.

Shell output

Programs that use the iTerm2 inline image protocol draw in the scrollback. For example, with iTerm2’s imgcat script:

imgcat ~/Pictures/diagram.png

The image appears in place of the escape sequence. Only images marked inline=1 are drawn. A file transfer without it is dropped.

chafa works too:

chafa -f iterm ~/Downloads/me.jpg

chafa sends an uncompressed TIFF, which Termorq decodes and draws as PNG. Other terminal control codes in plain output, such as chafa’s cursor hide and show (ESC[?25l, ESC[?25h), colours and window titles, are hidden instead of showing as stray text like [?25l. Inline images have their own room in the output cap, so a large image is not cut off by the 1 MB text limit.

Dropping files on a tab

Drop an image file (PNG, JPEG, GIF, WebP or TIFF) from your file manager onto the window and it appears in the active tab’s scrollback under its file name, with the same type check and 5 MB limit. Any other file is inserted into the prompt as a path, quoted when it has spaces. In an interactive terminal, every dropped file is typed into the terminal as a path. Drops on the SSH Remote files panel upload the file instead. A Markdown file (.md or .markdown) opens as a Markdown runbook instead, in any tab, and is not inserted as a path.

Interactive terminals

An interactive terminal uses the xterm.js image addon, so both Sixel and iTerm2 images work there:

img2sixel photo.jpg
chafa -f sixel photo.jpg
chafa -f iterm photo.jpg

chafa’s TIFF images are redrawn as PNG before they reach the addon.

A change to the setting applies to interactive sessions started after it.

API and MCP results

Under a JSON result, Termorq shows:

In the resultWhat you see
A data:image/png;base64,… valueThe image
MCP content { "type": "image", "data": "…" }The image
An endpoint whose response is image/png, image/jpeg, image/gif or image/webp{ status, contentType, bytes, image } and the image
An https://…/photo.png URLShow image. Nothing is fetched until you click it
An absolute path such as /tmp/plot.jpg or ~/plot.jpgShow image. The file is read only when you click it

Limits

  • PNG, JPEG, GIF and WebP, decided by the image’s own bytes, not its name or claimed type. SVG is refused, because it can carry script.
  • TIFF only when it is uncompressed 8-bit RGB or RGBA (what chafa sends), up to 4096 × 4096 pixels. Other TIFF shows [image … not shown: …] with the reason, for example compressed TIFF (compression 5) is not supported.
  • 5 MB per image. Larger images show [image … not shown: larger than 5 MB].
  • Eight images per output line or result.
  • Images in the scrollback are kept like any other output. Very long lines are clipped when the tab is saved.