Solaris X Window System 開発ガイド

第 1 章 Solaris X サーバーの概要

この章では、Solaris X サーバーの概要を説明します。Solaris X サーバーにより、Solaris 製品で X Window System のクライアント/サーバーモデルが実現されます。この章では、次の内容について説明します。

Solaris X サーバーの概要

Solaris X サーバー、XSun は、Display PostScript (DPS) イメージシステム拡張機能を持つ X コンソーシアムの X11R6 サンプルサーバー、X コンソーシアムのその他の X 拡張機能、および Sun が独自に追加した機能からなっています。Solaris X サーバーは、共通デスクトップ環境 (CDE) の基礎となるもので、CDE デスクトップの下に位置付けられます。このサーバーは、クライアントアプリケーション、表示ハードウェア、入力デバイス間の通信を処理します。デフォルトでは、Solaris X サーバーでは CDE dtlogin およびウィンドウマネージャ (dtwm) が実行されますが、ICCCM (クライアント間通信規約マニュアル) 準拠の X Window System マネージャであれば、どんなものでもこのサーバーで実行できます。ソフトウェア開発者は、Xlib ライブラリだけでなく、Motif ツールキットや Xt ツールキットなど、さまざまなツールキットを使用して、Solaris 環境用のアプリケーションを作成できます。

図 1-1 は、Solaris X サーバー、複数のデスクトップクライアントアプリケーション、ディスプレイ、入力デバイス間の関係を示します。

図 1-1 Solaris X サーバー

Graphic

X11R6 サンプルサーバー

X コンソーシアム の X11R6 サンプルサーバーは、Solaris X サーバーの重要な構成要素です。X11R6 サンプルサーバーは、移植性を持つように設計され実装されたので、クライアントアプリケーションではハードウェアの違いを意識する必要がありません。このサンプルサーバーはすべての描画を処理し、デバイスドライバとのインタフェースにより入力を受け取り、見えない画面領域のメモリ、フォント、カーソル、カラーマップを管理します。

サンプルサーバーには、次の各部、つまりが含まれています。

図 1-2 は、サーバーの構造を示します。このマニュアルでは、サーバーは Solaris X サーバーを意味し、サンプルサーバーは X コンソーシアムの X11R6 サンプルサーバーを意味するので注意してください。

図 1-2 Solaris X サーバーのアーキテクチャ

Graphic

DPS 拡張機能

Solaris X サーバーには、X11R6 サンプルサーバーの他に、Display PostScript システムが組み込まれています。DPS は、PostScript イメージングモデルと Adobe Type Library へのアクセスを X アプリケーションに提供します。Display PostScript システムは、クライアント/サーバーネットワークアーキテクチャの一部として、X Window System の拡張機能により組み込まれています。この拡張機能は、DPS/X [この節は、Adobe Systems Incorporated の『Programming the Display PostScript System with X』(Addison-Wesley Publishing Company, Inc.、1993 年刊) の第 2 章をもとに記述してあり、著作権所有者の承諾を得て使用しています。] と呼ばれることがあります。

DPS システムには、X サーバーの拡張機能として PostScript インタプリタが実装されており、各アプリケーションがクライアントとなります。アプリケーションは、1 つのオペレータを呼び出すことにより PostScript 言語コードをサーバーに送信するので、サーバーからはデータを出力引数形式で返すことができます。DPS のクライアント/サーバー通信は、X Window System が提供する低水準通信プロトコルを使用して透過的に実行されます。DPS システムについての詳細は、第 2 章「DPS の機能と拡張」を参照してください。

X コンソーシアム拡張機能

Solaris X サーバーでは、X コンソーシアムによって定義された X 拡張機能がサポートされます。これらの拡張機能については、次の各節で簡単に説明します。各節には、拡張機能ごとの仕様名の他に、(ftp.x.org マシン上の) 関連ファイル名を括弧で囲んで掲載してあります。標準 X 拡張機能のメカニズムについての詳細は、『The X Window System Server』と『Xlib Programming Manual』を参照してください。

以降の各節で説明する X コンソーシアムの X11 規格は、World Wide Web 上のシステムで簡単に参照できます。URL は http://www.rdg.opengroup.org です。X11 マニュアルは、ftp.x.org マシン上の /pub/R6untarred/mit/doc/extensions ディレクトリに入っています。ファイル転送プロトコル (ftp) を使用して、このシステムからファイルをダウンロードしてください。ftp の使用方法に関するヘルプが必要な場合は、ftp(1) のマニュアルページを参照してください。自分のシステムがインターネットに接続されているかどうかは、システム管理者に問い合わせてください。

XInput 拡張機能

