Skip to content

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: "Violite"

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.

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.

The terminals themselves. Changes reach cards that are already open.

Default: ""

Program to run in a new card, with any arguments (“/bin/zsh -l”, “fish –private”). Empty uses your login shell ($SHELL). Only affects cards opened afterwards; a running shell is not restarted.

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.

Default: "block"

“block”, “bar”, or “underline”.

Default: true

Whether the cursor blinks.

Default: ""

The cursor’s colour as a hex colour (“#ffcc00”). Empty follows the theme. The letter under a block cursor is drawn in black or white, whichever reads.

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.

Default: 14

In points. The cell size, and so the card grid, follows it.

Default: "normal"

Weight for normal text: “normal”, “bold”, or 100-900.

Default: "bold"

Weight for text the shell asks to be bold.

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.

Default: 1.2

Multiple of the font size. 1.2 is tighter than the 1.25 a font asks for.

Default: 10000

Lines kept per card. Costs memory per card, not per app.

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.

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”). On Windows it runs through PowerShell instead, so write it as PowerShell.

Default: false

Copy a mouse selection to the clipboard as soon as it is made.

Default: false

Swap what Cmd+click and Cmd+Shift+click do on a URL. Off: Cmd+click opens a browser card beside the terminal, Cmd+Shift+click your default browser. On: the other way round.

Default: 1

Scroll speed: lines per wheel step, times this. 0.1 to 10.

Default: 6

Space between a card’s edge and its text, in points at 100% zoom. 0 to 60.

Default: []

Extra environment for every new card, as “KEY=value” strings, e.g. [“EDITOR=ift”, “LANG=en_US.UTF-8”]. Cards already open keep theirs.

New cards: how big they are and where they start.

Default: 0

Width in 25px grid squares of canvas (not text columns), or 0 to size new cards from the window: the canvas at 100% minus a margin, at most 80 squares wide. 69 is 1725px, a full iTerm2 window. At terminal.fontSize 19 a square is about 2.6 text columns, so 50 is about 130 columns. Existing cards keep the size they have.

Default: 0

Height in 25px grid squares of canvas (not text rows), or 0 to size from the window. 80 is 2000px; at terminal.fontSize 19 and lineHeight 1.2 that is about 87 text rows.

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.

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.

Default: false

Whether a new terminal card (Cmd+T, Cmd+Alt+T) starts in the directory of the terminal card you opened it from, instead of startingDir. Off by default. From any other kind of card, or with nothing selected, it still starts at startingDir.

Default: 25

The space between cards, in pixels (0 to 200, 25 by default). New cards, splits, growing a card, Canvas: tidy and group frames all use it. Cards already on the canvas stay where they are; a different gap shows as cards are added or tidied.

The canvas itself: zooming and panning.

Default: 1

Multiplier on Cmd+scroll zooming. Below 1 is slower, above is faster.

Default: true

Whether the canvas keeps gliding after you release a pan drag.

Editor cards. Font and colours follow the terminal; these are the extras. The selection colours apply to terminals too, so both select alike.

Default: true

A wash behind the line the cursor is on.

Default: true

Offer words from the file and the card’s other tabs while you type in an editor (two letters open the list, Tab takes the top one, Enter only after you moved the row). Inside comments and strings of a file with a grammar, words are not collected. settings.json and files that name a JSON schema complete their own keys regardless.

Default: true

An editor card opened on a folder starts with a blank, unsaved buffer in its first tab. Off: the card has no buffer, only the folder’s name over the tree, and the pane stays empty until you open a file.

Default: false

Icons in the editor’s file tree: a closed or open folder in place of the arrow, and an icon for each file’s type, as VS Code’s Material Icon Theme draws them. Off by default.

Editor cards. Font and colours follow the terminal; these are the extras. The selection colours apply to terminals too, so both select alike.

Default: false

Run the file’s formatter over an editor’s text when you save it (Cmd+S). Off by default, because it rewrites the file and runs a program. The formatter is Prettier for JavaScript, TypeScript, TSX, JSON, CSS, SCSS, HTML, markdown and YAML, rustfmt for Rust, gofmt for Go and black for Python, found in the project’s node_modules/.bin, on PATH or in the usual Homebrew and cargo folders. A formatter that is missing, fails or takes longer than eight seconds leaves your text as it is and the file is saved anyway, with a note in the status bar. Only files on this machine.

Default: false

Ask a language server for completions while you type in an editor. Off by default: a server is an external program (rust-analyzer, typescript-language-server, pyright, gopls) you install yourself, and rust-analyzer on a large crate holds a lot of memory. A server starts when you first type in a file of its language and stops when the last tab of that language closes; with this off nothing runs. Used for Rust, JavaScript, TypeScript, TSX, Python and Go; markdown, JSON, YAML and TOML keep their own completions. Only files on this machine.

Editor cards. Font and colours follow the terminal; these are the extras. The selection colours apply to terminals too, so both select alike.

Default: ""

Behind selected text, as a CSS colour. Empty is the theme’s yellow: a highlighter pen, visible on any scheme.

