Skip to content

[Feature Request] tui.toml option to disable inline rendering of pasted images #1844

Description

@ntin60775

What feature would you like to see?

A TUI preference to disable inline rendering of pasted/attached images as terminal graphics — e.g. a disable_inline_images = true key in tui.toml — so the TUI always falls back to the text placeholder ([Image: name [image/png] 1920x1080]) instead of drawing the picture via the Kitty graphics protocol or iTerm2 OSC 1337.

Right now, whether images render inline is decided once at startup by capability detection that relies purely on terminal environment variables (KITTY_WINDOW_ID, TERM_PROGRAM, WEZTERM_PANE, GHOSTTY_RESOURCES_DIR, ITERM_SESSION_ID, ...). There is no user-facing switch:

  • tui.toml has no such key (only theme, disable_paste_burst, [editor], [notifications], [upgrade] are parsed).
  • No KIMI_* environment variable controls it either (KIMI_IMAGE_MAX_EDGE_PX / KIMI_IMAGE_READ_BYTE_BUDGET only affect compression before images are sent to the model, not local display).

The only workarounds are stripping the detection variables at launch (env -u KITTY_WINDOW_ID kimi) or running inside tmux — both have side effects unrelated to image display (e.g. kitten commands stop working in that session).

Use cases:

  • Large rendered screenshots are visually disruptive and break scrollback/copy-paste.
  • Some terminals render the graphics protocols glitchily or slowly.
  • Users who simply prefer the compact text placeholder while still attaching the image for the model.

Proposed behavior: when the option is on, pasted images are still attached and sent to the model exactly as today — only the local preview in the terminal falls back to the text placeholder.

Additional information

  • Version: 0.26.0, Linux, kitty terminal (KITTY_WINDOW_ID set).
  • Relevant code (as shipped in the binary): pi-tui/src/terminal-image.tsdetectCapabilities(), renderImage(), and the existing imageFallback() text placeholder, which makes the fallback path look straightforward: force caps.images to null when the preference is set.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions