54 lines
1.6 KiB
Bash
Executable File
54 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# Switch to the iTerm tab running a given tmux session
|
|
# Usage: ~/open-tmux-session <session-name>
|
|
|
|
export PATH="/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:$PATH"
|
|
|
|
SESSION="$1"
|
|
[ -z "$SESSION" ] && echo "Usage: open-tmux-session <session-name>" && exit 1
|
|
|
|
# Find the tty attached to this tmux session
|
|
TARGET_TTY=$(tmux list-clients -t "$SESSION" -F "#{client_tty}" 2>/dev/null | head -1)
|
|
|
|
if [ -n "$TARGET_TTY" ]; then
|
|
# Find and switch to the iTerm tab with this tty
|
|
osascript << APPLESCRIPT
|
|
tell application "iTerm2"
|
|
activate
|
|
set foundIt to false
|
|
repeat with w in windows
|
|
tell w
|
|
set tabCount to count of tabs
|
|
repeat with i from 1 to tabCount
|
|
set theTab to item i of tabs
|
|
repeat with theSession in sessions of theTab
|
|
set sessionTTY to tty of theSession
|
|
if sessionTTY is "$TARGET_TTY" then
|
|
set index of w to 1
|
|
select theTab
|
|
set foundIt to true
|
|
exit repeat
|
|
end if
|
|
end repeat
|
|
if foundIt then exit repeat
|
|
end repeat
|
|
end tell
|
|
if foundIt then exit repeat
|
|
end repeat
|
|
end tell
|
|
APPLESCRIPT
|
|
else
|
|
# No client attached — create a new iTerm tab and attach
|
|
osascript << APPLESCRIPT
|
|
tell application "iTerm2"
|
|
activate
|
|
tell current window
|
|
set newTab to (create tab with default profile)
|
|
tell current session of newTab
|
|
write text "tmux attach -t $SESSION"
|
|
end tell
|
|
end tell
|
|
end tell
|
|
APPLESCRIPT
|
|
fi
|