Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ X(1) — NEWS-os 4.1C

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

XConsortium(1)

XStandards(1)

appres(1)

bdftosnf(1)

bitmap(1)

imake(1)

listres(1)

maze(1)

mkfontdir(1)

muncher(1)

oclock(1)

puzzle(1)

resize(1)

showsnf(1)

twm(1)

xauth(1)

xbiff(1)

xcalc(1)

xclipboard(1)

xclock(1)

xdm(1)

xdpyinfo(1)

xedit(1)

xev(1)

xeyes(1)

xfd(1)

xfontsel(1)

xhost(1)

xinit(1)

xkill(1)

xload(1)

xlogo(1)

xlsatoms(1)

xlsclients(1)

xlsfonts(1)

xlswins(1)

xmag(1)

xman(1)

xmh(1)

xmodmap(1)

xpr(1)

xprop(1)

xrdb(1)

xrefresh(1)

xset(1)

xsetroot(1)

xstdcmap(1)

xterm(1)

xwd(1)

xwininfo(1)

xwud(1)

Xserver(1)

Xnews(1)

biff(1)

init(8)

ttys(5)

X(1)  —  NEWS-OS Programmer’s Manual

名称

X − ポータブルなネットワークトランスペアレントウィンドウシステム

形式

X は、様々な計算用および図形用のマシンで動作する MIT で開発された、 ネットワークトランスペアレントなウィンドウシステムです。 MIT からの中心的配給物には、下記のオペレーティングシステム用の クライアントとサーバのサポートの両方があります。

Ultrix 3.1 (Digital)
SunOS 4.0.3 (Sun)
HP-UX 6.5 (Hewlett-Packard)
Domain/OS 10.1 (HP/Apollo)
A/UX 1.1 (Apple)
AIX RT-2.2 and PS/2-1.1 (IBM)
AOS-4.3 (IBM)
UTEK 4.0 (Tektronix)
NEWS-OS 3.2 (Sony; client only)
UNICOS 5.0.1 (Cray; client only)
UNIX(tm) System V, Release 3.2 (AT&T 6386 WGS; client only)

クライアント側のソフトウェアは他の様々なシステム上でも 比較的容易に構築できる筈です。 商業上のインプリメンテーションも各種様々なプラットフォームで可能です。 ソニーは、NEWS ワークステーション上の NEWS-OS Releae 4.0 オペレーティング システム用をサポートします。

X コンソシアムは、本ソフトウェアについて述べる場合は、下記の名称を 使用することを要請します。

X
X Window System
X Version 11
X Window System, Version 11
X11

X Window System は、マサチューセッツ工科大学 (MIT) の商標です。

解説

X ウィンドウシステムのサーバは、ビットマップディスプレイを備えた コンピュータ上で動きます。 サーバは、様々な異なったプロセス間通信チャネルを介して様々な クライアントプログラムに対してユーザ入力を配布し、出力リクエストを 受け付けます。 最も一般的な例は、サーバと同じマシン上で動作するクライアント プログラムですが、クライアントを別のマシン(異なったアーキテクチャと オペレーティングシステムを備えたマシンも含む)から透過的に動かすことも できます。

X は、白黒およびカラーディスプレイの両方の上でオーバーラッピング (重複)階層サブウィンドウおよびテキストとグラフィックスオペレーション をサポートします。 利用できる機能についての完全な 説明に関しては、Xlib − C 言語 X インターフェース マニュアル、 X Window System Protocol 仕様書、 X Toolkit Intrinsics - C 言語 インターフェース マニュアル、 および様々なツールキット 文書を参照してください。

X を使用するプログラム数は、急速に増えつつあります。 その中でも次のものが特に興味をひきます。 端末エミュレータ (xterm)、 ウィンドウマネージャ (twm)、 ディスプレイマネージャ (xdm)、 メール管理ユーティリティ (xmh および xbiff)、 マニュアルページブラウザ (xman)、 ビットマップエディタ (bitmap)、 アクセス制御プログラム (xauth および xhost)、 ユーザ選択の設定プログラム (xrdb、 xset、 xsetroot および xmodmap)、 ロードモニタ (xload)、 クロック (xclock と oclock)、 フォントディスプレーヤ (xfd)、 フォント、ウィンドウ、およびディスプレイに関する情報をリストするための ユーティリティ (xlsfonts、 xfontsel、 xlswins、 xwininfo、 xlsclients、xdpyinfo、および xprop)、 どのようなイベントがいつ発生したかを知るための診断 (xev)、 スクリーンイメージ操作ユーティリティ (xwd、 xwud、 xpr、および xmag)、 および様々なデモ (xeyes、 ico、 muncher、 puzzle、 xgc 等)。

