Você pode fazer isso de duas maneiras:
-
Use o método
sleep
. Não vejo nada de errado em usarsleep
, às vezes, se você escolher um tempo muito curto. Para enganar, usewhile ! tmux has-session; do sleep 1; done
ou
while ! tmux has-session -t alpha; do sleep 1; done
-
Use algo como
xtoolwait
que inicia um cliente X (seu emulador de terminal) em segundo plano e retorna quando mapeou sua janela.
Se você escolher a segunda opção (que pode ser melhor), lembre-se de remover o &
no final do comando, iniciando seu terminal, e também se torna desnecessário para disown
do trabalho.
O comando se torna:
xtoolwait xterm -fa "Inconsolata" -e tmux new-session -s alpha
tmux new-window -t alpha bash
Se o xtoolwait
ainda não estiver instalado no seu Unix, ele provavelmente estará disponível como um pacote (ele está disponível há idades ). Use o gerenciador de pacotes de sua preferência para instalá-lo.
EDITAR : Nos comentários, parece que tmux
demora muito para aparecer depois que o terminal mapeou sua janela, mesmo se xtoolwait
estiver sendo usado. Então, nessa situação, eu iria com o loop de uma chamada sleep 1
até que a sessão tmux
desejada existisse.