Table of contents
Limitations
Things papote does not do, most of them on purpose.
The alternate screen
The conversation does not survive in the terminal's scrollback. papote
runs full-screen, so leaving gives the shell back exactly as it was, with
nothing above it. Conversations are on disk instead —
/resume brings one back.
The mouse
The mouse is captured, so the wheel scrolls the conversation. The cost is that a plain drag no longer selects text — hold Shift to select, as in any other full-screen terminal program.
Dragging a file in
Whether a dropped file arrives at all is the terminal's decision, not papote's. A drop is settled between the file manager and the terminal window; papote only ever sees what the terminal then writes into the pty. So there is nothing here to fix when nothing arrives.
Measured on Alacritty 0.17: dropping a picture on a native Wayland
window writes nothing at all, while the same Alacritty started with
WAYLAND_DISPLAY= — its X11 backend — writes the path as a bracketed paste,
which papote attaches like any other pasted path.
Dragging an image out of a browser does not work either way, and cannot: an
image on a web page is not a file on your disk, so what the browser offers is
an http address rather than a path. Copy it instead — right-click, copy
image — and Ctrl-V, which goes through the clipboard as real pixels.
Ctrl-Enter
Ctrl-Enter needs a terminal that speaks the keyboard-enhancement protocol — kitty, foot, ghostty, WezTerm, recent Alacritty. Anywhere else it is indistinguishable from Enter and would send the message instead of opening a line. Alt-Enter works everywhere and does the same thing.
Rendering
- Syntax highlighting is approximate by construction: a tokenizer, not a grammar. See Markdown support.
- No image is ever drawn. papote sends them — see
Images — but a terminal cannot show a JPEG, so one appears
as
[image/jpeg, 120 kB], its type and its weight. - A line wider than the pane is clipped rather than wrapped a second time — the renderer has already wrapped it, and letting the terminal wrap again would break table and code-box alignment.
Elsewhere
- One conversation at a time; no branching, no editing a past message.
- A model's thinking is shown in full or not at all; there is no folding it away once it has arrived. See Thinking.
papote
Getting started
Using it
Under the hood