tmux set-title не работает?

17

Для запуска tmuxпри каждом входе в оболочку ~/.bashrcна сервер добавлялось следующее :

if [ $TERM != "screen-256color" ] && [  $TERM != "screen" ]; then
    tmux attach || tmux new; exit
fi

Я также хочу изменить заголовок окна на что-то вроде user@server(вместо user@localhost), когда ssh на хост. Вот мой ~/.tmux.conf:

set -g prefix C-a
unbind C-b
bind C-a send-prefix

set -g set-titles on
set -g set-titles-string "#T"

bind-key o split-window -v
bind-key e split-window -h

bind-key w kill-pane

set -g terminal-overrides 'xterm*:smcup@:rmcup@'

Как видите, set-titlesбыл установлен на on, но он не работает, как ожидалось.

Больше информации:

Вне tmux:

$ echo $TERM
xterm

Внутри Tmux:

$ echo $TERM
screen

show -g: https://clbin.com/h7oDh

tmux info: http://sprunge.us/XHCB

И вот логи, когда бегаете tmux -vvvvvнемного:

Если я закомментирую строки ~/.bashrcс моего ноутбука, ssh, на сервер, строка заголовка будет отображаться правильно ( quanta@server), а затем запуск tmuxоттуда также работает, как и ожидалось.

Но если я хочу начать tmuxсразу после входа в систему, строка заголовка остается quanta@Ubuntuпосле ssh.


ОБНОВЛЕНИЕ Пт 10 мая 07:51:23 ИКТ 2013

Я удалил exitкоманду, чтобы не закрывать сеанс оболочки при закрытии последнего tmuxокна:

if [ $TERM != "screen-256color" ] && [  $TERM != "screen" ]; then
    tmux attach || tmux new
fi

Странная вещь:

  • SSH на сервер -> строка заголовка: quanta@Ubuntu
  • отделить от tmux-> строка заголовка переключиться наquanta@server
  • прикрепить tmuxснова -> строка заголовка по-прежнему отображается правильно quanta@server

Я не уверен, связано ли это с PROMPT_COMMANDпеременной окружения или нет:

Вне tmux:

$ echo $PROMPT_COMMAND 
echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\007"

Внутри tmux:

$ echo $PROMPT_COMMAND
echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\033\\"
кванты
источник
В случае, если это не очевидно в этом вопросе. Его настройки работают нормально, только не тогда, когда он пытается запустить его из .bashrc.
SLM
Пожалуйста, предоставьте вывод tmux info.
SLM

Ответы:

15

Проблема решена!

Чтобы включить встроенную прокрутку мыши xterm tmux, на многих вики , сайтах вопросов и ответов , в блоге предлагается добавить строку вроде:

set -g terminal-overrides 'xterm*:smcup@:rmcup@'

к ~/.tmux.conf. И это виновник.

Чтобы разрешить заголовки xterm в окне терминала, вам также нужно добавить XTфлаг, примерно так:

set -g terminal-overrides "xterm*:XT:smcup@:rmcup@"

Источник: http://opennomad.com/content/goodbye-screen-hello-tmux

кванты
источник
3
Спасибо за ваш пост. В моем случае с rxvtнастройкойset -ga terminal-overrides ",rxvt*:XT"
favadi
2
Как указывал @favadi, правильное решение для этого - использовать -aопцию with setдля добавления переопределений smcup / rmcup. Это исправит другие странные проблемы, такие как невозможность правильно установить форму курсора.
синеватый
2

Наткнулся на эту ветку из списка рассылки tmux-users. Тема была озаглавлена: набор заголовков не работает . Есть несколько вещей из этой темы, чтобы попробовать. Здесь также есть более чистая версия темы .

Ресурсы XTerm

Для начала можно было бы добавить следующую строку в ваш файл ресурсов XTerm ~/.Xresources:

XTerm*allowSendEvents: true

Советы по отладке tmux

В этой ветке также было несколько советов по отладке, которые также могут вам помочь.

многословный Tmux

  1. закрыть все сессии tmux
  2. запустите команду: tmux -vvvvv
  3. запустите команду: vi foo
  4. сохранить файл
  5. выход из Tmux

После этого у вас должно быть 3 файла, что-то вроде этого:

  • tmux-из-21594.log
  • tmux-клиент-21592.log
  • tmux-сервер 21594.log

информация о Tmux

$ tmux info
tmux 1.4, pid 22182, started Fri May 10 04:00:37 2013
socket path /var/run/tmux/tmux-500/default, debug level 0
system is Linux 2.6.35.14-106.fc14.x86_64 #1 SMP Wed Nov 23 13:07:52 UTC 2011 x86_64
configuration file is /home/saml/.tmux.conf
protocol version is 6

Clients:
 0: /dev/pts/12 (8, 11): 0 [132x24 xterm] [flags=0x1/0x38, references=0]

Sessions: [5/10]
 0: 0: 1 windows (created Fri May 10 04:00:37 2013) [132x23] [flags=0x0]
   0: bash [132x23] [flags=0x8, references=1, last layout=-1]
     0: /dev/pts/48 22183 13 1/23, 135 bytes; UTF-8 0/23, 0 bytes

Terminals:
xterm [references=1, flags=0x0]:
 1: acsc: (string) ``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~
 0: AX: (flag) true
 2: bel: (string) \007
 ...
 ...
144: smul: (string) \033[4m
145: vpa: (string) \033[%i%p1%dd
146: xenl: (flag) true

Jobs:
SLM
источник
Я уже читал эту ветку, прежде чем спрашивать здесь. XTerm*allowSendEvents: trueне работал Файлы журнала были загружены. Смотрите мой обновленный вопрос.
кванта
1
В будущем вы должны включить эти типы предметов в свой вопрос, чтобы не тратить время каждого на перефразирование вещей, которые вы уже пробовали.
SLM