Ao sair do último terminal em uma sessão do tmux, ele pode mudar para outro?

8

Quando eu sair do último terminal em uma sessão do tmux, ele fechará automaticamente o tmux e me retornará ao terminal pai. É possível ter o tmux alternando para outra sessão já em execução em vez de fechar?

Eu crio uma nova sessão nomeada para cada tarefa em que trabalho, como TRxxx, email, scratch etc e quando termino com um deles eu fecho todos os terminais executando exit em cada um. Quando você executa a saída no último terminal de uma sessão, o tmux retornará ao terminal pai, mas é possível fazer com que ele simplesmente mude para uma das outras sessões abertas, para que eu não precise reconectar?

Esta questão é semelhante a " Kill a tmux sessão e selecione outra sessão do tmux "mas eu quero fechar meus terminais da maneira mais legal usando exit ao invés de matar a janela.

    
por David Holm 26.03.2014 / 10:14

3 respostas

2

O mais perto que cheguei foi uma função do tmux que escrevi. Eu normalmente saio do shell apertando Ctrl + D , então eu programo tmux para sair e alternar as sessões quando pressiono [PREFIX] Ctrl + D . Coloque o seguinte no seu .tmux.conf :

bind C-d run-shell "                                        \
    if [ #{session_windows} -eq 1 ] &&                      \
       [ #{window_panes}    -eq 1 ] &&                      \
       [ #{pane_current_command}  = 'bash' ]; then          \
        if [ \$(tmux list-sessions | wc -l) -ge 2 ]; then   \
            tmux switch-client -ln;                         \
        fi; tmux kill-session -t \"#S\";                    \
    else                                                    \
        tmux display-message \"Ignoring kill session...\";  \
    fi;                                                     \
    "

Pressione [PREFIX] Ctrl + D e saia da sessão atual se (e somente se) ela contiver apenas um shell que não esteja executando nenhum outro comando. Mudará para outra sessão, se possível. Eu uso o bash shell, então você pode precisar alterá-lo para algo que você está usando.

ps: caso seja importante, estou usando o tmux 1.9a.

    
por 25.04.2014 / 10:29
20

Adicionei isso ao meu ~/.tmux.conf :

set-option -g detach-on-destroy off

Quando eu destruo o último shell em uma sessão, ele alterna para outra sessão ativa. Quando todas as sessões estiverem fechadas, tmux sai.

    
por 26.01.2016 / 19:05
2

Adicione essas linhas ao seu .bashrc e tente:

if which tmux 2>&1 >/dev/null 
then
    # start a new session if not exist
    test -z ${TMUX} && tmux

    # when quitting tmux, try to attach to other session
    while test -z ${TMUX}; do
        tmux attach || break
    done
fi
    
por 26.03.2014 / 10:34

Tags