Kann ich einen Standardtitel für ein tmux-Fenster festlegen?

38

Im Moment ist der Titel standardmäßig reattach-to-user-namespace(OS X), was ziemlich ärgerlich ist. Gibt es eine Option, die ich in meinen einfügen kann, tmux.confum einen anderen Standardtitel zu erhalten?

Wenn nicht, wie würde ich eine Schlüsselbindung erstellen, die ein neues Fenster erstellt und mich dann zur Eingabe eines Namens auffordert?

js-coder
quelle
Siehe Antwort hier superuser.com/questions/306028/…
Fredrik Pihl
Hier geht es darum, das automatische Umbenennen zu deaktivieren (was ich bereits getan habe), nicht um Standardnamen, oder?
js-coder
Ich denke du hast recht, sorry!
Fredrik Pihl
Ich benutze set-option -g default-command "reattach-to-user-namespace -l zsh"und ende die meiste Zeit mit einem Fenster mit dem Namen zsh, wie gewünscht. Aus unbekannten Gründen ändert sich manchmal der Name nicht und das Fenster wird aufgerufen reattach-to-user-namespace. Ich habe immer noch kein Muster bemerkt, wann / warum dies passiert, aber es scheint, als gäbe es einen subtilen Fehler oder etwas in meiner Konfiguration.
Jim Stewart
Wie kann die Fensternummer am besten in den Namen eingefügt werden?
DanCat

Antworten:

43

Es gibt keinen globalen Standardfensternamen, der auf alle neuen Fenster angewendet wird. Sie verwenden standardmäßig das erste „Wort“ des Befehls (oder die Standard-Shell, wenn es keinen Befehl gibt) (einen Teil davon). Ihre Fenster sind wahrscheinlich standardmäßig, reattach-to-user-namespaceweil Sie das erste interessante Stück Ihres default-commandWertes sind.

Es wäre ein bisschen rund, aber Sie könnten Ihren Standardbefehl in ein Shell-Skript einfügen und default-commandstattdessen auf dieses Skript verweisen . Bei dieser Konfiguration ist der Standardfenstername (für Fenster, die ohne expliziten Befehl erstellt wurden) der Name des Shell-Skripts.

Andernfalls gibt es verschiedene Möglichkeiten, ein Fenster manuell zu benennen / umzubenennen:

  • Zur Erstellungszeit mit -n:

    new-window -n 'some name'
    

    Sie können erneut binden c(der Standardschlüssel, der zum Erstellen eines Fensters verwendet wird), um einen „Standardnamen“ Ihrer Wahl einzufügen:

    bind-key c new-window -n 'default name'
    
  • Benennen Sie ein vorhandenes Fenster um:

    rename-window 'new name'
    

    Es gibt auch eine Standardbindung (Präfix ,), die Sie zur Eingabe eines neuen Namens auffordert und das Fenster umbenennt.

  • Benennen Sie ein Fenster über eine „Escape-Sequenz“ um, die an das tty eines Fensters gesendet wird:

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

So können Sie mich auffordern, einen Namen für ein neues Fenster einzugeben (Aufforderung vor oder nach dem Erstellen des Fensters):

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
quelle
2
Wow, das ist eine wirklich epische Antwort, vielen Dank! :)
js-coder
7
Ich habe eine Möglichkeit gefunden, einen Standardtitel festzulegen: set-option -g default-command "tmux rename-window base; reattach-to-user-namespace -l zsh"legt einen Standardtitel von fest base. Vielleicht möchten Sie dies zu Ihrer Antwort hinzufügen. :)
js-coder
Ihre Lösung bricht tmux-Manager wie tmuxinator. In diesem Fall werden die Registerkarten nicht umbenannt
SystematicFrank
4

tmux wählt den ersten Befehl als Fensternamen.

Angenommen, Sie möchten, dass "i" der Standardtitel ist, können Sie es so austricksen.

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

Das ist besser als

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

Wenn Sie einen Bereich erstellen, nachdem Sie einen Fenstertitel manuell festgelegt haben, wird der Titel wieder in "i" umbenannt.

David
quelle
1

Zusätzlich zu Chris 'Antwort zum Festlegen des Fenstertitels mithilfe von new window -n 'somename'können Sie auch eine leere Zeichenfolge ''als Namen eines Fensters angeben. Auf diese Weise kann ich die Standardverknüpfung (Präfix + c) verwenden und muss keinen Namen für temporäre Fenster festlegen, kann sie jedoch bei Bedarf umbenennen:

bind-key c new-window -n ''

Ferdy
quelle
1

Keine wirkliche Antwort mehr als ein Hack:

Ich habe einen Symlink mit erstellt

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

Und jetzt wird es pbashals Standardtitel angezeigt.

Marco Aurelio
quelle