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.)