za pomocą wielu terminali x-windows z jedną sesją tmux

19

Zwykle pracuję z 2 monitorami, które nie są ustawione w pionie (mam zasilacz stacjonarny pod lewym monitorem), ale chcę mieć 4 okna terminali obok siebie na ekranach, które mogę łatwo przełączać, tak jak to:

wprowadź opis zdjęcia tutaj

To ustawienie bardzo mnie zasmuca, ponieważ nie mogę z łatwością przewijać wszystkich 4 w rozsądny sposób, używając tylko mojej klawiatury (Alt-Tab nie wycina tego dla mnie, ponieważ nie zachowuje „porządkowania” wszystkich 4 okien - jeśli Wielokrotnie naciskałem Alt-Tab, po prostu odbija się między moimi 2 ostatnio używanymi oknami)

Czy istnieje sposób, aby Tmux wygenerował drugie okno X, dzięki czemu mogę mieć 2 okna X, z których każde ma w sobie 2 panele Tmux?

Johnny Boy
źródło
Więc twoim problemem jest (było) to, że masz okna sąsiadująco na dwóch monitorach, a klawisze Alt + Tab między dwoma najnowszymi oknami zamiast wszystkich czterech? To wygląda na pracę dla tiling window manager. Próbowałeś już? Jest ich dużo. awesome, i3, wmii, xmonad, I dwmsą jednymi z najlepszych. Sugerowałbym i3(1), choć dla twoich celów, ponieważ jest łatwy do pobrania (czytanie pliku konfiguracyjnego uczy zarówno elementów sterujących, jak i podstaw konfiguracji) i jest dostosowany do konfiguracji z wieloma monitorami (xinerama / xrandr).
Braden Best
Próbowałem i3 i bardzo mi się podobało, ale spowodowało to awarie na mojej konfiguracji ubuntu mniej więcej raz na godzinę :( Z jakiegoś powodu nie grało to również z moimi monitorami.
johnny_boy
naprawdę? A co z pozostałymi? wmii i xmonad będą kolejnymi w kolejce moich sugestii, ponieważ są one również „fantazyjnymi” kafelkami wms, po których następuje dwm (mój ulubiony). Choć nie są tak szeroko prezentowane jak i3, obsługują wiele monitorów dość elegancko IMO.
Braden Best

Odpowiedzi:

15

tmux pozwala tworzyć „grupy sesji” - wiele sesji, z których wszystkie mogą być dołączone do tego samego zestawu okien.

(Dzięki dzięki https://gist.github.com/chakrit/5004006 :)

W lewym terminalu utwórz nową sesję + grupę okien.

tmux new-session -s left

Podziel go na szyby jak zwykle.

:split-window -v

W drugim (prawym) terminalu połącz się z istniejącą grupą okien. Będziesz musiał nadać mu starą nazwę, aby się połączyć, i własną nazwę sesji, aby ją odróżnić.

tmux new-session -t left -s right

W tej sesji utwórz kolejne okno i podziel

:new-window
:split-window -h

Teraz możesz zobaczyć wszystkie tmuxokna ( ) w każdym oknie (terminalu), ale widok w każdym z nich jest niezależny od drugiego.

Aby przełączać się między nimi (bez używania własnych skrótów menedżera okien), możesz użyć np. xdotool .

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

Są zakładamy, że masz włączone tmux„s set-titlesopcję, w celu nadania nazwy terminala przeszukiwania; i że używasz tylko jednego tmuxokna (zestawu paneli) w każdym.

JigglyNaga
źródło
Aby to zrobić, potrzebuję skryptu, który niezawodnie przeszukuje bieżące okienko i przejdzie do następnego, przy użyciu polecenia „aktywuj okno”, gdy jest to właściwe. Ale jeszcze nie wymyśliłem, jak to zrobić - myślę, że będzie potrzebował dodatkowego magazynu danych poza tym, co jest dostępne tmux.
JigglyNaga,
Uwaga: może być konieczne włączenie agresywnego zmiany rozmiaru (setw -g agresywne-zmiana rozmiaru), w przeciwnym razie okna nie zmieszczą się na pełnym ekranie
dgmora
0

Czy nie można zastosować mało zaawansowanej metody zmiany rozmiaru jednego terminala (poprzez przeciąganie krawędzi) w celu objęcia obu monitorów, tak aby środkowy rozdzielacz znajdował się na granicy dwóch monitorów?

Walf
źródło
1
Nie działa to, jeśli oba monitory mają różne wysokości lub jeśli używasz OS X.
James
0

Będziesz chciał rozpocząć osobną tmuxsesję w każdym terminalu, a następnie podzielić pojedyncze tmuxokno każdej sesji na dwa panele w pionie.

Tak więc w każdym terminalu:

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

Lub krócej, w każdym terminalu:

$ tmux new \; splitw -h

Potrzebujesz dwóch sesji, ponieważ przy jednej sesji dwa terminale zawsze byłyby zsynchronizowane i pokazywałyby to samo tmuxokno.

Następnie użyj skrótów na pulpicie, aby przełączać się między dwoma terminalami.

Osobiście wybrałbym jeden monitor, tmuxsesję i dwa (lub wiele) podzielonych tmuxokien „za sobą” i zamieniałem się nimi Ctrlb- nale to kwestia gustu.

$ tmux new \; splitw -h \; neww \; splitw -h
Kusalananda
źródło