Default: ""

Selected text itself. Empty is the theme’s background, dark on the yellow.

Default: ""

The caret’s colour as a hex colour. Empty follows the theme.

Default: "prose"

Long lines. “prose” wraps .md and .txt and leaves code alone; “always” and “never” do what they say.

Browser cards. The page stays at its own size whatever the canvas zoom is.

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.

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.

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.

Default: true

Let a browser card open DevTools (the palette’s Browser: open DevTools). ON by default. It opens a debugging port on a random loopback port; only our own DevTools page may connect to it, a web page cannot. A program on this Mac can still attach to the port: turn it off if that matters to you. Read at launch: restart after changing it.

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.

Default: true

Open the socket that ift join <host> on another Mac reaches through ssh, so it can show and drive this canvas. The socket is owner-only, like the one ift send uses, and ssh is the only way in. Read at launch.

Default: "https://ntfy.sh"

The ntfy server a phone push is posted to when a card needs you. Push is off until the file ntfy-topic exists in this folder with one line: your topic. The topic is a secret (anyone who knows it can read and post), so it is not a setting and must not be committed. Use 20 or more random characters.

Default: true

Push when a card starts waiting on you.

Default: true

Push when a card fails.

Default: true

Push when a card finishes.

Default: true

No push while the infiniterm window is in front: you can see the card colours.

The app’s own chrome: labels, the status bar, the grid. How it LOOKS (fonts, window, background, card corners) is not set here but in a ui theme file, ui-themes/<name>.json beside this one; ui.theme picks it.

Default: "default"

Which ui theme gives the look: the file name in the ui-themes folder, without .json. “default” is ui-themes/default.json (the built-in look if the file is gone). A name with no file keeps the look you had and shows a notice. “UI theme: switch…” in the palette previews them and writes it here.

Default: ".SystemUIFont"

Font family for the app’s own chrome. .SystemUIFont, the default, is the platform’s native app UI font. A comma-separated list uses the first real name.

Default: 13

Base chrome size in screen pixels, before the Cmd+Shift+= multiplier. Workspace tabs, card tab strips, palettes and dialogs derive their sizes from it.

Default: "normal"

Normal chrome weight: “normal”, “bold”, or a number from 100 to 900.

Default: "bold"

Emphasised chrome weight: “normal”, “bold”, or a number from 100 to 900.

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.

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.

Default: 1

How opaque the window’s own fill is, 0.1 to 1: the canvas background, title bar and status bar. Below 1 the desktop shows through; cards stay solid.

Default: false

Blur what is behind the window. Only does anything while ui.windowOpacity is below 1.

Default: []

A picture behind the canvas: the name of one that comes with the app (“dusk”, “aurora”, “ember”) or a path to your own, “” allowed. Empty for none. A list of them rotates: [“dusk”, “/Pictures/lake.jpg”]. It is drawn opaque, so ui.windowOpacity does not show the desktop through it. Only the picture on screen and the next one are kept in memory, a 4K one is about 65 MB, so a long list costs no more than a short one.

Default: "cover"

“cover” fills the window and crops the edges; “contain” shows the whole picture; “top-left” fills like cover but pins the picture’s top-left corner to the window’s, so only the right and bottom are cropped; “actual-size” draws it at its own size from the top-left corner and never rescales it when the window is resized.

Default: 300

Seconds each picture of a ui.backgroundImage list stays before the next fades in. 5 to 86400.

Default: 2

Seconds the crossfade between two pictures takes; 0 changes at once. A fade is an animation, so it is a cut while ui.animations is off or the system reduces motion.

Default: false

Ctrl+Tab switches between the current workspace’s cards only, and the status bar counts this workspace’s cards, not every workspace’s. The palette still lists every card, so it stays the way to jump to another workspace.

Default: ""

A colour for the title bar and the Dock icon: a name (red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, pink, rose, gray) or a hex code like 3b82f6. Empty for none. The palette’s “Window: change the title bar and Dock colour” sets it. A window opened by ift connect wears its host’s.

Default: 1

How opaque a card’s background is, 0.1 to 1. Text stays solid, so it never gets blurry; below 1 the canvas, the grid and ui.backgroundImage show through. Cells a program colours itself (vim’s status line) and browser cards stay opaque.

Default: []