他の多くのユーティリティ、ウィンドウマネージャ、ゲーム、ツールキットなどは、 ユーザ貢献ソフトウェアから利用することができます。 詳細については、最寄りの現場のシステム管理者にお問い合わせください。

起動

X サーバとクライアントアプリケーションの初期セットを起動するには、 現在 2 つの方法があります。 どの方法を使用するか、どのようなオペレーティングシステムで実行するのか、 および X 以外の他のウィンドウシステムを使用するか否かによります。

xdm (X ディスプレイマネージャ)
常に自分のディスプレイ上で X を動作させたい場合は、X ディスプレイ マネージャ xdm を使用できるよう、現場のシステム管理者にマシンを セットしてもらうことができます。 このプログラムは通常、ブート時にシステムによって起動され、サーバを 動作させ続け、ユーザがログインできるようにします。 xdm を実行するとスクリーン上にウィンドウが現れ、あなたを システムへ迎え入れ、ユーザ名とパスワードを尋ねてきます。 通常端末におけるのと同様に、それらを単に入力し、入力ごとにリターンキー を押します。 誤った入力を行うと、xdm はエラーメッセージを表示して、もう一度 入力を行うよう要求してきます。 ログインに成功すると、xdm は X 環境を起動します。 ホームディレクトリ内に .xsession と命名された実行可能なファイルを もっている場合は、デフォルトによって、xdm はそれを実行する プログラム(あるいはシェルスクリプト)として扱い、最初のクライアント (端末エミュレータ、クロック、ウィンドウマネージャ、バック グラウンド、ポインタの速度のような事項に対するユーザ設定等)を 起動します。 詳細は現場のシステム管理者にお問い合わせください。

xinit (シェルから手動で起動される)
複数のウィンドウシステムをサポートしている現場では、X を手動で 起動するのに xinit プログラムの使用を選択することもあります。 あなたのマシンでそれを行う場合は、現場のシステム管理者は、現場固有の 初期設定(便利なデフォルトリソースのロード、ウィンドウマネージャの実行、 クロックの表示、およびいくつかの端末エミュレータの起動等)を優れた 方法で行う "x11"、 "startx" または "xstart" と命名されたプログラムを おそらく提供してくれるでしょう。 提供されない場合は、xinit プログラムを使用してそのような スクリプトを構築することができます。 このユーティリティは、単に 1 つのユーザ指定のプログラムを実行して、 サーバを起動し、別のプログラムを実行して希望するクライアントを起動し、 そして次にどちらかが終了するまで待機します。 ユーザ指定のプログラムのいずれかまたは両方ともがシェルスクリプトで あるため、このことによって、優れたインターフェースには欠けることに なりますが、かなり柔軟性がもたらされます。 このため、xinit はエンドユーザ向けではありません。

ディスプレイ名

ユーザのために、あらゆる X サーバは以下の形式のディスプレイ名を もっています。

hostname:displaynumber.screennumber

この情報は、アプリケーションによって、どのようにサーバに接続を行い、 どのスクリーンをデフォルトで使用すべき(複数のモニターを備えた ディスプレイ上で)かを決定するのに使用されます。

hostname
hostname は、ディスプレイが物理的に接続されるマシン名を指定します。 hostname が指定されなかった場合は、同一のマシン上のサーバと通信を 行うのに最も効率的な方法が使用されます。

displaynumber
用語 "ディスプレイ" は通常、共通キーボードとポインタ(マウス、 タブレット等)を共有するモニターの集合体を指すのに使用されます。 ほとんどのワークステーションは、キーボード1つしかもたず、したがって ディスプレイ 1 つしかもたない場合が多いです。 ただし、より大規模なマルチユーザシステムでは、複数の人間が グラフィックス作業を同時に行えるよう、いくつかのディスプレイを もつことがよくあります。 混乱を避けるため、1 つのマシン上の各ディスプレイには、そのディスプレイ に対する X サーバが起動される際に ディスプレイ番号 (0 から始まる) が割り当てられます。

screennumber
ディスプレイの中には、2 つ以上のモニター間でキーボード 1 つとポインタ 1つを共有するものもあります。 各モニターは、独自の一連のウィンドウをもっているため、各スクリーンには そのディスプレイに対する X サーバが起動される際に、スクリーン番号 (0 から始まる) が割り当てられます。 スクリーン番号が指定されない場合は、スクリーン 0 が使用されます。

