TERMPOD Docs

Customization

Customize TermPod with config files, custom themes, keybindings, and workflows.

TermPod stores all user configuration as JSON files in ~/.termpod/. You can edit these files directly in any text editor — changes are picked up automatically.

Config Directory

~/.termpod/
├── config.json          # Settings (appearance, terminal, behavior)
├── keybindings.json     # Custom keyboard shortcut overrides
├── workflows.json       # Saved command workflows
└── themes/              # Custom terminal themes
    └── my-theme.json

The directory and default files are created automatically on first launch. If you're migrating from an older version, your existing settings are migrated from localStorage to these files automatically.

Settings (config.json)

The main configuration file. All fields are optional — missing fields use sensible defaults.

{
  "theme": "termpod-dark",
  "fontSize": 14,
  "fontFamily": "Menlo, monospace",
  "fontWeight": "normal",
  "fontSmoothing": "antialiased",
  "fontLigatures": false,
  "cursorStyle": "block",
  "cursorBlink": true,
  "lineHeight": 1.0,
  "windowPadding": 0,
  "backgroundOpacity": 1.0,
  "blurRadius": 0,
  "scrollbarVisibility": "always",
  "scrollbackLines": 5000,
  "shellPath": "/bin/zsh",
  "bellEnabled": false,
  "drawBoldInBold": true,
  "newTabCwd": "home",
  "customTabCwdPath": "",
  "closeWindowOnLastTab": true,
  "promptAtBottom": false,
  "copyOnSelect": false,
  "macOptionIsMeta": false,
  "altClickMoveCursor": true,
  "wordSeparators": " ()[]{}':;\"",
  "confirmCloseRunningProcess": true,
  "launchAtLogin": false,
  "notifyOnBell": false,
  "notifyOnProcessExit": true,
  "relayUrl": "",
  "autocompleteEnabled": true
}

Appearance

KeyTypeDefaultDescription
themestring"termpod-dark"Theme name — built-in or custom:<filename>
cursorStyle"block" | "underline" | "bar""block"Cursor shape
cursorBlinkbooleantrueBlinking cursor
lineHeightnumber1.0Line height multiplier (0.8–1.6)
windowPaddingnumber0Padding around terminal in pixels (0–32)
backgroundOpacitynumber1.0Window opacity (0.3–1.0)
blurRadiusnumber0macOS vibrancy blur (0–20)
scrollbarVisibility"always" | "when-scrolling" | "never""always"Scrollbar display

Terminal

KeyTypeDefaultDescription
fontSizenumber14Font size in pixels (10–24)
fontFamilystring"Menlo, monospace"Font stack
fontWeightstring"normal"Font weight ("normal", "100"–"900")
fontSmoothing"auto" | "antialiased" | "none""antialiased"Font smoothing
fontLigaturesbooleanfalseEnable ligatures (e.g., Fira Code)
drawBoldInBoldbooleantrueRender bold text with bold font weight
shellPathstring"/bin/zsh"Default shell
scrollbackLinesnumber5000Scrollback buffer size (1,000–50,000)
bellEnabledbooleanfalseTerminal bell sound

Behavior

KeyTypeDefaultDescription
newTabCwd"home" | "current" | "custom""home"Working directory for new tabs
customTabCwdPathstring""Custom path (when newTabCwd is "custom")
closeWindowOnLastTabbooleantrueClose window when last tab closes
copyOnSelectbooleanfalseCopy to clipboard on text selection
macOptionIsMetabooleanfalseTreat Option as Meta key
altClickMoveCursorbooleantrueAlt+click to move cursor
confirmCloseRunningProcessbooleantrueConfirm before closing running process
launchAtLoginbooleanfalseStart TermPod at login
autocompleteEnabledbooleantrueShell history autocomplete

Keybindings (keybindings.json)

Override default keyboard shortcuts. Only include the bindings you want to change — everything else keeps its default.

