Fish shell to open in tmux and create new sessions
This commit is contained in:
@@ -91,6 +91,8 @@ alias myip='curl ipinfo.io/ip; echo ""'
|
||||
alias lspmake='bear -- make -B'
|
||||
alias services-up='docker compose -f /home/jason/Documents/Compose/local-services/docker-compose.yaml up -d'
|
||||
alias services-down='docker compose -f /home/jason/Documents/Compose/local-services/docker-compose.yaml down'
|
||||
alias tc='tmux attach'
|
||||
alias td='tmux detach'
|
||||
|
||||
# ==============================================================================
|
||||
# FUNCTIONS
|
||||
@@ -189,3 +191,31 @@ set -g __fish_git_prompt_char_stagedstate '●'
|
||||
set -g __fish_git_prompt_char_untrackedfiles ''
|
||||
|
||||
direnv hook fish | source
|
||||
|
||||
# Auto-attach to tmux on interactive shell start
|
||||
if status is-interactive && not set -q TMUX
|
||||
# Get all session names matching shell, shell-2, shell-3 etc
|
||||
set sessions (tmux list-sessions -F '#S' 2>/dev/null)
|
||||
|
||||
if test (count $sessions) -eq 0
|
||||
tmux new-session -s shell
|
||||
else
|
||||
# Check if any shell session is unattached and attach it
|
||||
set target (tmux list-sessions -F '#{session_name} #{session_attached}' 2>/dev/null \
|
||||
| grep '^shell' | grep ' 0$' | head -1 | awk '{print $1}')
|
||||
|
||||
if test -n "$target"
|
||||
tmux attach -t $target
|
||||
else
|
||||
# All shell sessions attached — find next number
|
||||
set nums 1
|
||||
for s in $sessions
|
||||
if string match -rq '^shell-(\d+)$' $s
|
||||
set nums $nums (string replace 'shell-' '' $s)
|
||||
end
|
||||
end
|
||||
set next (math (string join \n $nums | sort -n | tail -1) + 1)
|
||||
tmux new-session -s shell-$next
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user