X

Section: User Commands (1)
Updated: Release 6.3
Index xjman/web INDEX
 

名前

X - 移植性の高い、ネットワーク透過なウィンドウシステム  

書式

X ウィンドウシステムは広範囲なコンピュータとグラフィックマシン上で稼働 するネットワーク透過なウィンドウシステムである。X コンソーシアムのソフ トウェア配布物は ANSI C と POSIX に準拠しているほとんどのシステムで比較的簡単 に構築できる。商用パッケージも広範囲のプラットフォームで利用可能である。

X コンソーシアムは、このソフトウェアに言及する時には次の名称を使用する ことを求めている:

X

X ウィンドウシステム(X Window System)

X バージョン 11(X Version 11)

X ウィンドウシステム, バージョン 11(X Window System, Version 11)
X11

X Window System は X Consortium, Inc. の登録商標である。  

説明

X ウィンドウシステムのサーバはビットマップディスプレイを持つコンピュータ で稼働する。サーバはユーザの入力や様々なプロセス間通信チャネルを通じて 様々なクライアントからの出力要求を受け付ける。ごく一般的な場合には クライアントプログラムはサーバの動作しているマシンの上で動作するが、 クライアントは(異なるアーキテクチャのマシンとオペレーティングシステム を含めて)他のマシンからも透過的に実行できる。

X は重なりあって階層構造を持つサブウィンドウおよびテキストや グラフィックスの操作を、白黒ディスプレイでもカラーディスプレイでも サポートしている。 利用可能な関数の正式な説明については Xlib - C 言語 X インタフェース マニュアル、 X ウィンドウシステムプロトコル 仕様書、 X ツールキットイントリンシクス - C 言語インタフェース マニュアルと ツールキットに関する様々な文書を参照すること。

