Ist es möglich zu wählen, auf welcher X-Anzeige eine Programminstanz ausgeführt werden soll?


10

Wenn auf einem System mehrere X-Windows ausgeführt werden, kann dann ein Programm in einem bestimmten Fenster ausgeführt werden? Wie würden Sie das Fenster identifizieren und das Programm dort ausführen lassen?

Ich gehe davon aus, dass ich über alle erforderlichen Berechtigungen zum Ausführen eines solchen Programms verfüge.


Antworten:


15

X-Programme wissen anhand der DISPLAYUmgebungsvariablen , mit welcher X-Sitzung sie sprechen sollen .

Zuerst müssen Sie herausfinden, auf was DISPLAYin der X-Sitzung eingestellt ist, in der Ihr Programm ausgeführt werden soll. Geben Sie dazu den Befehl echo $DISPLAYin einem X-Terminal in dieser X-Sitzung ein. In der Regel wird so etwas wie :0.0ausgegeben.

Nehmen wir an, Sie möchten das hervorragende Programm xclockin Ihrer X-Sitzung dort starten, wo es sich DISPLAYbefindet :0.0, aber Sie möchten dies an der Konsole tun. Drücken Sie dann Alt-Strg-F1, um zu dieser Konsole zu wechseln, und geben Sie Folgendes ein:

DISPLAY=:0.0 xclock   # variables set w/ a command are local to that command

Dann kehren Sie zu X zurück, indem Sie Alt-Strg-F7 oder Alt-Strg-F8 (oder eine andere F-Taste, abhängig von Ihrer Linux-Variante) drücken und die neue hübsche Wanduhr ansehen, die Sie dort haben.

Tatsächlich hätten Sie den obigen Befehl in jeder Shell auf demselben Computer ausführen können (über SSH, in jeder X-Sitzung, auf jeder Konsole usw.). Die Tatsache, die Sie DISPLAY=:0.0vor dem Befehl angegeben haben, bedeutet, dass das xclockFenster immer angezeigt wird die gleiche X-Sitzung.

Tatsächlich hat die DISPLAYVariable - abgesehen von der Tatsache, dass X-Programme sie betrachten - nichts Besonderes . Wenn Sie Programme von einem X-Terminal aus starten, werden diese normalerweise an der richtigen Stelle gestartet, da DISPLAYsie bereits für Sie festgelegt wurden.

Anstatt den obigen Befehl zu verwenden, können Sie ihn auch in zwei Teile aufteilen, indem Sie ihn zuerst einstellen DISPLAYund dann ausführen xclock. In diesem Fall DISPLAYbleibt die Einstellung bestehen, bis Sie diese Shell schließen, und alle nachfolgenden X-Programme, die von dort aus gestartet wurden, werden in derselben X-Sitzung wie geöffnet xclock.

                      # variables set w/o a command are local to the shell,
export DISPLAY=:0.0   # unless exported
xclock

1
Beachten Sie, dass das letzte Bit nur funktioniert, wenn Sie die Shell-Variable zuerst in die Umgebung exportieren.
Ignacio Vazquez-Abrams

Ich denke, DISPLAYwird standardmäßig auf Export eingestellt, da es von der Shell importiert wird (es funktioniert in beiden zshund dashfür mich ohne Verwendung export). Aber ja, wenn Sie nicht die zwei Zeilenversion zu arbeiten, versuchen Sie ersetzen DISPLAY=:0.0mit export DISPLAY=:0.0.
Zrajm

1

Normalerweise verwenden die X-Client-Programme die DISPLAYUmgebungsvariable, um zu wissen, mit welcher X-Server-Anzeige eine Verbindung hergestellt werden soll. Einige Programme akzeptieren auch einen Befehlszeilenparameter ( -displayoder ähnliches), mit dem die DISPLAYUmgebungsvariable überschrieben werden kann.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.