Por enquanto, não existe uma maneira específica de o tmux executar automaticamente comandos disparados por detach
ou fechar todas as janelas da sessão. No entanto, como você já tem um script de wrapper (eu chamarei isso de tmux_wrapper
) que abre a sessão personalizada desejada, é possível converter facilmente esse script para automatizar a limpeza. Eu faço algo muito semelhante a isso eu mesmo aqui , onde eu queria permitir sessões tmux aninhadas se eu estou anexando através de ssh.
Como você tem uma experiência personalizada em mente, não precisa mais de tmux attach ....
ou de comandos semelhantes, portanto, assumirei que você sempre inicia a sessão do projeto A por algo como tmux_wrapper A
. Em seu wrapper, você provavelmente tem uma linha semelhante a tmux new-session -s A
. Aqui podemos aproveitar o nome da sessão A
. Em seguida, no final do wrapper, você pode ter uma opção de limpeza que só é ativada se a sessão não estiver mais ativa (por exemplo, janelas / painéis não podem mais ser anexados).
Um exemplo simples tmux_wrapper
seria algo como isto:
#!/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
Execute como tmux_wrapper A
. Agora, a limpeza ocorrerá automaticamente para a sessão A se e somente se a sessão tiver sido completamente fechada.