Im Moment gibt es keine spezielle Möglichkeit, dass tmux automatisch Befehle ausführt, die von detach
allen Fenstern in der Sitzung ausgelöst oder geschlossen werden. Da Sie jedoch bereits über ein Wrapper-Skript verfügen (ich werde das so nennen tmux_wrapper
), das die gewünschte benutzerdefinierte Sitzung öffnet, können Sie dieses Skript leicht konvertieren, um die Bereinigung zu automatisieren. Ich mache etwas ganz ähnlich wie dies ich hier, wo ich verschachtelte tmux Sitzungen ermöglichen wollte, wenn ich durch ssh bin Befestigung.
Da Sie eine benutzerdefinierte Erfahrung im Sinn haben, benötigen Sie nicht mehr die tmux attach ....
oder ähnliche Befehle. Daher gehe ich davon aus, dass Sie die Sitzung für Projekt A immer mit etwas beginnen tmux_wrapper A
. In Ihrem Wrapper haben Sie wahrscheinlich eine ähnliche Zeile tmux new-session -s A
. Hier können wir den Sitzungsnamen nutzen A
. Am Ende Ihres Wrappers können Sie dann einen Bereinigungsschalter verwenden, der nur aktiviert wird, wenn die Sitzung nicht mehr live ist (dh Fenster / Fenster sind nicht mehr anfügbar).
Ein einfaches Beispiel tmux_wrapper
würde ungefähr so aussehen:
#!/bin/sh sess=$1 # test if the session has windows is_closed(){ n=$(tmux ls 2> /dev/null | grep "^$sess" | wc -l) [[ $n -eq 0 ]] } # either create it or attach to it if is_closed ; then tmux new -s $sess else tmux attach -t $sess fi # the session is now either closed or detatched if is_closed ; then # perform cleanup here ... fi
Führe es so aus tmux_wrapper A
. Jetzt wird die Bereinigung für Sitzung A automatisch und nur dann ausgeführt, wenn die Sitzung vollständig geschlossen wurde.