Settings
This page is generated from the app’s own tables on every build of the site, so it matches the release it was built with.
Settings live in ~/.config/infiniterm/settings.json. Beside it, settings.default.json lists every setting with its default and is rewritten at every launch, so edits there are lost; copy a line into settings.json and change it there. Keys are flat and dotted, VS Code style: "terminal.fontSize": 16 is a whole override. Comments and trailing commas are allowed.
Default: "Catppuccin Mocha"
Terminal colour scheme, by file name without the extension, from ~/Library/Application Support/dev.ekinertac.infiniterm/themes/. Five hundred schemes are put there on first launch; any .itermcolors file dropped in is picked up too. “Switch theme” in the palette writes it here.
startingDir
Section titled “startingDir”Default: ""
Where the first card’s shell starts. Empty means your home directory. Cards opened afterwards inherit the directory of the card they were opened next to, so this is the root of that chain rather than an override.
terminal
Section titled “terminal”The terminals themselves. Changes reach cards that are already open.
terminal.shell
Section titled “terminal.shell”Default: ""
Program to run in a new card. Empty uses your login shell ($SHELL). Only affects cards opened afterwards; a running shell is not restarted.
terminal.backend
Section titled “terminal.backend”Default: "daemon"
Where a card’s shell lives: “pty”, “tmux”, or “daemon”. pty is a plain local shell that dies with the window. tmux keeps the shell running when infiniterm quits, and the same sessions are reachable with tmux attach -t infiniterm from any terminal. Each card is one tmux window, but tmux is a second terminal emulator: a program that redraws INLINE, like Claude Code, can come out with two lines in one row, because two emulators are tracking one program and a redraw that never clears never recovers from a disagreement. Shells and full-screen programs are fine. daemon, the default, runs one small iftd sidecar per card: it parses no terminal output at all, so a reattach after infiniterm quits replays the exact bytes our own emulator would have seen live, with no second emulator to disagree with. ift sessions and ift attach <id> reach a daemon card’s shell even with infiniterm not running. Neither tmux nor daemon is the default yet, pending more use.
terminal.cursorStyle
Section titled “terminal.cursorStyle”Default: "block"
“block”, “bar”, or “underline”.
terminal.cursorBlink
Section titled “terminal.cursorBlink”Default: true
Whether the cursor blinks.
terminal.fontFamily
Section titled “terminal.fontFamily”Default: "ui-monospace, Menlo, monospace"
Any monospace family installed on the system. A Nerd Font is needed for the powerline segments and icons most shell prompts draw.
terminal.fontSize
Section titled “terminal.fontSize”Default: 14
In points. The cell size, and so the card grid, follows it.
terminal.fontWeight
Section titled “terminal.fontWeight”Default: "normal"
Weight for normal text: “normal”, “bold”, or 100-900.
terminal.fontWeightBold
Section titled “terminal.fontWeightBold”Default: "bold"
Weight for text the shell asks to be bold.
terminal.letterSpacing
Section titled “terminal.letterSpacing”Default: 0
Extra pixels between characters; negative tightens. Narrow faces such as Iosevka read loosely tracked at 0, since xterm rounds the cell width up.
terminal.lineHeight
Section titled “terminal.lineHeight”Default: 1.2
Multiple of the font size. 1.2 is tighter than the 1.25 a font asks for.
terminal.scrollback
Section titled “terminal.scrollback”Default: 10000
Lines kept per card. Costs memory per card, not per app.
terminal.sessionBuffer
Section titled “terminal.sessionBuffer”Default: 4
MiB of raw output the “daemon” backend keeps per card, replayed on reattach. Ignored by “pty” and “tmux”. Turn it down to shrink the worst case of many cards each holding a full buffer; turn it up if a card’s early output is gone by the time you reattach to it.
terminal.decoyCommand
Section titled “terminal.decoyCommand”Default: "command log stream --style compact"
What Cmd+Shift+H runs over the focused card when somebody is reading your screen: a program that looks like work and says nothing. The card underneath keeps running unseen; Enter or Escape brings it back. “ping 8.8.8.8” and “top” are the other classics. It runs through a login shell, not an interactive one, so a PATH set in .zshrc is not there: give a Homebrew program its full path, cron’s rule (“/opt/homebrew/bin/htop”).
New cards: how big they are and where they start.
cards.width
Section titled “cards.width”Default: 0
Width in 25px grid cells, or 0 to size new cards from the window: the canvas at 100% minus a margin, at most 80 cells wide. 69 is 1725px, a full iTerm2 window. Existing cards keep the size they have.
cards.height
Section titled “cards.height”Default: 0
Height in 25px grid cells, or 0 to size from the window. 80 is 2000px.
cards.shape
Section titled “cards.shape”Default: "16:9"
The shape of a card sized from the window: a ratio like “16:9” or “4:3”, or “window” for the window’s own shape. 16:9 keeps every card the same shape on every Mac and after a window resize; “window” makes one card fill the window exactly when fitted. Used only where width or height is 0.
cards.inheritDirectory
Section titled “cards.inheritDirectory”Default: true
Whether a card carved out of another one keeps its directory. That is a split (Cmd+D, Cmd+Shift+D) and a card opened onto what the active card is showing. A plain new card (Cmd+T, Cmd+Alt+T) always starts at startingDir: a new card is a new place to work.
canvas
Section titled “canvas”The canvas itself: zooming and panning.
canvas.zoomSensitivity
Section titled “canvas.zoomSensitivity”Default: 1
Multiplier on Cmd+scroll zooming. Below 1 is slower, above is faster.
canvas.momentum
Section titled “canvas.momentum”Default: true
Whether the canvas keeps gliding after you release a pan drag.
editor
Section titled “editor”Editor cards. Font and colours follow the terminal; these are the extras. The selection colours apply to terminals too, so both select alike.
editor.highlightLine
Section titled “editor.highlightLine”Default: true
A wash behind the line the cursor is on.
editor.selectionColor
Section titled “editor.selectionColor”Default: ""
Behind selected text, as a CSS colour. Empty is the theme’s yellow: a highlighter pen, visible on any scheme.
editor.selectionTextColor
Section titled “editor.selectionTextColor”Default: ""
Selected text itself. Empty is the theme’s background, dark on the yellow.
editor.wrap
Section titled “editor.wrap”Default: "prose"
Long lines. “prose” wraps .md and .txt and leaves code alone; “always” and “never” do what they say.
browser
Section titled “browser”Browser cards. The page stays at its own size whatever the canvas zoom is.
browser.zoom
Section titled “browser.zoom”Default: 1
Page zoom a new browser card opens at; 1 is actual size, 0.3 to 3. The browser zoom commands change it per card while the page is focused.
browser.searchEngine
Section titled “browser.searchEngine”Default: "https://www.google.com/search?q=%s"
Where the omnibox (Cmd+L) sends a search; %s is the encoded query. A template without %s is ignored: it would drop what you typed.
browser.suggestions
Section titled “browser.suggestions”Default: false
Ask Google to complete what you type in the omnibox. OFF by default: every keystroke goes to Google while it is on. Nothing else in this app talks to the network on its own.
browser.engines
Section titled “browser.engines”Default: []
Extra sites Tab can scope a search to, added to the nine built in (Google, GitHub, YouTube, Wikipedia, Stack Overflow, MDN, npm, crates.io, docs.rs). Each is {keyword, name, searchUrl}, where keyword is what you type and searchUrl is a template with %s. A keyword that is already built in replaces it.
The app’s own chrome: labels, the status bar, dimming.
ui.inactiveDim
Section titled “ui.inactiveDim”Default: 0.45
How much an unfocused card’s text is dimmed, 0 to 1. Painted as a scrim over the text rather than as opacity, which would blur it.
ui.unfocusedDim
Section titled “ui.unfocusedDim”Default: 0.4
How much the whole canvas is dimmed while another app is in front, 0 to 1. Says at a glance that keys are going elsewhere. 0 turns it off.
ui.cardLabelSize
Section titled “ui.cardLabelSize”Default: 15
Screen pixels, before the Cmd+Shift+= multiplier; the label is drawn at 1.2x this. Card labels have to survive being zoomed out to 10%, which is why this is separate from the others.
ui.groupLabelSize
Section titled “ui.groupLabelSize”Default: 15
Screen pixels. A group name sits above a block of cards.
ui.statusBarSize
Section titled “ui.statusBarSize”Default: 11
Screen pixels. The status bar is always at arm’s length.
ui.animations
Section titled “ui.animations”Default: true
Zooming, panning and card swaps animate rather than jumping. The system “reduce motion” setting switches them off regardless of this.
ui.showFps
Section titled “ui.showFps”Default: true
Frame counter in the status bar, orange below 50. It holds a permanent animation frame loop, so the app never fully idles while it is on.
ui.fullscreen
Section titled “ui.fullscreen”Default: "cover"
What the green button and Cmd+Ctrl+F do. “cover” makes the window cover the whole screen, the strip beside a MacBook’s notch included, with the menu bar and Dock hidden until the pointer reaches them. “native” is macOS’s own full screen: a Space of its own, content starting below the notch.