Terminal cards
A terminal card runs your login shell in the card’s directory (zsh gets the most, see Which shell). Every key without Cmd goes to it untouched, so vim, tmux and readline keep working.
Font size
Section titled “Font size”Cmd = and Cmd - make the terminal font one point bigger or smaller, in every terminal card at once, and the size is saved. “Terminal: default font size” in the palette goes back to 14. The canvas zoom is Cmd + scroll or a pinch.
Cmd F searches the card you are on, the whole scrollback included. The bar opens inside that card, at its top right under the label. Every match is highlighted, the bar shows a count, and it starts on the newest match, so Enter steps up the output. Cmd G and Cmd Shift G step while the bar is open. Cmd E searches for the selected text.
Lowercase searches ignore case; a capital letter makes the search match case. Escape closes the bar and leaves the current match selected where it is, so Cmd C copies it.
Visual mode
Section titled “Visual mode”Cmd Shift C puts a keyboard cursor over the card’s output and scrollback, for copying without the mouse. The card wears a VISUAL tag, and nothing you type reaches the shell while it is on.
- Move with the arrows,
AltorCmd+ arrows, Home/End and Page Up/Down, or with vim’sh j k l,w b e,0 $,g G. Shift+ a move selects, the Mac way.v,VandCtrl Vstart a character, line or block selection, the vim way.Cmd Corycopies and keeps you in the mode.Escapeis the only way out.
Cmd Shift + arrow stays the canvas’s selection key, so select to a line end with Shift End.
Selecting on the command line
Section titled “Selecting on the command line”In zsh, the line you are typing selects like a Mac text field:
Shift Left/Right,Shift Alt Left/RightandShift Home/Endselect.- Typing, pasting,
BackspaceorDeletereplace the selection. Cmd Ccopies it andCmd Xcuts it. A mouse selection in the output wins over it forCmd C.Cmd BackspaceandCmd Deletedelete to the start and the end of the line, in Claude Code too.
This comes from the shell integration the app installs, so it works only in shells started after you installed or updated the app, and only in zsh. There is no mouse selection or click-to-move on the command line.
Closing a card
Section titled “Closing a card”Closing a terminal card does not kill its program on the spot:
- A build, or an agent in the middle of a turn, runs to its end. Anything that has been quiet for a minute (no output, no CPU under its shell, no agent turn) is then ended.
- A closed card whose agent is waiting for you is kept until the app quits. The status bar says so, “#7 … (closed) is waiting for you: Alt+T”, and
Alt Treopens it. At any other timeAlt Tgoes to the terminal as usual. Cmd ZorCmd Shift Treopen the card with its program still live and the screen redrawn from its scrollback, as long as it has not ended yet.
Quitting the app is different. It does not end any open card: each shell runs in its own iftd, so it keeps running, and the next launch reconnects every card to its shell with the screen redrawn from its scrollback. A shell ends only when you exit it, when you close its card and it stays quiet for a minute, or when the Mac restarts (the card then shows its saved output, a [session lost] line and a fresh shell).
A card you closed that was still running when you quit is not kept. The next launch ends every shell that no saved card claims, so it ends then, not at the quit.
This needs the default backend (terminal.backend: "daemon"). Under pty or tmux a closed card’s program ends at once.
A terminal in its own window
Section titled “A terminal in its own window”Cmd Shift O takes the focused terminal card into a window of its own. The card keeps its place on the canvas as an empty card that says “In its own window”, and keys sent to it on the canvas do nothing while it is out. The window’s terminal refits when you resize the window. Close the window (Cmd W or the red button) and the card gets its canvas size back.
In the window, Cmd = and Cmd - change the font size, Cmd K clears, Cmd Shift C is visual mode, and copy, paste and Cmd Left / Cmd Right work as in a card. Find and the command palette are not there yet. Only terminal cards can go out for now.
Redraw
Section titled “Redraw”Cmd R asks the program in the focused terminal card to paint its screen again. It clears a scrambled Claude Code card and leaves the scrollback alone. “Terminal: redraw” in the palette and Redraw in the card’s right-click menu do the same. In a window opened with ift join, it makes the card join its session again, which has the same effect.
Which shell
Section titled “Which shell”A card starts the shell in $SHELL. Only zsh gets the shell integration: the state colours for plain commands, one history file per card, and the Shift and arrow selection on the command line. Another shell runs as a plain terminal. Agent hooks still report from it, because they do not depend on the shell.
If $SHELL is bash and you want zsh, run chsh -s /bin/zsh and log in again. Or set "terminal.shell": "/bin/zsh" in settings.json; that applies to new cards only. Support for bash, fish and nushell is planned.
Settings worth knowing
Section titled “Settings worth knowing”These go in settings.json; every setting is on the settings reference.
"terminal.copyOnSelect": truecopies a mouse selection the moment you let go."terminal.scrollMultiplier"sets scroll speed, from 0.1 to 10 (default 1)."terminal.padding"is the space between a card’s edge and its text, 0 to 60 (default 6). Open cards resize to it at once."terminal.env": ["EDITOR=ift"]adds environment variables to new cards."terminal.fontFamily"is read as a list, like["JetBrains Mono", "Menlo", "monospace"]: a family that is not installed is skipped and the next one is used. A list that ends withmonospacegets an installed monospace font when no named family is there. Before, the first name was used even when it was missing."terminal.shell"takes arguments too, like"/bin/zsh -l".
Cursor colour
Section titled “Cursor colour”A block cursor draws the letter under it in the theme’s cursor text colour, or black or white when that would not contrast. terminal.cursorColor and editor.cursorColor (a hex colour such as "#ff9900"; empty follows the theme) set the cursor’s colour, and the letter under it follows.
Links and paths
Section titled “Links and paths”Hold Cmd over a link or a path that exists and it underlines; Cmd + click opens it beside the card, a file in an editor card and a URL in a browser card. A double-click on a link selects the whole address. Links a program marks itself (OSC 8: ls --hyperlink, rg --hyperlink-format, gcc, and the markdown links in an agent’s reply) are underlined at rest and open on Cmd + click, whatever their visible text says; only http and https addresses open, since the text of a link can lie. Every new terminal card sets FORCE_HYPERLINK=1 so Claude Code prints real links; a card that is already open keeps its old environment, and "terminal.env": ["FORCE_HYPERLINK=0"] turns it off. Issue and pull request numbers are links too: in a card whose directory is a GitHub checkout, #349 opens that issue or pull request, and owner/repo#349 works in any card. A bare number needs a space, bracket or quote before it and no letter after it. Holding Cmd over any link draws a strong double underline and turns the pointer to a hand. Dropping a file from the Finder onto a terminal pastes its shell-escaped path.
Claude Code’s fullscreen mode
Section titled “Claude Code’s fullscreen mode”Claude Code’s /tui fullscreen mode does not work properly in infiniterm: most of it misbehaves, and there is no fix planned. Run /tui default in the Claude Code session, which is the way to use it here.
Privacy prompts
Section titled “Privacy prompts”A program in a card can use what macOS guards: Photos, Contacts, Calendars, Reminders, the camera, the microphone, speech recognition, your location, Bluetooth, other apps (Automation), the Desktop, Documents and Downloads folders, Accessibility, Screen Recording, Input Monitoring and the local network. The first time a program asks, macOS shows its usual dialog. Nothing is asked when you install or launch infiniterm, and infiniterm itself uses none of them.
The grant is listed under infiniterm in System Settings > Privacy & Security, because macOS sees the app, not the program in the card. Each one is asked once; change it there later.
Full Disk Access is never asked for. If a script needs it, for example to read ~/Library/Mail, add infiniterm by hand in System Settings > Privacy & Security > Full Disk Access.
HomeKit and Siri are not available to programs in a card.