5

Я использую программу под названием "Время", чтобы отслеживать свое время. Синхронизация использует имя текущего окна в 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?

1 ответ1

11

Первое, на что следует обратить внимание, это то, что вы можете сделать это через 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 .

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