X を使用するプログラムは大変多い。 X コンソーシアムがコアの配布物として提供しているプログラムは以下を以下 に示す: 端末エミュレータ、xterm; ウィンドウマネージャ、twm; ディスプレイマネージャ、xdm; コンソールリダイレクトプログラム、xconsole; メールインターフェース、xmh; ビットマップエディタ、bitmap; リソース列挙/操作ツール、appres, editres; アクセス制御プログラム、xauth, xhost, と iceauth; ユーザ環境設定プログラム、xrdb, xcmsdb, xset, xsetroot, xstdcmap, xmodmap; 時計、 xclockoclock; フォント表示、(xfd; フォント、ウィンドウとディスプレイの情報表示ユーティリティ、 xlsfonts, xwininfo, xlsclients, xdpyinfo, xlsatoms, と xprop; スクリーン画像操作ユーティリティ、 xwd, xwud, と xmag; 性能測定ユーティリティ、 x11perf; フォントコンパイラ、 bdftopcf; fslsfonts, fstobdf; フォントサーバと関連ユーティリティ、 xfs, fsinfo, fslsfonts, fstobdf; X Image 拡張実行プログラム, xieperf; mkfontdir; ディスプレイサーバと関連ユーティリティ、Xserver, rgb, mkfontd ir; リモート実行ユーティリティ、 rstartxon; クリップボードマネージャ、 xclipboard; xkbwatch; キーボード構成記述コンパイラと関連ユーティリティ、 xkbcomp, xkbprint, xkbbell, xkbevd, xkbvleds, と xkbwatch; クライアント停止ユーティリティ、 xkill; 最適化 X プロトコルプロキシ、 lbxproxy; ファイアウォールセキュリティプロキシ、 xfwp; プロキシを制御するプロキシマネージャ、 proxymngr; プロキシを発見するユーティリティ、 xfindproxy; Netscape Navigator のプラグイン, libxrx.solibxrxnest.so; RX MIME 型用の補助プログラム、 xrx; スクリーンの全てもしくは一部を再描画するユーティリティ、 xrefresh

その他の多くのユーティリティ、ウィンドウマネージャ、ゲーム、ツールキット は、ユーザによる寄贈ソフトウェアとして X コンソーシアムの配布物 のに含まれているか、インターネット上の anonymous ftp で入手可能である。 詳細は自サイトの管理者に問い合わせること。  

はじめに

X サーバの入手とクライアントアプリケーションの初期設定をする方法は主に 2 つある。どちらを使うべきかは、稼働中のオペレーティングシステムや X の他にウィンドウシステムを使用したいかどうかによって変わる。

xdm (X ディスプレイマネージャ) X をディスプレイ上で常時実行させたい場合は、自サイトの管理者にそのマシ ンに X ディスプレイマネージャ(X Display Manager) xdm を設定して もらうこと。このプログラムは普通はブート時にシステムによって起動され、 サーバが常に実行しておいてユーザがログインできるようにする。xdm が稼働して いる場合は、ログインを促す画面がウィンドウに表示されて、ユーザ名とパス ワードの入力を求めているはずである。ここで、単に通常の端末と同様に ユーザ名とパスワードをそれぞれ入力してリターンキーを押すこと。 間違えた場合は xdm はエラーメッセージを表示してもう一度入力を求 める。ログインが成功すると xdm は X 環境を開始する。 デフォルトでは、実行可能属性の付いた .xsession という名前のファ イルがホームディレクトリにあれば、xdm はこれを初期クライアント (端末エミュレータ、時計、ウィンドウマネージャ、背景ウィンドウやポイン タの速度等を設定するプログラム等)を実行するためのプログラム(またはシェ ルスクリプト)として扱う。
xinit (シェルから手動で起動した場合) 複数のウィンドウシステムをサポートしているサイトでは、xinit を 使用して X を手動で開始するとよい。ユーザのマシンがそのような環境であれば、 自サイトの管理者が "x11", "startx", "xstart" のような (標準リソースの ロード、ウィンドウマネージャの起動、時計の表示、端末エミュレータの 起動を行うような)サイト独自のプログラムをちゃんと用意しているはず である。さもなければ、このようなスクリプトを xinit プログラムを 使って構築すること。このユーティリティは、ユーザの指定したプログラムを ひとつ実行してサーバを起動し、次に別のプログラムを実行して使いたい クライアントを起動させ、その後これらの終了を待つ。ユーザの指定した プログラムのどちらかもしくは両方はシェルスクリプトかもしれず、 自由度が高いためにインタフェースをよくするのに手間がかかるかもしれない。 したがって、xinit はエンドユーザ向けではない。
 

ディスプレイ名

ユーザから見ると、すべての X サーバは


hostname:displaynumber.screennumber ホスト名:ディスプレイ番号.スクリーン番号

という形式で ディスプレイ名(display name) を保持している。 この情報は、アプリケーションのサーバへの接続方法とデフォルトで使う スクリーンを決める(複数のモニタに表示するとき)ために使われる。

hostname ホスト名 hostname は物理的にディスプレイが接続されたマシンの名前を指定す る。ホスト名が与えられなかった場合は、同じマシン上にあるサーバと 通信するのに最も効率の良い方法が使われる。
displaynumber ディスプレイ番号 「ディスプレイ(display)」という用語は通常、一般的なキーボードとポインタ (マウス、タブレット等) を共有するモニタの集合を指すために使われる。 ほとんどのワークステーションにはキーボードとディスプレイはそれぞれ 1 つずつしか接続されていない。巨大なマルチユーザシステムでは、複数の人が グラフィックスを使う作業ができるように複数のディスプレイを持つことがよくある。 混乱を避けるために、X サーバがディスプレイを起動するときにはそれぞれの ディスプレイに (0 から始まる) ディスプレイ番号(display number) を割り当てる。ディスプレイ番号は必ずディスプレイ名に含まれていなければ ならない。
screennumber スクリーン番号 ディスプレイによっては 1 つのキーボードとポインタを複数のモニタで共有 していることがある。それぞれのモニタはウィンドウの集合を持っているので、 それぞれのスクリーンに X サーバがディスプレイ起動時に (0 から始まる) スクリーン番号(screen number)を割り当てる。スクリーン番号が与え られない場合はスクリーン 0 が使用される。

POSIX システムでは、標準ディスプレイ名は DISPLAY 環境変数に格納される。 この変数は xterm 端末エミュレータによって自動的に設定される。 しかし、ネットワーク上の他のマシンにログインするときは、自分が使う ディスプレイを DISPLAY が指すように設定しなければならない。例えば

    % setenv DISPLAY myws:0
    $ DISPLAY=myws:0; export DISPLAY

のようにすること。 xon スクリプトを使用すると、リモートマシンで X プログラムを開始 させることができる。このスクリプトは正しい DISPLAY 環境変数を自動的に 設定する。

最後に、ほとんどの X プログラムは一時的に DISPLAY の内容を上書きする -display displayname というコマンド行オプションを受け付ける。 これは他人のスクリーンにウィンドウをポップアップさせるためや、 リモートの xterm をコマンド自分のディスプレイに出すために 「リモートシェル」コマンドの一部として使うことが一般的である。 例えば、

    % xeyes -display joesws:0 -geometry 1000x1000+0+0
    % rsh big xterm -display myws:0 -ls </dev/null &

のようにすること。 X サーバは様々な異なる通信チャネル (ネットワークバイトストリーム、共有メモリ 等) との接続を待つ。指定されたサーバへの接続方法は複数個あり得るので、 ディスプレイ名の hostname の部分は使用するチャネル (トランスポート層とも呼ばれる)の種類を決めるために使われる。 X サーバは一般的に次の接続の種類をサポートしている:

local

ディスプレイ名のホスト名部分は空の文字列でなければならない。 例えば :0, :1, :0.1 となる。最も効率の良い ローカル転送の方法が選ばれる。
TCP/IP

ディスプレイ名のホスト名部分はサーバマシンの IP アドレスでなければなら ない。完全なインターネット名、短縮名、IP アドレスのいずれも許される。 例えば x.org:0, expo:0, 198.112.45.11:0, bigmachine:1, hydra:0.1 は正しい指定である。
DECnet

ディスプレイ名のホスト名部分をサーバマシンのノード名とし、 その後にコロンを 1 つではなく 2 つを置かなければならない。 例えば myws::0, big::1, hydra::0.1 となる。

 

アクセス制御

X サーバは複数のタイプのアクセス制御を利用できる。X11 リリース 6 に用意されている機構は以下の通りである:

ホスト単位アクセス ホストに基づいた単純なアクセス制御 MIT-MAGIC-COOKIE-1 平文の「クッキー」を共有する XDM-AUTHORIZATION-1 安全な DES ベースの秘密鍵を使用 SUN-DES-1 Sun の Secure RPC 機構に基づく MIT-KERBEROS-5 Kerberos バージョン 5 のユーザ対ユーザ認証

xdm はサーバのアクセス制御を初期化し、ユーザがアクセスできるファイ ルに認証情報を格納する。通常、必ず接続が許されるホストのリストは空であ り、明示的に認証されたクライアントだけがディスプレイに接続できる。 ホストのリストに (xhost で) 項目を追加したときは、サーバはそれらの マシンからの接続についての認証は行わない。xhost は注意して実行すること。

Xlib が認証データを伸長して取り出すファイルは XAUTHORITY 環境変数で指定できる。デフォルト値はホームディレクトリの .Xauthority ファイルである。 xdm$HOME/.Xauthority を使用して認証データを作成する。 あるいは、ユーザがログインする時に既に認証データがあればこれにマージする。

複数のマシンを使用していてネットワークファイルシステムによってすべての マシン共通のホームディレクトリを共有している場合、認証ファイルについて 心配する必要はなく、システムはデフォルトで正常に動作するはずである。 そうでない場合も認証ファイルはマシンに依存しないので、認証ファイルを 共有するには単にコピーすればよい。認証ファイルを管理するには xauth を使うこと。 このプログラムを使うと、レコードを伸長し他のファイルに挿入することがで きる。リモートマシンがローカルマシンとホームディレクトリを共有していな い場合、これを使用するとログイン時にリモートマシンへ認証を送信できる。 NFS, ftp, rcp 経由で「暗号化されずに」送信された認証情報は ネットワーク盗聴者が「盗む」ことができるので、認証されない アクセスを許してしまうかもしれない点に注意すること。 多くの環境ではこれほどのセキュリティ水準は必要ないが、必要ならば 特定の認証データの正確な意味を知っておき、実際に問題になるかどうかを知 る必要がある。アクセス制御の詳細については Xsecurity のオンラインマニュアルを参照すること。

 

ジオメトリ指定

固定サイズの画面の端末に代わるウィンドウシステムの優位性のひとつは、 アプリケーションがスクリーン上で特定の大きさや位置の制限を受ける必要が ないことである。ディスプレイ上のウィンドウのレイアウトはユーザが実行 しているウィンドウマネージャが制御するが(後述)、ほとんどの X プログラム ではコマンド行で -geometry WIDTHxHEIGHT+XOFF+YOFFの形式 (ここで WIDTH, HEIGHT, XOFF, と YOFF は数値) の引き数を指定して、アプリケーションのメインウィンドウの望ましい大きさ と位置を指定できる。

ジオメトリ指定の WIDTHHEIGHT 部分の単位はピクセル数か 文字数のどちらかであるが、これはアプリケーションによって異なる。 XOFFYOFF の単位はピクセルであり、スクリーンの左端か右 端の上端か下端からの間隔をウィンドウにそれぞれ指定する。どちらのタイプ のオフセットも、スクリーンの指定された端からウィンドウの対応する端ま での距離を指定する。X 軸方向のオフセットは次の方法で指定する:

+XOFF ウィンドウの左端をスクリーンの左端から XOFF ピクセルの所に配置 する(つまり、ウィンドウの原点の X 座標は XOFF になる)。
-XOFF ウィンドウの右端をスクリーンの右端から XOFF ピクセルの所に配置 する。XOFF は負の値でもよく、この場合にはウィンドウの右端がスク リーンの外になる。

Y オフセットも同様な意味を持つ:

+YOFF ウィンドウの上端をスクリーンの上端から YOFF ピクセルの所に配置 する(つまり、ウィンドウの原点の Y 座標は YOFF となる)。 YOFF は負の値でもよく、この場合にはウィンドウの上端がスクリーン の外になる。
-YOFF ウィンドウの下端をスクリーンの下端から YOFF ピクセルの所に配置 する。YOFF が負の値でもよく、この場合にはウィンドウの下端がスク リーンの外になる。

オフセットは数値の組として与えなければならない。つまり、XOFFYOFF のどちらかを指定する場合には両方とも指定しなければならない。 ウィンドウを画面の四隅に配置するには以下のように指定する:

+0+0
左上隅に配置。
-0+0
右上隅に配置。
-0-0
右下隅に配置。
+0-0
左下隅に配置。

次の例は、端末エミュレータを大体画面の中央に配置し、ロードアベレージモ ニタとメールボックス、時計を右上隅に配置する。

    xterm -fn 6x10 -geometry 80x24+30+200 &
    xclock -geometry 48x48-0+0 &
    xload -geometry 48x48-96+0 &
    xbiff -geometry 48x48-48+0 &

 

ウィンドウマネージャ

スクリーン上のウィンドウのレイアウトは ウィンドウマネージャ と呼ばれる 特別なプログラムによって制御される。多くのウィンドウマネージャは指定さ れたジオメトリ指定を受けつけるが、指定を無視するものもある(例えば、 ポインタでドラッグしてウィンドウ領域のスクリーン上の位置を明示的に指定させる)。

ウィンドウマネージャは(たとえ複雑でも)通常のクライアントプログラムなの で、色々なユーザインターフェースを構築できる。X コンソーシアムは ウィンドウの重ね表示、ポップアップメニュー、point-and-click または click-to-type 入力モデル、タイトルバー、かっこいいアイコン(アイコン のウィンドウがばらばらにできるのが嫌ならアイコンマネージャ) をサポート した twm という名前のウィンドウマネージャを配布している。

他の有名なウィンドウマネージャについては、X コンソーシアムの配布に含ま れるユーザ寄贈のソフトウェアを参照すること。  

フォント名

X でテキストとシンボルを表示するための文字集合は、フォント とし て知られている。 一般的にフォントには見ためがそろっており並べると綺麗に見えるイメージが 含まれている(例えば、1 つの大きさ、太さ、スラント、文字集合)。 同様に、共通のタイプフェースを基にしているフォントの集合(このバリエー ションは通常 roman, bold, italic, bold italic oblique, bold oblique と 呼ばれる)はファミリと呼ばれる。

フォントには色々な大きさのものがある。X サーバはスケーラブル フォントをサポートしている。これは 1 つのソースから任意の大きさのフォント を作成できるフォントのことである。サーバはアウトラインフォント と ビットマップ フォントのスケーリングをサポートしている。 アウトラインフォントのスケーリングでは、普通はビットマップフォント のスケーリングよりもずっとよい結果が得られる。

X サーバはファイルシステム上のディレクトリに格納された個々のファイル、 1 つ以上のフォントサーバ、またはディレクトリとフォントサーバの両方から フォントを取得できる。 フォントを探すときに X サーバが調べる場所のリストは、フォントパス で制御する。普通に X をインストールした場合には、X サーバ は共通に使うフォントディレクトリをフォントパス内に持った状態で起動 するようになっているが、フォントパスはいつでも xset プログラムで変 更できる。しかしながら、ディレクトリ名はX サーバのマシンのもので あってアプリケーションのマシンのものではない点には注意すること。

ビットマップフォントファイルは普通、テキスト形式で記述されている フォントを bdftopcf でバイナリ形式へコンパイルして作成する。 フォントデータベースは、ソースまたはコンパイルされたフォントがある ディレクトリで mkfontdir プログラムを実行して作成する。 フォントを追加したときは、サーバが新しいフォントを見つけられるように、 必ず mkfontdir を再実行しなければならない。サーバにフォントデー タベースを再読み込みさせるには、xset プログラムでフォントパスを 設定し直すこと。 例えば、個人のディレクトリにフォントを追加した場合は次のコマンドを使用 する:

    % cp newfont.pcf ~/myfonts
    % mkfontdir ~/myfonts
    % xset fp rehash 

xfontselxlsfonts プログラムを使うと、あるサーバが使用 できるフォントを見ることができる。 フォント名は個々のフォントを一意に特定するのに必要な情報をすべて含むの で、かなり長くなってしまう傾向がある。しかし、X サーバはフォント名の ワイルドカード記述をサポートしているので、次のような完全なフォント名

    -adobe-courier-medium-r-normal--10-100-75-75-m-60-iso8859-1

    -*-courier-medium-r-normal--*-100-*-*-*-*-iso8859-1

のように省略できる。

シェルにおいては *? は特別な意味を持っているので、 ワイルドカードを使ったフォント名は次のようにクォートしなければならない:

    % xlsfonts -fn '-*-courier-medium-r-normal--*-100-*-*-*-*-*-*'

xlsfonts プログラムを使うと、指定されたパターンと一致するフォント を全て列挙できる。引き数がない場合は利用可能な全てのフォントを列挙する。 このプログラムは普通、同じフォントを色々なサイズで列挙する。基本となる スケーラブルフォントだけを見るには次のパターンを使うこと:

    -*-*-*-*-*-*-0-0-0-0-*-0-*-*
    -*-*-*-*-*-*-0-0-75-75-*-0-*-*
    -*-*-*-*-*-*-0-0-100-100-*-0-*-*

得られた名前の 1 つを指定したサイズのフォントに変換するには、最初の 2 つ の 0 のどちらかを 0 ではない値に置き換える。 最初の 0 を含んでいる項目はピクセル単位での大きさである。特定のフォン トを指定するには、この 0 を指定する高さ(ピクセル単位)に置き換える。 また、二番目の 0 を含む項目はポイントサイズである。これをデシポイント 単位(722.7 デシポイントが 1 インチになる)のサイズに置き換える。 最後の 0 はピクセルの 1/10 倍が単位となる、平均的な幅を表すフィールド である。サーバによっては、この数値を指定するとスケーリングが歪んでしまう。  

フォントサーバ名

TCP 接続で使用するフォントサーバ名は次に示す形式で指定できる:

    tcp/hostname:port
    tcp/hostname:port/cataloguelist

hostname はフォントサーバの稼働しているマシンの名前(あるいは 10 進数のアドレス) で指定する。port は接続用のフォントサーバが接続待ち をしている 10 進数の TCP のポート番号である。cataloguelist はカ タログ名のリストで '+' で区切って指定する。

指定例: tcp/x.org:7100, tcp/198.112.45.11:7100/all

DECnet 接続で使用するフォントサーバ名は次に示す形式のいずれかで 指定できる:

    decnet/nodename::font$objname
    decnet/nodename::font$objname/cataloguelist

nodename はフォントサーバの稼働しているマシンの名前(または 10 進数のアドレス)を指定する。objname は大文字と小文字の区別がある DECnet の通常のオブジェクト名である。cataloguelist ははカタログ名のリス トで '+' で区切って指定する。

指定例: DECnet/SRVNOD::FONT$DEFAULT, decnet/44.70::font$special/symbols  

色名称

ほとんどのアプリケーションには、表示するテキストやグラフィックスの各種 要素の色を指定する方法(リソースやコマンド行の引き数を使う)がある。 色は抽象的色名称かまたは数値による色指定により指定する。数値による色指定 はデバイス依存(RGB)またはデバイス非依存の項目で識別することができる。 色名称文字列では大文字と小文字の区別はない。

X は "red", "blue" 等の抽象的色名称の利用に対応している。 この抽象的色名称に対応する値は 1 つまたは複数の色データベースを検索し て取得できる。 Xlib はまず 0 個以上のクライアント側のデータベースを検索する。 これらのデータベースの個数、場所、内容は実装依存である。 名称が見つからなかったら、色は X サーバのデータベースから検索される。 このテキスト形式のデータベースは一般に <XRoot>/lib/X11/rgb.txt ファイルに格納されている。ここで、<XRoot> は X11 をインストールしたディ レクトリのルートに置き換えること。

数値による色指定は、色空間の名称と次の書式の数値の組で構成される:

    <color_space_name>:<value>/.../<value>

RGB デバイス指定はプレフィックス "rgb:" によって他と区別し、次の形式で 指定する:

    rgb:<red>/<green>/<blue>

        <red>, <green>, <blue> := h | hh | hhh | hhhh
        h := 一桁の 16 進数
h は 4 ビットの値、 hh は 8 ビットの値、 hhh は 12 ビットの値、 hhhh は 16 ビットの値をそれぞれ表す。 これらの数値は直接 X サーバに渡され、ガンマ補正に使用される。

8 つの基本色は次のように表す:

    black                rgb:0/0/0
    red                  rgb:ffff/0/0
    green                rgb:0/ffff/0
    blue                 rgb:0/0/ffff
    yellow               rgb:ffff/ffff/0
    magenta              rgb:ffff/0/ffff
    cyan                 rgb:0/ffff/ffff
    white                rgb:ffff/ffff/ffff

互換性のために RGB デバイス用の古い書式がサポートされているが、 これを使い続けることは勧められない。 書式は最初のシャープ記号(#)の後に数値指定が続くものであり、以下のいず れかのフォーマットになる。

    #RGB                      (それぞれ 4 ビット)
    #RRGGBB                   (それぞれ 8 ビット)
    #RRRGGGBBB                (それぞれ 12 ビット)
    #RRRRGGGGBBBB             (それぞれ 16 ビット)

R, G と B は一桁の 16 進数を表す。 それぞれに 16 ビットより小さい値が指定されている場合、これは値の最上位 のビットを表す(数値がスケーリングされる "rgb:" 形式とは異なる)。 例えば、#3a7 は #3000a0007000 と同じである。

RGB による強度指定はプレフィックス "rgbi:" で識別され、次の書式で指定 される。:

    rgbi:<red>/<green>/<blue>

red, green, blue は 0.0 から 1.0 の範囲の浮動小数点である。 1.0 が最大の強度で 0.5 が半分の強度のように線形の強度を表す。 この値は X サーバに送る前の Xlib によってガンマ補正が行われる。 これらの値の入力書式は、符号(省略可能)、数値を示す文字列(小数点を含む こともある)、べき乗フィールド(E 又は e の後ろに符号付き整数を続けたも の。省略可能)である。

標準のデバイス依存の文字列による指定は次の書式である:

    CIEXYZ:<X>/<Y>/<Z>             (none, 1, none)
    CIEuvY:<u>/<v>/<Y>             (~.6, ~.6, 1)
    CIExyY:<x>/<y>/<Y>             (~.75, ~.85, 1)
    CIELab:<L>/<a>/<b>             (100, none, none)
    CIELuv:<L>/<u>/<v>             (100, none, none)
    TekHVC:<H>/<V>/<C>             (360, 100, 100)

全ての値 (C, H, V, X, Y, Z, a, b, u, v, y, x) は浮動少数点の値である。 この数値のいくつかには 0 から上限値の間の値を持つという制限がある。 上記のリストではこの上限値は括弧で括られている。 これらの数値の書式は、'+' か '-' の符号(省略可能)、小数点 を含むことがある数値を表す文字列、省略可能な指数フィールド(E または e の 後ろに符号(省略可能)と数値を表す文字列を続けたもの)である。

デバイス独立色の詳しい情報については Xlib のリファレンスマニュアル を参照すること。  

キーボード

X キーボードモデルは 2 つの層に分かれている。これは、(keycode と呼ばれている) 物理的なキーを表すサーバ独自のコードと、 (keysym と呼ばれている) キー上に書かれている文字や言葉を表す サーバに依存しないシンボルである。keycode から keysym へ変換する 2 つの テーブルはサーバ内に格納されている:

修飾キーリスト (Shift, Control, Caps Lock のような) いくつかのキーはモディファイア として知られていて、1 つのキーと組み合わせて色々なシンボルの選択 をする時に用いる(Shift-a は大文字の A 、Control-l は制御文字 ^L のように)。 サーバは色々なモディファイアの組み合わせに対応するキーコードの リストを保持している。キーを押したり離したりする度に、サーバはどのモディ ファイアが正しく押されているか指定するマスクおよび指示するキーのキーコー ドを含む イベント(event) を生成する。 ほとんどのサーバは、キーボード上の色々な Shift, Control, Caps Lock キー が最初からこのリストに含まれるように設定を行う。
キーマップテーブル アプリケーションはキーシンボルテーブルを使って、イベントキーコードとモ ディファイアマスクをキーシンボルに変換する。キーシンボルテーブルは、キー シンボルのそれぞれに対して 1 行、モディファイアの各種状態に対して 1 列を 持っている表である。このテーブルは通常のタイプライタのしきたりと一致す るようにサーバが最初に初期化する。テーブルが解釈されてキーシンボルにな る正確なセマンティクスは 特定のプログラム、ライブラリと言語入力メソッ ドに依存するが、それぞれの行の最初の 4 つのキーシンボルについては 以下のようなしきたりが一般的に受け入れられている:

リストの最初の 4 つの要素は 2 つのキーシンボルのグループに分けられる。 グループ 1 は 1 番目と 2 番目のキーシンボルで、 グループ 2 は 3 番目と 4 番目のキーシンボルである。 それぞれのグループでは、 1 番目の要素がアルファベットで 2 番目の要素が特別なキーシンボル NoSymbol ならば、このグループは 1 番目の要素が小文字で、2 番目 の要素が大文字であるグループと同様に扱われる。

グループの切り替えは MODE SWITCH という名前のキーシンボルで制御する。 この切り替えは、このキーシンボルを何らかのキーに割り当て、そのキーを Mod1 から Mod5 のどれかのモディファイアに割り当てることによって行う。 このモディファイアは「グループモディファイア」と呼ばれる。グループ 1 はグループモディファイアが無いときに使用され、グループ 2 は グループモディファイアがあるときに使用される。

グループ内部では、モディファイアの状態によりどのキーシンボルが使用され ているのかがわかる。 1 番目のキーシンボルは Shift と Lock モディファイアがオンになってない 時に使用する。 2 番目のキーシンボルは Shift モディファイアがオンの時、Lock モディファイア がオンでかつ 2 番目のキーシンボルが大文字のアルファベットである時、ま たは Lock モディファイアキーがオンでかつ ShiftLock として解釈されてい る時に使われる。それ以外の場合は、Lock モディファイアキーがオンでかつ CapsLock として解釈されている時は、Shift モディファイアの状態は最初に キーシンボルを選択するために適用される。しかし、そのキーシンボルが 小文字のアルファベットならば、これに対応する大文字のキーシンボルが 代わりに使用される。  

オプション

ほとんどの X プログラムでは、同じ名前のコマンド行オプションと引き数を 使用できる。X ツールキットイントリンシクスを使って書かれた全ての アプリケーションは自動的に次のオプションを処理できる。
-display display
このオプションは使用する X サーバの名前を指定する。
-geometry geometry
このオプションはアプリケーション起動時のウィンドウのサイズと位置を指定 する。
-bg color, -background color
どちらのオプションもウィンドウの背景色を指定する。
-bd color, -bordercolor color
どちらのオプションもウィンドウの枠の色を指定する。
-bw number, -borderwidth number
どちらのオプションもウィンドウの枠の幅をピクセル数で指定する。
-fg color, -foreground color
どちらのオプションもテキストで使用する色を指定する。
-fn font, -font font
どちらのオプションもテキストを表示するフォントを指定する。
-iconic

このオプションを指定すると、アプリケーションのウィンドウの起動時の状態 が可視状態ではなく、ユーザがウィンドウを即座にアイコン化したような状態 となる。ウィンドウマネージャは、アプリケーションの要求を受け入れないかも しれない。
-name

このオプションはアプリケーションに対するリソースを探す時の名前を指定する。 このオプションは、同じアプリケーションを区別して実行するためにシェルの エイリアスで使うと便利である。そうすればリンクを作って実行可能ファイル 名を変える必要はない。
-rv, -reverse
どちらのオプションも、可能であればプログラムを反転表示をシミュレートす る。この表示は背景色と前景色の入れ替えで実現されることが多い。全ての プログラムでこうなるわけではないし、正しく実装されているとも限らない。 このオプションが便利なのは普通は白黒ディスプレイの場合だけである。
+rv

このオプションを指定すると反転表示のシミュレートを行わない。 このオプションは反転表示が必ず失敗する場合にデフォルト値を上書きするた めに使う。
-selectionTimeout
このオプションは通信する 2 つのアプリケーションがセレクション要求に応 答しなければならないタイムアウト時間をミリ秒単位で指定する。
-synchronous
このオプションは X サーバへのリクエストを非同期ではなく同期的に送るこ とを指定する。 Xlib は通常はサーバへの要求をバッファに蓄積し、エラーが起きても必ずしもすぐに は報告しない。このオプションはアプリケーションのデバッグするときにバッ ファリングを無効にできる。正しく動作しているプログラムに使用してはなら ない。
-title string
このオプションはウィンドウのタイトルを指定する。この情報は時々 ウィンドウマネージャによって使用され、ウィンドウを区別するための見出し の類に使われる。
-xnllanguage language[_territory][.codeset]
このオプションはリソースの解決と他のファイル名に使用する言語、地域と コードセットを指定する。
-xrm resourcestring
このオプションはデフォルト値を上書きするリソース名と値を指定する。 これはコマンド行引き数では明示的に指定できないようなリソースを 設定する際に役立つ。
 

リソース

アプリケーションの仕立てを簡単に個人の好みに合わせられるようにするため、 X はプログラムリソース(背景色、ウィンドウのタイトル等)のデフォルト値を格 納するための機構を持っている。リソースはアプリケーションが実行されたと きに色々な場所から読み込まれる。プログラムコンポーネントは階層的に指定 され、この階層中の各ノードはクラス名とインスタンス名で指定される。 アプリケーションのトップレベルのクラス名とインスタンス名はアプリケーション 自身の名称である。慣習的に、アプリケーションのクラス名はプログラム 名と同じであるが、頭文字は大文字にする(例えば、Bitmap または Emacs)。ただし、``x'' で始まるいくつかのプログラムについては、 歴史的な理由から 2 文字目も大文字にされる。

リソースの正確な文法を示す:


ResourceLine      = Comment | IncludeFile | ResourceSpec | <empty line>
Comment           = "!" {<NULL 文字と改行以外の任意の文字>}
IncludeFile       = "#" WhiteSpace "include" WhiteSpace FileName WhiteSpace
FileName          = <OS で有効なファイル名>
ResourceSpec      = WhiteSpace ResourceName WhiteSpace ":" WhiteSpace Value
ResourceName      = [Binding] {Component Binding} ComponentName
Binding           = "." | "*"
WhiteSpace        = {<空白文字> | <水平タブ文字>}
Component         = "?" | ComponentName
ComponentName     = NameChar {NameChar}
NameChar          = "a"-"z" | "A"-"Z" | "0"-"9" | "_" | "-"
Value             = {<NULL 文字とエスケープされていない改行文字を以外の任意の文字>}

縦棒 (|) で区切られた要素は選択肢である。 中括弧 ({...}) は囲んだ要素の 0 回以上の繰り返しを表す。 大括弧 ([...]) は囲んだ要素が省略可能であることを表す。 引用符 ("...") は文字列を囲むために使われる。

IncludeFile 行は指定したファイルの内容で置き換えるように解釈される。 "include" という語は小文字でなければならない。 ファイル名はその行が現れたファイルがあるディレクトリから相対的に解釈さ れる(例えば、ファイル名がディレクトリも相対ディレクトリの指定も含まな い場合)。

ResourceName は 2 つかそれ以上の結合文字での連続したシーケンスを含む。 このシーケンスが"." 文字だけを含む場合には 1 つの "." 文字で置き換 えられ、そうでない場合には 1 つの "*" 文字で置き換えられる。

リソースデータベースは与えられた ResourceName に対して複数のエントリー を持つことはない。リソースファイルが同じ ResourceName に対して複数の行 を持つ場合は、ファイルに最後に現れた行が使用される。

ResourceSpec 内の名前やコロンの前後の空白文字は無視される。 Value を空白文字で始められるようにするため、2 文字のシーケンス ``\space'' (バックスラッシュに続く空白)が認識されて空白文字 に置き換えられ、2 文字のシーケンス ``\tab'' (バックスラッシュ に続く水平タブ)が認識されて水平タブに置き換えられる。 Value に改行文字を含められるようにするため、2 文字のシーケンス ``\n'' が認識されて改行文字に置き換えられる。 Value がテキストファイル内で複数行で分割して記述できるように、2 文字の シーケンス ``\newline''(バックスラッシュに続く newline)が認識 される。このシーケンス自体は値から削除される。 Value に任意の文字を含められるようにするため、4 文字のシーケンス ``\nnn''が認識され、シーケンスで指定された8進値を持つ1つのバ イト値に置き換えられる。 ここで、それぞれの n は ``0''-``7'' の範囲の値をとる。 最後に、2 文字のシーケンス ``\\'' が認識され、1 つのバックスラッシュ で置き換えられる。

アプリケーションがリソースの値を探すときには、クラス名とインスタンス名 の両方を使って階層構造の完全パスを指定する。 しかし、通常はリソース値には、パターンマッチング構造を用いて部分的にだ け指定された名前とクラスが与えられる。 アスタリスク(*)は緩い結合であり、間に任意の数の要素が入っていること を表す。任意の数には何も入っていないことも含まれる。 ピリオド (.) は強い結合であり、隣接する要素を区切るために使われる。 疑問符(?)は任意の 1 つの要素名またはクラスと一致する。 データベースの項目は緩い結合では終了できず、最後の要素("?" は許されな い)は指定しなければならない。 検索アルゴリズムは、問い合わせられた完全な名前とクラスに対して最も近く (最も指定に近く)マッチするエントリーをリソースデータベースから検索する。 複数のエントリーが完全な名前とクラスにマッチするときには、マッチするも のの中から 1 つだけを選ぶために優先順位の規則が使われる。

完全な名前とクラスは 1 回に1つのコンポーネントが左から右へ(最も高いな 階層から低いの階層へと)走査される。 それぞれのレベルでは、対応する要素かつ/またはマッチするそれぞれのエン トリーの結合が決定され、これらの一致した要素と一致したエントリーが優先 順位規則によって比較される。 ルールが 1 つの項目をほかの項目から選択するまで、次のレベルに移動する 前にそれぞれのルールがそれぞれのレベルで適応される。規則(優先順位)を以 下に示す:

1.
マッチする要素を含むエントリー(名前、クラス、"?"のいずれか)は、 レベルを省略したエントリー(つまり、緩い結合でレベルとマッチするエント リー)より優先順位が高い。
2.
名前がマッチするエントリーは、クラスとマッチするエントリーと "?" を使 用してマッチするエントリーのどちらよりも優先順位が高い。 クラスがマッチするエントリーは "?" を使用してマッチするエントリーより も優先順位が高い。
3.
強い結合が前にあるエントリーは、緩い結合が前にあるエントリーよりも優先 順位が高い。

X ツールキットイントリンシクスに基づくプログラムは、次のソースからリソー スを得る(他のプログラムは通常これらのソースの一部をサポートしている)。

ルートウィンドウの RESOURCE_MANAGER プロパティ 全てのマシン上のクライアントで使用可能なグローバルリソースは、xrdb プログラムを用いて、最初のスクリーンのルートウィンドウ上の RESOURCE_MANAGER プロパティに格納しなければならない。
ルートウィンドウの SCREEN_RESOURCES プロパティ 全てのマシン上のクライアントで使用可能であり、与えられたスクリーンに固有 のリソース(色など)は、そのスクリーンのルートウィンドウ上の SCREEN_RESOURCES プロパティに格納される。 xrdb プログラムはリソースを自動的にソートして、リソースを RESOURCE_MANAGER と SCREEN_RESOURCES の適切な方に置く。
アプリケーション固有のファイル アプリケーション固有のリソースについては、XUSERFILESEARCHPATH 環境変数 または XAPPLRESDIR 環境変数によって指定されたディレクトリ(これは 1 つ のディレクトリを指す。POSIX システムでは最後が '/' でなければならない) と標準の位置にあるディレクトリ(通常は <XRoot>/lib/X11/ 以下にあるが、これは XFILESEARCHPATH 環境変数で上書きできる)が検索される。 例えば、アプリケーションのデフォルトのリソースは <XRoot>/lib/X11/app-defaults/ に置かれる。 詳しくは X ツールキットイントリンシクス - C 言語インタフェース のマニュアルを参照すること。
XENVIRONMENT
全てのユーザ固有とマシン固有なリソースは、全てのアプリケーションが読み 込むべきリソースファイルの名前を XENVIRONMENT 環境変数に設定すること によって指定できる。この環境変数が定義されていないときは、代わりに $HOME/.Xdefaults-hostname という名前のファイルが参照される。 ここで、hostname はアプリケーションが動作しているホスト名である。
-xrm resourcestring
リソースはコマンド行からも指定できる。resourcestring は、1 つのリソース名と先程説明した値である。シェルに解釈される文字(アスタリ スク等)が文字列に含まれる場合にはクォートしなければならない点に注意す ること。任意の数の -xrm 引き数をコマンド行で指定できる。

プログラムのリソースはクラスと呼ばれるグループにまとめられている ので、グループの個々のリソース(それぞれを インスタンス と呼ぶ)を 一度にすべて設定できる。伝統的に、リソースのインスタンス名は小文字で始ま り、クラス名は大文字で始まる。 複数の語からなるリソースは、次の語句の 1 文字目を大文字にして語句を連 結させる。X ツールキットイントリンシクスを使って書かれたプログラムは最 低限、次のリソースを持つ:

background (class Background)
このリソースはウィンドウの背景に使用する色を指定する。

borderWidth (class BorderWidth)
このリソースはウィンドウ枠の幅をピクセル数で指定する。

borderColor (class BorderColor)
このリソースはウィンドウ枠に使用する色を指定する。

X ツールキットイントリンシクスを使って書かれたプログラムは foreground リソース(Foreground クラス)も持つ。これは、 ウィンドウ内のテキストやグラフィックスで使用する色を指定する。

クラスとインタンスの指定を組み合わせることにより、アプリケーションの好み を手早く、簡単に設定できる。カラーディスプレイのユーザは、Background と Foreground クラスに特定のデフォルト値を設定しておくとよいだろう。 その後で、テキストカーソルのような特定の色のインスタンスを、すべての関 係するリソースを定義することなく上書きできる。以下に設定例を示す:

    bitmap*Dashed:  off
    XTerm*cursorColor:  gold
    XTerm*multiScroll:  on
    XTerm*jumpScroll:  on
    XTerm*reverseWrap:  on
    XTerm*curses:  on
    XTerm*Font:  6x10
    XTerm*scrollBar: on
    XTerm*scrollbar*thickness: 5
    XTerm*multiClickTime: 500
    XTerm*charClass:  33:48,37:48,45-47:48,64:48
    XTerm*cutNewline: off
    XTerm*cutToBeginningOfLine: off
    XTerm*titeInhibit:  on
    XTerm*ttyModes:  intr ^c erase ^? kill ^u
    XLoad*Background: gold
    XLoad*Foreground: red
    XLoad*highlight: black
    XLoad*borderWidth: 0
    emacs*Geometry:  80x65-0-0
    emacs*Background:  rgb:5b/76/86
    emacs*Foreground:  white
    emacs*Cursor:  white
    emacs*BorderColor:  white
    emacs*Font:  6x10
    xmag*geometry: -0-0
    xmag*borderColor:  white

これらのリソースがホームディレクトリの .Xresources と呼ばれるファ イルに格納されている場合は、次のコマンドでサーバ内に存在するリソースに 追加できる:

    % xrdb -merge $HOME/.Xresources

これは、取り扱いが簡単な X の起動スクリプトにおいて、ユーザの指定した デフォルト値をサイト全体で使っているデフォルト値とマージするためによく 使われている方法である。どのようなサイトでも、リソースをロードする便利な方法 を用意しておくとよい。詳細な情報については、Xlib のマニュアルの Resource Manager Functions のセクションを参照すること。  

以下は、よく使われるコマンドの一部のコマンド行のサンプルを集めたも のである。それぞれのコマンドに関する詳しい情報については、そのコマンド のオンラインマニュアルを参照すること。

    %  xrdb $HOME/.Xresources
    %  xmodmap -e "keysym BackSpace = Delete"
    %  mkfontdir /usr/local/lib/X11/otherfonts
    %  xset fp+ /usr/local/lib/X11/otherfonts
    %  xmodmap $HOME/.keymap.km
    %  xsetroot -solid 'rgbi:.8/.8/.8' 
    %  xset b 100 400 c 50 s 1800 r on
    %  xset q
    %  twm
    %  xmag
    %  xclock -geometry 48x48-0+0 -bg blue -fg white
    %  xeyes -geometry 48x48-48+0
    %  xbiff -update 20 
    %  xlsfonts '*helvetica*'
    %  xwininfo -root
    %  xdpyinfo -display joesworkstation:0
    %  xhost -joesworkstation
    %  xrefresh
    %  xwd | xwud
    %  bitmap companylogo.bm 32x32
    %  xcalc -bg blue -fg magenta
    %  xterm -geometry 80x66-0-0 -name myxterm $*
    %  xon filesysmachine xload
 

返り値

様々なプログラムが種々のエラーメッセージを生成する。 Xlib 内の標準のエラーハンドラ(ツールキットアプリケーションの多く も使用している)は、標準リソースを使用してエラー発生時の診断メッセージ を作成する。これらのメッセージのデフォルト値は通常は <XRoot>/lib/X11/XErrorDB に格納されている。 このファイルが無い場合には、エラーメッセージは短すぎてわけのわからない ものになるだろう。

X ツールキットイントリンシクスがリソースの文字列を適切な内部書式に変換 するときにエラーが起こると、通常はエラーメッセージは出力されない。様々 なディスプレイ(カラーとモノクロの場合、フォントが多い場合と少ない場合など)で 1 つのリソースの組み合わせを使いたいときには便利であるが、アプリケーション がうまく動作しない理由を調べるときには問題になるだろう。この挙動は StringConversionsWarning リソースを設定することにより上書きでき る。

X ツールキットイントリンシクスが常に文字列変換のエラーを出力するように 強制するには、xrdb プログラムを使って RESOURCE_MANAGER プロパティ の内容をロードするファイル(ユーザのホームディレクトリにある .Xresources.Xres であることが多い)に次のリソースを加え ること:

    *StringConversionWarnings: on

文字列変換のメッセージを特定のアプリケーションだけで出力させるには、 適切なインスタンス名をアスタリスクの前に付ける:

    xterm*StringConversionWarnings: on
 

関連項目

XConsortium(1), XStandards(1), Xsecurity(1), appres(1), bdftopcf(1), bitmap(1), editres(1), fsinfo(1), fslsfonts(1), fstobdf(1), iceauth(1), imake(1), lbxproxy(1), makedepend(1), mkfontdir(1), oclock(1), proxymngr(1), rgb(1), resize(1), rstart(1), smproxy(1), twm(1), x11perf(1), x11perfcomp(1), xauth(1), xclipboard(1), xclock(1), xcmsdb(1), xconsole(1), xdm(1), xdpyinfo(1), xfd(1), xfindproxy(1), xfs(1), xfwp(1), xhost(1), xieperf(1), xinit(1), xkbbell(1), xkbcomp(1), xbkevd(1), xkbprint(1), xkbvleds(1), xkbwatch(1), xkill(1), xlogo(1), xlsatoms(1), xlsclients(1), xlsfonts(1), xmag(1), xmh(1), xmodmap(1), xon(1), xprop(1), xrdb(1), xrefresh(1), xrx(1), xset(1), xsetroot(1), xsm(1), xstdcmap(1), xterm(1), xwd(1), xwininfo(1), xwud(1) Xserver(1), Xdec(1), XmacII(1), Xsun(1), Xnest(1), Xvfb(1), XF86_Acc(1), XF86_Mono(1), XF86_SVGA(1), XF86_VGA16(1), XFree86(1), kbd_mode(1), Xlib - C Language X Interface, and X Toolkit Intrinsics - C Language Interface  

登録商標

X Window System は X Consortium, Inc. の登録商標である。  

著者

非常にたくさんの著者がいる。リリース 6.3 の配布物は X Consortium, Inc. が配布している。ここに挙げるべき全ての人々の名前は 個々のドキュメントやソースファイルの中にある。このリリースに関わった X Consortium に在籍するスタッフは Donna Converse (名誉メンバ), Stephen Gildea (名誉メンバ), Kaleb Keithley, Matt Landau (名誉メンバ), Ralph Mor (名誉メンバ), Janet O'Halloran, Bob Scheifler, Ralph Swick, Dave Wiggins (名誉メンバ), Reed Augliere である。

X ウィンドウシステムの基本部分は、元々マサチューセッツ工科大学 (Massachusetts Institute of Technology)のコンピュータ科学研究所 (Laboratory for Computer Science)が開発し、その全ての権利は X コンソー シアムに 1994/01/01 付けで譲渡された。 X Consortium, Inc. は 1996/12/31 付けで解散した。X ウィンドウシステム に関する全ての権利は Open Software Foundation へ譲渡された。


 

Index

名前
書式
説明
はじめに
ディスプレイ名
アクセス制御
ジオメトリ指定
ウィンドウマネージャ
フォント名
フォントサーバ名
色名称
キーボード
オプション
リソース
返り値
関連項目
登録商標
著者

This document was created by man2html, using the manual pages.
Time: 15:55:25 GMT, February 12, 2001