No iTerm2 como posso me conectar automaticamente a uma sessão tmux existente usando -CC?

4

Eu encontrei usando iTerm2 e tmux -CC para ser bastante útil para vincular a interface existente do iTerm com o tmux windows & painéis.

Estou tentando descobrir como me conectar automaticamente a uma sessão existente no lançamento do iTerm (com a configuração Send text at start: profile) ou criar um novo caso ele não exista.

Eu já vi várias pessoas sugerindo algo como o seguinte:

tmux attach -t base || tmux new -s base

mas adicionar o sinalizador -CC resulta em algum comportamento estranho / não funciona. Eu recebo o seguinte erro no primeiro lançamento:

A tmux protocol error occurred.
Reason: %begin with empty command queue

e o shell (cliente?) tem a seguinte saída:

> tmux -CC attach -t base || tmux -CC new -s base                     
** tmux mode started **

Command Menu
----------------------------
esc    Detach cleanly.
  X    Force-quit tmux mode.
  L    Toggle logging.
  C    Run tmux command.
Detached
** tmux mode started **

Command Menu
----------------------------
esc    Detach cleanly.
  X    Force-quit tmux mode.
  L    Toggle logging.
  C    Run tmux command.
Detached
%output %0 553M3[0m3[23m3[24m3[J3[36m@3[32mgloesch3[m7 3[1m3[34m~3[m7 52> 3[K3[68C3[31m<system>3[m7 3[m73[77D
%begin 1444229906 14 1
%end 1444229906 14 1
%exit

Uma segunda janela é criada durante esse processo, mas acaba sendo fechada assim que tudo terminar.

    
por loeschg 07.10.2015 / 01:59

1 resposta

2

Em vez de usar Send text at start: , sugiro passar o comando como um argumento para o ssh. No meu caso, o seguinte funciona (com o mais recente iTerm2 beta, então você pode querer tentar e atualizar para que, se não funcionar para você):

ssh -t <user>@<remote> "tmux -CC new -A -s foo"

Você pode colocar isso em uma função e colocar isso no seu arquivo init shell ( .zshrc , .bashrc et al.) para facilitar a chamada:

$ cat ~/.zshrc
function cch {
  ssh -t $@ "tmux -CC new -A -s foo"
}
$ cch <user>@<remote>

Consulte a página do manual do tmux para obter detalhes sobre a opção -A para o comando new-session e também sobre este tópico sobre o GitLab do iTerm, onde George Nachman sugeriu esta solução elegante usando -A que se integra bem com o iTerm.

    
por 21.02.2016 / 14:40