Paint a card’s background as a gradient: two colours, [“#3a2c27”, “#1f1a18”] (#rgb, #rrggbb or #rrggbbaa; a stop’s own alpha is kept). [] keeps the flat fill. ui.cardOpacity multiplies the alpha of both stops, so the gradient stays translucent over ui.windowOpacity and ui.windowBlur. Browser cards stay flat.

Default: 180

The gradient’s direction in degrees, 0 to 360: 0 points up, 90 right, 180 (the default) runs from the first colour at the top to the second at the bottom. Only used when ui.cardGradient is set.

Default: 0

The focus ring’s width in screen pixels, 0 to 10, at every zoom. 0, the default, keeps the built-in 3, 4 or 5 pixels by zoom. The strip of canvas between the card and its ring is as wide as the ring, so a thinner ring also closes that gap.

Default: 0

Round the corners of cards and group frames, in pixels at 100% zoom (0 to 40). 0, the default, keeps them square. The radius scales with the zoom like the card.

Default: 1.5

The canvas scale Cmd+1 zooms to on a terminal card that is already fitted: 1.5 is 150%, with the card’s bottom at the window’s bottom, so you read the prompt and the newest lines larger. Cmd+Up and Cmd+Down pan along the card, Cmd+1 or Cmd+2 leaves, and typing returns the view to the bottom. 0 turns it off: a second Cmd+1 does nothing new. 1.1 to 4. It was called ui.readZoom, which still works.

Default: 150000

How many terminal cells (text columns times rows, not cards.width squares) may be on screen, across every visible card, before the canvas draws all of them as bars instead of text. Default 150000, about eleven full cards. A card of cards.width 50 by cards.height 80 holds about 11000 at terminal.fontSize 19, so twelve need about 130000. A window covered edge to edge in cards reads down to about 82% zoom, and the limit grows with the window. Each cell costs at most 50 nanoseconds a frame, so 150000 is under 8 ms while the canvas moves; raise it until zooming gets slow. 1000 to 5000000.

Default: 7

How many device pixels tall a font must be on screen before its text is drawn; below that every card draws bars instead. Default 7: with terminal.fontSize 19 that is 37% zoom on a 1x screen, so a canvas of 20 cards zoomed out to 34% is bars whatever ui.glyphBudget says. 4 draws the text down to about 21% (tiny, but you see its shape). A retina screen keeps a floor of 4.5 points unless this is lower. 2 to 20.

Default: false

Off (the default): every card draws its text at every zoom, however small and however many cards are on screen. On: a card draws faint bars instead of text when its font is smaller than ui.minTextPx or more than ui.glyphBudget cells are on screen, which keeps the canvas fast on a slow Mac. Measured on an M4 Mac mini, 18 cards printing at once while zooming: about 45 frames a second with text, and no faster with bars.

Default: true

Draw the canvas grid. Off leaves the canvas background plain.

Default: 48

Screen pixels left around a card or cluster when it is fitted (Cmd+1, Cmd+2, Cmd+3). 0 lets a card touch the window’s edges.

Default: false

Let a fit zoom past 100% so a card fills the window. Off: a fit never magnifies, and a card smaller than the window sits in open canvas.

Default: true

Cmd+1 on a card that was split frames the whole slot, both halves together. Off: it fits the card itself and fills the window with it.

Default: 15

Screen pixels, before the Cmd+Shift+= multiplier, at 60% zoom and closer; 1.1x below 60% and 1.45x below 25%, so a name still registers zoomed far out. Separate from the other sizes for that reason.

Default: "top right"

The corner of a card its label sits in: “top right”, “top left”, “bottom left” or “bottom right”. An ssh chip moves to the other side of the same edge.

Default: false

No label on a maximised card: it fills the window and the status bar names it.

Default: false

No label on the card Cmd+1 fitted to the window, like ui.hideLabelWhenMaximised does for a maximised one, nor on the only card of a workspace. A ui theme key.

Default: "default"

The picture in the Dock: “default” (four outlined cards) or “filled”. A ui theme key. The Finder and Launchpad icon stays the default: a running app cannot change it.

Default: false

No “build N” at the right end of the status bar.

Default: false

No version number (like 0.6.9) at the right end of the status bar.

Default: 15

Screen pixels. A group name sits above a block of cards.

Default: 11

Screen pixels. The status bar is always at arm’s length.

Default: 120

How far one press of Cmd+Ctrl+Shift+Arrow moves the canvas, in screen pixels (20 to 1000). A held key repeats, so a smaller step is a slower pan.

Default: true

Zooming, panning and card swaps animate rather than jumping. The system “reduce motion” setting switches them off regardless of this.

Default: false

Frame counter in the status bar, shown while frames are drawn back to back (a zoom, a pan, a drag, fast output); nothing at rest, where the app draws only when something changes. Orange below 50.

Default: true

Show the changelog in an overlay the first time you open a new version after an update. Escape or the X in its corner closes it. “Help: show what’s new” opens it any time.

Default: false

Show the focused terminal card’s directory in the status bar at all times. The card label shows the running program instead of the directory while one runs; this keeps the path visible then too. Home is written as ~.

Default: "left"

Which end of the status bar the directory goes on: “left” (after the card label) or “right”. Only used when ui.statusBarPwd is on.

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.

Default: "ctrl"

Linux and Windows: which key plays Cmd’s part, since they have none. “ctrl”: Ctrl, with Shift where plain Ctrl is the terminal’s (Ctrl+Shift+T a new card, Ctrl+Shift+C copy, Ctrl+1 fit a card); plain Ctrl+letter always reaches the terminal. “super” (Linux only): the Mac’s chords with Super for Cmd, Ctrl left whole for the terminal, at the cost of the Super chords your desktop takes first. Ignored on macOS.