Inicia uma nova sessão a partir do tmux com ZSH_TMUX_AUTOSTART = true

2

Eu habilitei o plugin tmux em oh-my-zsh com ZSH_TMUX_AUTOSTART=true e agora toda vez que eu abro o terminal eu estou anexado a uma sessão. Essa parte é muito legal.

O problema é que agora não consigo iniciar uma nova sessão e ter acesso ao shell.

Existe uma maneira de iniciar uma nova sessão sem desativar o tmux plugi?

$ tmux new-session -s new
sessions should be nested with care, unset $TMUX to force

Eu abri um ticket no github: link

    
por firedev 06.10.2014 / 06:13

2 respostas

1

tmuxinator resolveu:

tmuxinator start [project]

E ele passa pela atual sessão tmux diretamente para a nova.

    
por 10.10.2014 / 04:44
2

Sem -d , new-session será anexado automaticamente à nova sessão (você provavelmente não deseja sessões aninhadas * , portanto, o aviso). O que você provavelmente quer fazer é criar uma nova sessão “desanexada” e depois alternar o cliente atual para essa nova sessão. Eu não acho que new-session tenha uma opção para lidar com esse caso de uso, mas é bastante fácil de fazer com um pouco de shell de script:

tmux-new() {
  if [[ -n $TMUX ]]; then
    tmux switch-client -t "$(TMUX= tmux -S "${TMUX%,*,*}" new-session -dP "$@")"
  else
    tmux new-session "$@"
  fi
}

# example usage:
tmux-new -s new

Se não houver TMUX, basta executar tmux new … . Caso contrário,

  • desabilite o TMUX para evitar o erro enquanto usa -S para apontar para o servidor atual,
  • adicione -d para criar uma sessão desanexada e
  • adicione -P para imprimir o nome da nova sessão (isso requer tmux 1.8 ou posterior).

A saída (o nome da nova sessão) é então atribuída a switch-client .

Se você não tiver o tmux 1.8, poderá ter que refazê-lo um pouco (por exemplo, fazer a função assumir um argumento obrigatório que nomeie a nova sessão para que você possa passá-la para new-session e switch-client ).

* Você teria duas barras de status; é complicado digitar os comandos tmux para a sessão interna; e pode fazer coisas estranhas se você alternar o cliente interno para visualizar a sessão externa (pense: hall of espelhos).
† Talvez o aviso deva ser suprimido ao usar -d

    
por 07.10.2014 / 06:44