plotui

Terminal support

Where the pixels are real, and how plotui picks its render path.

plotui draws through the Kitty graphics protocol and never degrades to a fake plot: terminals without support get a notice naming supported terminals.

TerminalPath
Kittyplaceholder
Ghosttyplaceholder
iTerm2 ≥ 3.5direct
WezTermdirect
Konsoledirect
Warpdirect (partial)
Riodirect (partial)
VS Codedirect (partial)
tmuxpassthrough (wrapped escapes)

Placeholder mode composites the image through Unicode placeholder cells — the most robust path where supported. Direct mode places the image at the widget's origin; still full resolution. The widget detects the right path per terminal automatically.

Partial marks terminals whose Kitty-graphics decoders are new and still maturing: plots render, but expect rough edges. VS Code additionally gates images behind its terminal.integrated.enableImages setting, and its decoder replaces same-id images atomically — set PLOTUI_KITTY_REPLACE=1 if you see flicker while interacting.

Override with the environment variable or per widget:

PLOTUI_RENDER=placeholder  # or: direct

Two more escape hatches:

  • PLOTUI_KITTY_REPLACE=1 — skip the delete-before-transmit that stops iTerm2 stacking placements, for terminals whose Kitty decoder replaces same-id images and flickers from the delete (xterm.js addon-image).
  • PlotWidget(..., cell_px=(w, h)) — pin the cell size when the terminal reports none, instead of the detected default.