POSIX システムでは、デフォルトのディスプレイ名は、DISPLAY 環境変数内に ストアされます。 この変数は、xterm 端末エミュレータによって自動的に設定されます。 ただし、ネットワーク上の別のマシンにログインする場合は、自分の ディスプレイを指すように手動で DISPLAY を設定しなければなりません。 以下に例を示します。

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

最後に、ほとんどの X プログラムは、DISPLAY の内容を一時的にオーバライド するのに、−display displayname のコマンド行オプションを 受け付けます。 これは通常、ウィンドウを別の人のスクリーン上にポップするのに使用した り、xterm が自分のディスプレイをもう一度指すように"リモートシェル"コ マンドの 1部として使用されます。 以下に例を示します。

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

X サーバは、様々な異なった通信チャネル(ネットワークバイトストリーム、 共有メモリ等)上の接続を待機 (listen) しています。 特定のサーバと交信を行うにはいくつかの方法があり、 ディスプレイ名の hostname 部分は、使用すべきチャネルのタイプ (トランスポート層とも呼ばれる)を決定するのに使用されます。 MIT によるサンプルサーバは、下記のタイプの接続をサポートします。

local
ディスプレイ名のホスト部は空でなければなりません。 たとえば、 :0, :1, :0.1 などです。 ローカルで最も効率的なトランスポートが選択されます。

TCP/IP
ディスプレイ名の hostname 部分は、サーバマシンの IP アドレス名で なければなりません。 Internet のフルネーム、省略名、および IP アドレスはすべて許されます。 たとえば、expo.lcs.mit.edu:0、 expo:0、 18.30.0.212:0、 bigmachine:1、および hydra:0.1。

DECnet
ディスプレイ名 hostname 部分は、サーバマシンのノード名とその後に 1 つ ではなく 2 つのコロンが付いたものでなければなりません。 たとえば、myws::0、 big::1、および hydra::0.1。

アクセス制御

サンプルサーバは、次の 2 つのタイプのアクセス制御を提供します。 クライアントがアクセスを要求するのに送信できる “magic cookies” のリストを提供するオーソリゼーションプロトコル、 および接続が常に受け付けられるホストのリスト。 xdm はサーバの magic cookies を初期化し、 それらをユーザがアクセスすることのできるファイル内に入れます。 通常は、接続が常に受け付けられるホストのリストは空です。 そのため、明示的に認証されたクライアントだけがディスプレイに接続できます。 このリストにエントリを追加する場合 (xhost で)は、 サーバはそれ以上それらのマシンからの接続に関する認証を行いません。 このことに注意してください。

xdm と Xlib の両方が使用するオーソリゼーション用ファイルは、 環境変数 XAUTHORITY で指定できます。 デフォルトはホームディレクトリ内の .Xauthority というファイルです。 xdm は$HOME/.Xauthority を用います。 xdm はそれを作成するか、 あるいはユーザがログインしたときにそれが既に存在するとき それをオーソリゼーションレコードにマージします。

オーソリゼーションレコードのコレクションを含んだオーソリゼーション ファイルのコレクションをマネージするには、xauth を使用します。 このプログラムで、レコードを抽出して、それらをファイルに挿入 することができます。 これを使用することにより、ログインを行うときに、オーソリゼーションを リモートマシンに送ることができます。 ファイルはマシンに依存しないため、単にファイルをコピーしたり NFS を 使用してファイルを共有することもできます。 もし幾つかの計算機を使っていて、 なおかつ、ホームディレクトリを NFS で共有しているなら、 実際にオーソリゼーションファイルについて気にする必要はありません。 システムはデフォルトで正しく動作します。 NFS あるいは ftp や rcp を使って “in the clear” に 転送された magic cookies はネットワークを盗み聞きする者に「盗まれ」得ます。 そして認証無しにアクセスされる可能があります。 多くの環境では、このセキュリティレベルは関心事ではありません。 しかしそうでない場合、 これが実際に問題であるかどうかを知るために、 特定の magic cookies の正確な意味を知ることが必要となります。

ジオメトリ指定

ハードワイヤ端末ではなくウィンドウシステムを使用することの利点の 1 つは、 アプリケーションが特定のサイズやスクリーンの位置について 制限されないことです。 ディスプレイ上のウィンドウのレイアウトは、ユーザが動かしている ウィンドウマネージャによって制御されます(下記参照)が、 ほとんどの X プログラムは、このアプリケーションのメインウィンドウに 対する適切なサイズと位置を指定するための形式 −geometry WIDTHxHEIGHT+XOFF+YOFF (ここで WIDTH、 HEIGHT、 XOFF および YOFF は数字である) のコマンド行引数を 受け付けます。

