Redirection de DISPLAY

Résolu/Fermé
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 9 sept. 2011 à 14:01
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 11 oct. 2011 à 21:41
Bonjour,
voilà la question que je me pose : est-il possible de changer une application de serveur X.
par exemple :
$ export DISPLAY=192.168.1.1:0.0
$ kwrite texte.txt&

mais là je me rend compte que je me suis trompé de machine et je voudrais que mon affichage se fasse sur la machine 192.168.1.2.
Merci de m'éclairer de vos lumière :-)


A voir également:

3 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 408
9 sept. 2011 à 14:20
Salut,

Sans grande conviction....

Repasser ta tâche au premier plan (fg %1), suspendre le processus (CTRL+Z), exporter un autre display (export DISPLAY=192.168.1.2:0.0), repasser le processus en arrière-plan (bg).

Mais je doute de la manoeuvre ;-\

En plus, pour ton exemple avec un fichier texte et un éditeur, autant enregistrer les modifs du fichier, arrêter la tâche, changer de display et relancer la tache... non ? ;-)
0
Je pense que le coup du kwrite est juste pour l'exemple. C'est vrai que ce serait pratique pour "s'envoyer" une fenêtre d'un serveur X à un autre... mais c'est là que le bât blesse : en X, le client se connecte à un serveur avec tout ce qui s'ensuit, donc je suis pessimiste aussi :/

Peut-être envoyer un SIGWINCH au processus après avoir changé le DISPLAY ? (mouais... pas convaincu)
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
9 sept. 2011 à 16:33
Je ne suis pas très optimiste là dessus non plus, mais on ne sait jamais.
Bien entendu, kwrite était là pour l'exemple.
J'ai testé, vos solutions ne fonctionnent pas.
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
12 sept. 2011 à 12:53
J'ai eu une petite révélation : regarder un code source d'application graphique X.
J'ai pris le modèle standard de création (un truc trouvé surement avec un IDE)
Le programme se connecte au serveur X spécifié par la variable d'environnement DISPLAY (ou une fourni en dur). La fonction qui fait ça retourne une structure "Display*" sur laquelle plein d'opération sont effectué, dont le fait de créer une fenêtre sur le serveur X.
Au final, je pense que c'est possible de changer de serveur X, à condition que ça soit prévu à la base dans le programme.
Il y a quelques étapes entre la connexion au serveur et la création effective de la fenêtre (notamment lié à la résolution).
Je pense donc qu'une commande du genre :
chX host:0.0 pid
a extrêmement peu de chance d'exister. Le seul espoir restant est qu'une telle possibilité ait été inclus dans les bibliothèques style QT.
0
Oui c'est ce que j'imaginais aussi instinctivement : qu'en utilisant directement la libX, on pouvait dupliquer une fenêtre puis supprimer celle d'origine (avec les bons locks entretemps). Mais pour manipuler ça de l'extérieur...

J'avais pensé aussi à une sorte de "proxy X" (je ne sais pas si ça existe) qui sert de serveur X pour ton programme, et qui serait client du véritable serveur X cible, avec possibilité d'en changer à la volée. L'avantage, c'est que tu n'es plus dépendant du fait que ce soit prévu à la base dans le programme. Mais est-ce que ça existe ?
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
11 oct. 2011 à 21:41
En cherchant comment avoir deux moniteurs sur mon PC (d'ailleurs, si vous avez une idée...;-/ )je suis tombé par hasard sur xmove https://en.wikipedia.org/wiki/Xmove
qui confirme qu'en effet on ne peut pas changer de serveur X une application, mais qu'en revanche il existe des "proxy", comme xmove justement.
Conclusion : ne jamais désespérer qu'un autre ait eu la même idée à la con que toi :-D
0