So behalten Sie das Layout des Gnu-Bildschirms nach dem Neustart bei

12

Ich verwende die screenTeilung in 3 mit vim links und zwei anderen Bildschirmen, die rechts horizontal geteilt sind. Ich weiß, dass ich beim Trennen von einem Bildschirm das Layout mit speichern kann :layout save my_layout_name.

Ich habe bereits layout autosave onin meiner .screenrcDatei, aber das hilft nicht bei meinem Problem.

Wie kann ich das Layout eines Bildschirms zwischen verschiedenen Terminalsitzungen und nach dem Neustart des PCs beibehalten? Oder gibt es als Problemumgehung eine Möglichkeit, einen Bildschirm (Parameter) auszuführen, der ihn aufteilt, die Bash in jedem Fenster einrichtet und das Layout speichert?

Randunel
quelle

Antworten:

12

Standardlayout für neue Bildschirme

Verwalten Sie Ihre Regionen und führen Sie den Code im Bildschirm aus :

  • So speichern Sie Ihr aktuelles Layout in einer Datei .screen_layout:

    rm -f $ HOME / .screen_layout
    screen -X layout dump .screen_layout
    
  • So laden Sie es automatisch mit Layout-Speicherung:

    Echoquelle .screen_layout >> $ HOME / .screenrc
    echo layout save def >> $ HOME / .screenrc
    

Wie es funktioniert

  1. Sie tippen screen.
  2. Bildschirm liest $HOME/.screenrc:
  3. source .screen_layout- Befehle aus jetzt erstellten Regionen lesen und ausführen . $HOME/.screen_layout
  4. layout save def- Speichern Sie aktuelle Regionen als Layout, um sie beim Trennen beizubehalten.

layout dump .screen_layout

  • Das aktuelle Layout in die Datei im Verzeichnis kopieren ( anhängen )$HOME

screen -X command

  • Führen Sie commandin aktueller Sitzung Bildschirm (falls ausgeführt innen).
    Ähnlich wie ctrladamals: command

Du könntest außerdem

  • Deaktivieren Sie den Copyright-Hinweis beim Start:

    echo startup_message off >> $ HOME / .screenrc
  • Bildlaufpuffer erhöhen (def. 100)

    echo defscrollback 1000 >> $ HOME / .screenrc
  • Schreiben Sie selbst .screen_layout(50% / 50% vertikal, mit 2 Schalen):

    split -v
    Bildschirm -t s1
    
    Fokus
    Bildschirm -t s2
    
    Fokus
    
befzz
quelle
Du hast Recht. Diese Methode behält das Bildschirmlayout bei, indem die Befehle in eine Datei geschrieben und anschließend wiederholt werden .screenrc. Die .screen_layoutDatei kann mit allen Befehlen bearbeitet werden, die bei jeder screenAusführung ausgeführt werden sollen, auch layout save defaultam Ende. Ich schlage anderen Lesern vor, screennach focusder .screen_layoutDatei hinzuzufügen , um Bash zum Laufen zu bringen.
Randunel
6

Ctrl- adann :dann layout save default vorausgesetzt Bildschirm ist neuere Version (mit Layout-Funktion) Viel Glück.

UPDATE: Hier ist die .screenrc- Datei, die die Änderung dauerhaft macht und weitere nette Funktionen hinzufügt.

Mir Dunaev
quelle
Irgendeine Idee, warum das layout autosave onin der .screenrcnicht funktioniert hat? Das wäre mir vorzuziehen.
Spinlock
Du hast recht, es funktioniert nicht. Aber ich habe .screenrc von hier aus getestet: gist.github.com/joaopizani/2718397 und es funktioniert.
Mir Dunaev
2

" Layout automatisch speichern auf " funktioniert nur für explizit benannte Layouts in .screenrc.

Wenn Sie nämlich ein Layout als ABC angegeben, innerhalb der Bildschirmsitzung darauf geschaltet und getrennt haben, wird dieses letzte Layout wiederhergestellt, nachdem die Sitzung fortgesetzt wurde.

Wenn Sie in der Konfigurationsdatei kein Layout angegeben haben, müssen Sie vor dem Trennen den internen Befehl " layout save your_layout_name " ausführen .

Dies ist ein .screenrc mit vordefinierten Layouts zur Auswahl:

 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)

Vordefinierte Layouts

Nach der Auswahl auf dem Bildschirm bleiben diese Layouts beim Trennen bis zur nächsten Wiederaufnahme der Sitzung erhalten (aufgrund des Befehls "Layout automatisch speichern bei").

Wenn Sie ein eigenes Layout erstellt haben, muss es mit dem Befehl " layout dump filename " gespeichert werden . Dann können Sie einen Code von „Dateinamen“ Datei verwenden , Ihr Layout in hinzuzufügen #layouts Abschnitt dieses .screenrc zur Auswahl.

Standardmäßig wird das " Zwei-V " -Layout mit dem einzigen Fenster mit Bash geladen.

Oleg Bolden
quelle
Das ist großartig, obwohl ich nicht wusste, wie man von einem Layout zum anderen wechselt, und dann den Kommentar sah, dass die Schlüsselbindung entfernt wurde. Nur zu Ihrer Information - diese Tastenkombination funktioniert für mich (Ubuntu 16.04), um Layouts zu wechseln: bind ' ' layout next # <- actually means Ctrl-a + Space
Bachi
0

Laut dieser Quelle ist dies aufgrund der Funktionsweise nicht möglich screen. Dort ist jedoch ein Hack vorgesehen. Es läuft im Grunde darauf hinaus, den Bildschirm in einem anderen Bildschirm zu verschachteln, was möglicherweise nicht sehr praktisch ist. (Antwort hier gefunden )

Wenn Sie den Bildschirm für die Terminalaufteilung auf Ihrem lokalen Computer verwenden (was ich aus dem erwähnten PC-Neustart ableite), möchten Sie möglicherweise den aufgerufenen Terminalemulator überprüfen terminator. Es unterstützt horizontale und vertikale Terminalaufteilungen (auch verschachtelt) und Sie können Ihr Lieblingslayout zur weiteren Verwendung speichern. Dann führen Sie einfach terminator mit einer entsprechenden Option aus : terminator -l <name of saved layout>.

Erathiel
quelle
Mir ist bekannt, dass ein Bildschirm in einem anderen Bildschirm verschachtelt ist, aber alle Bildschirme werden beim Neustart beendet. Der Bildschirm innerhalb eines Bildschirms wurde beim layoutHinzufügen aufgelöst, sodass Ihre Antwort sowohl neben der Frage als auch veraltet ist. Ich schätze den terminatorVorschlag jedoch.
Randunel