Comment garder les fenêtres divisées après avoir détaché / recollé l'écran GNU

35

J'utilise screen sur un serveur Ubuntu.

Mon écran est divisé en quatre régions, chacune affichant une fenêtre différente.

Le problème est quand je détache (ou peut-être rattache) un obtenir les quatre fenêtres, mais seulement une région et je dois C-a Stout recommencer?

Comment puis-je garder mon écran en deux lors d'un rattache?

César
la source

Réponses:

15

Depuis l'écran FAQ :

(La question implicite étant, "Comment puis-je garder mes fenêtres divisées sur un détachement?")

La réponse courte est que vous ne pouvez pas. La réponse plus longue est que vous pouvez le simuler.

Les fractionnements sont une propriété de votre affichage. Le processus qui gère votre session d’écran ne les connaît pas vraiment; seul le processus affichant la session le fait. Ainsi, la session d'écran ne peut pas se souvenir des scissions, car elle ne les connaît pas et, une fois que vous vous êtes détaché, le processus qui les connaissait s'est terminé.

Le hack consiste à utiliser des sessions d'écran imbriquées. Commencez une session et donnez-lui une séquence d'échappement que vous n'utiliserez pas beaucoup (ou désactivez simplement son caractère d'échappement complètement). Liez votre séquence de touches de détachement habituelle à cette session d'écran. Maintenant, démarrez ou attachez à votre session d’écran principal. Tout votre travail sera fait dans la session interne, et vous pouvez diviser votre affichage. Lorsque vous vous détachez, cependant, ce sera la session externe qui se détache, de sorte que vos divisions dans la session interne seront préservées.

En supposant que vous utilisiez le caractère d'échappement par défaut, Ca, votre écran de remplacement devrait contenir:

escape ""
bindkey ^ad detach
Darren Hall
la source
1
Ayant passé la dernière année ou les deux dernières années à configurer et à utiliser fréquemment des sessions d’écran imbriquées, je le recommande. Au fil du temps, la complexité supplémentaire diminue, tandis que l’utilité d’une configuration plus souple augmente.
funroll
13
La nouvelle fonctionnalité, à savoir layout, invalide cette réponse!
Kadir
Voir superuser.com/a/516822/113250 pour la "nouvelle" fonctionnalité de présentation intégrée
Thiago Figueiro
67

J'ai constaté que si vous avez déjà configuré certaines fenêtres et que vous souhaitez les enregistrer, vous pouvez le faire:

Ctrl-a
:
layout save default

Ensuite, lorsque vous vous détachez et que vous vous reconnectez à la session, la présentation doit être restaurée.

Fonctionne avec Screen version 4.00.03jw4 (FAU) 2-May-06 (Ubuntu 12.04 & 12.10)

Aussi, vous voudrez peut-être créer une session de démon en tant que telle:

$> screen -dmSU mysession

et puis l'avoir toujours disponible en appelant:

$> screen -r mysession
Troie
la source
5
Bien meilleure solution. Cela devrait être la réponse acceptée. (Je sais pourquoi je fais toujours défiler vers le bas XD)
BrainStone
1
Malheureusement, il semble que la version actuelle de RedHat screen 4.00.03 (FAU) 23-Oct-06ne possède pas cette fonctionnalité. Mais ça devrait!
David Dombrowsky
Ceci est une meilleure réponse, mais il existe une réponse encore meilleure ci-dessous qui enregistre automatiquement la mise en page à chaque utilisation .screenrc. Vote positif de cette réponse
Mark Lakata
14

Dans la version git, une nouvelle fonctionnalité a layoutété introduite.

de l'écran (1):

layout new [titre]

Créer une nouvelle mise en page. L'écran passera à une région entière et passera à la fenêtre vierge. À partir de là, vous construisez les régions et les fenêtres qu’elles affichent comme vous le souhaitez. La nouvelle mise en page sera numérotée avec le plus petit entier disponible, en commençant par zéro. Vous pouvez éventuellement donner un titre à votre nouvelle mise en page. Sinon, le titre par défaut sera "layout". Vous pouvez toujours changer le titre plus tard en utilisant le titre de la disposition de la commande.

même si vous avez détaché la session d’écran, la disposition a mémorisé la division de la région.

Par exemple, l'écran démarre avec suivez la configuration.

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

Et rattachez cette session, vous pourrez revenir à la dernière mise en page sélectionnée qui a 3 régions séparées.

Yoshikaw
la source
tout le monde sait quelles soumissions sont nécessaires pour obtenir ceci (je-ne suis pas assez ringard pour appliquer des correctifs mais je ne courrai jamais le code de trunk (bad karma: P))
empruntel
7

Ajoutez simplement cette ligne à votre ~/.screenrc:

# This line makes Detach and Re-attach without losing the regions/windows layout
layout save default
Rafael Quirino Castro
la source
6

Il semble que tmux fait. Il s’agit d’un nouveau projet de multiplexeur, inspiré par screen, mais codé à partir de zéro et sous licence BSD.

(Désolé si mon anglais est inconfortable à lire: - °)

Pantoufle
la source
-1

J'ai lu récemment tout l'écran, et il n'y a pas de moyen courant de le faire si l'écran lui-même ne s'en souvient pas automatiquement.

Kolypto
la source