現在 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