Most lines are non-interactive: the app starts the shell, streams the output, and returns to the prompt. A program that needs a keyboard opens a pseudo-terminal in the tab instead. On Windows that terminal is ConPTY. The screen is drawn with xterm.js.

These open a terminal on their own:

  • Editors and pagers
  • ssh and sudo
  • top
  • git commit without -m, and git add -p
  • docker exec -it
  • A REPL started without a script, such as python, node, or psql mydb

@shell opens an interactive shell in the tab until you type exit.

Keys, Ctrl+C, and Ctrl+L go to the program. Ctrl+Shift+C copies. Ctrl+Shift+V pastes. End session on the terminal’s header stops it. When it exits, the tab is back to the normal prompt with one line saying how it ended.

Switching tabs keeps the session running. cd inside the session does not change the folder the next normal line uses.

Settings → Interactive programs turns detection off. With it off, everything runs as plain output, including the programs in the list above.