Jak zachować układ `gnu screen` po ponownym uruchomieniu

13

Używam screenpodziału na 3 z vimem po lewej stronie, a dwa inne ekrany dzielą się poziomo po prawej stronie. Wiem, że po odłączeniu od ekranu mogę zapisać układ za pomocą :layout save my_layout_name.

Mam już layout autosave onw swoim .screenrcpliku, ale to nie pomaga w moim problemie.

Jak mogę zachować układ ekranu między różnymi sesjami terminali i po ponownym uruchomieniu komputera? A może jako obejście problemu istnieje sposób na uruchomienie ekranu (parametrów), który go podzieli, ustawi bash na każdym oknie i zapisze układ?

randunel
źródło

Odpowiedzi:

13

Domyślny układ nowych ekranów

Zarządzaj regionami, a następnie uruchom kod na ekranie :

  • Aby zapisać bieżący układ do pliku .screen_layout:

    rm -f $ HOME / .screen_layout
    zrzut ekranu układu -X. screen_layout
    
  • Aby włączyć automatyczne ładowanie z zachowaniem układu:

    źródło echa .lay_layout >> $ HOME / .screenrc
    układ echa zapisz def >> $ HOME / .screenrc
    

Jak to działa

  1. Podczas wpisywania screen.
  2. Odczyt ekranu $HOME/.screenrc:
  3. source .screen_layout- czytać i wykonywać polecenia z $HOME/.screen_layout
    utworzonych regionów.
  4. layout save def- zapisz bieżące regiony jako układ, aby zachować je po odłączeniu.

layout dump .screen_layout

  • Zrzuć ( dodaj ) bieżący układ do pliku w $HOMEkatalogu

screen -X command

  • Uruchom commandw bieżącej sesji ekranowej (jeśli jest wykonywana wewnątrz).
    Podobnie jak ctrlawtedy: command

Możesz także

  • Wyłącz informację o prawach autorskich podczas uruchamiania:

    echo startup_message off >> $ HOME / .screenrc
  • Zwiększ bufor przewijania (def. 100)

    echo defscrollback 1000 >> $ HOME / .screenrc
  • Napisz własne .screen_layout(50% / 50% w pionie, z 2 skorupkami):

    split -v
    screen -t s1
    
    skupiać
    screen -t s2
    
    skupiać
    
befzz
źródło
Masz rację. Ta metoda utrzymuje układ ekranu, zrzucając polecenia do pliku, a następnie powtarzając je .screenrc. .screen_layoutPlik można edytować wszystkie mają być uruchamiane za każdym razem poleceń screenjest prowadzony, w tym layout save defaultw końcu. Sugeruję, aby inni czytelnicy dodali screenpo focusw .screen_layoutpliku, aby uruchomić bash.
randunel
7

Ctrl- anastępnie :następnie layout save default Pod ekranem jest nowsza wersja (z funkcją układu) Powodzenia.

UPDATE: Tutaj jest .screenrc plik, który sprawi, że zmiana na stałe , wraz z dodaniem innych funkcji ładne.

Mir Dunaev
źródło
jakiś pomysł, dlaczego layout autosave onw .screenrcnie działał? To byłoby dla mnie lepsze.
spinlock
Masz rację, to nie działa. Ale przetestowałem .screenrc stąd: gist.github.com/joaopizani/2718397 i działa.
Mir Dunaev,
2

autozapis układu włączony ” działa tylko dla jawnie nazwanych układów w .screenrc.

Mianowicie, jeśli określiłeś jakiś układ jako ABC, przełączyłeś go na sesję Screen i odłączyłeś, ten ostatni układ zostanie przywrócony po wznowieniu sesji.

Jeśli nie określono żadnego układu w pliku konfiguracyjnym, przed odłączeniem należy uruchomić polecenie wewnętrzne „ układ zapisz swoją nazwę_graj ”.

To jest .screenrc z predefiniowanymi układami do wyboru:

 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)

Wstępnie zdefiniowane układy

Po wybraniu z poziomu ekranu układy te są zachowywane po odłączeniu do następnego wznowienia sesji (z powodu polecenia „automatyczne zapisywanie układu włączone”).

Jeśli zbudowałeś swój własny układ, musisz go zapisać za pomocą polecenia „ zrzut zrzutu pliku ”. Następnie możesz użyć kodu z pliku „nazwa pliku”, aby dodać układ w sekcji #layouts tego .screenrc do wyboru.

Domyślnie układ „ dwa-v ” jest ładowany z jedynym oknem z bash.

Oleg Bolden
źródło
To wspaniale, chociaż przegapiłem sposób przełączania się z jednego układu na inny, a potem zobaczyłem komentarz, że powiązanie klawiszy zostało usunięte. Po prostu fyi - to klawiszowanie działa dla mnie (Ubuntu 16.04), aby przełączać układy: bind ' ' layout next # <- actually means Ctrl-a + Space
Bachi
0

Według tego źródła nie jest to możliwe ze względu na sposób screendziałania. Jest jednak zapewniony hack. Zasadniczo sprowadza się do zagnieżdżenia ekranu w innym ekranie, co może nie być zbyt wygodne. (Odpowiedź tutaj )

Jeśli używasz ekranu do dzielenia terminali na twoim komputerze lokalnym (co wywnioskowałem ze wspomnianego restartu komputera), możesz sprawdzić emulator terminali o nazwie terminator. Obsługuje poziomy i pionowy podział zacisków (również zagnieżdżony) i możesz zapisać swój ulubiony układ do dalszego użycia. Następnie wystarczy uruchomić terminator z odpowiednią opcją: terminator -l <name of saved layout>.

Erathiel
źródło
Zdaję sobie sprawę z zagnieżdżania ekranu na innym ekranie, ale wszystkie ekrany są przerywane przy ponownym uruchomieniu. Ekran wewnątrz ekranu został rozwiązany po layoutdodaniu, więc twoja odpowiedź jest nie tylko pytaniem, ale i nieaktualna. Doceniam jednak terminatorsugestię.
randunel 12.12.13