共通デスクトップ環境に対応する物理メタファは、たくさんの机 (ワークスペース) に囲まれて、椅子に座っているユーザの 1 人のようなものです。ユーザが椅子を (フロントパネルの押しボタンをクリックすることによって) 回転させると、他の机にアクセスできます。各机では次のものを使用できます。
デスクトップ (ウィンドウ) で使用する書類の集まり。(アイコンとして) わきに置いてあるものもありますが、すぐに手の届く範囲にあります。
アポイント・ブック (カレンダ)、アドレス・ブック (アドレス・マネージャ)、メモ帳 (テキスト・エディタ)、メール・ボックス (メール)、プリンタ (印刷マネージャ)、オフィス照明コントロール (デスクトップ・スタイル)、ガイドブック (ヘルプ・マネージャ)、外部へのウィンドウ (リンク) への直接アクセス
ユーザはオブジェクトをドラッグ&ドロップして位置を変更しコピーします。サービスにオブジェクトをドロップすると、アポイント・スケジュール、編集、メール作成、印刷などの補助を受けられます。
デスクトップの状態は保存しておくことができます。後で、あるいは別のコンピュータで、デスクトップの状態を再現できます。セッションは、ユーザのデスクトップの状態の、ある瞬間におけるスナップショットです。共通デスクトップ環境は次のような 2 つのセッションをサポートし、いずれかをユーザが選択できるようにしています。
ホーム・セッション
常に起動時と同じ方法で再組み立てされる、デスクトップの状態のスナップショット
現在のセッション
ログアウト時に保存されるデスクトップの状態
共通デスクトップ環境セッション・マネージャはこれらのアクティビティを調整しますが、アプリケーションの状態の保存についてはアプリケーションが責任を持ちます。
デスクトップは X11R5 で採用されたセッション管理のクライアント間通信規約のスタイルを使用します。これには、トップレベル・ウィンドウの属性を設定するための規約のほとんどが含まれています。デスクトップはこれを拡張し、アプリケーションが状態を格納できる特定のファイルを割り当てる機能を提供します。アプリケーションを再起動するときにコマンド行フラグがこのファイルを指します。複数のトップレベル・ウィンドウを管理するアプリケーションは、それぞれの状態を保存しなければなりません。
セッションは特定のユーザに関連付けられます。共通デスクトップ環境では、ログイン・マネージャがユーザの最初のログインに責任を持ちます。ログイン・マネージャは、UNIX ログイン・プログラムに代わる GUI です。通常は入力されたパスワードがユーザの登録したパスワードかどうかチェックします。ただし、ベンダは各プラットフォームに最適な認証スキーマを提供できます。
ログイン・マネージャはネットワークを認識します。ユーザは、ホスト A がサーバである X ディスプレイに向かい、ホスト B からのセッションを実行することにより、ユーザのディスクトップにログインできます。このセッションにより、ユーザの通常のファイルやホスト B のサービスにアクセスできます。これはデスクトップの X11 ディスプレイ・マネージャ (XDM) としてログイン・マネージャを動作させることにより可能です。XDM コントロール・プロトコル (XDMCP) は、ネットワーク上で X11 ウィンドウ・サーバと XDM との間で使用されます。ログイン・マネージャはログイン・ウィンドウまたはホスト選択ウィンドウを、XDM サービスを要求する任意の X11 サーバに表示します。これにより、XDMCP を認識する X 端末で共通デスクトップ環境が使用できます。
X サーバへ接続するため、デスクトップは X マジック・クッキー・スキーマを使用してアクセスをコントロールします。あるホスト・マシン上でユーザが、セッション所有者のホーム・ディレクトリ内の特定のファイルを読むことができる場合、X サーバへアクセスが許可されます。このユーザごとの利用権の他にホストごとの利用権があります。X マジック・クッキー・スキーマを使用して X サーバへ接続できない X11R4 以前のクライアントをサポートするインストールを行う場合に便利です。
X リソース・ファイルは共通デスクトップ環境のセッションのコンテキストで次のように処理されます。まず、一連の共通デスクトップ環境のデフォルト・リソースはホストのリソース・ファイルとマージされ、次にユーザの $HOME/.Xdefaults ファイルが続き、次にスタイル・マネージャでのユーザ対話により変更されるリソースのセッション固有ファイルが続きます。その結果はルート・ウィンドウの RESOURCE_MANAGER 属性に格納されます。精密なカスタマイズを可能にするために、リソース・ファイル上に C プリプロセッサを実行します。
エンド・ユーザがネットワーク環境を十分に活用できない理由の 1 つに、リモート・アプリケーションへアクセスしづらいという点があります。共通デスクトップ環境は以下の内容に関する規約を提供します。
ユーザがリモートで実行できるアプリケーションのインストール
使用可能なアプリケーションのユーザのナビゲーション
リモート・アプリケーションの実行
ユーザは使用可能なアプリケーションの集まりをアプリケーション・マネージャと呼ばれる GUI ツールでブラウズできます。アプリケーションは簡単にアクセスできるようデスクトップにドラッグできます。リモート・アプリケーションでも、実行アプリケーションのネットワークの位置を隠したまま、単にダブルクリックするだけで起動できます。ユーザはローカル・アプリケーションとリモート・アプリケーションとの違いに気付きません。
このようなネットワークの透過性は、アプリケーション・サーバとして指定したネットワーク・ホスト上にアプリケーションをインストールすると実現されます。デスクトップに関するインストールの一部では、アプリケーションのインストール階層の規定の場所に特定のファイルを置く必要があります。アプリケーション・サーバはそれが提供するアプリケーションのリストを管理します。ネットワークの各ホストは、ユーザがデスクトップにログインしたときに照会するネットワーク上のアプリケーション・サーバのリストを管理します。このプロセスはアプリケーションの収集といいます。これにより、動的に生成されたアクションのファイル階層がフォルダに配置されます (アクションとは、アプリケーションの開始など、エンド・ユーザが起動できるオペレーションのことです)。
共通デスクトップ環境のアプリケーション・マネージャはエンド・ユーザに対してファイル・システムの特殊な表示を提供します。アプリケーションはグループ化され、グループは (ディレクトリ階層のように) 入れ子にできます。アプリケーションのインストール・スクリプトは、アプリケーションをグループと関連づけます。この関連は、アプリケーション・サーバの構成の一部としてシステム管理者が変更できます。アプリケーション・マネージャが表示するアクションのセットと配列は、一般に複数のユーザ間で共有されているシステム・リソースです。ユーザは表示を変更できません。
ユーザはアプリケーション・マネージャからデスクトップ、ファイル・マネージャ、フロントパネルなどへアイコンをドラッグできます。収集されたアプリケーションが有効な間、関連したアクションは有効です。アクションは抽象化された形式および間接形式で示されるため、アプリケーションの実際の位置はいつでも変更できます。この変更はエンド・ユーザに対して透過的です (詳細は 「メソッドの実行」で説明します)。ユーザはアクション・アイコンをダブルクリックして、アクションを起動できます。
共通デスクトップ環境は、完全なオブジェクト指向のインフラストラクチャに依存せずに、オブジェクト指向のシステム属性を取り込んでいます。デスクトップはユーザが選択および移動でき、これを任意の場所でドロップするとセマンティックを作成するグラフィック・オンスクリーン・イメージを提供します。これらはオブジェクトとしてユーザに表示されます。ファイル・マネージャは、ファイル・システム内でファイルおよびディレクトリ・オブジェクトをグラフィカルにブラウズおよび変更する方法を提供し、オブジェクトの考え方を実現しています。また、アクションを呼び出すための GUI を提供します。ユーザがファイルを選択すると、選択したファイルのタイプに定義されたアクションがユーザに示されます。
デスクトップ・ベースのアプリケーションが管理するオブジェクトは、ファイルベースである必要はありません。メモリ・バッファ内でデスクトップ・オブジェクトを示すこともできます。共通デスクトップ環境のメール・プログラムは、スクロール可能なパネルのアイコンでメッセージへのアタッチメントを表示することにより、MIME (Multipurpose Internet Mail Extensions) メッセージを処理します。これらはドラッグ&ドロップなどを行なっている間、ファイルベースのオブジェクトのように動作します。ユーザはファイル・マネージャとメール・プログラムとの間でドラッグできます。ドラッグ&ドロップを使用するアプリケーションは、ファイルベースのオブジェクトとバッファベースのオブジェクトの両方をサポートすることにより、この重要なユーザ・モデルを管理します。デスクトップ・ドラッグ&ドロップ API およびプロトコルがこれを容易にします。
ウィンドウ・マネージャは、基本的には、フロントパネル GUI とワークスペースを提供するよう拡張した Motif 1.2 ウィンドウ・マネージャです。
フロントパネルは、多くのウィンドウ・マネージャがサポートするルート・ウィンドウ・メニューのグラフィック・バージョンと見なすことができます。また、ユーザが共通オブジェクトを使用できるように変更したオブジェクト・マネージャとも見なされます。フロントパネルは動的システム情報を示し、ユーザがアクションおよびシステム機能を起動できるようにします。ユーザはアプリケーション・マネージャおよびファイル・マネージャからサブパネルへアクション・アイコンをドラッグ&ドロップすることにより、フロントパネルを動的にカスタマイズします。アプリケーションは、フロントパネルを拡張する特殊構成ファイルを備え、ドロップの動作やドロップ領域のアニメーションによるフィードバックなどを定義します。これらの構成ファイルはカスタマイズの設定に依存してオプションでインストールできます。図 1-2 に一般的なデスクトップ・フロントパネルを表示します。
ワークスペースとは、仮想デスクトップと見なされるウィンドウ・マネージャがサポートする概念です。アプリケーション・ウィンドウは、1 つ以上、またはすべての使用可能なワークスペースに存在します。通常は、ユーザのカスタマイズの一部としてアプリケーション・ウィンドウがどのワークスペースに存在するかをユーザが決定します。セッションの再起動時にどのワークスペースにアプリケーションが表示されるかを明示的に指定する以外には、ワークスペース API を使用しないでください。一般にアプリケーションを複数のワークスペースに置くとユーザの優先権が無効になるので、置かないでください。
スタイル・マネージャにより、ユーザは GUI を使用してデスクトップをカスタマイズできます。ユーザはほとんどの共通カスタマイズ・オプションについて X リソースなどの高度な概念を気にしないですみます。スタイル・マネージャは、背景の設定、キーボード設定、マウス設定、スクリーンセーバ・オプション、ウィンドウ管理、セッション管理などデスクトップ全体の属性を制御できるようにします。これらの属性は、アプリケーションに直接影響を与えないか、X サーバまたはウィンドウ・マネージャによって間接的に影響を与えます。
アプリケーション開発者は、フォントの選択、カラーの選択、入力デバイス・マッピングによってより直接的に影響を受けます。Motif ツールキットおよび共通デスクトップ環境は、これらの設定のほとんどをウィジェットに対して透過的に処理します。ただし、アプリケーションがユーザのフォントとカラーの設定に対応する場合、アプリケーションはデスクトップに対して、より統合されているように見えます。直接マウスで対話するアプリケーションは、たとえばマウス・ボタンのダブルクリックに同じ最小間隔の値 (multiClickTime リソース) を使用するなど他のアプリケーションと一貫した動作をすれば、デスクトップにより統合されているように感じられます。
プラットフォーム・ベンダのディスプレイと使用可能なフォント・セットとの相違点をなくすため、共通デスクトップ環境は実際のフォント名の二次的な名前であるフォント別名を定義します。デスクトップが使用するように別名を使用してください。
スタイル・マネージャはユーザにカラー選択オプションを提供して、デスクトップのカラー・スキーマを調整できるようにします。このカラー情報は共通デスクトップ環境だけで使用されるものです。ウィジェットをサブクラス化するアプリケーションは、継承されたバックグラウンド・ピクセル値を参照することによって、カラー・スキーマの一部に間接的にアクセスできます。XmGetColors() を呼び出すと、3D シャドウ・カラーが生成されます。
共通デスクトップ環境は、アイコンで使用するような固定のカラーに対してカラーの使用法を指定しません。ただしこの場合、カラーの共有を増進するため、アプリケーションは共通デスクトップ環境アイコン・エディタが提供するカラーを使用してください。