Skip to content

feat: add configurable terminal window title#5293

Open
rabin-io wants to merge 5 commits intojesseduffield:masterfrom
rabin-io:SetWindowTitle
Open

feat: add configurable terminal window title#5293
rabin-io wants to merge 5 commits intojesseduffield:masterfrom
rabin-io:SetWindowTitle

Conversation

@rabin-io
Copy link

Add a new gui.terminalTitle config option that sets the terminal
window title when opening a repository. The default format is
lazygit::{{repoName}} (e.g., lazygit::myproject).

Features:

  • Configurable title format with {{repoName}} placeholder
  • Set to empty string to disable terminal title updates
  • Hot-reloadable: title updates when config file changes
  • Cross-platform support using tcell's SetTitle()
  • Windows legacy console fallback using cmd.exe's title command

Example config:

gui:
  terminalTitle: "lazygit::{{repoName}}"
  # or custom formats:
  # terminalTitle: "[{{repoName}}] lazygit"
  # terminalTitle: ""  # disable

Add a new `gui.terminalTitle` config option that sets the terminal
window title when opening a repository. The default format is
`lazygit::{{repoName}}` (e.g., `lazygit::myproject`).

Features:
- Configurable title format with {{repoName}} placeholder
- Set to empty string to disable terminal title updates
- Hot-reloadable: title updates when config file changes
- Cross-platform support using tcell's SetTitle()
- Windows legacy console fallback using cmd.exe's title command

Example config:
```yaml
gui:
  terminalTitle: "lazygit::{{repoName}}"
  # or custom formats:
  # terminalTitle: "[{{repoName}}] lazygit"
  # terminalTitle: ""  # disable
```

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@rabin-io rabin-io marked this pull request as ready for review February 16, 2026 21:25
rabin-io and others added 4 commits February 17, 2026 12:04
Prevent command injection vulnerability by escaping cmd.exe special
characters (^, &, |, <, >, %) in the terminal title before passing
to the shell command.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace silent error swallowing with debug logging so failures
can be diagnosed when needed.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Remove control characters (ASCII 0-31 and 127) from the terminal
title to prevent malicious or accidental escape sequences from
breaking terminal behavior.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move control character sanitization to a reusable utility function
- Add comprehensive unit tests covering various edge cases:
  - Normal strings and unicode
  - Control characters (null, escape, newline, tab, etc.)
  - DEL character (0x7F)
  - Printable special characters preserved

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Comments