1

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

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;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}\033\'
      PROMPT_COMMAND="printf '\033]2;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}\033\'"
      ;;
    xterm*)
      if [ $ITERM_SESSION_ID ]; then
        export PROMPT_COMMAND='echo -ne "\033];${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}\007"; ': $PROMPT_COMMAND;
      fi
      ;;
  esac

Bash прекрасно обновляет заголовок, однако в tmux мне не удается заставить его всегда сохранять текущий заголовок.

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

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

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

1 ответ1

0

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

Bashrc

case "$TERM" in
  tmux*)
    export PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}\007"'
    ;;
  xterm*)
    if [ $ITERM_SESSION_ID ]; then
      export PROMPT_COMMAND='echo -ne "\033];${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}\007"; '
    else
      export PROMPT_COMMAND='echo -ne "\033]${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}\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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .