Come mantenere il layout di `gnu screen` dopo il riavvio


13

Sto usando la screendivisione in 3 con vim a sinistra e altre due schermate divise orizzontalmente a destra. So che quando si stacca da uno schermo, posso salvare il layout con :layout save my_layout_name.

Ho già layout autosave onnel mio .screenrcfile, ma questo non aiuta con il mio problema.

Come posso mantenere il layout di uno schermo tra diverse sessioni del terminale e dopo il riavvio del PC? O forse come soluzione alternativa, c'è un modo per eseguire lo schermo (parametri) che lo divide, imposta la bash su ogni finestra e salva il layout?

Risposte:


13

Layout predefinito per i nuovi schermi

Gestisci le tue regioni, quindi esegui il codice all'interno dello schermo :

  • Per salvare il layout corrente su file .screen_layout:

    rm -f $ HOME / .screen_layout
    screen -X dump layout .screen_layout
    
  • Per effettuare il caricamento automatico con il salvataggio del layout:

    sorgente di eco .screen_layout >> $ HOME / .screenrc
    layout dell'eco salva def >> $ HOME / .screenrc
    

Come funziona

  1. Scrivi screen.
  2. Lo schermo legge $HOME/.screenrc:
  3. source .screen_layout- legge ed esegue i comandi dalle $HOME/.screen_layout
    regioni ora creati.
  4. layout save def- salva le aree correnti come layout per mantenerle quando ti stacchi.

layout dump .screen_layout

  • Scarica ( aggiungi ) il layout corrente al file nella $HOMEdirectory

screen -X command

  • Esegui commandnella sessione dello schermo corrente (se eseguito all'interno).
    Simile a ctrlaallora: command

Potresti anche

  • Disabilita l' avviso sul copyright all'avvio:

    echo startup_message off >> $ HOME / .screenrc
  • Aumenta buffer di scorrimento (def. 100)

    echo defscrollback 1000 >> $ HOME / .screenrc
  • Scrivi da solo .screen_layout(50% / 50% verticale, con 2 gusci):

    split -v
    schermo -t s1
    
    messa a fuoco
    schermo -t s2
    
    messa a fuoco
    

Hai ragione. Questo metodo persiste il layout dello schermo scaricando i comandi in un file, quindi ripetendoli .screenrc. Il .screen_layoutfile può essere modificato con tutti i comandi da eseguire ogni volta che screenviene eseguito, incluso layout save defaultalla fine. Suggerisco ad altri lettori di aggiungere screendopo focusnel .screen_layoutfile per ottenere bash in esecuzione.
randunel,

7

Ctrl- aquindi :allora layout save default schermo fornito è più recente versione (con funzione di layout) Buona fortuna.

AGGIORNAMENTO: ecco il file .screenrc che renderà permanente la modifica , oltre ad aggiungere altre belle funzionalità.


qualche idea sul perché il layout autosave onin the .screenrcnon ha funzionato? Sarebbe preferibile per me.
Spinlock,

Hai ragione, non funziona. Ma ho testato .screenrc da qui: gist.github.com/joaopizani/2718397 e funziona.
Mir Dunaev,

2

" layout autosave on " funziona solo per layout con nome esplicito in .screenrc.

Vale a dire, se hai specificato un layout come ABC, passato ad esso all'interno della sessione Schermo e staccato, quest'ultimo layout verrà ripristinato dopo che la sessione verrà ripresa.

Se non hai specificato alcun layout nel file di configurazione, devi eseguire il comando interno " layout save your_layout_name " prima di scollegarlo.

Questo è un .screenrc con layout predefiniti tra cui scegliere:

 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 predefiniti

Una volta selezionati all'interno dello schermo, questi layout vengono conservati al momento del distacco fino al successivo riavvio della sessione (a causa del comando "layout autosave on").

Se hai creato il tuo layout, devi salvarlo con il comando " layout dump nomefile ". Quindi è possibile utilizzare un codice dal file "nome file" per aggiungere il layout nella sezione #layouts di questo .screenrc da cui selezionare.

Per impostazione predefinita, il layout "a due v " viene caricato con l'unica finestra con bash.


Questo è fantastico, anche se mi sono perso il modo di passare da un layout a un altro, quindi ho visto il commento che è stata rimossa l'associazione dei tasti. A proposito, questo keybinding funziona per me (Ubuntu 16.04) per cambiare layout: bind ' ' layout next # <- actually means Ctrl-a + Space
Bachi

0

Secondo questa fonte non è possibile a causa del modo in cui screenfunziona. C'è un hack fornito lì, tuttavia. Fondamentalmente si riduce alla schermata di nidificazione all'interno di un'altra schermata, che potrebbe non essere molto conveniente. (Risposta trovata qui )

Se usi lo schermo per la divisione dei terminali sul tuo computer locale (che desidero dal menzionato riavvio del PC), potresti voler controllare l'emulatore di terminale chiamato terminator. Supporta le suddivisioni terminali orizzontali e verticali (anche nidificate) e puoi salvare il tuo layout preferito per un ulteriore utilizzo. Quindi è sufficiente eseguire terminatore con un'opzione appropriata: terminator -l <name of saved layout>.


Sono a conoscenza di annidare uno schermo all'interno di un altro schermo, ma tutti gli schermi vengono chiusi al riavvio. Lo schermo all'interno di uno schermo è stato risolto quando è layoutstato aggiunto, quindi la tua risposta è oltre alla domanda e obsoleta. Apprezzo il terminatorsuggerimento però.
randunel,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.