3 Limitations
Thomas Forgione edited this page 2026-09-11 09:47:48 +02:00

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.