Halten Sie den tmux-Titel, den Bash-Titel und den Titel des Terminal- / iTerm-Fensters synchron

388
dvcrn

Etwas Ähnliches wurde hier gefragt , aber ich konnte das Problem nicht für mich lösen

tmux:

# use titles set-option -g set-titles on set-option -g set-titles-string '#T'  # add custom term set -g default-terminal "tmux-256color" set -as terminal-overrides ',xterm*:XT:sitm=\E[3m'  # always reattach to user namespace set-option -g default-shell $SHELL set-option -g default-command "reattach-to-user-namespace -l $(echo $SHELL)" 

bash

 case "$TERM" in tmux*) printf '\033]2;$@$:$\033\' PROMPT_COMMAND="printf '\033]2;$@$:$\033\'" ;; xterm*) if [ $ITERM_SESSION_ID ]; then export PROMPT_COMMAND='echo -ne "\033];$@$:$\007"; ': $PROMPT_COMMAND; fi ;; esac 

Bash hält den Titel auf dem neuesten Stand, aber in tmux kann ich es nicht schaffen, den aktuellen Titel immer beizubehalten.

tmux (Titel wird nach dem Ändern des Verzeichnisses nicht aktualisiert)

enter image description here

non-tmux (Titel wird nach Änderung des Verzeichnisses aktualisiert) enter image description here

Gibt es eine Möglichkeit, den tmux-Titel zuverlässig mit dem bash-Titel zu synchronisieren?

1

1 Antwort auf die Frage

0
dvcrn

Nach vielem Hin und Her und ein paar Dutzend tmux reloads / neustarts habe ich endlich eine Lösung gefunden, die genau so funktioniert, wie ich möchte, in allen Terminal-Emulatoren (iTerm / Kitty / Terminal.app), mit oder ohne Tmux

bashrc

case "$TERM" in tmux*) export PROMPT_COMMAND='echo -ne "\033]0;$@$:$\007"' ;; xterm*) if [ $ITERM_SESSION_ID ]; then export PROMPT_COMMAND='echo -ne "\033];$@$:$\007"; ' else export PROMPT_COMMAND='echo -ne "\033]$@$:$\007"; ' fi ;; esac 

tmux

# use titles set-option -g set-titles on set-option -g set-titles-string "#T" set-option -g automatic-rename on