У меня есть пользовательская функция в моем файле ~/.zshrc:

function getCustomWindowName {
  # runs 'sed' on 'pwd' to get special dir name
  # and set it to $workspace
  if $workspace is valid; then
    echo $workspace
    return 0
  else
    echo ""
    return 1
  fi
}

В моем файле ~/.tmux.conf я хочу сделать что-то вроде этого:

set-option -g status-interval 5
set-option -g automatic-rename on
set-option -g automatic-rename-format '#{getCustomWindowName}'

Есть какой-либо способ сделать это?

Бонусная проблема: если getCustomWindowName ничего не повторяет (или return 1s), я хочу, чтобы это было имя окна по умолчанию. Есть ли способ сделать это?

1
azizj 31 Мар 2021 в 17:27
1
Если я понимаю, чего вы пытаетесь достичь, то я думаю, что было бы проще установить заголовок внутри функции, используя tmux rename-window $workspace. Затем вызовите эту функцию из подсказки zsh (см. здесь). Если вы хотите оптимизировать его, поскольку он вызывается при каждом приглашении, вы можете сохранить предыдущий каталог и вызывать tmux renamew только при изменении каталога.
 – 
NotTheDr01ds
1 Апр 2021 в 00:40
Это сработало для моего случая. Спасибо!
 – 
azizj
1 Апр 2021 в 22:20

1 ответ

Лучший ответ

Я узнал от NotTheDr01ds, что могу просто переименовать окно из ZSH, поэтому я сделал что-то вроде этого:

function getCustomWindowName {
  # runs 'sed' on 'pwd' to get special dir name
  # and set it to $workspace
  if $workspace is valid; then
    tmux rename-window $workspace
  fi
}

# only allow unique values in this array
typeset -U chpwd_functions
# run this function when current working directory changes.
# Variables $PWD and $OLDPWD.
chpwd_functions+=(getCustomWindowName)
# Try to update when a new window is opened.
getCustomWindowName
0
azizj 2 Апр 2021 в 18:31