J'utilise GNU Screen en permanence. Mais, j'ai essayé de savoir s'il y avait un moyen de faire passer les applications X11 sur l'écran lorsque je suis ssh-ing (est-ce un mot?). Actuellement, si j'essaie d'exécuter "gedit" via l'écran, il s'ouvre sur mon ordinateur "serveur" et non sur mon client. Si je fais la même chose en dehors de l'écran, alors tout va bien. Mais je veux que tout se passe bien quand j'utilise aussi l'écran!
Merci!
PS: J'ai cherché le problème sur Google et je vois une mention de xmove, mais je n'arrive pas à trouver le paquet contenant xmove sur mon Ubuntu. (Ubuntu 10.10)
Pour faire cela manuellement, une fois que vous avez SSHed, mais avant de vous reconnecter à l'écran, vérifiez votre variable d'environnement DISPLAY:
echo $DISPLAY
Une fois que vous vous êtes reconnecté à l'écran, définissez explicitement la variable d'environnement:
export DISPLAY=:N.0
où : N. est ce que le echo
a montré avant l'attachement. Cela ne sera pas parfait, car certaines applications peuvent s’attendre à communiquer avec le D-Bus de session, qui est un peu plus complexe à envoyer sur la connexion SSH.
il y a un programme appelé xpra dans les dépôts, c'est comme un écran GNU pour x11. ce n'est pas trop dur de travailler avec:
X applications distantes persistantes
Xpra vous offre les fonctionnalités de GNU Screen pour les applications X.
Il permet à l'utilisateur de visualiser les applications X distantes sur leur ordinateur local, de se déconnecter et de se reconnecter à partir de l'ordinateur distant sans perdre l'état des applications en cours d'exécution.
Byobu rattache automatiquement les agents ssh et gpg. Je pourrais le faire rattacher la variable d'affichage à, si cela vous aide ...
C’est comme ça que j’ai fonctionné lors de l’exécution de byobu
Ajoutez cette ligne dans . Bash_loginavant la ligne "_byobu_source ..":
echo $DISPLAY > $HOME/.display.env
Et ajoutez ensuite cette ligne à . Bashrc:
if [ ! -z ${SSH_CONNECTION+x} ]; then
export DISPLAY=$(cat $HOME/.display.env)
fi
Il semble que le problème est que la variable d'environnement XAUTHORITY n'est pas conservée dans la session d'écran. J'ai résolu ce problème en ajoutant ce qui suit à mon .bashrc. Je ne pensais pas que cela devrait être nécessaire, mais je suppose que vous faites ce que vous devez:
# ensure X forwarding is setup correctly, even for screen
XAUTH=~/.Xauthority
if [[ ! -e "${XAUTH}" ]]; then
# create new ~/.Xauthority file
xauth
fi
if [[ -z "${XAUTHORITY}" ]]; then
# export env var if not already available.
export XAUTHORITY="${XAUTH}"
fi
Je ne m'attends pas à ce que ce soit la meilleure solution, ni la plus concise, mais cela fonctionne.
Sur la base de la suggestion de @harre, j’ai trouvé cette solution la plus efficace, du moins pour RHEL via PuTTY. Je sais qu'il existe un meilleur moyen que de créer un fichier contenant la var, mais cela fonctionne en dehors de la porte pour que X11
puisse accéder au DISPLAY
lorsqu'il est chargé via gnu screen
.
Solution automatisée
Ajouter à .bashrc
(ou .bash_profile
, selon votre cas d'utilisation)
#.bashrc
if [ -f ~/etc/.bash-screen-x11 ]; then
echo $DISPLAY > $HOME/.display.env
source ~/etc/.bash-screen-x11
fi
Ajoutez ensuite le fichier suivant (ou votre choix de chemin)
#~/etc/.bash-screen-x11
# sets back display var.
if [ -z $STY ]; then
export DISPLAY=$(cat $HOME/.display.env)
fi
FreeNX est une application formidable pour travailler avec des affichages à distance.