Синхронизируйте заголовок tmux, заголовок bash и заголовок терминала / окна iTerm

293
dvcrn

Нечто подобное было задано здесь, но я не смог решить проблему для себя

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)" 

удар

 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 прекрасно обновляет заголовок, однако в tmux мне не удается заставить его всегда сохранять текущий заголовок.

tmux (заголовок не обновляется после смены директории)

enter image description here

non-tmux (заголовок обновляется после смены директории) enter image description here

Есть ли способ надежно синхронизировать заголовок tmux с заголовком bash?

1

1 ответ на вопрос

0
dvcrn

После долгих перемоток туда-сюда и нескольких десятков перезагрузок / перезапусков tmux я, наконец, нашел решение, которое работает именно так, как я хочу, во всех эмуляторах терминалов, которые я хочу (iTerm / Kitty / Terminal.app), с 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