Posso impostare un titolo predefinito per una finestra di tmux?


38

In questo momento il titolo predefinito è reattach-to-user-namespace(OS X), il che è piuttosto fastidioso. C'è un'opzione che posso mettere nel mio tmux.confper ottenere un altro titolo predefinito?

In caso contrario, come farei un'associazione chiave che crea una nuova finestra e quindi mi chiede un nome?



Si tratta di disabilitare la ridenominazione automatica (cosa che ho già fatto), non i nomi predefiniti, giusto?
js-coder,

Immagino tu abbia ragione, scusa!
Fredrik Pihl,

Uso set-option -g default-command "reattach-to-user-namespace -l zsh", e la maggior parte delle volte finisce con una finestra chiamata zsh, come desiderato. Per motivi sconosciuti, a volte il nome non cambia e viene chiamata la finestra reattach-to-user-namespace. Non ho ancora notato uno schema su quando / perché ciò accada, ma sembra che potrebbe esserci un bug sottile o qualcosa nella mia configurazione.
Jim Stewart,

Qual è il modo migliore per inserire il numero della finestra nel nome?
DanCat

Risposte:


43

Non esiste un nome di finestra predefinito globale applicato a tutte le nuove finestre; per impostazione predefinita (parte di) la prima "parola" del comando (o la shell predefinita se non è presente alcun comando). Probabilmente le tue finestre sono inadempienti reattach-to-user-namespaceperché sei il primo pezzo interessante del tuo default-commandvalore.

Sarebbe un po 'circolare, ma potresti inserire il tuo comando predefinito in uno script di shell e invece puntare default-commanda quello script. Con quella configurazione il nome predefinito della finestra (per le finestre create senza un comando esplicito) sarebbe come si chiamava lo script della shell.

Altrimenti, ci sono diversi modi per nominare / rinominare manualmente una finestra:

  • Al momento della creazione con -n:

    new-window -n 'some name'
    

    È possibile ricollegare c(la chiave predefinita utilizzata per creare una finestra) per incorporare un "nome predefinito" di propria scelta:

    bind-key c new-window -n 'default name'
    
  • Rinomina una finestra esistente:

    rename-window 'new name'
    

    Esiste anche un'associazione predefinita (Prefisso ,) che ti chiederà un nuovo nome e rinominerà la finestra.

  • Rinomina una finestra tramite una "sequenza di escape" inviata al tty di un riquadro:

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

Il tuo "suggeriscimi un nome per una nuova finestra" può essere fatto in questo modo (richiedendo prima o dopo aver creato la finestra):

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
Caspita, questa è una risposta davvero epica, grazie mille! :)
js-coder

7
Ho trovato un modo per impostare un titolo predefinito: set-option -g default-command "tmux rename-window base; reattach-to-user-namespace -l zsh"imposta un titolo predefinito di base. Potresti voler aggiungere questo alla tua risposta. :)
js-coder

la tua soluzione rompe i gestori di tmux come tmuxinator. In tal caso, le schede non vengono rinominate
SystematicFrank

4

tmux seleziona il primo comando come nome della finestra.

Di 'che vuoi che "i" sia il titolo predefinito, puoi ingannarlo in questo modo.

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

Questo è meglio di

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

perché se si crea un riquadro dopo aver impostato manualmente il titolo di una finestra, il titolo verrà nuovamente rinominato in "i".


1

Oltre alla risposta di Chris sull'impostazione del titolo della finestra new window -n 'somename', puoi anche fornire una stringa vuota ''come nome di una finestra. In questo modo, posso usare il collegamento predefinito (prefisso + c) e non ho bisogno di trovare un nome per le finestre temporanee, ma posso ancora rinominarle quando necessario:

bind-key c new-window -n ''


1

Non proprio una risposta più di un hack:

Ho creato un collegamento simbolico con

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

E ora mostra come pbashtitolo predefinito.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.