Czy mogę ustawić domyślny tytuł dla okna Tmux?

38

Obecnie domyślnym tytułem jest reattach-to-user-namespace(OS X), co jest dość denerwujące. Czy istnieje opcja mogę umieścić w moim tmux.confdostać inny domyślny tytuł?

Jeśli nie, w jaki sposób utworzę powiązanie klucza, które tworzy nowe okno, a następnie monituje mnie o nazwę?

koder js
źródło
Zobacz odpowiedź tutaj superuser.com/questions/306028/…
Fredrik Pihl
Chodzi o wyłączenie automatycznej zmiany nazwy (co już zrobiłem), a nie o domyślne nazwy, prawda?
koder js
Chyba masz rację, przepraszam!
Fredrik Pihl
Używam set-option -g default-command "reattach-to-user-namespace -l zsh"i przez większość czasu okno jest nazywane zshzgodnie z życzeniem. Z nieznanych powodów czasami nazwa się nie zmienia, a okno zostaje wywołane reattach-to-user-namespace. Nadal nie zauważyłem wzorca określającego, kiedy / dlaczego tak się dzieje, ale wygląda na to, że może istnieć subtelny błąd lub coś w mojej konfiguracji.
Jim Stewart,
Jaki jest najlepszy sposób na umieszczenie numeru okna w nazwie?
DanCat

Odpowiedzi:

43

Nie ma globalnej domyślnej nazwy okna, która byłaby stosowana do wszystkich nowych okien; domyślnie (część) pierwszego „słowa” polecenia (lub domyślnej powłoki, jeśli nie ma polecenia). Twoje okna są domyślnie reattach-to-user-namespaceustawione na default-commandwartość domyślną, ponieważ jest to pierwszy interesujący element Twojej wartości.

To byłoby trochę dookoła, ale możesz umieścić domyślne polecenie w skrypcie powłoki i default-commandzamiast tego skierować go na ten skrypt. W tej konfiguracji domyślna nazwa okna (dla okien utworzonych bez jawnego polecenia) będzie taka, jak nazwa skryptu powłoki.

W przeciwnym razie istnieje kilka sposobów ręcznego nazwania / zmiany nazwy okna:

  • W czasie tworzenia z -n:

    new-window -n 'some name'
    

    Możesz ponownie powiązać c(domyślny klucz używany do utworzenia okna), aby uwzględnić wybraną „domyślną nazwę”:

    bind-key c new-window -n 'default name'
    
  • Zmień nazwę istniejącego okna:

    rename-window 'new name'
    

    Istnieje również domyślne powiązanie (Prefiks ,), które monituje o podanie nowej nazwy i zmianę nazwy okna.

  • Zmień nazwę okna za pomocą „sekwencji ucieczki” wysłanej do tty panelu:

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

Twoje „monituj mnie o nazwę nowego okna” można wykonać w następujący sposób (monit przed lub po utworzeniu okna):

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 '%%'"
Chris Johnsen
źródło
2
Wow, to naprawdę epicka odpowiedź, wielkie dzięki! :)
koder js
7
Znalazłem sposób na ustawienie domyślnego tytułu: set-option -g default-command "tmux rename-window base; reattach-to-user-namespace -l zsh"ustawia domyślny tytuł base. Możesz dodać to do swojej odpowiedzi. :)
koder js
Twoje rozwiązanie psuje menedżerów Tmux, takich jak Tmuxinator. W takim przypadku nazwy kart nie zostaną zmienione
SystematicFrank
4

tmux wybiera pierwsze polecenie jako nazwę okna.

Powiedzmy, że chcesz, aby „i” był domyślnym tytułem, możesz go oszukać w ten sposób.

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

To jest lepsze niż

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

ponieważ jeśli utworzysz panel po ręcznym ustawieniu tytułu okna, nazwa zostanie ponownie zmieniona na „i”.

David
źródło
1

Oprócz odpowiedzi Chrisa na ustawienie tytułu okna za pomocą new window -n 'somename', możesz również podać pusty ciąg ''jako nazwę okna. W ten sposób mogę użyć domyślnego skrótu (przedrostek + c) i nie muszę wymyślać nazwy dla tymczasowych okien, ale nadal mogę zmienić ich nazwy, jeśli to konieczne:

bind-key c new-window -n ''

Ferdy
źródło
1

Naprawdę nie odpowiedź to więcej niż włamanie:

Utworzyłem dowiązanie symboliczne z

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

A teraz jest wyświetlany jako pbashdomyślny tytuł.

Marco Aurelio
źródło