# Research Findings: Terminal Window Title Support

## iTerm2 (macOS)

### New Window Creation

```applescript
tell application "iTerm"
    set newWindow to (create window with default profile)
    tell current session of newWindow
        -- Execute command in new window
        write text "cd /path && command"
    end tell
    return id of newWindow  -- Returns window ID
end tell
```

### Window Title Setting

**Important:** iTerm2's AppleScript `window` object has a `title` property that is **read-only**.

To set the actual window title (OS title bar), use escape sequences:

```applescript
tell current session of newWindow
    -- Set window title via escape sequence (OSC 2)
    write text "printf '\\033]2;Team: Agent\\007'"
    -- Optional: Set tab title via session name
    set name to "Agent"  -- This sets the tab title
end tell
```

### Escape Sequences Reference

- `\033]0;Title\007` - Set both icon name and window title
- `\033]1;Title\007` - Set tab title only (icon name)
- `\033]2;Title\007` - Set window title only

### Required iTerm2 Settings

- Settings > Profiles > Terminal > "Terminal may set tab/window title" must be enabled
- May need to disable shell auto-title in `.zshrc` or `.bashrc` to prevent overwriting

## WezTerm (Cross-Platform)

### New Window Creation

```bash
# Spawn new OS window
wezterm cli spawn --new-window --cwd /path -- env KEY=val command

# Returns pane ID, need to lookup window ID
```

### Window Title Setting

```bash
# Set window title by window ID
wezterm cli set-window-title --window-id 1 "Team: Agent"

# Or set tab title
wezterm cli set-tab-title "Agent"
```

### Getting Window ID

After spawning, we need to query for the window:

```bash
wezterm cli list --format json
# Returns array with pane_id, window_id, tab_id, etc.
```

## tmux (Skipped)

- `tmux new-window` creates windows within the same session
- True OS window creation requires spawning a new terminal process entirely
- Not supported per user request

## Zellij (Skipped)

- `zellij action new-tab` creates tabs within the same session
- No native support for creating OS windows
- Not supported per user request

## Universal Escape Sequences

All terminals supporting xterm escape sequences understand:

```bash
# Set window title (OSC 2)
printf '\033]2;My Window Title\007'

# Alternative syntax
printf '\e]2;My Window Title\a'
```

This is the most reliable cross-terminal method for setting window titles.

## Summary Table

| Feature          | iTerm2         | WezTerm     | tmux | Zellij |
| ---------------- | -------------- | ----------- | ---- | ------ |
| New OS Window    | ✅ AppleScript | ✅ CLI      | ❌   | ❌     |
| Set Window Title | ✅ Escape seq  | ✅ CLI      | N/A  | N/A    |
| Set Tab Title    | ✅ AppleScript | ✅ CLI      | N/A  | N/A    |
| Get Window ID    | ✅ AppleScript | ✅ CLI list | N/A  | N/A    |

## Implementation Notes

1. **iTerm2:** Will use AppleScript for window creation and escape sequences for title setting
2. **WezTerm:** Will use CLI for both window creation and title setting
3. **Title Format:** `{teamName}: {agentName}` (e.g., "my-team: security-bot")
4. **Window Tracking:** Need to store window IDs separately from pane IDs for lifecycle management
