Puis-je définir un titre par défaut pour une fenêtre tmux?

38

Pour le moment, le titre par défaut est reattach-to-user-namespace(OS X), ce qui est plutôt gênant. Existe-t-il une option que je peux tmux.confutiliser pour obtenir un autre titre par défaut?

Sinon, comment pourrais-je créer une liaison de clé qui crée une nouvelle fenêtre et qui me demande ensuite un nom?

js-coder
la source
Voir la réponse ici superuser.com/questions/306028/…
Fredrik Pihl
C'est à propos de la désactivation du renommage automatique (ce que j'ai déjà fait), pas à propos des noms par défaut, non?
js-coder
Je suppose que tu as raison, désolé!
Fredrik Pihl
J'utilise set-option -g default-command "reattach-to-user-namespace -l zsh", et la plupart du temps, je finis avec une fenêtre nommée zsh, comme vous le souhaitez. Pour des raisons inconnues, parfois le nom ne change pas et la fenêtre est appelée reattach-to-user-namespace. Je n'ai toujours pas remarqué de motif indiquant quand / pourquoi cela se produit, mais il semble y avoir un bogue subtil ou quelque chose dans ma configuration.
Jim Stewart
Quelle est la meilleure façon de mettre le numéro de fenêtre dans le nom?
DanCat

Réponses:

43

Aucun nom de fenêtre global par défaut n'est appliqué à toutes les nouvelles fenêtres. ils utilisent par défaut le premier «mot» de la commande (ou le shell par défaut s'il n'y a pas de commande). Vos fenêtres sont probablement en défaut reattach-to-user-namespaceparce que c'est le premier bit intéressant de votre default-commandvaleur.

Ce serait un peu rond, mais vous pourriez mettre votre commande par défaut dans un script shell et indiquer votre default-commandscript à la place. Avec cette configuration, le nom de fenêtre par défaut (pour les fenêtres créées sans commande explicite) serait celui que vous ayez appelé le script shell.

Sinon, il existe plusieurs façons de nommer / renommer manuellement une fenêtre:

  • Au moment de la création avec -n:

    new-window -n 'some name'
    

    Vous pouvez relier c (la clé par défaut utilisée pour créer une fenêtre) pour incorporer un «nom par défaut» de votre choix:

    bind-key c new-window -n 'default name'
    
  • Renommez une fenêtre existante:

    rename-window 'new name'
    

    Il existe également une liaison par défaut (Prefix , ) qui vous demandera un nouveau nom et renommera la fenêtre.

  • Renommez une fenêtre via une «séquence d'échappement» envoyée au tty d'un volet:

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

Votre «invite moi à donner un nom à une nouvelle fenêtre» peut être fait comme ceci (invite avant ou après la création de la fenêtre):

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
la source
2
Wow, c'est une réponse vraiment épique, merci beaucoup! :)
js-coder
7
J'ai trouvé un moyen de définir un titre par défaut: set-option -g default-command "tmux rename-window base; reattach-to-user-namespace -l zsh"définit un titre par défaut de base. Vous voudrez peut-être ajouter ceci à votre réponse. :)
js-coder
votre solution casse les gestionnaires tmux comme tmuxinator. Dans ce cas, les onglets ne sont pas renommés
SystematicFrank
4

tmux choisit la première commande comme nom de la fenêtre.

Disons que vous voulez que le "i" soit le titre par défaut, vous pouvez le tromper comme ça.

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

C'est mieux que

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

parce que si vous créez un volet après avoir défini manuellement un titre de fenêtre, le titre sera renommé à nouveau en "i".

David
la source
1

En plus de la réponse de Chris sur la définition du titre de la fenêtre à l'aide de new window -n 'somename', vous pouvez également fournir une chaîne vide ''comme nom d'une fenêtre. De cette façon, je peux utiliser le raccourci par défaut (préfixe + c) et je n'ai pas besoin de donner un nom aux fenêtres temporaires, mais je peux quand même les renommer si nécessaire:

bind-key c new-window -n ''

Ferdy
la source
1

Pas vraiment une réponse plus qu'un hack:

J'ai créé un lien symbolique avec

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

Et maintenant, il apparaît comme pbashtitre par défaut.

Marco Aurelio
la source