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; doneou
while ! tmux has-session -t alpha; do sleep 1; done -
Use algo como
xtoolwaitque 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.