Jak zachować podział okien po odłączeniu / ponownym podłączeniu ekranu GNU

35

Używam screena na serwerze Ubuntu.

Mój ekran jest podzielony na cztery regiony, z których każdy pokazuje inne okno.

Problem polega na tym, że kiedy odłączam (a może ponownie podłączam), otrzymuję cztery okna, ale tylko jeden region i muszę zrobić C-a Swszystko od nowa?

Jak mogę zachować podzielony ekran po ponownym podłączeniu?

Cesar
źródło

Odpowiedzi:

15

Z ekranu FAQ :

(Implikowane pytanie brzmi: „Jak utrzymać podzielone okna nad odłączeniem?”)

Krótka odpowiedź brzmi: nie możesz. Dłuższą odpowiedzią jest to, że można to sfałszować.

Podziały są własnością twojego wyświetlacza. Proces zarządzania sesją ekranową tak naprawdę o nich nie wie; robi to tylko jeden proces, który wyświetla sesję. Dlatego sesja ekranowa nie pamięta podziałów, ponieważ nie wie o nich, a kiedy się odłączysz, proces, który o nich wiedział, zakończył się.

Włamanie polega na użyciu zagnieżdżonych sesji ekranowych. Rozpocznij jedną sesję i nadaj jej sekwencję ucieczki, której nie użyjesz dużo (lub po prostu całkowicie wyłącz jej charakter ucieczki). Powiąż zwykłą sekwencję klawiszy odłączania do tej sesji ekranu. Teraz rozpocznij sesję głównego ekranu lub dołącz do niej. Cała praca zostanie wykonana w wewnętrznej sesji i możesz podzielić ekran. Jednak kiedy się odłączysz, odłączy się sesja zewnętrzna, więc twoje podziały w sesji wewnętrznej zostaną zachowane.

Zakładając, że używasz domyślnego znaku zmiany znaczenia, Ca, twój alternatywny screenrc powinien zawierać:

escape ""
bindkey ^ad detach
Darren Hall
źródło
1
Po spędzeniu ostatniego roku lub dwóch na konfigurowaniu i intensywnym korzystaniu z sesji zagnieżdżonych, polecam to. Z biegiem czasu ból dodatkowej złożoności maleje, a użyteczność bardziej elastycznej konfiguracji wzrasta.
funroll
13
Nowa funkcja, tj. layoutUnieważnia tę odpowiedź!
Kadir
Zobacz superuser.com/a/516822/113250, aby zapoznać się z „nową” funkcją wbudowanego układu
Thiago Figueiro,
67

Odkryłem, że jeśli masz już skonfigurowane niektóre okna i chcesz je zapisać, możesz to zrobić:

Ctrl-a
:
layout save default

Następnie po odłączeniu i ponownym dołączeniu do sesji układ powinien zostać przywrócony.

Działa z wersją ekranu 4.00.03jw4 (FAU) 2 maja-06 (Ubuntu 12.04 i 12.10)

Możesz także utworzyć taką sesję deamon:

$> screen -dmSU mysession

a następnie mieć zawsze dostępne, dzwoniąc:

$> screen -r mysession
Troja
źródło
5
Znacznie lepsze rozwiązanie. To powinna być zaakceptowana odpowiedź. (Wiem, dlaczego zawsze przewijam XD)
BrainStone
1
Niestety wygląda na to, że obecna wersja na Redhat screen 4.00.03 (FAU) 23-Oct-06nie ma tej funkcji. Ale powinno!
David Dombrowsky
To lepsza odpowiedź, ale poniżej znajduje się jeszcze lepsza odpowiedź, która automatycznie zapisuje układ za każdym razem, gdy jest używana .screenrc. Głosuj za odpowiedzią
Mark Lakata
14

W wersji git layoutwprowadzono nową funkcję .

z ekranu (1):

nowy układ [tytuł]

Utwórz nowy układ. Ekran zmieni się na jeden cały region i zostanie przełączony do pustego okna. Stąd budujesz regiony i okna, które wyświetlają, jak chcesz. Nowy układ będzie ponumerowany najmniejszą dostępną liczbą całkowitą, zaczynając od zera. Opcjonalnie możesz nadać tytuł swojemu nowemu układowi. W przeciwnym razie będzie miał domyślny tytuł „układ”. Zawsze możesz później zmienić tytuł, używając tytułu układu poleceń.

nawet jeśli odłączyłeś sesję ekranową, układ pamięta, jak został podzielony region.

na przykład screen start z konfiguracją śledzenia.

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

Ponownie podłącz tę sesję, będziesz mógł wrócić do (ostatnio wybranego) układu, który ma 3 podzielony region.

yoshikaw
źródło
każdy wie, jakie zgłoszenia są wymagane, aby to uzyskać (jestem na tyle nerdy, aby zastosować łatki, ale nigdy nie uruchomię kodu trunk (mam złą karmę: P))
Borrel
7

Po prostu dodaj ten wiersz do ~/.screenrc:

# This line makes Detach and Re-attach without losing the regions/windows layout
layout save default
Rafael Quirino Castro
źródło
6

Wygląda na to, że Tmux tak. To nowy projekt multipleksera, zainspirowany ekranem, ale kodowany od podstaw i na licencji BSD.

(Przepraszam, jeśli mój angielski jest niewygodny do czytania: - °)

Pantoufle
źródło
-1

Ostatnio czytałem cały ekran człowieka i nie ma powszechnego sposobu na zrobienie tego, jeśli sam ekran nie zapamięta go automatycznie.

kolypto
źródło