{
  "new_tab": "Cmd+T",
  "close_tab": "Cmd+W",
  "find": "Cmd+F"
}

Available Bindings

IDDefaultDescription
new_tabCmd+TNew tab
close_tabCmd+WClose tab
duplicate_tabCmd+Shift+TDuplicate tab
next_tabCmd+Shift+]Next tab
prev_tabCmd+Shift+[Previous tab
close_other_tabsCmd+Alt+WClose other tabs
findCmd+FFind
find_nextCmd+GFind next
find_prevCmd+Shift+GFind previous
clearCmd+KClear scrollback
clear_screenCmd+LClear screen
select_allCmd+ASelect all
zoom_inCmd+=Zoom in
zoom_outCmd+-Zoom out
zoom_resetCmd+0Reset zoom
scroll_topCmd+UpScroll to top
scroll_bottomCmd+DownScroll to bottom
toggle_fullscreenCtrl+Cmd+FToggle fullscreen
command_paletteCmd+Shift+PCommand palette
settingsCmd+,Settings
keybindingsCmd+Shift+,Keyboard shortcuts

Modifier format: Cmd, Ctrl, Alt, Shift joined with +. Tab shortcuts (Cmd+1 through Cmd+9) are not customizable.

Workflows (workflows.json)

Saved command shortcuts accessible from the command palette.

{
  "workflows": [
    {
      "id": "wf-1710000000000-abc123",
      "name": "Deploy to Production",
      "command": "git push origin main",
      "category": "deploy",
      "createdAt": 1710000000000
    }
  ]
}

You can add workflows via the UI (Command Palette → Workflows) or by editing this file directly.

Custom Themes

Create custom terminal color themes by placing .json files in ~/.termpod/themes/. They appear automatically in the theme picker under a Custom section.

Theme File Format

Each theme file must include all 20 color properties plus a name:

{
  "name": "My Custom Theme",
  "background": "#1a1b26",
  "foreground": "#c0caf5",
  "cursor": "#c0caf5",
  "selectionBackground": "#33467c",
  "black": "#15161e",
  "red": "#f7768e",
  "green": "#9ece6a",
  "yellow": "#e0af68",
  "blue": "#7aa2f7",
  "magenta": "#bb9af7",
  "cyan": "#7dcfff",
  "white": "#a9b1d6",
  "brightBlack": "#414868",
  "brightRed": "#f7768e",
  "brightGreen": "#9ece6a",
  "brightYellow": "#e0af68",
  "brightBlue": "#7aa2f7",
  "brightMagenta": "#bb9af7",
  "brightCyan": "#7dcfff",
  "brightWhite": "#c0caf5"
}

Save it as ~/.termpod/themes/my-custom-theme.json. The theme appears in the picker as "My Custom Theme" and is selectable in config.json as "theme": "custom:my-custom-theme".

Tips

  • File name becomes the theme key: my-theme.json → custom:my-theme
  • All 20 color fields are required — invalid files are silently skipped
  • Changes are picked up live — no restart needed
  • You can export themes from other terminals (iTerm2, Alacritty, Kitty) and convert them to this format

Live Reload

All config files are watched for changes. Edit ~/.termpod/config.json in vim, and the app updates instantly — no restart required. This also means you can script your config:

# Quick theme switch from the command line
jq '.theme = "dracula"' ~/.termpod/config.json > /tmp/tp.json && mv /tmp/tp.json ~/.termpod/config.json

Dotfile Management

Since all config lives in ~/.termpod/, you can easily back it up or sync across machines:

# Symlink from your dotfiles repo
ln -s ~/dotfiles/termpod ~/.termpod

# Or copy individual files
cp ~/.termpod/config.json ~/dotfiles/termpod/
cp ~/.termpod/keybindings.json ~/dotfiles/termpod/
cp -r ~/.termpod/themes/ ~/dotfiles/termpod/themes/

On this page