XInput 拡張機能は、MIT の X コンソーシアム標準「X11 入力拡張機能プロトコル仕様」(/pub/X11/R6.1/xc/doc/specs/Xi/protocol.ms) を Sun が実現したものです。この拡張機能によって、代替入力デバイス (キーボードおよび ポインタ以外のデバイス) に対するアクセスを制御することが可能になり、クライアントプログラムは相互に独立して、またコアデバイスに依存することなく、各デバイスからの入力を選択することができます。

ダブルバッファ拡張機能

ダブルバッファ拡張機能 (DBE) は、X コンソーシアムの規格を Sun が実現したものです。ダブルバッファリングは、アプリケーションが完全にレンダリングされたフレームだけを表示できるようにすることで、ちらつきがないアニメーション機能を提供します。フレームは非表示バッファにレンダリングされた後、表示バッファに移動されます。

SHAPE 拡張機能

SHAPE 拡張機能は、X コンソーシアム標準「X11 非矩形ウィンドウ形状拡張機能」(shape.ms) を Sun が完全に実現したものです。この拡張機能により、X プロトコルの範囲内で任意のウィンドウおよび境界線の形状を作成することができます。

共有メモリ拡張機能

MIT-SHM (共有メモリ) 拡張機能は、X コンソーシアムの実験的な「MIT 共有メモリ拡張機能」(mit-shm.ms) を Sun が完全に実現したものです。この拡張機能により、クライアントは、実際の画像データを共有メモリに格納するという方法でメモリの XImages およびピックスマップを共有できます。メモリの共有によって Xlib プロセス間通信チャネルを介したデータ転送が不要になるため、大きな画像の場合はシステムパフォーマンスが向上します。ただし、この拡張機能が有用とされるのは、クライアントアプリケーションがサーバーと同じマシン上で実行される場合だけです。

XTEST 拡張機能

XTEST 拡張機能は、MIT の X コンソーシアムの標準案「X11 入力統合拡張機能案」(xtest1.mm) を Sun が完全に実現したものです。この拡張機能により、ユーザーがいなくても、クライアントでユーザー入力を生成したり、ユーザー入力動作を制御したりできます。この拡張機能を使用するには、サーバーの DDX 層を変更する必要があります。

その他の拡張

MIT-SUNDRY-NONSTANDARD 拡張機能は MIT で開発されたため、ftp.x.org のマシン上での標準ではありません。この拡張機能は、X11R3 以前のクライアントが出すさまざまな間違ったプロトコル要求を処理します。特定の誤った要求が処理されるようにバグ互換モードを有効にするか、誤った要求についてはエラーを返すようにバグ互換モードを無効にする要求を出します。また、この拡張機能は、現在のモードの状態を取得する要求も出します。

この拡張機能は、xset で動的に有効、無効を切り替えることも、openwin でサーバー起動時に指定することもできます。詳細は、xset(1) と openwin(1) のマニュアルページ (特に -bc オプション) を参照してください。

XC-MISC

この X コンソーシアムの標準拡張機能により、アプリケーションは XID を再利用できます。アプリケーションによっては、XID の作成と破棄がただちに行われるため、決められた XID の範囲を超える場合があります。ほとんどのアプリケーションではこの拡張機能は必要ありません。この仕様は、/pub/X11/xc/doc/specs/Xect/xc-misc.ms にあります。

X イメージング拡張機能

X イメージング拡張機能 (X Imaging Extension、XIE) は、X コンソーシアム標準を Sun が実装したものです。

AccessX

また、Solaris X サーバーでは、American Disabilities Act (ADA) 準拠のキーボード機能もサポートされます。これらの機能は、AccessX というサーバー拡張機能を通じて利用できます。AccessX 拡張機能は、スティッキーキー、スローキー、トグルキー、マウスキー、バウンスキー、リポートキーなどの機能を提供します。クライアントプログラム accessx を使用して、これらの機能の有効と無効を切り替えてください。accessx クライアントは、トグルキー、バウンスキー、リピートキーとその設定を制御します。スティッキーキー、スローキー、マウスキーは、Shift などのキーを使用して有効にすることができます。AccessX の使用方法についての詳細は、『Solaris ユーザーズガイド』を参照してください。

accessx を実行する前に、/usr/openwin/lib/app-defaults/accessx.uid に UIDPATH 環境変数を設定してください。

accessx クライアントは、SUNWxwacx パッケージの一部です。このクライアントをインストールするには、All Cluster をインストールする必要があります。

共有メモリのトランスポート

