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