usando vários x-windows de terminal com uma sessão tmux

19

Normalmente, trabalho com 2 monitores que não estão alinhados verticalmente (tenho uma fonte de alimentação de bancada embaixo do monitor esquerdo), mas quero ter 4 janelas de terminal lado a lado nas telas nas quais possa percorrer facilmente, da seguinte forma:

insira a descrição da imagem aqui

Esse arranjo me deixa muito triste porque não consigo percorrer facilmente os quatro de uma maneira sã usando apenas o teclado (a tecla alt-tab não é suficiente para mim porque não mantém a "ordem" das quatro janelas - se Eu pressiono repetidamente alt-tab, ele apenas salta entre minhas 2 janelas menos usadas recentemente)

Existe uma maneira de obter o tmux para gerar uma segunda janela x para que eu possa ter duas janelas x, com cada uma delas tendo 2 painéis tmux dentro dela?

Johnny Boy
fonte
Portanto, seu problema é (foi) o fato de você ter suas janelas lado a lado em dois monitores e alternar entre alt + tabs entre as duas janelas mais recentes em vez das quatro? Parece um trabalho para um tiling window manager. Você já experimentou algum? Existem muitos deles. awesome, i3, wmii, xmonad, E dwmestão entre os melhores. Embora, para seus propósitos, eu sugiro i3(1), já que é simples de entender (ler o arquivo de configuração ensina os controles e os conceitos básicos de configuração) e é adaptado para configurações de vários monitores (xinerama / xrandr).
precisa
Tentei i3 e eu absolutamente amamos, mas causou acidentes na minha configuração ubuntu sobre a uma hora :( Também não jogar bonito com meus monitores por algum motivo.
johnny_boy
verdade? E os outros? O wmii e o xmonad seriam os próximos na minha fila de sugestões, pois também são wms "sofisticados", seguidos por dwm (meu favorito). Embora não sejam tão extensivamente apresentados como o i3, eles lidam com vários monitores de maneira muito elegante no IMO.
precisa

Respostas:

15

tmux permite criar "grupos de sessões" - várias sessões que podem ser anexadas ao mesmo conjunto de janelas.

(Com agradecimentos a https://gist.github.com/chakrit/5004006 :)

No terminal esquerdo, crie uma nova sessão + grupo de janelas.

tmux new-session -s left

Divida-o em painéis, como de costume.

:split-window -v

No outro terminal (direito), conecte-se ao grupo de janelas existente. Você precisará atribuir o nome antigo ao qual se conectar e o próprio nome da sessão para distingui-lo.

tmux new-session -t left -s right

Nessa sessão, crie outra janela e divida

:new-window
:split-window -h

Agora você pode ver todas as tmuxjanelas ( ) em cada janela (terminal), mas a exibição em cada uma é independente da outra.

Para alternar de um para o outro (sem usar os atalhos do seu gerenciador de janelas), você pode usar, por exemplo. xdotool .

xdotool search --name 'left:0:' windowactivate
xdotool search --name 'right:1:' windowactivate

Eles assumem que você ativou tmuxa set-titlesopção para atribuir um nome pesquisável ao terminal; e você está usando apenas uma tmuxjanela (conjunto de painéis) em cada uma.

JigglyNaga
fonte
Para concluir isso, preciso de um script que consulte com segurança o painel atual e avance para o "próximo", usando o comando "ativar janela" quando apropriado. Mas ainda não descobri como fazer isso - acho que vai precisar de algum armazenamento de dados adicional além do que está disponível tmux.
JigglyNaga
Note que você pode precisar para ligar redimensionamento agressivo (setw -g agressiva-redimensionamento on), caso contrário, as janelas não vai caber a tela cheia
dgmora
0

Você não pode executar o método de baixa tecnologia de redimensionar um terminal (arrastando as bordas) para cobrir os dois monitores, de modo que o divisor central esteja no limite dos dois monitores?

Walf
fonte
11
Isso não funciona se ambos os monitores são diferentes alturas, ou se você estiver usando OS X.
James
0

Você deseja iniciar uma tmuxsessão separada em cada terminal e depois dividir a tmuxjanela única de cada sessão em dois painéis verticalmente.

Então, em cada terminal:

$ tmux new-session \; split-window -h

Ou mais curto, em cada terminal:

$ tmux new \; splitw -h

Você precisa de duas sessões, porque com uma sessão, os dois terminais sempre serão sincronizados e mostrarão a mesma tmuxjanela.

Em seguida, use os atalhos da área de trabalho para alternar entre os dois terminais.

Pessoalmente, eu teria optado por um único monitor, uma tmuxsessão e duas (ou muitas) tmuxjanelas divididas "atrás" uma da outra e trocadas entre elas com Ctrlb- n, mas isso é uma questão de gosto.

$ tmux new \; splitw -h \; neww \; splitw -h
Kusalananda
fonte