Repository navigation
Releases: nkapila6/jupytui
Release list
v0.4.0
A big one: data tools, kernels that outlive the UI, remote kernels, git support and marimo.
Data
:varslists the kernel's variables with type, shape and memory.enteron a pandas/polars DataFrame or numpy array opens a full-screen viewer that sorts, filters and pages inside the kernel, so huge frames stay fast.
Stale cells and reactive mode
- Cells you edited show
~, cells whose inputs changed show!(dependencies come from parsing each cell with Python'sast).:runstalereruns them;:set reactivereruns dependents automatically, like marimo.
Kernels
:detachquits but keeps the kernel and running cells going; reopen the notebook to pick it back up.jupytui sessionslists them.:remote host[:dir](or an ssh host in:env) runs the kernel on another machine over ssh and tunnels it back.
Git
jupytui diff a.ipynb b.ipynbdiffs cell by cell.jupytui git setupmakesgit diffreadable andgit mergemerge notebooks cell by cell (conflicts are marked inside the cell).--strip-outputscommits without outputs;jupytui cleanstrips them by hand.
marimo
- Open, run and save marimo
.pynotebooks directly;jupytui convertgoes between .ipynb and marimo.
Editing
/nN*search across cells,:sand:%ssubstitute,zafolds output,gOshows an outline, andinput()/getpass()work.
Install
curl -fsSL https://raw.githubusercontent.com/nkapila6/jupytui/main/install.sh | sh(checks the release checksum, installs to~/.local/bin, no sudo).
Static binaries for macOS and Linux on arm64 and amd64. You need uv on your PATH.
v0.3.0
Plots show up as real images now.
Images
- kitty and Ghostty draw plots at full resolution with the kitty graphics protocol; WezTerm, iTerm2 and foot use sixel.
- Plots are sized like they would be in Jupyter, retina screens included.
- Everywhere else (and inside nvim's terminal or tmux, which don't pass images through) it's still half blocks. Force a mode with
JUPYTUI_IMAGES=kitty|sixel|blocksor:set images=....
Fixes
- Diagnostics wait until you leave insert mode instead of flagging half-typed code.
- The
:envpicker highlights the whole selected row.
Other
- README has a kitty recording at the top;
make demo-kittyre-records it,make demosthe VHS ones.make helplists the targets.
Static binaries for macOS and Linux on arm64 and amd64. You need uv on your PATH.
v0.2.0
Editing got a lot more vim, plus completions, an env picker and proper outputs.
Editing
- Vim inside cells: motions, operators with counts, text objects, visual mode, undo/redo,
.repeat.entergoes into a cell,esccomes back out. - One line numbering for the whole notebook, relative by default.
5jmoves exactly what's shown, across cells, from inside a cell or from the notebook view.:42/42Ggo to line 42. - Flash-style
sjump: type a few characters, then the label. - Code is highlighted while you edit it.
Completions and LSP
- Completions from the running kernel (knows live objects, so
df.shows your columns) and from basedpyright, run throughuvx. - basedpyright diagnostics,
Khover,gdgo to definition, signature help,]d/[d.
Kernels
:envpicks the Python env: project, nearby venvs, conda, uv-installed pythons. ipykernel is layered on by uv, nothing gets installed into the env. The choice is saved in the notebook.
Outputs
- pandas and polars DataFrames drawn as real tables.
- Plots and images drawn inline with half blocks;
gxopens the full image. - Other HTML shows as text.
Export
jupytui export nb.ipynbor:exportwrites a# %%percent-format.pythat jupytext reads back to the same cells.
Static binaries for macOS and Linux on arm64 and amd64. You need uv on your PATH.
v0.1.0
First release. Open a notebook, run cells against an ipykernel started through uv, edit with vim-style keys or in your own nvim, save in Jupyter's format.
Static binaries for macOS and Linux on arm64 and amd64. Untar, put jupytui on your PATH, and make sure uv is installed.
Known gaps: images and HTML outputs show as placeholders, input() isn't supported, Python kernels only.