ジオメトリ指定の WIDTH と HEIGHT 部分は通常、アプリ ケーションに応じてピクセルもしくは文字のどちらかで測定されます。 XOFF と YOFF 部分は、ピクセル単位で測定され、スクリーンの 左端または右端からと上端と下端それぞれからのウィンドウの距離を指定 するのに使用されます。 両方のタイプのオフセットは、指示されたスクリーンの端からそれに対応する ウィンドウの端までが測定されます。 X オフセットは、下記の方法で指定することができます。

+XOFF ウィンドウの左端は、スクリーンの左端から XOFF ピクセルだけ 中に入ったところに置かれます(つまり、ウィンドウの原点の X 座標 は XOFF となります)。 XOFF は負数であることもありますが、その場合は、ウィンドウの左端は スクリーンからはみ出します。

−XOFF ウィンドウの右端は、スクリーンの右端から XOFF ピクセルだけ 中に入ったところに置かれます。 XOFF は負数であることもありますが、その場合は、ウィンドウの右端は スクリーンからはみ出します。

Y オフセットも同じような意味をもちます。

+YOFF ウィンドウの上端は、スクリーンの上端から YOFF ピクセル下の ところです(つまり、ウィンドウの原点の Y 座標は YOFF となります)。 YOFF は負数であることもありますが、その場合は、ウィンドウの上端は スクリーンからはみ出します。

−YOFF ウィンドウの下端は、スクリーンの下端から YOFF ピクセル上の ところです。 YOFF は負数であることもありますが、その場合は、ウィンドウの下端は スクリーンからはみ出します。

オフセットはペアで与えなければなりません。 すなわち、XOFF あるいは YOFF のどちらか片方を 指定するには、両方いっしょにでなければなりません。 ウィンドウは、下記の指定を使用すると、スクリーンの 4 つの隅に 置くことができます。

+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 &

ウィンドウマネージャ

スクリーン上のウィンドウのレイアウトは、ウィンドウマネージャと 呼ばれる特別なプログラムによって制御されます。 多くのウィンドウマネージャは与えられたとおりのジオメトリ指定をそのまま 受け付けますが、それ以外のウィンドウマネージャはそれらを無視することも あります(たとえば、ユーザに対して、ポインタでスクリーン上にウィンドウの リージョンを明示的に描くよう求めます)。

ウィンドウマネージャは系統立った(複雑であるにもかかわらず) クライアントプログラムであるため、様々な異なるユーザインターフェースを 構築することができます。 中心的配給物には、オーバーラッピングウィンドウ、ポップアップメニュー、 point-and-click または click-to-type の入力モデル、タイトルバー、 よくできたアイコン (そして、独立したアイコンウィンドウの嫌いな人のためのアイコンマネージャ) 等々をサポートする twm と命名されたウィンドウマネージャが含まれます。

ユーザ貢献の配給物にある gwm, m_swm, olwm, and tekwm などのいくつかのウィンドウマネージャが利用できます。

フォント名

X でテキストとシンボルを表示するための文字のコレクション を フォント と呼びます。 フォントには通常、共通の外観を共有し、全体として見やすい形象が 含まれます(たとえば、単一サイズ、ボールド、斜体、および文字セット等)。 同様に、共通のタイプフェースに基づいたフォントのコレクション(その 種類には、ローマ字、ボールド、イタリック体、ボールドイタリック体、斜線、 およびボールドの斜線と呼ばれるものがあります)は、ファミリー と 呼ばれます。

同じリゾリューション(通常インチあたりのドット数で測定される)のフォント ファミリーのセットはさらに、ディレクトリ (それらは最初ファイル システムディレクトリにストアされているのでこう呼ばれる)にグループ分け されます。 各ディレクトリには、フォント名と、フォントをどのようにして見つける かについての情報をリストしているデータベースが含まれます。 サーバはこれらのデータベースを使用して、フォント名 (ファイル名とは何の関係もない) をフォントデータに翻訳します。

サーバがフォントを捜すときに見るフォントディレクトリのリストは、 フォントパス によって制御されます。 ほとんどのインストレーションでは、一般に使用されているすべての フォントディレクトリでサーバの起動を行うことを選択するでしょうが、 フォントパスは xset プログラムを使用して、いつでも変更することが できます。 ただし、ディレクトリ名はアプリケーションマシン上ではなく サーバ の マシン上にあることを忘れないことが大切です。

サンプルのサーバに対するデフォルトのフォントパスには、以下の 3 つの ディレクトリが含まれます。

