Esse é um caso de uso estranho, mas o que você precisa fazer é escrever um wrapper em torno do tmux (chamá-lo de mytmux
ou algo assim) que:
- chama
tmux ls
e analisa a saída, procurando por algo que não esteja anexado - anexar à primeira sessão não anexada, -OR -
- crie uma sessão se nenhuma sessão livre for encontrada e anexar a ela
O comando tmux ls
deve retornar algo assim se houver alguma sessão:
<~> $ tmux ls
0: 1 windows (created Mon Sep 16 21:42:16 2013) [120x34] (attached)
em que o campo inicial ('0') é o nome da sessão e o último campo indica se alguém está conectado a ele. Então, se ninguém estava ligado, ficaria assim:
<~> $ tmux ls
0: 1 windows (created Mon Sep 16 21:42:16 2013) [120x34]
e se alguns estivessem ligados e outros não, você teria:
<~> $ tmux ls
0: 1 windows (created Mon Sep 16 21:42:16 2013) [120x34] (attached)
1: 1 windows (created Mon Sep 16 21:43:30 2013) [120x34]
Se você não encontrar nenhuma sessão ou nenhuma sessão gratuita, execute tmux new
para criar uma. Se você encontrar uma sessão livre, execute tmux attach -t 1
, em que '1' é o nome da sessão gratuita.