Могу ли я установить заголовок по умолчанию для окна tmux?


38

Прямо сейчас заголовок по умолчанию reattach-to-user-namespace(OS X), что довольно раздражает. Есть ли опция, которую я могу вставить в свой, tmux.confчтобы получить еще один заголовок по умолчанию?

Если нет, то как мне связать ключ, который создает новое окно и затем запрашивает имя?


Смотрите ответ здесь superuser.com/questions/306028/…
Фредрик Пихл

Речь идет об отключении автоматического переименования (что я уже сделал), а не об именах по умолчанию, верно?
JS-кодер

Я думаю, ты прав, извини!
Фредрик Пихл

Я использую set-option -g default-command "reattach-to-user-namespace -l zsh", и большую часть времени получаю окно с именем zshпо желанию. По неизвестным причинам иногда имя не переключается, и окно вызывается reattach-to-user-namespace. Я до сих пор не заметил шаблон того, когда и почему это происходит, но кажется, что в моей конфигурации может быть небольшая ошибка или что-то подобное.
Джим Стюарт

Как лучше всего указать номер окна в имени?
DanCat

Ответы:


43

Нет глобального имени окна по умолчанию, которое применяется ко всем новым окнам; они по умолчанию (часть) первого «слова» команды (или оболочки по умолчанию, если команды нет). Ваши окна, вероятно, по умолчанию, reattach-to-user-namespaceпотому что вы, это первый интересный бит вашей default-commandценности.

Это было бы немного округло, но вы могли бы поместить команду по умолчанию в сценарий оболочки и указать default-commandвместо этого этот сценарий. При такой конфигурации имя окна по умолчанию (для окон, созданных без явной команды) будет таким, как вы назвали сценарий оболочки.

Иначе, есть несколько способов вручную назвать / переименовать окно:

  • Во время создания с -n:

    new-window -n 'some name'
    

    Вы можете повторно связать c(ключ по умолчанию, используемый для создания окна), чтобы включить «имя по умолчанию» по вашему выбору:

    bind-key c new-window -n 'default name'
    
  • Переименуйте существующее окно:

    rename-window 'new name'
    

    Существует также привязка по умолчанию (префикс ,), которая запросит у вас новое имя и переименует окно.

  • Переименуйте окно с помощью «escape-последовательности», отправленной на tty панели:

    # E.g. in a shell:
    printf '\033kWINDOW_NAME\033\\'
    

Ваше «запросить у меня имя для нового окна» может быть сделано следующим образом (запрос до или после создания окна):

bind-key C command-prompt -p "Name of new window: " "new-window -n '%%'"

bind-key C new-window \; command-prompt -p "Name for this new window: " "rename-window '%%'"

2
Вау, это действительно эпичный ответ, спасибо большое! :)
JS-кодер

7
Я нашел способ установить заголовок по умолчанию: set-option -g default-command "tmux rename-window base; reattach-to-user-namespace -l zsh"устанавливает заголовок по умолчанию base. Вы можете добавить это к своему ответу. :)
JS-кодер

Ваше решение ломает менеджеров tmux, таких как tmuxinator. В этом случае вкладки не переименовываются
SystematicFrank

4

tmux выбирает первую команду в качестве имени окна.

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

set-option -g default-command "i > /dev/null 2>&1; reattach-to-user-namespace -l bash"

Это лучше чем

set-option -g default-command "tmux rename-window i; reattach-to-user-namespace -l bash"

потому что, если вы создадите панель после того, как вручную установите заголовок окна, заголовок снова будет переименован в «i».


1

В дополнение к ответу Криса об установке заголовка окна с помощью new window -n 'somename', вы также можете указать пустую строку ''в качестве имени окна. Таким образом, я могу использовать ярлык по умолчанию (префикс + c), и мне не нужно придумывать имя для временных окон, но я все равно могу переименовать их при необходимости:

bind-key c new-window -n ''


1

На самом деле не ответ больше, чем взломать

Я создал символическую ссылку с

sudo ln -s /usr/local/bin/reattach-to-user-namespace /usr/local/bin/pbash

И теперь это отображается pbashкак заголовок по умолчанию.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.