Solaris X サーバーには、Sun の拡張機能 SUN_SME が組み込まれています。これは、Sun が共有メモリトランスポートメカニズムを実装したものです。この拡張機能により、共有メモリ経由でクライアント要求をサーバーに送信できます。共有メモリは、クライアント要求専用です。サーバーからの応答とイベントは、デフォルトのトランスポートメカニズム経由で送信されます。このトランスポートメカニズムを有効にするには、DISPLAY 環境変数を :x.y に設定します。この場合、x はディスプレイ番号で、y は画面番号です。また、環境変数 XSUNTRANSPORTshmem に設定してください。環境変数 XSUNSMESIZE を希望の K バイト数に設定すれば、セグメントのサイズを設定できます。デフォルトでは、XSUNSMESIZE は 64 に設定されます。

ビジュアルオーバーレイウィンドウ

Solaris X サーバーには、透明オーバーレイウィンドウを有効にするアプリケーションプログラマ用インタフェース (API) も組み込まれています。オーバーレイとは、グラフィックスを描画できるピクセルバッファ (物理的に、またはソフトウェアによりシミュレート) です。アプリケーションでは、オーバーレイを使用してディスプレイウィンドウに一時イメージを表示できます。オーバーレイ API についての詳細は、第 5 章「サーバーオーバーレイウィンドウ」および第 6 章「透明オーバーレイウィンドウ」を参照してください。

X11 ライブラリ

表 1-1 に X ライブラリを示します。これらライブラリの構成要素である .so.a ファイルは、 /usr/openwin/lib にあります。

表 1-1 X11 ライブラリ
 ライブラリ  説明 X コンソーシアムからの入手 Sun での改良点

libX11

Xlib 

可 

マルチスレッド対応 

ロケールの動的ロード 

/usr/openwin を含むサーチパス

新しいキーシム 

libXau

X 認証ライブラリ 

可 

なし 

libXaw

アテナ widget セットライブラリ 

可 

なし 

libXext

X 拡張ライブラリ 

可 

バグの修正、透明オーバーレイ 

libXinput

以前の入力拡張機能とのバイナリ互換ライブラリ 

不可 

Sun ライブラリ 

libXi

Xinput 拡張ライブラリ 

可 

バグの修正 

OpenWindows X 拡張機能のサポート 

libXmu

X 各種ユーティリティライブラリ 

可 

/usr/openwin を含むサーチパス

libXol

OLIT ライブラリ  

不可 

Sun の製品 - OLIT に関するマニュアルは「はじめに」を参照 (USL からは可) 

libXt

Xt Intrinsics ライブラリ 

可 

なし 

libxview

XView ライブラリ 

可 

X コンソーシアムに寄贈した Sun の製品 

X11R6 の libxview に入っていないバグの修正を実施

64 ビットの X11 ライブラリ

/usr/openwin/lib/sparcv9 には 64 ビット Solaris のインストール用に、以下のような 64 ビットバージョンの共有ライブラリがあります。

libX11.so.4

libXext.so.0

libICE.so.6

libSM.so.6

libXt.so.4

libXaw.so.5

libXmu.so.4

libXtst.so.1

libXi.so.5

libXinput.so.0

libdps.so.5

libdga.so.1

libowconfig.so.0

さらに、/usr/openwin/lib/sparcv9 には以下のようなプログラマ用の 64 ビットバージョンの lint ライブラリがあります。

llib-lX11.ln

llib-lXaw.ln

llib-lXext.ln

llib-lXmu.ln

llib-lXt.ln

Solaris X サーバーで実行されるアプリケーション

Solaris X サーバーでは、次のアプリケーションを実行できます。

サポートされている X11 アプリケーション

Solaris X 環境には、X コンソーシアムから入手できる次のようなクライアントアプリケーションがあります。

サポートされていないアプリケーション

次のアプリケーションおよびライブラリは、すべて X コンソーシアムから提供されているものであり、サーバー上で動作しますが、 Sun 社からは提供もサポートもされていません

OpenWindows のディレクトリ構造

図 1-3 は、OpenWindows のディレクトリ構造を示します。これには、Solaris X サーバーの実行可能ファイルと X11 コアディストリビューションライブラリが含まれています。/openwin/etc/openwin/share/etc へのシンボリックリンクで、/openwin/include/openwin/share/include へのリンクで、/openwin/man/openwin/share/man へのリンクなので注意してください。/share ディレクトリには、アーキテクチャに依存しないファイルが入っています。

/openwin/lib 内の X11 ライブラリについての詳細は、「X11 ライブラリ」を参照してください。

図 1-3 OpenWindows のディレクトリ構造

Graphic

表 1-2 では、OpenWindows ディレクトリ構造の最上位ディレクトリの内容を簡単に説明します。