/usr/lib/X11/fonts/misc
このディレクトリには、あらゆるシステムで利用できるいろいろなフォントが 含まれています。 これには文字高 5 から 10 ピクセルの固定幅フォントからなるファミリ、 Dale Schumacher 提供の同じような大きさの固定幅フォントからなるファミリ、 ソニー(株)提供のいくつかのかなフォント、漢字フォント、 標準のカーソルフォント、 Digital Equipment Corporation 提供のカーソルフォント二種類、 Sun Microsystems 提供の OPEN LOOK(tm) 用のカーソルフォントとグリフフォント、 などが含まれます。 fixed と variable というエイリアスも含まれます。

/usr/lib/X11/fonts/75dpi
このディレクトリには、Adobe Systems, Inc.、 Digital Equipment Corporation 、 Bitstream, Inc.、 Bigelow and Holmes 、Sun Microsystems, Inc. によって寄贈された 1 インチあたり 75 ドットのディスプレイ用の フォントが含まれます。 個々のファミリごとに、サイズ、スタイル、太さ、の 完全なセレクションが提供されています。

/usr/lib/X11/fonts/100dpi
このディレクトリには、75dpi ディレクトリ内のフォントの中の いくつかの 1 インチあたり 100 ドットのバージョンが含まれます。

フォントデータベースは、フォントのソースまたはコンパイルされた バージョン(圧縮および非圧縮フォーマットの両方で)を含むディレクトリ 内で mkfontdir プログラムを実行することによって作成されます。 フォントがディレクトリに追加されるときは必ず、 mkfontdir を 再実行して、サーバが新しいフォントを見つけることができるように しなければなりません。 サーバがフォントデータベースを再び読取りできるようにする には、xset プログラムを使用してフォントパスをリセットします。 たとえば、私用ディレクトリにフォントを追加するには、下記のコマンドを 使用します。

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

xlsfonts プログラムは、現在のフォントパス内のフォントデータベース で見つかったあらゆるフォントをリストするのに使用することができます。 フォント名は、個々のフォントを一意に識別するのに必要な情報をすべて 含んでいるため、かなり長くなる傾向があります。 ただし、サンプルのサーバは、フォント名のワイルドカードをサポート しているため、下記の完全な指定は、

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

以下のように短縮することができます。

−∗−courier−medium−r−normal−−∗−100−∗−∗−∗−∗−∗−∗

さらに短く(しかしより不正確に)次のようにも表せます。

∗−courier−medium−r−normal−−∗−100−∗

シェルもまた ∗ と ? に対しては特別な意味をもつため、 ワイルドカードされたフォント名は次のとおりに引用符で囲まなければなりません。

        %  xlsfonts −fn ’∗−courier−medium−r−normal−−∗−100−∗’

フォントパス内の特定のディレクトリ内の複数のフォントがワイルドカード されたフォント名と一致する場合は、 どのフォントを返すかはサーバが選択します。 ただし、2 つ以上のディレクトリからのフォントが名前と一致する場合は、 必ずフォントパス内の最初のそのようなディレクトリから フォントを返さなければなりません。 上述の例は、75dpi および 100dpi ディレクトリの両方の フォントに一致します。 フォントパス内で 75dpi ディレクトリが 100dpi ディレクトリ より前にあれば、フォントのより小さい数字の方のバージョンを使用します。

カラー名

ほとんどのアプリケーションは、表示するテキストとグラフィックス内の種々の 要素の色をあつらえる(通常は、リソースまたはコマンド行引数を介して)方法 を提供します。 白黒ディスプレイでは選択の余地はありませんが、カラーディスプレイでは、 16 から 1600 万種類の色をどこへでも使用することができることも よくあります。

色は通常、一般的に使用されている名前(たとえば 赤、 白 あるいは 灰色がかった青)で指定します。 サーバは、通常 /usr/lib/X11/rgb.txt にあるカラーデータベースを 使用して、これらの名前を適切なスクリーンカラーに翻訳します。 カラー名は大文字でも小文字でも関係ありません。 すなわち、red、 Red、およびRED はいずれも同じ色指定を 表します。

多くのアプリケーションもまた、下記の形式の色指定を受け付けます。

#rgb
#rrggbb
#rrrgggbbb
#rrrrggggbbbb

