Как синхронизировать заголовок окна терминала с окном tmux

4260
scottlabs

Я использую программу под названием «Время», чтобы отслеживать свое время. Синхронизация использует имя текущего окна в iTerm для целей категоризации.

Я бы хотел, чтобы текущий заголовок iTerm соответствовал имени текущего активного окна tmux.

Я настроил файл ~/.config/fish/functions/fish_title.fishс помощью:

function fish_title tmux display-message -p '#W' end 

Это успешно выводит текущий заголовок окна Tmux в окно терминала всякий раз, когда я открываю новое окно терминала. Однако, если я переименую окно tmux или переключусь на новое окно, терминал не обновится.

Это делает обновление, если использовать что - то вроде pwdв fish_title:

function fish_title pwd end 

Любые идеи о том, как заставить fish_titleзахватить имя окна tmux динамически?

5

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

8
Kurtis Rader

Первое, на что следует обратить внимание, это то, что вы можете сделать это через tmux, совершенно независимо от вашей оболочки. Добавьте следующее в ваш ~ / .tmux.conf; например:

set-option -g set-titles on set-option -g set-titles-string "#S / #W" 

Кроме того, вам необходимо убедиться, что iTerm2 настроен так, чтобы программы могли устанавливать заголовок через escape-последовательность. См. Раздел «Терминал может установить заголовок вкладки / окна» в https://www.iterm2.com/documentation-one-page.html .

Но ваша настоящая проблема в том, что escape-последовательность, отправленная функцией fish_title, не передается через tmux. Вместо этого Tmux использует значение для установки заголовка панели. Это объясняется, хотя и не совсем понятно, в разделе «Имена и названия» man tmux. Добавьте #Tк, set-titles-stringчтобы увидеть, что это на самом деле, будучи установлен на то же значение, что и имя окна через вашу fish_titleфункцию.

Ах, я этого не знал; Ваш первый комментарий о ~ / .tmux.conf отлично сработал. Спасибо! scottlabs 7 лет назад 0

Похожие вопросы