tmux: sessão compartilhada, um usuário em um painel, outro em outro painel, dois cursores diferentes

17

Decidi tentar o tmux: tenho lido os documentos e pesquisado, tentando encontrar uma maneira de dois usuários compartilharem uma sessão, cada um com um cursor diferente.

No entanto, conceder 777 permissões ao soquete ou criar um grupo, chgrpadicionar o soquete e adicionar os dois usuários, parece permitir que o mesmo soquete seja usado para compartilhar uma sessão com apenas um cursor: os dois usuários podem escrever, mas sempre no mesma posição do cursor.

No momento, os dois usuários estão no mesmo servidor doméstico por ssh, e a ideia é poder ter:

  • Um terminal em, digamos, painel esquerdo, onde eu posso digitar comandos
  • Outro terminal no painel direito, onde posso ver outro usuário digitando comandos em seu próprio terminal
  • A mesma coisa para o outro usuário

O que eu estou fazendo no momento está usando duas sessões (não compartilhados) e um script -fe tail -fcombinação que meio que trabalha para ler uns aos outros de cursos chaves, mas eu acho provavelmente há alguma maneira de fazer isso usando tmux recursos de compartilhamento.

Existe uma maneira de obter essa idéia trabalhando com suporte de gravação no terminal um do outro?

Qual é a melhor maneira de fazer isso?

ferhtgoldaraz
fonte
@ clement Não, isso faz com que dois usuários vejam exatamente o mesmo; isto é, existe apenas um cursor e ambos estão no painel direito ou ambos no painel esquerdo. Mas obrigado de qualquer maneira
ferhtgoldaraz

Respostas:

20

Essa pergunta é um pouco antiga, mas eu estava procurando por algo semelhante e a encontrei aqui . Ele cria uma segunda sessão que compartilha janelas com a primeira, mas tem sua própria exibição e cursor.

tmux new-session -s alice
tmux new-session -t alice -s bob

Se o compartilhamento estiver ocorrendo entre duas contas de usuário, talvez você ainda precise mexer nas permissões (o que parece que você já estava trabalhando).

Edit: Como sugerido, uma citação de outra resposta :

Primeiro, adicione um grupo para usuários do tmux

export TMUX_GROUP=tmux
addgroup $TMUX_GROUP

Crie um diretório com o grupo definido como $ TMUX_GROUP e use o bit setgid para que os arquivos criados dentro do diretório tenham automaticamente o grupo definido como $ TMUX_GROUP.

mkdir /var/tmux
chgrp $TMUX_GROUP /var/tmux
chmod g+ws /var/tmux

Em seguida, verifique se os usuários que desejam compartilhar a sessão são membros de $ TMUX_GROUP

usermod -aG $TMUX_GROUP user1
usermod -aG $TMUX_GROUP user2
kmac
fonte
Bem-vindo ao * nix.SE! Esta é uma boa primeira resposta, embora eu recomendo que você considere adicionar alguns dos bits mais úteis dos dois segundos links in-line (para ajudar a evitar o rot-link). :)
HalosGhost
4
Isso permite que dois usuários insiram em janelas diferentes, mas não em painéis diferentes na mesma janela. (tmux 1.6)
awatts
2

Você pode tentar executar duas sessões separadas do tmux de uma só vez - uma para você e a segunda para o outro usuário. Em seguida, use o sistema de janelas do seu sistema operacional para organizar dois terminais lado a lado, um para você e outro para ele. Se você precisar escrever em seu terminal, escolha-o para entrada.

Você executa (cada comando em seu próprio terminal):

tmux new-session -s Alice
tmux new-session -s Bob

E então Bob executa (novamente, cada comando em seu próprio terminal):

tmux attach -t Alice
tmux attach -t Bob

Se você não possui um sistema de janelas que suporta exibição lado a lado ou detesta o mouse, cada um (cuidadosamente) pode configurá-lo em uma sessão de tela não compartilhada / wrapper tmux.

fwip
fonte
Obrigado, mas eu precisava disso em um ambiente de servidor, portanto, sem janelas (estávamos brincando com a forma como servidores de trabalho)
ferhtgoldaraz
1
@ferhtgoldaraz: você pode simplesmente usar uma sessão tmux dividida para conter as duas subsessões!
Ashe
@Yuki: Interessante, vou investigar isso #
ferhtgoldaraz 27/11/14
@Ashe O que você quer dizer com sessão tmux dividida e duas subsessões? Você pode elaborar por favor?
elquimista 10/01
Olá, @elquimista há mais de 4 anos! O que eu quis dizer foi executar o tmux, dividir a janela em dois painéis (por exemplo, com ctrl-b% ou ctrl-b ") e executar o tmux (novamente) em cada painel, compartilhando sessões conforme sugerido na resposta.
Ashe