表 1-2 OpenWindows のディレクトリ
 ディレクトリ サブディレクトリ 内容

/etc

/keytables

米国と各国対応のキーテーブル、keytable.map

 

/tt

ToolTalk® のデータファイル

 

/workspace

/patterns (.xbm ファイルと属性)

/include

/X11

X11 ヘッダファイル、/DPS/Xaw/Xmu/bitmaps/extensions

 

/Xau

/include/X11 へのシンボリックリンク

 

/Xol

OLIT ヘッダファイル 

 

/config

generic.h ヘッダファイル 

 

/desktop

分類機構ヘッダファイル 

 

/dga

dga.h ヘッダファイル 

 

/help

libhelp ヘッダファイル

 

/images

各種ビットマップファイル 

 

/olgx

olgx ヘッダファイル

 

/pixrect

Pixrect ヘッダファイル 

 

/portable

ヘッダファイル c_varieties.hportable.h

 

/xview

XView ヘッダファイル 

/lib

/X11

サーバーサポートファイル、/fonts、DPS .upr ファイル

 

/Xol

OLIT データファイル 

 

/app-defaults

X アプリケーションのデフォルトファイル 

 

/cetables

分類機構テーブル 

 

/config

imake ファイル

 

/help

/locale/C/help へのシンボリックリンク

 

/libp

プロファイルライブラリ 

 

/locale

ロケールライブラリ (/C/iso_8859_1)

 

/xdm

Xdm 構成ファイル

 

/sparcv9

64 ビットの X ライブラリ 

/man

/man1, /man1m

OpenWindows コマンドのマニュアルページ 

 

/man3

XView、OLIT、Xt、Xlib などのライブラリのマニュアルページ 

 

/man4

AnswerBook のマニュアルページ 

 

/man5

ファイル形式のマニュアルページ 

 

/man6

デモのマニュアルページ 

 

/man7

コマンド以外のマニュアルページ 

/server

内部使用のためのサーバー専用ファイル 

/share

/etc

/etc 内でのファイルの位置

 

/images

/PostScript/fish/raster

 

/include

/include 内のファイルの位置

 

/locale

/lib/locale 内のファイルの位置

 

/man

/man 内のファイルの位置

 

/src

/dig_samples/extensions/fonts/olit/tooltalk/xview

 

/xnews

/client

X11 プログラミングに関する注意

X11 プログラミングに関する一般的な問題について以下に説明します。

Compose キーのサポート

Xlib の OpenWindows のバージョンは、XLookupString の呼び出しによる Compose キー処理をサポートしています。


IA のみ -

IA キーボード上では、Ctrl-Shift-F1 キーを使用して Compose キーの機能を実行できます。


NumLock キーのサポート

Xlib の OpenWindows バージョンは、XLookupString の呼び出しによる NumLock キー処理をサポートしています。この変更は、XView、OLIT、Motif、X アプリケーション内の NumLock 処理には影響しません。


IA のみ -

IA キーボードの場合、NumLock キーはキーボードのキーパット部分の最上部にあります。


カラー名データベース

ASCII カラー名と RGB カラー値との対応関係がカラー名データベースによって与えられます。このデータベースは、カラー表示プログラムの移植性を向上させ、プログラミング作業を容易にする効果があります。ただし、この対応関係は主観的に決定したもので、科学的な客観性に基づいたものではないということに注意してください。

このデータベースのソースは /usr/openwin/lib/X11/rgb.txt です。このファイルは、X コンソーシアムの X11R6 で提供されるファイルと同じものです。rgb.txt をコンパイルすることによって、dbm(3) データベースファイル rgb.dir および rgb.pag が作成されます。サーバーは、最初にスタートアップされた時点で、それらのファイルの内部表現を生成します。この内部表現を参照することによって、カラー名からカラー値へのマッピングが実行されます。

X11 クライアントは、カラー名からカラー値へのマッピングに XLookupColor または XAllocNamedColor を使用します。これらのルーチンに渡されるカラー名文字列は、それがデータベース中で検索される前に、小文字に変換されます。

カラーに関する推奨事項

Solaris X サーバーのカラーサポート機能を使用するプログラマは以下の点について考慮する必要があります。プログラムの移植性および色の共有を最大限可能にするためのヒントを以下に示します。

関連マニュアル

X と X Window System のさまざまな側面に関して多数の書籍が発行されています。X Window System についての詳細は、「関連マニュアル」の推奨マニュアルを参照してください。これらのマニュアルは、SunExpress または最寄りの書店で入手できます。Solaris X サーバーと X コンソーシアムサンプルサーバーについての詳細は、次のマニュアルページを参照してください。