Repository navigation
v1.0.0-publish
plotty v1.0.0
Inline matplotlib plots in your terminal — rendered as sixel in a dedicated
tmux pane, including over SSH. No browser, no X11, no Jupyter server.
Highlights
- Terminal-native matplotlib backend.
import plotty; plotty.enable()and
your figures show up in a tmux pane next to your REPL — the notebook experience
for atmux+ipython(+nvim) workflow. - Works over SSH, identically to local. Only rendered sixel bytes cross the
wire; the control plane (signals, pidfile, image hand-off) stays host-local. - Nested tmux support (
local tmux → ssh → remote tmux) with a one-line,
one-time tmux config. - Built-in, dependency-free sixel encoder (pure stdlib + numpy) — works out
of the box with zero external tools. Auto-detectschafa/img2sixel/
ImageMagick for higher-quality output when available. Sixel-only, by design,
for SSH robustness. - Two display modes: a viewer process that auto-redraws on pane
resize/zoom (default in tmux), and a lightweight inline mode that pipes sixel
straight to the pane's tty or your stdout (works without tmux too). - Auto-display in IPython after every cell — no
plt.show()needed. - Tunable display —
size(width in cells) anddpi(source resolution),
via args orPLOTTY_*env vars. - Startup health check that flags missing tmux sixel support and tells you
exactly what to fix. - Tiny footprint: Python ≥ 3.7, only
matplotlib+numpyrequired.
Quick start
import plotty
plotty.enable()
import matplotlib.pyplot as plt
plt.plot([1, 4, 9, 16]) # appears in the plot paneRequirements: Python ≥ 3.7 · tmux ≥ 3.4 (built with sixel) · a sixel-capable
terminal (WezTerm, iTerm2, xterm, xfce-term, …).