if [[ -n "$TMUX" ]]; then autoload -Uz add-zsh-hook # ------------------------------------------------------------------------- # Basisname des Windows aus aktuellem Verzeichnis # ------------------------------------------------------------------------- _tmux_set_base_window_name() { local name if [[ "$PWD" == "$HOME" ]]; then name="sebastian" else name="${PWD:t}" fi # Basisnamen separat merken tmux set-option \ -w \ -t "$TMUX_PANE" \ @base_window_name "$name" \ 2>/dev/null _tmux_update_window_name } # ------------------------------------------------------------------------- # Window-Name aus Basisname + allen SSH-Sessions dieses Windows bauen # # Beispiel: # projects 🔐 P1→labgw P4→prod # ------------------------------------------------------------------------- _tmux_update_window_name() { local base ssh_info line base="$( tmux show-options \ -w \ -v \ -t "$TMUX_PANE" \ @base_window_name \ 2>/dev/null )" [[ -z "$base" ]] && base="${PWD:t}" ssh_info="" while IFS= read -r line; do [[ -z "$line" ]] && continue if [[ -n "$ssh_info" ]]; then ssh_info+=" " fi ssh_info+="$line" done < <( tmux list-panes \ -t "$TMUX_PANE" \ -F '#{?@ssh_host,P#{pane_index}→#{@ssh_host},}' \ 2>/dev/null ) if [[ -n "$ssh_info" ]]; then tmux rename-window \ -t "$TMUX_PANE" \ "${base} 🔐 ${ssh_info}" \ 2>/dev/null else tmux rename-window \ -t "$TMUX_PANE" \ "$base" \ 2>/dev/null fi } add-zsh-hook chpwd _tmux_set_base_window_name _tmux_set_base_window_name # ------------------------------------------------------------------------- # SSH wrapper # ------------------------------------------------------------------------- ssh() { local host rc # Bewusst SSH-Alias nehmen: # ssh labgw # zeigt "labgw", nicht die dahinterliegende IP. host="$( command ssh -G "$@" 2>/dev/null | awk '$1 == "host" { print $2; exit }' )" if [[ -n "$host" ]]; then tmux set-option \ -p \ -t "$TMUX_PANE" \ @ssh_host "$host" \ 2>/dev/null _tmux_update_window_name fi command ssh "$@" rc=$? # SSH-Markierung dieses Panes entfernen tmux set-option \ -p \ -u \ -t "$TMUX_PANE" \ @ssh_host \ 2>/dev/null _tmux_update_window_name return $rc } fi