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


19

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

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

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

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


Итак, ваша проблема в том, что у вас есть окна, разделенные на два монитора, и циклы 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окно (набор панелей) в каждом.


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

Обратите внимание, что вам может потребоваться включить агрессивное изменение размера (setw -g агрессивное-изменение размера), иначе окна не поместятся на весь экран
— dgmora

0

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


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.