Portanto, uma abordagem é gerar uma nova janela e, em seguida, anexar:
tmux -S /tmp/socket new-window -n vi /usr/bin/vi
tmux -S /tmp/socket attach
Assim, o cliente pode criar uma nova janela e, em seguida, conectar-se a ela.
No entanto, suspeito que uma sessão do tmux pode não estar fazendo o que você deseja fazer.
A razão pela qual attach
não tem comando é porque uma sessão representa uma visão do que é visto atualmente na tela, que é compartilhado entre todos os clientes conectados. Então, anexar um comando é um pouco estranho. Todos os clientes verão a mesma coisa, e a chamada new-window
mudará a visualização de todos os clientes conectados.
Se você quiser compartilhar uma coleção de janelas (por exemplo, exibições de programas em execução), mas cada cliente tiver uma visualização distinta, será necessário criar sessões. Você pode usar o argumento -t
para new-session
para fazer uma sessão que compartilhe suas janelas com outra sessão. Aparentemente, você não pode usar -t
junto com um comando para a nova sessão, que na verdade é um caso de uso válido, portanto, você acaba usando o sinalizador -d
e, em seguida, gerando o comando. Para tornar as coisas ainda mais irritantes, parece que new-window
não possui um argumento de sessão, então você confia na ordem em que as coisas são chamadas!
tmux -S /tmp/socket new-session -s base # run once
# For each client
tmux -S /tmp/socket new-session -t client-view -d
tmux -S /tmp/socket new-window /usr/bin/vi
tmux -S /tmp/socket attach -t client-view
Isso é tudo um pouco de kludge eu consegui usar esse tipo de abordagem efetivamente por vários anos. (Cada uma das minhas janelas de terminal é uma visão distinta em uma sessão compartilhada do tmux).
Você pode estar interessado neste script link que envolve tudo isso em um único script de shell .