S'il y a plusieurs X Windows exécutés sur un système, est-il possible de faire fonctionner un programme sur une fenêtre particulière? Comment identifieriez-vous la fenêtre et feriez-vous fonctionner le programme là-bas?
Je suppose que j'ai toutes les autorisations nécessaires pour exécuter un tel programme.
Réponses:
Les programmes X savent à quelle session X ils sont censés parler en examinant la
DISPLAY
variable d'environnement.Vous devez d'abord découvrir ce qui
DISPLAY
est défini dans la session X où vous souhaitez que votre programme s'exécute. Pour ce faire, émettez la commande à l'echo $DISPLAY
intérieur d'un terminal X dans cette session X. Obtenir généralement quelque chose comme:0.0
est sorti.Disons que vous voulez commencer l'excellent programme
xclock
programme dans votre session X oùDISPLAY
est:0.0
, mais vous voulez faire à la console. Vous appuyez ensuite sur Alt-Ctrl-F1 pour passer à cette console, puis tapez:Ensuite, vous revenez à X en appuyant sur Alt-Ctrl-F7 ou Alt-Ctrl-F8 (ou peut-être une autre touche F, selon votre saveur Linux) et regardez la nouvelle jolie horloge murale que vous avez là-bas.
En fait, vous auriez pu exécuter la commande ci-dessus dans n'importe quel shell sur cette même machine (via SSH, dans n'importe quelle session X, sur n'importe quelle console, etc.) - le fait que vous ayez spécifié
DISPLAY=:0.0
avant la commande signifie que laxclock
fenêtre apparaîtra toujours dans la même session X.En fait - à part le fait que les programmes X le regardent - il n'y a rien de spécial dans la
DISPLAY
variable. Normalement, lorsque vous démarrez des programmes à partir d'un terminal X, ils démarrent au bon endroit car ilsDISPLAY
ont déjà été définis pour vous.Au lieu d'utiliser la commande ci-dessus, vous pouvez également la diviser en deux en définissant d'abord
DISPLAY
, puis en exécutantxclock
. Dans ce cas, leDISPLAY
paramètre persistera jusqu'à ce que vous fermiez ce shell, et tous les programmes X suivants démarrés à partir de là s'ouvriront dans la même session X quexclock
.la source
DISPLAY
sera défini pour exporter par défaut, car il est importé par le shell (cela fonctionne à la foiszsh
etdash
pour moi sans utiliserexport
). Mais, oui, si vous ne pouvez pas faire fonctionner la version à deux lignes, essayez de la remplacerDISPLAY=:0.0
parexport DISPLAY=:0.0
.Normalement, les programmes clients X utilisent la
DISPLAY
variable d'environnement pour savoir à quel affichage du serveur X se connecter. Certains programmes acceptent également un paramètre de ligne de commande (-display
ou quelque chose de similaire) qui peut être utilisé pour remplacer laDISPLAY
variable d'environnement.la source