#!/bin/sh HOST=$(tmux display -p '#h' 2>/dev/null) if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then tmux -L ssh run-shell "tmux-ssh" exit 0 fi if [ "$#" -eq 0 ]; then ATTACHED=$(tmux display -p '#{?#{m:*ssh,#{socket_path}},#S,#{host}}' 2>/dev/null) set -- "$( sshr --all --exclude="$ATTACHED" | fzf-tmux -p20%,20% -- --print-query --tac | tail -1 )" fi if [ -z "$1" ]; then exit 0 fi target="$1" if [ "$target" = "$HOST" ]; then tmux detach -E 'tmux new -A' else if ! tmux -L ssh has-session -t "$target"; then local_socket=$(tmux -L ssh start-server \; display -p "#{socket_path}") remote_socket=$( ssh -T \ -o "ControlMaster=auto" \ -o "ControlPath=${XDG_RUNTIME_DIR}/ssh.%C" \ "$target" 'tmux -L ssh start-server \; display -p "#{socket_path}"' ) tmux -L ssh new-session -ds "$target" \ ssh -t \ -o "ControlMaster=auto" \ -o "ControlPath=${XDG_RUNTIME_DIR}/ssh.%C" \ -R "$local_socket":"$remote_socket" \ "$target" "zsh -l -c 'tmux new -A'" fi if [ -z "$TMUX" ]; then tmux -L ssh attach -t "$target" else tmux detach -E "tmux -L ssh attach -t $target" fi exit 0 fi