использование нескольких терминальных x-windows с одним сеансом tmux

19

Я обычно работаю с двумя мониторами, которые не совсем выровнены по вертикали (у меня есть настольный источник питания под моим левым монитором), но я хочу, чтобы на моих экранах было 4 окна терминала, которые я мог бы легко прокручивать, например:

введите описание изображения здесь

Такое расположение меня очень огорчает, потому что я не могу легко переключаться между всеми четырьмя вменяемым способом, используя только свою клавиатуру (alt-tab не вырезает ее для меня, потому что она не сохраняет «порядок» всех 4 окон - если Я многократно нажимаю alt-tab, он просто подпрыгивает между моими 2 наименее недавно использованными окнами)

Есть ли способ заставить tmux сгенерировать второе x-окно, чтобы у меня было 2 x-окна, в каждом из которых есть 2 панели tmux?

Johnny Boy
источник
Итак, ваша проблема в том, что у вас есть окна, разделенные на два монитора, и циклы alt + tab между двумя последними окнами вместо всех четырех? Это похоже на работу для tiling window manager. Вы пробовали что-нибудь? Их много. awesome, i3, wmii, xmonad, И dwmявляются одними из лучших. Хотя для ваших целей я бы посоветовал i3(1), так как его легко подобрать (чтение файла конфигурации учит вас как элементам управления, так и основам конфигурации) и адаптирован к настройкам с несколькими мониторами (xinerama / xrandr).
Брэден Бест
Я попробовал i3, и мне это очень понравилось, но это приводило к сбоям в моей настройке Ubuntu примерно раз в час :( По некоторым причинам он тоже не очень хорошо работал с моими мониторами.
johnny_boy
действительно? Как насчет других? Следующими в моей очереди предложений будут wmii и xmonad, так как они также являются «причудливыми» плитками wms, за которыми следует dwm (мой личный фаворит). Хотя они не так широко представлены, как i3, они довольно элегантно поддерживают несколько мониторов IMO.
Брэден Бест

Ответы:

15

tmux позволяет создавать «группы сессий» - несколько сессий, которые можно подключить к одному и тому же набору окон.

(Благодарю https://gist.github.com/chakrit/5004006 :)

В левом терминале создайте новую сессию + группу окон.

tmux new-session -s left

Разделите его на панели как обычно.

:split-window -v

В другом (правом) терминале подключитесь к этой существующей группе окон. Вам нужно будет дать ему старое имя для подключения и собственное имя сеанса, чтобы отличить его.

tmux new-session -t left -s right

В этом сеансе создайте другое окно и разделите

:new-window
:split-window -h

Теперь вы можете видеть все tmuxокна ( ) в каждом (терминальном) окне, но представление в каждом из них не зависит от другого.

Чтобы переключиться с одного на другое (без использования собственных ярлыков вашего оконного менеджера), вы можете использовать, например,. xdotool .

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

Они предполагают , что вы включили tmux«s set-titlesварианта для того, чтобы дать терминал для поиска имени; и что вы используете только одно tmuxокно (набор панелей) в каждом.

JigglyNaga
источник
Для этого мне нужен скрипт, который надежно запрашивает текущую панель и переходит к «следующей», используя при необходимости команду «активировать окно». Но я еще не выяснил, как это сделать - я думаю, что потребуется дополнительное хранилище данных вне того, что доступно tmux.
JigglyNaga
Обратите внимание, что вам может потребоваться включить агрессивное изменение размера (setw -g агрессивное-изменение размера), иначе окна не поместятся на весь экран
dgmora
0

Разве вы не можете использовать низкотехнологичный метод изменения размера одного терминала (путем перетаскивания краев), чтобы покрыть оба монитора, чтобы центральный разделитель находился на границе двух мониторов?

WALF
источник
1
Это не работает, если оба монитора имеют разную высоту, или если вы используете OS X.
James
0

Вы захотите начать отдельный tmuxсеанс в каждом терминале, а затем разбить отдельное tmuxокно каждого сеанса на две панели по вертикали.

Итак, в каждом терминале:

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

Или короче, в каждом терминале:

$ tmux new \; splitw -h

Вам нужно два сеанса, потому что в одном сеансе два терминала всегда будут синхронизированы и отображать одно и то же tmuxокно.

Затем используйте ярлыки на рабочем столе для переключения между двумя терминалами.

Лично я бы использовал один монитор, одну tmuxсессию и два (или сколько угодно) разделенных tmuxокна «позади» друг друга и поменялся местами с Ctrlb- n, но это дело вкуса.

$ tmux new \; splitw -h \; neww \; splitw -h
Кусалананда
источник