ここで、r、 g、および b は、どのくらいの 量の 赤色、 緑色、および 青色 を表示するか( ゼロはなし(無色)、ffff は全部)を示す 16 進の数字です。 指定内の各フィールドは、同じ桁数(たとえば、#rrgb または #gbb は 許されない)でなければなりません。 4 桁未満(たとえば #rgb)のフィールドは、各桁の後にゼロが埋め込まれます。 (たとえば、#r000g000b000)。 主要な 8 色は、下記のとおりに表されます。

黒#000000000000 (無色)
赤#ffff00000000
緑#0000ffff0000
青#00000000ffff
黄色#ffffffff0000 (赤と緑は全部、青はなし)
赤紫#ffff0000ffff
青緑#0000ffffffff
白#ffffffffffff (赤、緑、および青全部)

残念なことに、同じ入力が与えられた場合でも、異なったモニタでは 異なった陰影が生じるため、RGB カラー指定は汎用的ではありません。 同様に、カラー名も標準の命名法がなく、カラーデータベースも モニターごとに調整する必要があるため、汎用的なものではありません。

アプリケーションの開発者は、それぞれの使用カラーをあつらえることが できるように注意を払わなければなりません。

キー

X のキーボードモデルは、次の 2 つの層に分けられます。 物理的キーを表すサーバ固有のコード(キーコード と呼ぶ)、および キー上に現れる文字または単語を表すサーバに依存しない シンボル(keysyms と呼ぶ)。 キーコードを keysyms に変換するために、サーバ内には 2 つのテーブルが 保持されています。

modifier list (モディファイアリスト)
キーの中には、モディファイア として知られ、1つのキーに付加 されている異なったシンボル(たとえば、Shift-a では大文字の A が生成され、 Ctrl-l ではフォームフィード文字の ^L が生成される)を選択するのに 使用されるものもあります。 サーバは、種々のモディファイアに対応するコードのリストを保持しています。 いつキーを押したり離したりしても、サーバは指示されたキーのキーコードを 含む イベント ならびに、どのモディファイアキーが現在押されるかを 指定するマスクを生成します。 ほとんどのサーバは、最初からキーボード上の種々のシフト、コントロール、 およびシフトロックキーを含むために、このリストをセットアップします。

keymap table(キーマップテーブル)
アプリケーションは keysym テーブル を使用して、 イベントキーコードとモディファイアマスクを keysyms に翻訳します。 keysym テーブル は各キーコードについての一行と、 様々なモディファイアの状態についての一列からなります。 このテーブルは、通常のタイプライターの決まりに対応するようにサーバに よって初期化されますが、クライアントプログラムでしか使用されません。

ほとんどのプログラム (たとえば X ツールキットイントリンシックで書かれたもの)は、 keysyms を直接処理します。 ほとんどのプログラミングライブラリは、keysyms を適切なタイプの文字列 (たとえば、ISO Latin-1)に変換するためのルーチンを備えています。

オプション

ほとんどのプログラムは、コマンド行オプションと引数に対しては同じ名前を 使おうとします。 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
セレクション要求のために通信するふたつのアプリケーションが 相手の応答を待つ場合のタイムアウトをミリ秒で指定します。

−synchronous
このオプションは、X サーバに対するリクエストを、 非同期的にではなく同期的に送信することを示します。 Xlib は通常、サーバに対するリクエストを緩衝記憶するので、 エラーはそれが生じた直後に報告されないこともあります。 このオプションは、アプリケーションをデバックできるよう、 バッファリングを停止します。 これは、決してワーキングプログラムとともに使用してはなりません。

−title string
このオプションは、このウィンドウに対して使用するタイトルを指定します。 この情報を、ウィンドウを識別するなんらかの見出しを提供するために、 ウィンドウマネージャが用いることもあります。

−xnllanguage language[_territory][.codeset]
リソースや、それ以外にファイル名などを解釈する際の 言語、地域、コードセットを指定します。

−xrm resourcestring
このオプションは、任意のデフォルトをオーバライドするためのリソース名と 値を指定します。 これはまた、明示的なコマンド引数をもたないリソースを設定するのに非常に 役に立ちます。

リソース

アプリケーションを各個人の好みにより簡単に合わせることができる ように X は、プログラムリソース(たとえば、バックグラウンド、ウィンドウ タイトルなど)に対するデフォルト値をストアするためにいくつかのメカニズム をサポートします。 リソースは下記の形式の文字列で指定されます。

appname∗subname∗subsubname...: value

これらは、アプリケーションを実行するときに様々な位置から読み込まれます。 取り決めでは、アプリケーション名はプログラム名と同じですが、 最初の文字は大文字にします。(例 Bitmap 、 Emacs) 歴史的理由で、最初の文字が “x” であるようなプログラムでは 二番目の文字も大文字にします。正確なシンタックスは以下のようになります。

ResourceLine  =       Comment | ResourceSpec
Comment       =       "!" string | <empty line>
ResourceSpec  =       WhiteSpace ResourceName WhiteSpace ":" WhiteSpace value
ResourceName  =       [Binding] ComponentName {Binding ComponentName}
Binding       =       "." | "∗"
WhiteSpace    =       {" " | "\t"}
ComponentName =       {"a"−"z" | "A"−"Z" | "0"−"9" | "_" | "-"}
value =       string
string        =       {<any character not including "\n">}

波括弧に囲まれた要素 ({...}) は 囲まれた要素のゼロ回以上の繰り返しを意味することに注意して下さい。

値として任意の 8 進数を含めることを許すために、 4 文字の並び \nnn (n は 0 から 7 までの数字) が認識され、この並びを 8 進数として解釈した 1 バイトに変換されます。 例えば値に NULL バイトを入れたいときには、 "\000" という指定が可能です。

Xlib ルーチンの XGetDefault(3X) および X ツールキットイントリンシック内のユーティリティは、 下記のリソースを獲得します。

RESOURCE_MANAGER ルートウィンドウプロパティ
あらゆるマシン上でクライアントが使用できなければならない グローバルリソースは、xrdb プログラムを使用してルートウィンドウ 上の RESOURCE_MANAGER プロパティ内にストアしなければなりません。 これは、ユーザがディスプレイマネージャまたは xinit を 介して X を起動する場合にしばしば注意しなければならないことです。

アプリケーション固有のファイル
X ツールキットイントリンシックを用いているプログラムは、 アプリケーション固有なリソースファイルを、 環境変数 XUSERFILESEARCHPATH あるいは XAPPLRESDIR で指定された ディレクトリと、 標準のディレクトリ(通常 /usr/lib/X11/ の下、 環境変数 XFILESEARCHPATH の値でオーバーライドされる) の下で探します。 詳細はマニュアル X Toolkit Intrinsics - C Language Interface を 参照して下さい。

XENVIRONMENT
あらゆるユーザおよびマシン固有のリソースは、 すべてのアプリケーションによってロードされる リソースファイル名に XENVIRONMENT 環境変数を設定 することによって指定することができます。 この変数が定義されない場合は、.Xdefaults-hostname (ここで、hostname は、アプリケーションが実行されているホスト名) というファイルが捜されます。

−xrm resourcestring
X ツールキットイントリンシックを使用するアプリケーションは、 コマンドから指定されたリソースをもつことができます。 resourcestring は、上述のとおりの単一のリソース名と値です。 なお、文字列にシェルによって解釈される文字(たとえば、アスタリスク)が 含まれる場合は、それらを引用符で囲まなければなりません。 任意の数の −xrm 引数をコマンド行上に与えることができます。

プログラムリソースは、classes と呼ばれるグループに編成されるので、 個々のリソース(各々が instances と呼ばれる)のコレクションを 1度に設定することができます。 規則により、リソースのインスタンス名は小文字で始まり、 クラス名は大文字で始まります。 複数の語のリソースは、後続するキャピタライズされた語の最初の文字と連結 されます。 X ツールキットイントリンシックで書かれたアプリケーションは、 少なくとも以下のリソースをもちます。

background (クラス Background)
このリソースは、ウィンドウのバックグラウンドの色を指定します。

borderWidth (クラス BorderWidth)
このリソースは、ウィンドウボーダの幅をピクセル単位で指定します。

borderColor (クラス BorderColor)
このリソースは、ウィンドウボーダの色を指定します。

X ツールキットイントリンシックを用いた ほとんどのアプリケーションは、foreground (クラス 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:  #5b7686
        emacs∗Foreground:  white
        emacs∗Cursor:  white
        emacs∗BorderColor:  white
        emacs∗Font:  6x10
        xmag∗geometry: −0−0
        xmag∗borderColor:  white

上記のリソースがホームディレクトリ内の、.Xresources と呼ばれる ファイルにストアされている場合は、以下のコマンドを使ってサーバ内の どの既存サーバにでもそれらを追加することができます。

        %  xrdb −merge $HOME/.Xresources

これは、しばしばユーザフレンドリーな起動スクリプトがユーザ固有の デフォルトをいずれかの現場側のデフォルトにマージする方法です。 あらゆる現場で、自動的にリソースをロードする便利な方法を準備するよう 推奨します。 詳細な情報については、Xlib マニュアルの リソースマネージャ の使用 の項を参照ください。

例

下記は、しばしば使用されるコマンドに対するコマンド行の例を列挙した ものです。 個々のコマンドについての情報に関しては、マニュアル中のそれぞれの コマンドの項を参照してください。

        %  xrdb −load $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 ’#888’
        %  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∗’
        %  xlswins −l
        %  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 $∗

診断

様々なプログラムから、いろいろなエラーメッセージが出されます。 様々なツールキットは、アプリケーションを簡単にあつらえることが できるよう、エラーテキストを見つけるための共通のメカニズムを提供する よう推奨されています。 Xlib C 言語ライブラリに直接インターフェースするよう書かれたプログラムは、 自身のエラーチェックを行うものと想定されています。

Xlib のデフォルトエラーハンドラ(他の多くのツールキットによっても 使用される)は、標準リソースを使用して誤りが生じた場合に診断メッセージ を作成します。 それらのメッセージに対するデフォルトは 通常、/usr/lib/X11/XErrorDB にストアされます。 このファイルが存在しない場合は、エラーメッセージはやや簡潔で暗号化 されたようなものとなります。

X ツールキットイントリンシックが、 リソース文字列を適切な内部フォーマットに変換する際の エラーに出会った場合は、エラーメッセージは通常表示されません。 これは、一連のリソースを様々なディスプレイ(たとえば、カラー対白黒、 多数のフォント対小数のフォント等)全体を通じてもつのが望ましいときに便利です。 ただし、あるアプリケーションがなぜ失敗するのかを判断しようとする場合に 問題を生じることもあります。 StringConversionsWarning リソースを設定することによって、 この動作をオーバライドすることができます。

X ツールキットイントリンシックに 常に文字列変換エラーメッセージを表示させるために、 xrdb プログラム(ユーザのホームディレクトリ内 の .Xresources あるいは .Xres と呼ばれることが多い)を使用して、 RESOURCE_MANAGER プロパティにロードされるファイルの上部に 下記のリソースを置かなければなりません。

        ∗StringConversionWarnings: on

ある特定のアプリケーションに対してだけ変換メッセージを表示するには、 適切なインスタンス名をアスタリスクの前に置きます。

        xterm∗StringConversionWarnings: on

バグ

もし再現可能な バグを見つけた場合は、X バグ報告書を送る方法 について現場システム管理者に問い合わせてください。

関連事項

XConsortium(1), XStandards(1), appres(1), bdftosnf(1), bitmap(1), imake(1), listres(1), maze(1), mkfontdir(1), muncher(1), oclock(1), puzzle(1), resize(1), showsnf(1), twm(1), xauth(1), xbiff(1), xcalc(1), xclipboard(1), xclock(1), xdm(1), xdpyinfo(1), xedit(1), xev(1), xeyes(1), xfd(1), xfontsel(1), xhost(1), xinit(1), xkill(1), xload(1), xlogo(1), xlsatoms(1), xlsclients(1), xlsfonts(1), xlswins(1), xmag(1), xman(1), xmh(1), xmodmap(1), xpr(1), xprop(1), xrdb(1), xrefresh(1), xset(1), xsetroot(1), xstdcmap(1), xterm(1), xwd(1), xwininfo(1), xwud(1), Xserver(1), Xnews(1), biff(1), init(8), ttys(5), Xlib − C 言語 X インターフェース、 X ツールキットイントリンシックス − C 言語 X インターフェース、 および X リソースの使用と指定

著作権

下記の著作権と許可通告は、MIT による X ウィンドウシステムの標準配給物の 大部分にあてはまる権利と制限を概略したものです。 その他の部分は、追加のまたは異なる著作権と許可をもっています。 個々のソースファイルを参照のこと。 Copyright 1984, 1985, 1986, 1987, 1988, and 1989, by the Massachusetts Institute of Technology. 本ソフトウェアとその資料を何らかの目的で無料で使用、複写、 修正、配布、販売することは、上記の著作権通告がすべてのコピーに記載され、 その著作権通告と本許可通告がサポート資料に記載され、 また、特別な書面による事前の許可なくしてソフトウェアの販売に 関係する広告や宣伝に MIT の名称を使用しないことを 前提として許可するものとする。 MIT は、あらゆる目的に対する本ソフトウェアの適合性に関しては 何の表示も行わない。 本ソフトウェアは、明示的にも暗示的にもいかなる保証も行わず、 "そのまま" で供給される。 本ソフトウェアは、AT&T もしくはカリフォルニア大学の評議員から 何のライセンスも受けていない。

商標

UNIX は AT&T のベル研究所が開発し、AT&T がライセンスしている OS です。 OPEN LOOK は AT&T の商標です。 X Window System は MIT の商標です。

著者

非常に多くの人々。 X の配布は MIT X Consortium によって行われました。 このリリースに関する MIT の責任者は以下の人々です。 Donna Converse (MIT X Consortium), Jim Fulton (MIT X Consortium), Michelle Leger (MIT X Consortium), Keith Packard (MIT X Consortium), Chris Peterson (MIT X Consortium), Bob Scheifler (MIT X Consortium), and Ralph Swick (Digital/MIT Project Athena). 

NEWS-OSRelease 4.1C

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026