Fish shell to open in tmux and create new sessions

This commit is contained in:
2026-04-25 07:57:10 +02:00
parent b594bb3057
commit b75701f53c
+30
View File
@@ -91,6 +91,8 @@ alias myip='curl ipinfo.io/ip; echo ""'
alias lspmake='bear -- make -B' alias lspmake='bear -- make -B'
alias services-up='docker compose -f /home/jason/Documents/Compose/local-services/docker-compose.yaml up -d' 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 services-down='docker compose -f /home/jason/Documents/Compose/local-services/docker-compose.yaml down'
alias tc='tmux attach'
alias td='tmux detach'
# ============================================================================== # ==============================================================================
# FUNCTIONS # FUNCTIONS
@@ -189,3 +191,31 @@ set -g __fish_git_prompt_char_stagedstate '●'
set -g __fish_git_prompt_char_untrackedfiles '' set -g __fish_git_prompt_char_untrackedfiles ''
direnv hook fish | source 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