現在 foo.com というローカルホストにいて、そこで X サーバが起動されているとする。ここで xeyes を実行すると、当然 xeyes のウィンドウが画面に表示される。この状況で実行されているプログラムは、X クライアント (xeyes) と X サーバである。xeyes が「マウスの位置を教えろ」「円を描け」と X サーバに要求し、X サーバはそのリクエストに従ってマウスの情報を渡したり、画面に円を描いたりしている。



では他のホストで X クライアントを実行してみよう。まず他のホストにログインする必要があるが、その前に

% xhost +

としておく (理由は後述)。そして telnet で bar.com にログインする。


% telnet bar.com
login: ログインネーム入力
password: パスワード入力

ここで xeyes を実行すると


% xeyes
cannot open display.

とエラーになってしまう。これは bar.com 側でウィンドウを開こうとして失敗したからである。foo.com にウィンドウを開くように指示しなければならない。


% setenv DISPLAY foo.com:0.0

これで xeyes が実際にリクエストを出す X サーバは bar.com ではなく foo.com になる。


% xeyes

とすると xeyes が表示されるはずである。この状況では、xeyes という X クライアントは bar.com で動いているが、xeyes は foo.com の X サーバに対して「円を描け」などと要求している。




上記のように環境変数 DISPLAY で設定してもよいが、

% xeyes -display foo.com:0.0



などとオプションで指定することもできる。-display オプションはほとんど全ての X アプリケーションで指定することができる。普通は X クライアントと X サーバは同一のホスト(ローカルホスト)で動いているので、DISPLAY は :0.0 (=localhost:0.0) となっている。

xhostについて、



デフォルトでは、ローカルホスト以外からは X サーバにアクセスすることはできないが、

% xhost +foo.bar.com

とすると、foo.bar.com からのアクセスを許可する。


% xhost +

とすると全てのホストからアクセス可能になる。




なお、本当に xhost + とすると、全世界のホストから

% xwd -display your.host.com:0.0