Skip to main content
Customize how Termy displays and manages tabs, including intelligent tab title detection and tab strip appearance.

Tab Title Behavior

Termy includes a sophisticated tab title system that automatically updates based on shell activity.
tab_title_mode
string
default:"smart"
How tab titles are determined:
  • smart - Intelligently choose the best title source
  • Other modes available (see documentation)
tab_title_priority
string
default:"manual, explicit, shell, fallback"
Comma-separated priority list for tab title sources:
  • manual - User-set title via “Rename Tab”
  • explicit - OSC sequences with the explicit prefix
  • shell - Shell integration (prompt/command)
  • fallback - Default fallback title
tab_title_fallback
string
default:"Terminal"
Default tab title when no other source is available.
tab_title_mode = smart
tab_title_priority = manual, explicit, shell, fallback
tab_title_fallback = Terminal

How Tab Titles Work

Termy uses multiple sources to determine tab titles:
  1. Manual - When you rename a tab via Cmd+Shift+R or the menu
  2. Explicit - Applications can set titles using OSC sequences with the configured prefix
  3. Shell - Shell integration captures current directory and running commands
  4. Fallback - The default title when nothing else is available
The tab_title_priority setting controls which source wins when multiple are available.

Shell Integration

tab_title_shell_integration
boolean
default:"true"
Export TERMY_* environment variables for shell hooks.When enabled, Termy sets environment variables that your shell can use to report current directory and running commands.
tab_title_prompt_format
string
default:"{cwd}"
Template for prompt-derived tab titles. Available variables:
  • {cwd} - Current working directory
  • Other template variables may be supported
tab_title_command_format
string
default:"{command}"
Template for command-derived tab titles. Available variables:
  • {command} - Currently running command
  • Other template variables may be supported
tab_title_shell_integration = true
tab_title_prompt_format = {cwd}
tab_title_command_format = {command}

Shell Integration Examples

# Show full path in prompt
tab_title_prompt_format = {cwd}

# Show just command name
tab_title_command_format = {command}

# Disable shell integration
tab_title_shell_integration = false
With shell integration enabled, tab titles automatically update to show:
  • Current directory when idle
  • Running command name when executing

Explicit Title Prefix

tab_title_explicit_prefix
string
default:"termy:tab:"
Prefix used for explicit OSC title payloads.Applications can set tab titles by sending OSC sequences starting with this prefix. This prevents conflicts with other terminal title-setting applications.
tab_title_explicit_prefix = termy:tab:

Using Explicit Titles

Applications can set tab titles using OSC sequences:
# Set tab title explicitly
echo -e "\033]0;termy:tab:My Custom Title\007"
Only sequences with the configured prefix will be recognized as explicit tab titles.

Tab Strip Appearance

tab_close_visibility
string
default:"active_hover"
When tab close buttons are visible:
  • active_hover - Show on active tab when hovering
  • always - Always show close buttons
  • never - Never show close buttons
  • hover - Show when hovering any tab
tab_width_mode
string
default:"active_grow_sticky"
How tab widths react to active state:
  • active_grow_sticky - Active tab grows and stays expanded
  • equal - All tabs have equal width
  • active_grow - Active tab grows temporarily
tab_close_visibility = active_hover
tab_width_mode = active_grow_sticky

Tab Strip Examples

# Minimal tab strip
tab_close_visibility = never
tab_width_mode = equal

# Always show close buttons
tab_close_visibility = always
tab_width_mode = active_grow_sticky

# Show close on hover
tab_close_visibility = hover
tab_width_mode = active_grow

Tab Title Examples

Simple Static Titles

# Use fallback for all tabs
tab_title_mode = smart
tab_title_fallback = Terminal
tab_title_shell_integration = false

Directory-Focused Titles

# Prioritize showing current directory
tab_title_mode = smart
tab_title_priority = manual, shell, fallback
tab_title_shell_integration = true
tab_title_prompt_format = {cwd}
tab_title_command_format = {command}

Manual Control

# Prefer manual titles, fall back to directory
tab_title_mode = smart
tab_title_priority = manual, explicit, fallback
tab_title_fallback = New Tab
tab_title_shell_integration = false

Renaming Tabs

You can manually rename tabs at runtime:
  1. Keyboard: Press Cmd+Shift+R (macOS) or Ctrl+Shift+R (other platforms)
  2. Command Palette: Cmd+P → “Rename Tab”
  3. Menu: File > Rename Tab
Manual titles take highest priority (when manual is in tab_title_priority).

Complete Example

# Tab title behavior
tab_title_mode = smart
tab_title_priority = manual, explicit, shell, fallback
tab_title_fallback = Terminal

# Shell integration
tab_title_shell_integration = true
tab_title_prompt_format = {cwd}
tab_title_command_format = {command}
tab_title_explicit_prefix = termy:tab:

# Tab strip appearance
tab_close_visibility = active_hover
tab_width_mode = active_grow_sticky

Build docs developers (and LLMs) love