Comment conserver la disposition de l'écran gnu après le redémarrage

13

J'utilise le screensplit en 3 avec vim à gauche, et deux autres écrans divisés horizontalement à droite. Je sais que lorsque je me détache d'un écran, je peux enregistrer la mise en page avec :layout save my_layout_name.

J'ai déjà layout autosave ondans mon .screenrcdossier, mais cela n'aide pas avec mon problème.

Comment puis-je conserver la disposition d'un écran entre différentes sessions de terminal et après le redémarrage du PC? Ou peut-être comme solution de contournement, existe-t-il un moyen d'exécuter l'écran (paramètres) qui le divise, configure le bash sur chaque fenêtre et enregistre la mise en page?

randunel
la source

Réponses:

13

Disposition par défaut pour les nouveaux écrans

Gérez vos régions, puis exécutez le code à l' intérieur de l'écran :

  • Pour enregistrer votre mise en page actuelle dans un fichier .screen_layout:

    rm -f $ HOME / .screen_layout
    dump de mise en page screen -X .screen_layout
    
  • Pour le charger automatiquement avec sauvegarde de la mise en page:

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

Comment ça fonctionne

  1. Vous tapez screen.
  2. L'écran affiche $HOME/.screenrc:
  3. source .screen_layout- lire et exécuter les commandes des $HOME/.screen_layout
    régions maintenant créées.
  4. layout save def- enregistrez les régions actuelles en tant que mise en page pour les conserver lorsque vous vous détachez.

layout dump .screen_layout

  • Vider ( ajouter ) la disposition actuelle dans un fichier du $HOMErépertoire

screen -X command

  • Exécuté commanddans la session d'écran en cours (s'il est exécuté à l'intérieur).
    Similaire à ctrlaalors: command

Vous pouvez aussi

  • Désactivez l' avis de copyright au démarrage:

    echo startup_message off >> $ HOME / .screenrc
  • Augmenter le tampon de défilement (par. 100)

    echo defscrollback 1000 >> $ HOME / .screenrc
  • Écriture propre .screen_layout(50% / 50% vertical, avec 2 coques):

    split -v
    écran -t s1
    
    concentrer
    écran -t s2
    
    concentrer
    
sonner
la source
Vous avez raison. Cette méthode conserve la disposition de l'écran en vidant les commandes dans un fichier, puis en les répétant .screenrc. Le .screen_layoutfichier peut être édité avec toutes les commandes à exécuter à chaque screenexécution, y compris layout save defaultà la fin. Je suggère à d'autres lecteurs d'ajouter screenaprès focusdans le .screen_layoutfichier pour lancer bash.
randunel
7

Ctrl- apuis :ensuite l' layout save default écran fourni est une version plus récente (avec fonction de mise en page) Bonne chance.

MISE À JOUR: Voici le fichier .screenrc qui rendra le changement permanent , ainsi que l'ajout d'autres fonctionnalités intéressantes.

Mir Dunaev
la source
une idée pourquoi le layout autosave ondans le .screenrcn'a pas fonctionné? Ce serait préférable pour moi.
spinlock
Tu as raison, ça ne marche pas. Mais j'ai testé .screenrc à partir d'ici: gist.github.com/joaopizani/2718397 et cela FONCTIONNE.
Mir Dunaev
2

" layout autosave on " ne fonctionne que pour les mises en page nommées explicitement dans .screenrc.

À savoir, si vous avez spécifié une mise en page en tant qu'ABC, que vous l'avez basculée dans la session d'écran et que vous l'avez détachée, cette dernière mise en page sera restaurée après la reprise de la session.

Si vous n'avez spécifié aucune disposition dans le fichier de configuration, vous devez exécuter la commande interne " layout save your_layout_name " avant de vous détacher.

Il s'agit d'un .screenrc avec des dispositions prédéfinies au choix:

 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)

Dispositions prédéfinies

Une fois sélectionnées à partir de l'écran, ces dispositions sont conservées lors du détachement jusqu'à la prochaine reprise de la session (en raison de la commande "sauvegarde automatique de la mise en page").

Si vous avez construit votre propre mise en page, elle doit être enregistrée avec la commande " layout dump filename ". Ensuite, vous pouvez utiliser un code du fichier "nom de fichier" pour ajouter votre mise en page dans la section #layouts de ce .screenrc à sélectionner.

Par défaut, la disposition " deux-v " est chargée avec la seule fenêtre avec bash.

Oleg Bolden
la source
C'est génial, même si j'ai manqué de passer d'une mise en page à une autre, puis j'ai vu le commentaire que la liaison de clé a été supprimée. Juste pour info - ce raccourci fonctionne pour moi (Ubuntu 16.04) pour changer de disposition: bind ' ' layout next # <- actually means Ctrl-a + Space
Bachi
0

Selon cette source, cela n'est pas possible en raison de la façon dont cela screenfonctionne. Il y a cependant un hack. Cela revient essentiellement à imbriquer l'écran à l'intérieur d'un autre écran, ce qui pourrait ne pas être très pratique. (Réponse trouvée ici )

Si vous utilisez l'écran pour la séparation des terminaux sur votre machine locale (que j'infère du redémarrage du PC mentionné), vous voudrez peut-être vérifier l'émulateur de terminal appelé terminator. Il prend en charge les séparations de bornes horizontales et verticales (également imbriquées) et vous pouvez enregistrer votre disposition préférée pour une utilisation ultérieure. Ensuite , vous exécutez simplement terminaison avec une option appropriée: terminator -l <name of saved layout>.

Erathiel
la source
Je suis conscient d'imbriquer un écran dans un autre écran, mais tous les écrans se terminent au redémarrage. L'écran à l'intérieur d'un écran a été résolu lors de l' layoutajout, donc votre réponse est à la fois en plus de la question et obsolète. J'apprécie cependant cette terminatorsuggestion.
randunel