No tmux, posso obter 'sair' para sair da janela do terminal que contém e não da própria sessão?

3

Então, quando eu abro um novo terminal (eu uso o terminator no Arch Linux), eu o configurei para abrir uma nova sessão tmux se ela não existir, ou anexar a uma existente. Quando digito exit no prompt, ele sai da sessão do tmux. Eu tenho que digitar exit novamente para sair do terminal. O que eu quero é que digitar exit uma vez saia do terminal, mas deixe tmux em execução, então da próxima vez que eu abrir o terminal ele irá reconectar à sessão tmux anterior. Essencialmente, isso equivale a clicar no botão de saída do gerenciador de janelas, mas eu quero essa funcionalidade ao digitar exit .

EDITAR:

Isso é algo parecido com o que eu quero:

alias exit='if [[ $TMUX = "" ]]; then exit; else tmux detach; exit; fi'

mas o problema é o exit após o tmux detach ser chamado no terminal que contém a sessão tmux, não a própria sessão tmux.

    
por gsingh2011 05.08.2014 / 20:31

2 respostas

2

Temos que declarar duas funções, uma para iniciar o tmux e outra para sair do tmux:

function ttmux {
if     (pgrep tmux); then
       tmux attach
  else tmux
  fi
builtin exit
}

Isto irá executar ou (tmux attach ou tmux) se o processo tmux existir ou não, após você terminar de usar o tmux, a saída integrada será executada para fechar o terminal (se não houver shell aninhado).

function exit {
if      [ ${TMUX} ]; then
          tmux detach
      else builtin exit
     fi
}

Se você dentro do tmux irá desanexá-lo, se não irá executar a saída embutida

Coloque-os em seu .bashrc ou .zshrc e mude o nome da função, se desejar, e chame-os.

>> ttmux # to start tmux
>> exit # to detach tmux
    
por 14.08.2014 / 07:33
0
terminator -e tmux

isto irá iniciar o terminador com o tmux rodando ao invés de um shell. se o terminador do processo do tmux terminar, o terminador será fechado logo em seguida.

    
por 06.08.2014 / 03:32