X11 Transfert sur écran Gnu, est-ce possible?

32

J'utilise constamment GNU Screen. Mais, j'ai essayé de savoir si les applications X11 pouvaient être transférées à l'écran quand je ssh-ing (c'est un mot?). Actuellement, si j'essaie de lancer gedit via l'écran, celui-ci s'ouvre sur mon ordinateur serveur et non sur mon client. Si je fais la même chose en dehors de l'écran, tout va bien. Mais je veux que tout soit bien quand j'utilise aussi l'écran!

Merci!

PS: J'ai googlé le problème et je vois la mention de xmove, mais je n'arrive pas à trouver le paquet contenant xmove sur mon ubuntu. (Ubuntu 10.10)

    
posée Sandro 28.10.2010 - 06:10
la source

7 réponses

31

Pour ce faire manuellement, une fois que vous avez SSHed, mais avant de vous reconnecter à l'écran, vérifiez la variable d'environnement DISPLAY:

echo $DISPLAY

Une fois que vous êtes attaché à l'écran, définissez explicitement la variable d'environnement:

export DISPLAY=:N.0

: N.0 est ce que echo a montré avant l'attachement. Ce ne sera pas parfait, car certaines applications peuvent s'attendre à parler à la session D-Bus, ce qui est un peu plus complexe à envoyer sur la connexion SSH.

    
réponse donnée Kees Cook 28.10.2010 - 17:36
la source
11

il y a un programme appelé xpra dans les dépôts, c'est comme gnu screen pour x11. ce n'est pas trop difficile de travailler avec:

X Applications distantes persistantes

Xpra vous offre les fonctionnalités de GNU Screen pour les applications X.

Il permet à l'utilisateur d'afficher des applications X distantes sur son ordinateur local, et déconnecter et reconnecter de la machine distante sans perdre l'état de les applications en cours d'exécution.

    
réponse donnée Avihay 20.10.2011 - 14:04
la source
7

Byobu rattache automatiquement les agents ssh et gpg. Je pourrais le faire rattacher la variable d’affichage à, si cela vous est utile ...

    
réponse donnée Dustin Kirkland 01.12.2010 - 16:03
la source
2

C'est comme ça que je l'ai fait fonctionner lors de l'exécution de byobu

Ajoutez cette ligne dans .bash_login avant la ligne "_byobu_source ..":

echo $DISPLAY > $HOME/.display.env

Et puis ajoutez cette ligne à .bashrc :

if [ ! -z ${SSH_CONNECTION+x} ]; then
  export DISPLAY=$(cat $HOME/.display.env) 
fi
    
réponse donnée harre 25.05.2016 - 02:36
la source
1

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 fichier .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, ou la plus concise, mais cela fonctionne.

    
réponse donnée Mark 03.03.2015 - 17:20
la source
0

FreeNX est une application formidable pour travailler avec des écrans distants.

    
réponse donnée Habitual 01.12.2010 - 16:14
la source
0

Sur la base de la suggestion de @harre, j’ai trouvé que c’était la meilleure solution de travail, du moins pour RHEL via Putty. Je sais qu'il existe un meilleur moyen que de créer un fichier qui contient le var, mais cela fonctionne à partir de la porte pour que X11 ait accès au DISPLAY lorsqu'il est chargé via gnu screen .

Solution automatisée

Ajoutez à .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
    
réponse donnée Brian Thomas 12.09.2017 - 04:00
la source

Lire d'autres questions sur les étiquettes