Как сохранить разделение окон после отсоединения / повторного подключения экрана GNU

35

Я использую экран на сервере Ubuntu.

Я разделил экран на четыре области, в каждой из которых было свое окно.

Проблема в том, что когда я отсоединяю (или, возможно, заново присоединяю), получаю четыре окна, но только один регион, и мне приходится делать C-a Sвсе заново?

Как я могу держать мой экран разделенным при повторном подключении?

Cesar
источник

Ответы:

15

С экрана FAQ :

(Подразумеваемый вопрос: «Как мне держать раздельные окна поверх отдельного?»)

Суть в том, что вы не можете. Чем дольше ответ, тем лучше.

Разделение - это свойство вашего дисплея. Процесс, управляющий вашим сеансом экрана, на самом деле не знает о них; только один процесс, который отображает сеанс. Таким образом, сеанс экрана не может вспомнить разделение, потому что он не знает о них, и как только вы отсоединяетесь, процесс, который знал о них, завершился.

Взлом заключается в использовании вложенных сеансов экрана. Начните один сеанс и дайте ему некоторую escape-последовательность, которую вы не будете часто использовать (или просто полностью отключите ее escape-символ). Свяжите свою обычную последовательность ключей отсоединения с этим сеансом экрана. Теперь запустите или присоедините к сеансу основного экрана. Вся ваша работа будет выполнена во внутренней сессии, и вы можете разделить свой дисплей. Однако, когда вы отсоединяетесь, отсоединяется только внешний сеанс, поэтому ваши разбиения во внутреннем сеансе будут сохранены.

Предполагая, что вы используете escape-символ по умолчанию, Ca, ваш альтернативный screenrc должен содержать:

escape ""
bindkey ^ad detach
Даррен Холл
источник
1
Потратив последние год или два на настройку и интенсивное использование вложенных сеансов экрана, я рекомендую его. Со временем боль дополнительной сложности уменьшается, а полезность более гибкой настройки увеличивается.
funroll
13
Новая функция, т. layoutЕ. Лишает законной силы этот ответ!
Кадир
Смотрите superuser.com/a/516822/113250 для «новой» встроенной функции макета
Тиаго Фигейру
67

Я обнаружил, что если у вас уже настроены некоторые окна и вы хотите сохранить их, вы можете сделать это:

Ctrl-a
:
layout save default

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

Работает с Screen version 4.00.03jw4 (FAU) 2-May-06 (Ubuntu 12.04 & 12.10)

Также вы можете захотеть создать сеанс deamon как таковой:

$> screen -dmSU mysession

и тогда он всегда будет доступен по телефону:

$> screen -r mysession
Трой
источник
5
Гораздо лучшее решение. Это должен быть принятый ответ. (Я знаю, почему я всегда прокручиваю вниз XD)
BrainStone
1
К сожалению, похоже, что в текущей версии RedHat screen 4.00.03 (FAU) 23-Oct-06нет этой функции. Но это должно быть!
Давид Домбровский
Это лучший ответ, но ниже приведен еще лучший, который автоматически сохраняет макет при каждом использовании .screenrc. Подтвердите этот ответ
Марк Лаката
14

В git-версии layoutпоявилась новая функция .

с экрана (1):

макет новый [название]

Создать новый макет. Экран изменится на один целый регион и переключится на пустое окно. Отсюда вы строите регионы и окна, которые они показывают по вашему желанию. Новый макет будет пронумерован наименьшим доступным целым числом, начиная с нуля. При желании вы можете дать название вашему новому макету. В противном случае он будет иметь заголовок по умолчанию «макет». Вы всегда можете изменить заголовок позже, используя заголовок макета команды.

даже если вы отключили сеанс экрана, макет запомнил, как регион был разделен.

Например, экран начинается с последующей конфигурации.

layout new
split
split -v
screen 0
focus next
screen 1
focus bottom
screen 2
detach

И снова присоедините этот сеанс, вы сможете вернуться в (последний выбранный) макет, который имеет 3 разделенных региона.

yoshikaw
источник
Кто-нибудь знает, какие представления требуются, чтобы получить это (я достаточно умный, чтобы применять патчи, но я никогда не буду запускать код транка (плохая карма: P))
borrel
7

Просто добавьте эту строку в ваш ~/.screenrc:

# This line makes Detach and Re-attach without losing the regions/windows layout
layout save default
Рафаэль Квирино Кастро
источник
6

Кажется, что Tmux делает. Это новый проект мультиплексора, вдохновленный экраном, но закодированный с нуля и под лицензией BSD.

(Извините, если мне по-английски неудобно читать: - °)

Pantoufle
источник
-1

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

kolypto
источник