tmux inicia o processo se ainda não estiver em execução

1

No meu .zshrc , tenho um pouco de lógica que iniciará automaticamente uma sessão do tmux ou, se as sessões já estiverem em execução, solicitará a anexação a uma delas ou criará uma nova e anexará a ela. Isso tudo funciona muito bem, mas eu tenho um novo requisito que não consigo acertar: quando uma nova sessão é iniciada e um processo específico não está em execução, inicie esse processo e crie uma nova janela; Se o processo estiver sendo executado em algum lugar, inicie uma nova sessão normalmente.

Nesse caso, quero que irssi seja iniciado automaticamente em uma sessão. O seguinte (em que $choice é feito pelo processo de seleção, conforme descrito acima) é o mais próximo que cheguei de fazê-lo funcionar:

exec tmux -2 new-session -A -s $choice $(pgrep irssi || echo "irssi; new-window")

Isso funciona perfeitamente quando eu tenho apenas uma sessão - que é a maior parte do tempo - mas, se eu tentar criar uma nova sessão, ela simplesmente se desconecta.

Se eu fatorar o acima em um condicional:

if pgrep irssi; then
  exec tmux -2 new-session -A -s $choice
else
  exec tmux -2 new-session -A -s $choice "irssi; new-window"
  # splitting out 'tmux new-window' also doesn't work
fi

... Eu tenho o problema oposto em que agora as sessões secundárias (não-irssi) começam bem, sem se separar imediatamente, mas a sessão irssi obtém apenas uma janela irssi e a nova janela shell não aparece. (Isto é indiscutivelmente mais perto do que eu quero do que a primeira versão, mas porque eu quase sempre só tenho uma sessão, que ganha como esta versão me obriga a fazer Prefix-c para uma nova janela.)

    
por Xophmeister 20.01.2016 / 16:26

0 respostas

Tags