Як зберегти макет `gnu screen` після перезавантаження


13

Я використовую screenрозділ на 3 з vim зліва, а два інші екрани розділені горизонтально праворуч. Я знаю, що, відриваючись від екрана, я можу зберегти макет за допомогою :layout save my_layout_name.

У мене вже є layout autosave onв моєму .screenrcфайлі, але це не допоможе з моєю проблемою.

Як я можу зберегти макет екрана між різними термінальними сеансами та після перезавантаження ПК? А може, як вирішення, чи є спосіб запустити екран (параметри), який розділив його, встановити bash на кожне вікно і зберегти макет?

Відповіді:


13

Типовий макет для нових екранів

Керуйте своїми регіонами та виконайте код на екрані :

  • Щоб зберегти поточний макет у файл .screen_layout:

    rm -f $ HOME / .screen_layout
    екран -X скидання макета .screen_layout
    
  • Щоб зробити автоматичне завантаження із збереженням макета:

    джерело ехо .screen_layout >> $ HOME / .screenrc
    ехо-макет зберегти def >> $ HOME / .screenrc
    

Як це працює

  1. Ви набираєте screen.
  2. На екрані написано $HOME/.screenrc:
  3. source .screen_layout- читати та виконувати команди із $HOME/.screen_layout
    створених регіонів.
  4. layout save def- збережіть поточні регіони як макет, щоб зберегти його під час від'єднання.

layout dump .screen_layout

  • Вивантажте ( додайте ) поточний макет до файлу у $HOMEкаталозі

screen -X command

  • Запустити commandв поточному сеансі екрану (якщо він виконаний всередині).
    Подібно до того ctrlaчасу: command

Ви також можете

  • Вимкнення сповіщення про авторські права при запуску:

    echo startup_message off >> $ HOME / .screenrc
  • Збільшити буфер прокрутки (деф. 100)

    echo defscrollback 1000 >> $ HOME / .screenrc
  • Напишіть власну .screen_layout(50% / 50% вертикальна, з 2 оболонками):

    спліт -в
    екран -t s1
    
    фокус
    екран -t s2
    
    фокус
    

Ви праві. Цей метод зберігає макет екрана, скидаючи команди у файл, потім повторюючи їх .screenrc. .screen_layoutФайл може бути відредагований з усіма командами , які будуть виконуватися кожного разу при screenзапуску, в тому числі і layout save defaultв кінці кінців. Я пропоную іншим читачам додати screenпісля цього focusу .screen_layoutфайл, щоб запустити bash.
randunel

7

Ctrl- aтоді :тоді layout save default Наданий екран нової версії (з функцією компонування) Удачі.

UPDATE: Ось це .screenrc файл , який буде зробити зміни постійними , поряд з додаванням інших функцій приємно.


будь-яка ідея, чому layout autosave onв .screenrcне працює? Це було б краще для мене.
спінлок

Ви маєте рацію, це не працює. Але я перевірив .screenrc звідси: gist.github.com/joaopizani/2718397, і це ПРАЦЮЄ.
Мир Дунаєв,

2

" layout autosave on " працює лише для явно названих макетів у .screenrc.

А саме, якщо ви вказали якийсь макет як ABC, переключились на нього в межах сеансу на екрані та відключили, цей останній макет буде відновлений після відновлення сеансу.

Якщо ви не вказали жодного макета у файлі конфігурації, перед тим, як вилучити його , вам слід виконати внутрішню команду " layout save your_layout_name ".

Це .screenrc із заздалегідь заданими макетами на вибір:

 0 — one (the only region)
 1 — two-v (the screen is splitted vertically into two regions, default layout)
 2 — two-h (the screen is splitted horizontally into two regions)
 3 — three (three regions — two in the upper part of the screen and one underneath)
 4 — four (four regions)

Заздалегідь визначені макети

Після вибору з екрана ці макети зберігаються після від'єднання до наступного відновлення сеансу (завдяки команді "макет автозаписування увімкнено").

Якщо ви створили свій власний макет, його потрібно зберегти за допомогою команди " layout dump filename ". Потім ви можете використовувати код з файлу «ім'я файлу» , щоб додати свій макет в #layouts розділі цього .screenrc , щоб вибрати з.

За замовчуванням " two-v " макет завантажується єдиним вікном з bash.


Це чудово, хоча я пропустив перехід від однієї верстки до іншої, тоді побачив коментар, що прив'язка клавіш видалена. Просто фій - ця клавіша працює для мене (Ubuntu 16.04) для перемикання макетів: bind ' ' layout next # <- actually means Ctrl-a + Space
Бачі,

0

Згідно з цим джерелом, це неможливо через спосіб screenроботи. Однак там передбачено злом. В основному він зводиться до екрану вкладання всередині іншого екрану, що може бути не дуже зручно. (Відповідь знайдено тут )

Якщо ви використовуєте екран для розбиття терміналів на вашій локальній машині (про що я випливаю із згадуваного перезавантаження ПК), ви можете перевірити емулятор термінала, який називається terminator. Він підтримує горизонтальні та вертикальні роз'єми (також вкладені), і ви можете зберегти улюблений макет для подальшого використання. Тоді ви просто запустіть термінатор з відповідною опцією: terminator -l <name of saved layout>.


Мені відомо про вкладення екрана на інший екран, але всі екрани припиняються при перезапуску. Екран всередині екрана був вирішений, коли його layoutбуло додано, тож ваша відповідь є окрім питання і застарілою. Я ціную terminatorпропозицію, хоча.
randunel
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.