Question

J'utilise screen pour conserver ma session de travail et me connecter à la même session à partir de plusieurs ordinateurs. Comment puis-je configurer SSH et screen de telle sorte que la variable XDISPLAY de ma session d’écran persistant soit toujours définie sur la machine depuis laquelle je me connecte actuellement?

c'est à dire. Je démarre la session screen au travail et utilise gvim, qui utilise le serveur X s'exécutant sur ma machine de travail. Plus tard, je me connecte à la même session depuis chez moi et souhaite également utiliser gvim. Mais cette fois, je veux que gvim utilise le serveur X sur mon ordinateur personnel. Je réalise que je pourrais mettre à jour manuellement XDISPLAY chaque fois que je me connecte depuis une machine différente, mais je préférerais un système automatisé.

Points bonus si je peux réellement déplacer gvim de mon ordinateur de travail à mon ordinateur personnel en cours de fonctionnement. J'ai essayé xmove , mais je ne pouvais jamais le faire jouer correctement.

Était-ce utile?

La solution

Ce qui suit est une solution manuelle, mais il n'y a aucune raison pour que vous ne puissiez pas utilisez un alias ou un script pour le faire automatiquement lorsque vous vous connectez à distance.

En supposant que votre shell local définisse la variable DISPLAY de manière appropriée, vous pouvez utiliser screen -X pour envoyer les commandes suivantes à votre écran distant avant connexion.

# set future remote shells started by screen to have the correct XDISPLAY
% screen -X "setenv XDISPLAY $DISPLAY" #...

# set up the keystroke F1 to update the XDISPLAY in current shells
% screen -X "bindkey -k k1 stuff export XDISPLAY=$DISPLAY\015" #...

Si vous savez que toutes vos fenêtres ont été laissées dans un shell (pas un éditeur en cours d'exécution), vous pouvez utiliser : at pour modifier le XDISPLAY plutôt que une liaison de clé:

# update the XDISPLAY in all current windows
% screen -X "at % stuff export XDISPLAY=$DISPLAY\015" #...

Sinon, si vous connaissez un moyen de récupérer la valeur de variable d'environnement d'un processus parent, vous pouvez l'utiliser conjointement avec le hook de votre shell pour saisir la valeur de XDISPLAY de SCREEN (définie par setenv) et la mettre à jour pour le shell. / p>

Autres conseils

Il n'y a pas de "trivial". façon de changer les variables d'environnement dans les processus étrangers.

Une solution simple pourrait consister à conserver votre XDISPLAY dans un fichier lors de la connexion et à utiliser un PROMPT_COMMAND pour lire ce fichier avant d'imprimer la prochaine invite.

Pour déplacer les applications X, regardez X11vnc . ou Xvnc .

Je suis également intéressé par la réponse à cette question. Ne devrait-il pas être possible de répertorier les processus SSH de votre utilisateur, classés par heure, et de définir l'environnement de ce processus?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top