Cómo persistir el diseño de `pantalla gnu` después de reiniciar

13

Estoy usando la screendivisión en 3 con vim a la izquierda, y otras dos pantallas divididas horizontalmente a la derecha. Sé que al separarme de una pantalla, puedo guardar el diseño con :layout save my_layout_name.

Ya tengo layout autosave onen mi .screenrcarchivo, pero eso no ayuda con mi problema.

¿Cómo puedo persistir el diseño de una pantalla entre diferentes sesiones de terminal y después de reiniciar la PC? O tal vez como una solución alternativa, ¿hay alguna forma de ejecutar la pantalla (parámetros) que la divide, configurar el bash en cada ventana y guardar el diseño?

randunel
fuente

Respuestas:

13

Diseño predeterminado para nuevas pantallas

Administre sus regiones, luego ejecute el código dentro de la pantalla :

  • Para guardar su diseño actual en el archivo .screen_layout:

    rm -f $ HOME / .screen_layout
    screen -X layout dump .screen_layout
    
  • Para que se cargue automáticamente con el diseño guardado:

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

Cómo funciona

  1. Que escribe screen.
  2. La pantalla lee $HOME/.screenrc:
  3. source .screen_layout- Leer y ejecutar comandos de $HOME/.screen_layout
    Regiones ahora creadas.
  4. layout save def- Guarde las regiones actuales como diseño para mantenerlo cuando lo separe.

layout dump .screen_layout

  • Volcar ( agregar ) el diseño actual al archivo en el $HOMEdirectorio

screen -X command

  • Ejecutar commanden la sesión de pantalla actual (si se ejecuta dentro).
    Similar a ctrlaentonces: command

Usted también puede

  • Deshabilitar aviso de copyright al inicio:

    echo startup_message off >> $ HOME / .screenrc
  • Aumentar el búfer de desplazamiento (def. 100)

    echo defscrollback 1000 >> $ HOME / .screenrc
  • Escribir propio .screen_layout(50% / 50% vertical, con 2 conchas):

    split -v
    pantalla -t s1
    
    atención
    pantalla -t s2
    
    atención
    
befzz
fuente
Estás en lo correcto. Este método persiste el diseño de la pantalla volcando los comandos en un archivo y luego repitiéndolos .screenrc. El .screen_layoutarchivo se puede editar con todos los comandos que se ejecutarán cada vez que screense ejecute, incluso layout save defaultal final. Sugiero que otros lectores agreguen screendespués focusen el .screen_layoutarchivo para ejecutar bash.
randunel
7

Ctrl- aLuego :, la layout save default pantalla proporcionada es la versión más nueva (con función de diseño) Buena suerte.

ACTUALIZACIÓN: Aquí está el archivo .screenrc que hará que el cambio sea permanente , junto con la adición de otras características agradables.

Mir Dunaev
fuente
alguna idea de por qué layout autosave onen el .screenrcno funcionó? Eso sería preferible para mí.
spinlock
Tienes razón, no funciona. Pero he probado .screenrc desde aquí: gist.github.com/joaopizani/2718397 y FUNCIONA.
Mir Dunaev
2

" layout autosave on " solo funciona para diseños con nombre explícito en .screenrc.

Es decir, si especificó algún diseño como ABC, lo cambió dentro de la sesión de Pantalla y se separó, este último diseño se restaurará después de que se reanude la sesión.

Si no especificó ningún diseño en el archivo de configuración, debe ejecutar el comando interno " layout save your_layout_name " antes de separarlo .

Este es un .screenrc con diseños predefinidos para elegir:

 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)

Diseños predefinidos

Una vez seleccionados desde dentro de la pantalla, estos diseños se conservan en la separación hasta la próxima reanudación de la sesión (debido al comando "guardar automáticamente en el diseño").

Si ha creado su propio diseño, debe guardarlo con el comando " nombre de archivo de volcado de diseño ". Luego puede usar un código del archivo "nombre de archivo" para agregar su diseño en la sección #layouts de este .screenrc para seleccionar.

Por defecto, el diseño " dos v " se carga con la única ventana con bash.

Oleg Bolden
fuente
Esto es genial, aunque olvidé cómo cambiar de un diseño a otro, luego vi el comentario de que se eliminó el enlace de teclas. Solo para su información: esta combinación de teclas funciona para mí (Ubuntu 16.04) para cambiar los diseños: bind ' ' layout next # <- actually means Ctrl-a + Space
Bachi
0

Según esta fuente, no es posible debido a la forma en que screenfunciona. Sin embargo, hay un truco allí. Básicamente se reduce a la pantalla de anidación dentro de otra pantalla, lo que podría no ser muy conveniente. (Respuesta encontrada aquí )

Si usa la pantalla para la división de terminales en su máquina local (que infiero del reinicio de la PC mencionado), es posible que desee consultar el emulador de terminal llamado terminator. Admite divisiones de terminales horizontales y verticales (también anidadas) y puede guardar su diseño favorito para su uso posterior. Entonces sólo tiene que ejecutar terminador con una opción adecuada: terminator -l <name of saved layout>.

Erathiel
fuente
Soy consciente de anidar una pantalla dentro de otra pantalla, pero todas las pantallas se terminan al reiniciar. La pantalla dentro de una pantalla se resolvió cuando layoutse agregó, por lo que su respuesta está fuera de la pregunta y está desactualizada. Sin terminatorembargo, agradezco la sugerencia.
randunel