プログラムインスタンスを実行するXディスプレイを選択することはできますか?


10

システムで複数のXウィンドウが実行されている場合、プログラムを特定のウィンドウで実行することはできますか?どのようにウィンドウを識別し、プログラムをそこで実行しますか?

私はそのようなプログラムを実行するために必要なすべての権限を持っていると想定しています。


回答:


15

Xプログラムは、DISPLAY環境変数を調べることにより、どのXセッションと対話するかを認識しています。

まずDISPLAY、プログラムを実行するXセッションで何が設定されているかを確認する必要があります。これをecho $DISPLAY行うには、そのXセッションのX端末内でコマンドを発行します。通常、:0.0出力されるようなものを取得します。

あなたは優れたプログラムを開始したいとしましょうxclock、あなたのXセッションでプログラムをDISPLAYされ:0.0ていますが、コンソールでこれをやりたいです。次に、Alt-Ctrl-F1を押してそのコンソールに移動し、次のように入力します。

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

次に、Alt-Ctrl-F7またはAlt-Ctrl-F8(またはLinuxの種類によっては他のFキー)を押してXに戻り、そこにある新しいかなりの壁時計を観察します。

実際、上記のコマンドを同じマシンの任意のシェル(SSH経由、任意のXセッション、任意のコンソールなど)で実行できますDISPLAY=:0.0。コマンドの前に指定したという事実は、xclockウィンドウが常にポップアップすることを意味します同じXセッション。

実際、Xプログラムがそれを見るという事実は別として、DISPLAY変数について特別なことは何もありません。通常、Xターミナルからプログラムを起動すると、DISPLAYすでに設定されているため、適切な場所から起動します。

上記のコマンドを使用する代わりに、最初にを設定しDISPLAY、次にを実行して、2つに分割することもできますxclock。この場合、DISPLAY設定はそのシェルを閉じるまで持続し、そこから開始された後続のすべてのXプログラムはと同じXセッションで開きますxclock

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

1
ただし、シェル変数を最初に環境にエクスポートしない限り、最後のビットは機能しません。
Ignacio Vazquez-Abrams

私は考えるDISPLAY(それは両方で動作し、それがシェルによってインポートされているため、デフォルトでは輸出に設定されますzshし、dash使用しなくても私のためにexport)。しかし、はい、2行バージョンが機能しない場合は、で置き換えDISPLAY=:0.0てみてくださいexport DISPLAY=:0.0
zrajm 2013年

1

通常、XクライアントプログラムはDISPLAY環境変数を使用して、接続するXサーバーディスプレイを認識します。一部のプログラム-displayは、DISPLAY環境変数を上書きするために使用できるコマンドラインパラメータ(または類似のもの)も受け入れます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.