# GNOME デスクトップシステム管理ガイド

## GConf の使い方

この章では GConf を使ってユーザの設定情報を管理する方法について説明します。

### GConf について

GConf は GNOME デスクトップを利用するユーザの設定情報を管理する煩わしさから解放してくれます。この GConf を利用することでシステム管理者は次に示すようなことを実現できます:

- すべてのユーザに対し、特定の設定項目に変更不可の値を強制できる (このようにしてユーザが特定の設定を更新できるか否かをシステム管理者側から制御できるようになっている)

- すべてのユーザに対し、特定の設定項目にデフォルト値 (既定値) を指定できる

- 設定ファイルの中で指定されている設定項目に対して推奨値を使用できる

- 設定項目毎の説明を読むことができる

さらに GConf は、設定項目の値が変更されたらその旨を (ローカルまたはネットワーク越しの) アプリケーションに通知できます。このようにして設定項目の値を変更すると、その設定を利用するすべてのアプリケーションに対して変更内容が即座に適用されます。

GConf は次に示すようなコンポーネントから構成されています:

- ユーザ設定を格納するリポジトリ

- `gconfd-2` というデーモン (常駐型プログラム)

- `gconftool-2` というコマンドライン・ツール

### GConf のリポジトリ

GConf リポジトリの中に格納されている設定情報はキーとそれに対応付けられた値のペアとしてそれぞれ表現されます。GConf の設定キーはリポジトリを構成する要素の１つであり、アプリケーションが持つ任意の設定の１つに相当します。例えば `/apps/gnome-session/options/show_splash_screen` という設定キーは、セッションという設定ツールのログイン時にスプラッシュスクリーンを表示するというオプションに相当します。但し、GConf のリポジトリに格納されているすべての設定キーが GNOME デスクトップのユーザ・インタフェースに含まれているというわけではありません。例えばパネルという設定ツールには `/apps/panel/global/tooltips_enabled` というキーに対応したオプションはありません。

このリポジトリの実体は単にディレクトリ階層を持つファイルシステムです。リポジトリには次に示す情報が格納されています:

- GConf のリポジトリを利用しているアプリケーションに相当するディレクトリ (例えば、metacity というウィンドウ・マネージャ向けに `/apps/metacity` というディレクトリが存在する)

- 設定項目のカテゴリに相当するサブディレクトリ (例えば、一般的な設定項目に対応する `/apps/metacity/general` というディレクトリが存在する)

- サブディレクトリ毎に、設定キーの並びと設定キーに関する情報を格納した特別なファイル (例えば、`/system/http_proxy` というディレクトリには HTTP プロキシの設定に関連する設定キーについての情報を格納したファイルが１つ存在する)

- 設定キーのすべてを説明したファイルを格納する `/schemas` というディレクトリ

設定キーは基本的に文字列とか整数値、あるいは複数の文字列や整数値を要素とするリストのような値を持ちます。リポジトリの中に格納される設定キーの書式は、そのリポジトリを読み込む際に使用するバックエンド・モジュールに依存します。次は、バックエンド・モジュールとして拡張マークアップ言語の XML (Extensible Markup Language) を使用した際の `/desktop/gnome/interface/font_name` という設定キーの書式の例です:

    <entry name="font_name" mtime="1038323555" muser="user123" type="string">
    <stringvalue>Sans 10</stringvalue></entry>

本ドキュメントで任意の設定キーを参照する際の表記は、キーの名前にそのパス名を追加するものとします。例えば、`/desktop/gnome/interface` というサブディレクトリの中に格納された `font_name` という設定キーは `/desktop/gnome/interface/font_name` と表記します。

#### GConf の設定ソース

GConf のリポジトリには「設定ソース」と呼ばれる設定情報を格納する場所が含まれます。いろいろな設定ソースが GConf のパス・ファイルの中に記述されています。GConf のパス・ファイルは `/etc/gconf/`GConf のメジャー・バージョン`/path` です。ユーザはそれぞれ１個のパス・ファイルを所有します。パス・ファイルはいろいろな設定ソースに対して次のような情報を指定します:

- リポジトリの内容を読む際に使用するバックエンド・モジュール

- リポジトリを読み書きする権限

- リポジトリ自身の場所

さらに GConf のパス・ファイルには `include` 命令を含めることが可能になっています。GConf のパス・ファイルのデフォルトは次のような情報が格納されています:

    xml:readonly:/etc/gconf/gconf.xml.mandatory
    include /etc/gconf/2/local-mandatory.path
    include "$(HOME)/.gconf.path"
    include /etc/gconf/2/local-defaults.path
    xml:readwrite:$(HOME)/.gconf
    xml:readonly:/etc/gconf/gconf.xml.defaults

GConf が設定値を検索する際、GConf はパス・ファイルで指定した順番で設定ソースを読み込みます。次の表にパス・ファイルの中にある設定ソースの詳細を示します:

設定ソース | 説明
変更不可の設定 | この設定ソースは読み込み専用の権限になっている (ユーザはこのソースの中にある値を上書きすることはできないので、設定ソースの中にある設定項目は強制的に適用される)
ユーザ向けの設定 | この設定ソースはユーザのホームにある `.gconf` というフォルダに格納される (ユーザが何か設定項目を指定すると、新しい設定情報がこの場所に追加される) 設定エディタを使ってユーザの設定ソースを変更できる
デフォルト | この設定ソースにはデフォルトで適用される設定情報が含まれている

パス・ファイルに記述されている設定ソースは変更不可の設定項目がユーザ向けの設定項目を上書きするような並びになっており、さらにユーザ向けの設定項目がデフォルトの設定項目を上書きするような並びになっています。すなわち、GConf は次に示すような優先順位で設定項目を適用することになります:

1. 変更不可の設定

2. ユーザが指定した設定

3. デフォルトの設定

システム管理者ならば、GConf のパス・ファイルの中で `include` 命令を使って他の設定ソースを指定できます。

include した設定ソース | 説明
`/etc/gconf/2/local-mandatory.path` | 特定のシステムに対して変更不可の設定項目を格納する際は、この設定ソースを利用する
`$(HOME)/.gconf.path` | ホーム・フォルダ配下にある `.gconf.path` というファイルの中に設定ソースの場所を指定する
`/etc/gconf/2/local-defaults.path` | 特定のシステムに対するデフォルトの設定項目を格納する際は、この設定ソースを利用する

#### GConf スキーマ

GConf スキーマは１個の GConf スキーマ・キーと１個の GConf スキーマ・オブジェクトのペアに対する総称です。次の表にスキーマ・キーとスキーマ・オブジェクト並びに特定のキーに対してこれらのアイテムとの関係について示します:

アイテム | 説明
設定キー | アプリケーションの設定に相当する GConf リポジトリの中にある任意の要素を指す
スキーマ・キー | 設定キーに対するスキーマ・オブジェクトを格納したキーを指す
スキーマ・オブジェクト | 設定ソースの中にある要素 (設定キーの情報を格納している) で、次のような情報がある: 設定キーを使用するアプリケーションの名前 設定キーで使用する値の型 (例: 整数型、論理型など) 設定キーに対するデフォルトの値 設定キーに関する説明の要約

次の表に設定キーとスキーマ・キー、スキーマ・オブジェクトの例を示します:

アイテム | 例
設定キー | `/desktop/gnome/interface/font_name`
スキーマ・キー | `/schemas/desktop/gnome/interface/font_name`
スキーマ・オブジェクト |
    <schema>
      <applyto>/desktop/gnome/interface/font_name</applyto>
      <key>/schemas/desktop/gnome/interface/font_name</key>
      <owner>gnome</owner>
      <type>string</type>
      <default>Sans 10</default>
      <locale name="C">
        <short>Default font</short>
          <long>Name of the default font used by gtk+.</long>
      </locale>
    </schema>

設定キーとスキーマ・キーを関連付けることが可能になっています。例えば、次に示す `/desktop/gnome/interface/font_name` という設定キーにはスキーマ・キーが１個含まれています:

    <entry name="font_name" mtime="1034873859"
    schema="/schemas/desktop/gnome/interface/font_name"/>

設定キーとスキーマ・キーを関連付ける際、その設定はスキーマ・キーのスキーマ・オブジェクトの中で明示されている推奨値を使います。この推奨値はスキーマ・オブジェクトの `<default>` という要素の中に格納されています。デフォルトの設定ソースの中にあるすべての設定キーは、デフォルトでスキーマ・キーに関連付けられています。

スキーマは、一般的にデフォルトの設定ソースの中に格納されています。

#### GConf のスキーマ定義ファイル

一連のスキーマはスキーマの定義ファイルから生成されます。アプリケーションで使用するすべてのスキーマ・キーは、このファイルの中に定義します。スキーマの定義ファイルは `.schemas` という拡張子を持ちます。

スキーマの定義ファイルは `/etc/gconf/schemas` というフォルダの中に格納されます。スキーマの定義ファイルを使って新しい設定ソースを作成することも可能です。

スキーマの定義ファイルの中には、GNOME デスクトップのユーザ・インタフェースと一部密接に関連するものがあります。例えば、`system_http_proxy.schemas` という定義ファイルはネットワークのプロキシを設定するツールに設定情報を提供しています。逆に、スキーマ定義ファイルの中には GNOME デスクトップのユーザ・インタフェースとして提供されていない部分に関する設定キーが含まれているものもあります。例えば `/apps/panel/global/tooltips_enabled` という設定キーに相当するユーザ・インタフェースは提供されていません。

GNOME デスクトップのユーザ・インタフェースの中には１つ以上のスキーマ定義ファイルから提供されている設定キーを持つものがあります。例えば、キーボード・ショートカットという設定ツールには `panel-global-config.schemas` と `metacity.schemas` という定義ファイルから提供された設定が含まれています。

### GConf デーモン

GConf デーモンのプロセス名は `gconfd-2` です。GConf デーモンは設定項目の値が変更された際にその旨をいろいろなアプリケーションに通知します。例えば、外観の設定ツールを使うとツールバーのボタンをアイコンだけ表示するように変更できますが、実際にこの設定ツールでオプションを選択すると、デスクトップ上にあるすべてのアプリケーションのツールバーが即座に更新されます。GConf デーモンはローカル以外にも、ネットワーク経由でも操作できます。

GConf デーモンのインスタンスはユーザ毎に起動されるようになっています。但し、GConf デーモンは認証とかデータの秘匿といった複雑な課題を扱えるような設計にはなっていません。GConf デーモンを起動すると、まず GConf のパス・ファイルを読み込みます。GConf デーモンはアプリケーションと設定ソースとの間のやりとりをすべて管理しています。

任意のアプリケーションが設定キーに関連付けられた値を要求すると、デーモンは次のような手順で設定ソースの中を検索します:

1. パス・ファイルの中に記述した設定ソースの順番で、設定キーの値を検索する (値が見つかったら、その値を返す)

2. 値が見つからなければ、同様にパス・ファイルの中に記述した設定ソースの順番で、設定キーに相当するスキーマ・キーを検索する

3. スキーマ・キーが見つかったらスキーマ・キーの値をチェックする

4. スキーマ・キーの値がスキーマ・オブジェクトであったら、スキーマ・オブジェクトの `<default>` 要素の値を推奨値として返す

GConf デーモンは設定キーの値をキャッシュしています。通常、アプリケーションはすべてこのキャッシュを利用するようになっているので、設定ソースには１度だけアクセスしておけばよいことになります。

GConf デーモンを強制終了させるには、次のコマンドを実行してください:

    gconftool-2 --shutdown

### GConf のコマンドライン・ツール

GConf には `gconftool-2` というコマンドライン・ツールが含まれています。この `gconftool-2` コマンドを使うと次に示すことを実行できます:

- キーの値を指定する

- キーの値を表示する

- アプリケーションをインストールする際にスキーマの定義からスキーマをインストールする

例えば、次のコマンドは `/desktop/gnome` というリポジトリの配下に格納されたすべてのキーの値を表示します。

    gconftool-2 --recursive-list /desktop/gnome

この下にある一覧は `gconftool-2` コマンドに指定できるオプションです。これ以外のオプションについて詳細は man:gconftool-2(1) をご覧ください。

### gconftool-2 コマンドのいろいろなオプション

`--all-dirs`

- 指定したリポジトリの中にあるすべてのサブディレクトリを一覧表示する

`--all-entries`

- 指定したリポジトリの中にあるすべてのキーの値を表示する

`--config-source=`設定ソース``

- このオプションと次の `--direct` オプションを一緒に指定すると、使用する設定ソースを指定できる (このオプションを使って設定ソースを指定すると、パス・ファイルの中にあるすべての設定ソースが対象となる)

`--direct`

- このオプションと前の `--config-source` オプションを一緒に指定すると、設定ソースに直接アクセスできる (このオプションを使用した場合 GConf サーバを利用しない; このオプションを使用する前に GConf デーモンや `gconfd-2` が起動されていないことを確認しておくこと)

`--dump`

- 指定した GConf リポジトリの中にあるすべての設定キーの内容を一覧表示する (この一覧にはすべてのキーに対する XML 定義が含まれている; この一覧はすべて `<gconfentryfile>` という要素の中に格納されている)

  例えば、このオプションの出力をリダイレクトすることで、お使いのパネル設定に関連したすべてのキーの一覧をファイルに書き出すことができる (このファイルは `--load` オプションと一緒に指定する)

`--get`

- 指定した設定キーの値を表示する (指定したスキーマ・キーに対するスキーマ・オブジェクトの要素が持つ値も表示する)

`--help`

- `gconftool-2` コマンドに関するヘルプと、この `gconftool-2` コマンドで利用できるオプションの一覧を表示する

`--load=`ファイル名``

- このオプションを利用して、設定ソースにある現在のディレクトリの設定キーの値を、指定したファイルの中にある値にする (指定したファイルには、`<gconfentryfile>` という要素の中にキーの XML 記述が含まれているものとする)

`--long-desc=`説明``

- このオプションと `--set-schema` というオプションを一緒に指定すると、任意のスキーマ・キーに対する詳細な説明を指定できる

`--makefile-install-rule`

- スキーマの定義ファイルをアプリケーションにインストールする

`--owner=`所有者``

- このオプションと `--set-schema` というオプションを一緒に指定すると、スキーマ・キーの所有者を指定できる

`--recursive-list`

- 指定したリポジトリにあるすべてのサブディレクトリに格納されたすべての設定キーの値を表示する

`--recursive-unset`

- 指定したリポジトリにあるすべてのサブディレクトリに格納されたすべての設定キーの値 (ユーザが指定した値) を、設定ソースのデフォルト値に戻す

`--set`

- 設定キーの値をセットして、その値をユーザの設定ソースに書き込む (`--type` というオプションと一緒にこの `--set` オプションを指定すると、ここでセットする値の型を指定できる; 例えば、次のコマンドラインはユーザの設定ソースにある `/apps/gnome-terminal/profiles/Default/background_color` というキーの値を文字列で指定するものである)

      gconftool-2 \
        --set "/apps/gnome-terminal/profiles/Default/background_color" \
        --type string "#000000"

  この `--set` オプションに加えて、`--direct` と `--config-source` オプションを同時に指定すると、セットする値を別の設定ソースに書き込める

`--set-schema`

- 任意のスキーマ・キーにある属性値をセットして、その値をデフォルトの設定ソースに書き込む

  この `--set-schema` というオプションと次のオプションを一緒に指定すると、値を更新したい属性を指定できる:

  - `--type`

  - `--short-desc`

  - `--long-desc`

  - `--owner`

  例えば、次に示すコマンドは `/apps/gnome-terminal/profiles/Default/background_color` というキーのスキーマ・キーに対する簡単な説明をセットするものである:

      gconftool-2 \
        --set-schema  "/schemas/apps/gnome-terminal/profiles/Default/background_color" \
        --short-desc "Default  background color of terminal"

`--short-desc=`説明``

- このオプションと `--set-schema` というオプションを一緒に指定すると、任意のスキーマ・キーに対する簡単な説明を指定できる

`--shutdown`

- GConf デーモンを強制終了する

`--type=`型``

- このオプションを使い、設定キーにセットする値の型を指定できる (スキーマ・キーの属性値をセットする場合にも利用できる); 次は妥当なデータ型の一覧である:

  - `bool (論理型)`

  - `float (浮動小数点型)`

  - `int (整数型)`

  - `list (リスト型)`

  - `pair (ペア型)`

  - `string (文字列型)`

`--unset`

- 設定キーの値 (ユーザが指定した値) を設定ソースのデフォルト値に戻す

`--usage`

- `gconftool-2` コマンドに関するヘルプと、この `gconftool-2` コマンドで利用できるオプションの一覧を要約を表示する (【最新版では利用不可】)

### 値を指定する

任意の設定キーに対して変更不可の値またはデフォルトの値を指定することができるようになっています。 このような変更不可の設定値またはデフォルトの設定値をユーザ毎に変更する前に、まず GConf デーモンがユーザ毎に起動していないことを確認してください。また、ユーザの設定値を変更する前にすべてのユーザがログアウトしていることを確認しておいてください。

任意の設定キーに対して、変更不可の値やデフォルトの値を指定する際に使用する `gconftool-2` コマンドの書式は次のとおりです:

    gconftool-2 --direct \
      --config-source 設定ソース \
      --type 型 \
      --set 設定キー value

例えば、強制的に HTTP プロキシのホストを `wwwproxy.xyz.com` にする場合は次のようなコマンドになります:

    gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type string \
      --set /system/http_proxy/host wwwproxy.xyz.com

一般ユーザはこの設定値を変更することはできません。

さらに `gconftool-2` コマンドを使ってデフォルトの設定値を指定できます。例えば、デフォルトのワークスペースの数を５個にする場合は次のようなコマンドになります:

    gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults \
      --type int \
      --set /apps/metacity/general/num_workspaces 5

一般ユーザはこの設定値を上書きして変更できます。

変更不可の値またはデフォルトの値を変更する前に、まずすべてのユーザがログアウトしていることを確認しておいてください。

### 全般の設定を指定する

ここでは、GNOME デスクトップ環境の全般に影響する変更不可の値またはデフォルト値の指定方法について説明します。

#### HTTP プロキシを指定する

HTTP プロキシの設定を指定する際は `/system/http_proxy/` という場所にある設定キーの値を変更します。例えば、HTTP プロキシとして強制する変更不可のホストを指定する場合のコマンドは次のような書式になります:

    gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type string \
      --set /system/http_proxy/host プロキシの名前

そして、HTTP プロキシのホストにデフォルトの値を指定する場合のコマンドは次のような書式になります:

    gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults \
      --type string \
      --set /system/http_proxy/host プロキシの名前

さらに HTTP プロキシに関連する他の設定も指定できます。これらの設定について詳細は `system_http_proxy.schemas` というスキーマの定義ファイルを参照してみてください。

#### プリンタ・マネージャを設定する

プリンタ・マネージャを設定する際は `/apps/gnome-print-manager` という場所にある設定キーの値を変更します。例えば、他のユーザが要求した印刷ジョブを一緒に表示させたくない場合のコマンドは次のような書式になります:

    gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type bool \
      --set /apps/gnome-print-manager/show_all_jobs false

そして、デフォルトの値を指定する場合のコマンドは次のような書式になります:

    gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults \
      --type bool \
      --set /apps/gnome-print-manager/show_all_jobs false

さらにプリンタ・マネージャに関連する他の設定も指定できます。これらの設定について詳細は `gnome-print-manager.schemas` というスキーマの定義ファイルを参照してみてください。

#### ワークスペースの個数を指定する

ワークスペースの個数を固定にする場合のコマンドは次のような書式になります:

    gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type int \
      --set /apps/metacity/general/num_workspaces 整数値

そして、ワークスペースのデフォルトの個数を指定する場合のコマンドは次のような書式になります:

    gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults \
      --type int \
      --set /apps/metacity/general/num_workspaces 整数値

さらにウィンドウ・マネージャに関連する他の設定も指定できます。これらの設定について詳細は `metacity.schemas` というスキーマの定義ファイルを参照してみてください。

#### キーボードの操作性を設定する

キーボードを使った操作性を設定する際は `/desktop/gnome/accessibility/keyboard` という場所にある設定キーの値を変更します。例えば、強制的にキーボードのアクセシビリティの機能を有効にする場合のコマンドは次ような書式になります:

    gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type bool \
      --set /desktop/gnome/accessibility/keyboard/enable true

そして、デフォルトの値を指定する場合のコマンドは次のような書式になります:

    gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults \
      --type bool \
      --set /desktop/gnome/accessibility/keyboard/enable false

さらにキーボードの操作性に関連する他の設定も変更できます。これらの設定について詳細は `desktop_gnome_accessibility_keyboard.schemas` というスキーマの定義ファイルを参照してみてください。

#### キーボード・ショートカットを指定する

キーボードのショートカットを設定する際は `/apps/metacity/global_keybindings` という場所にある設定キーの値を変更します。例えば、Alt F3 というキーボード・ショートカットだけを使って「アプリケーションの起動」ダイアログを開きたいという場合です。これを変更不可の設定として指定する場合のコマンドは次のような書式になります:

    gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type string \
      --set /apps/metacity/global_keybindings/panel_run_dialog '<Alt>F3'

さらに他のキーボード・ショートカットも設定できます。これらの設定について詳細は `metacity.schemas` というスキーマの定義ファイルを参照してみてください。

#### パネルとパネル・オブジェクトを設定する

`panel-default-setup.entries` というファイルには、次に示すような GNOME デスクトップ環境の詳細が記述されています:

- パネルの個数

- パネルのいろいろな種類

- パネルのいろいろなプロパティ

- パネルのいろいろな内容

パネルやパネル・オブジェクト毎に設定するのは複雑な作業です。これらを設定する際は、まず最初に `panel-default-setup.entries` ファイルの構造を理解しておく必要があります。この `panel-default-setup.entries` ファイルについて詳細は次のセクションをご覧ください。

パネルやパネル・オブジェクト毎に設定を行うには、設定ソースの中にあるたくさんの設定項目の値を指定しなければなりません。パネルの設定値を指定する一番簡単な方法は `gconftool-2` コマンドに `--dump` と `--load` というオプションも一緒に指定して使用するというものです。パネルとパネル・オブジェクトの設定値を指定する方法について詳細は「gconf-3」をご覧ください。

##### パネルやパネル・オブジェクトを指定する方法

`panel-default-setup.entries` というファイルの中身はいくつかのセクションに分かれており、それぞれいろいろなパネルやパネル・オブジェクトを表しています。この `panel-default-setup.entries` ファイルにはスキーマ・キーに応じた値を指定します。この `panel-default-setup.entries` ファイルは `/etc/gconf/schemas` フォルダの中にあります。

この `panel-default-setup.entries` ファイルの構造は次のとおりです:

1. GNOME デスクトップ環境でパネルやパネル・オブジェクト全般の構造を指定するキーで、次に示すキーはそれぞれ GNOME デスクトップに表示されるパネルやパネル・オブジェクト、アプレットの個数を表しています:

   - `/apps/panel/default_setup/general/toplevel_id_list`

   - `/apps/panel/default_setup/general/object_id_list`

   - `/apps/panel/default_setup/general/applet_id_list`

   このキーはさらにパネルやパネル・オブジェクトやアプレットの識別子も割り当てます。例えば、`panel-default-setup.entries` ファイルの中にある次のセクションは GNOME デスクトップの中に表示されているパネルの一つを表しています:

       <entry>
         <key>toplevel_id_list</key>
         <schema_key>/schemas/apps/panel/general/toplevel_id_list</schema_key>
         <value>
           <list type="string">
             <value>
               <string>bottom_panel</string>
             </value>
           </list>
         </value>
       </entry>

   このセクションの中にある `bottom_panel` という識別子が「ボトム・エッジ・パネル」を表しています。

2. パネルのプロパティを表すキーで、次のような構造になっています:

       /apps/panel/default_setup/toplevels/パネルの名前/プロパティのキー

   例えば `/apps/panel/default_setup/toplevels/bottom_panel/size` というキーはボトム・エッジ・パネルの大きさを表しています。

3. パネル・オブジェクトとそのプロパティ、そしてパネル・オブジェクトを格納しているパネルなどをまとめて定義するキーです。例えば `panel-default-setup.entries` ファイルの中にある次のセクションは、ボトム・エッジ・パネルの左端にある「メイン・メニュー」というオブジェクトを表しています:

       <entrylist base="/apps/panel/default_setup/objects/main_menu">
         <entry>
           <key>object_type</key>
           <schema_key>/schemas/apps/panel/objects/object_type</schema_key>
           <value>
             <string>menu-object</string>
           </value>
         </entry>
         <entry>
           <key>toplevel_id</key>
           <schema_key>/schemas/apps/panel/objects/toplevel_id</schema_key>
           <value>
             <string>bottom_panel</string>
           </value>
         </entry>
         <entry>
           <key>position</key>
           <schema_key>/schemas/apps/panel/objects/position</schema_key>
           <value>
             <int>0</int>
           </value>
         </entry>
         <!-- Possibly more entry elements -->
       </entrylist>

4. アプレットとその設定、そしてアプレットを格納しているパネルなどをまとめて定義するキーです。例えば `panel-default-setup.entries` ファイルの中にある次のセクションは、ボトム・エッジ・パネルの中にある「ウィンドウの一覧」アプレットを表しています:

       <entrylist base="/apps/panel/default_setup/applets/window_list">
         <entry>
           <key>object_type</key>
           <schema_key>/schemas/apps/panel/objects/object_type</schema_key>
           <value>
             <string>bonobo-applet</string>
           </value>
         </entry>
         <entry>
           <key>toplevel_id</key>
           <schema_key>/schemas/apps/panel/objects/toplevel_id</schema_key>
           <value>
             <string>bottom_panel</string>
           </value>
         </entry>
         <entry>
           <key>position</key>
           <schema_key>/schemas/apps/panel/objects/position</schema_key>
           <value>
             <int>2</int>
           </value>
         </entry>
         <!-- Possibly more entry elements -->
         <entry>
           <key>bonobo_iid</key>
           <schema_key>/schemas/apps/panel/objects/bonobo_iid_type</schema_key>
           <value>
             <string>OAFIID:GNOME_WindowListApplet</string>
           </value>
         </entry>
       </entrylist>

   `OAFIID` はアプレットを識別するために使用する重複しない文字列です。特定のアプレットの OAFIID を検索するには、`/usr/lib/bonobo/servers` フォルダにあるそのアプレットの `.server` ファイルの中身をご覧ください。例えば `GNOME_Wncklet_Factory.server` というファイルから抜粋した次のデータにある OAFIID はウィンドウの一覧アプレットを表しています:

       <oaf_server iid="OAFIID:GNOME_WindowListApplet"
       type="factory" location="OAFIID:GNOME_Wncklet_Factory">

##### パネルやパネル・オブジェクト毎の設定値を指定する方法

パネルやパネルの上に表示されているパネル・オブジェクトの設定値を指定する手順は次のとおりです:

1. GNOME のセッションにログインして、必要なパネルを設定する

2. `gconftool-2` コマンドラインに `--dump` というオプションを指定して、設定するパネルの XML 定義をファイルに出力する (`--dump` オプションを指定すると、指定した GConf リポジトリに格納されているすべての設定キーの一覧を生成する)

   例えば、次のコマンドラインを実行すると、パネルのデフォルト設定に関する XML 定義を `my-panel-setup.entries` というファイルに出力する:

       gconftool-2 --dump /apps/panel > my-panel-setup.entries

3. この `my-panel-setup.entries` ファイルをテキスト・エディタなどで開いて、必要な箇所を変更する

   例えば、デスクトップ・エントリのファイル名を変更したいとすると:

       <entry>
         <key>objects/object_16/launcher_location</key>
         <schema_key>/schemas/apps/panel/objects/launcher_location</schema_key>
         <value>
           <string>hadjaha-00adce02f7.desktop</string>
         </value>
       </entry>

   `--dump` オプションで生成したファイルの抜粋にある `hadjaha-00adce02f7.desktop` という箇所を、別のデスクトップ・エントリのファイルに変更する

   `--dump` オプションを使ってパネルの設定情報をファイルに出力すると、パネル・オブジェクトが表示される位置は絶対座標で出力されてしまうので、この座標を相対座標に変更したくなるかもしれません (例えば、パネルの左端にあるオブジェクトの `position` キーの値は `0` になり、その隣にあるオブジェクトの `position` キーの値は `1`、以下同様); オブジェクトの位置をパネルの右端からの相対座標にしたいのであれば、`right_stick` キーの値を `true` にすること

4. `gconftool-2` コマンドラインに `--load` というオプションを指定して、ここで編集した `my-panel-setup.entries` ファイルの内容をデフォルトの設定ソースとして読み込ませる; 例えば、次のコマンドラインを実効するとデフォルトの設定ソースにあるキーの値に、`my-panel-setup.entries` ファイルから読み込んだ値をセットする:

       gconftool-2 --direct \
         --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults \
         --load my-panel-setup.entries

### 外観の設定を指定する

ここでは、GNOME デスクトップ環境の外観と操作性に影響する変更不可の値またはデフォルト値の指定方法について説明します。

#### フォントの設定を指定する

フォントの設定を指定する際は二つの設定キーの値をそれぞれ変更することになります。次の表は変更するキーとそれに関連付けられているユーザ・インタフェースの部品を一覧にしたものです:

GConf の設定キー | ユーザ・インタフェースの部品
/desktop/gnome/interface/font_name | 外観の設定の「フォント」のページにあるアプリケーションのフォント
/apps/nautilus/preferences/desktop_font | 外観の設定の「フォント」のページにあるデスクトップのフォント

例えば、アプリケーションのフォントに `Sans 12` を強制する場合のコマンドは次のような書式になります:

    gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type string \
      --set /desktop/gnome/interface/font_name "Sans 12"

デスクトップのフォントとして `palatino 12` をデフォルト値にする場合のコマンドは次のような書式になります:

    gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults \
      --type string \
      --set /apps/nautilus/preferences/desktop_font "palatino 12"

#### 背景の設定を指定する

デスクトップの背景の設定を指定する際は `/desktop/gnome/background` という場所にある設定キーの値を変更します。例えば、バックグランドとして画像を強制する場合のコマンドは次のような書式になります:

    gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type string \
      --set /desktop/gnome/background/picture_filename ファイル名.png

そして、デフォルトの値を指定する場合のコマンドは次のような書式になります:

    gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults \
      --type string \
      --set /desktop/gnome/background/picture_filename ファイル名.png

さらに背景に関連する他の設定も指定できます。これらの設定について詳細は `desktop_gnome_background.schemas` というスキーマの定義ファイルを参照してみてください。

#### スプラッシュ・スクリーンの画像を指定する

スプラッシュ・スクリーンの画像を指定する際は `/apps/gnome-session/options/` という場所にある設定キーの値を変更します。例えば、スプラッシュ・スクリーンの画像を表示させたくないのであれば変更不可の値として次のように指定します:

    gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type bool \
      --set /apps/gnome-session/options/show_splash_screen false

そして、デフォルトの値を指定する場合のコマンドは次のような書式になります:

    gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults \
      --type bool \
      --set /apps/gnome-session/options/show_splash_screen false

さらにスプラッシュ・スクリーンに関連する他の設定も指定できます。これらの設定について詳細は `gnome-session.schemas` というスキーマの定義ファイルを参照してみてください。

### すべての設定をデフォルト値に戻す

ユーザ毎にデフォルトの設定値をリストアする場合のコマンドは次のような書式になります:

    gconftool-2 --direct \
      --config-source ユーザ設定のソース \
      --recursive-unset

「`ユーザ設定のソース`」の部分をユーザのホームにある `.gconf` というフォルダの中の設定ソースで置き換えてください。

このコマンドを実行すると、指定した設定ソース配下にある全サブフォルダの設定キーをすべてデフォルトの設定ソースの設定にリセットします。

## メニューのカスタマイズ

この章では GNOME デスクトップによるメニューの実装方法とメニューを独自に変更する方法について説明します。

### メニューについて

GNOME デスクトップ環境では「XDG メニューの仕様」に準じたメニューを実装しています。この仕様をサポートすることにより、GNOME では次のことが実現できるようになりました:

- メニューの階層を簡単に変更できる (この階層を変更するのにたくさんのファイルを変更しなくてもよい上に、アプリケーションのコードを変更したりファイルを移動する必要がない)

- アプリケーションを簡単にインストールできる (アプリケーションをインストールする際にメニュー階層についての情報をアプリケーション側に提供しておく必要がない)

- ユーザが変更できないような設定にすることも可能である

GNOME デスクトップのメニューは次に示すコンポーネントを使用します:

- メニューの定義ファイル

- デスクトップ・エントリのファイル

- フォルダ・エントリのファイル

### いろいろなメニュー定義ファイル

メニューの階層を定義するメニュー・ファイルは GNOME の「メニュー・バー」で使用されます。これらのファイルを変更することで、全ユーザ、または変更対象の `applications.menu` ファイルが示している場所に依存した単一のユーザ向けに独自のメニューを提供できます。

すべてのメニュー・ファイルは `$XDG_CONFIG_DIRS/menus/applications.menu` の中に記載されていなければなりません。もし環境変数の `$XDG_CONFIG_DIRS`

$XDG_CONFIG_DIRS という環境変数は「XDG ベース・ディレクトリの仕様」で定義されています。

がセットされていなければ、デフォルトのパスである `/etc/xdg` を使用します。さらに、これは一番最初に見つかった `$XDG_CONFIG_HOME/menus/applications.menu` ファイルの中にユーザ専用の情報が記載されている可能性も含んでいます。環境変数の `$XDG_CONFIG_HOME` がセットされていない場合は、デフォルトのパスである `~/.config` を使用します。`applications.menu` が複数個ある場合は、環境変数の `$XDG_CONFIG_DIRS` の中で最初に見つかったフォルダが優先されます。そして一番最初に見つかったファイルを利用して、それ以外のファイルは無視されます。

パスを検索する順番がわからなくなった場合に備えて、ここで `applications.menu` ファイルを特定する方法を示します:

1. `menus/applications.menu` ファイルを特定するために、環境変数の `$XDG_CONFIG_HOME` にセットされたフォルダの内容をそれぞれ調べる (もし `$XDG_CONFIG_HOME` がセットされていなければ、デフォルトの `~/.config/` というフォルダを使用する)

2. `menus/applications.menu` ファイルを特定するために、環境変数の `$XDG_CONFIG_DIRS` にセットされたフォルダの内容をそれぞれ調べる (もし `$XDG_CONFIG_DIRS` がセットされていなければ、デフォルトの `/etc/xdg/` というフォルダを使用する)

3. 一番最初に見つかった `applications.menu` ファイルを使用する

example-menu に `.menu` ファイルの例を示します。この例におけるトップレベルのメニューは `Applications` という名前のメニューで、これは `<Name>` とう要素を使って指定されているのがわかります。`Applications` というメニューにはサブメニューが一つ含まれていますが、複数のサブメニューを含めることも可能です。さらに各サブメニューにも `<Include>` という要素を含めることが可能になっています。この `<Include>` 要素の目的は任意のルールを用いて、すべてのデスクトップ・エントリから実際に利用できるエントリの集合にフィルタリングすることです。

`<Category>` という要素はフィルタの基本ルールの一つです。これはデスクトップ・エントリの `Categories` というキーに `<Category>` が示す内容が含まれていたら、そのデスクトップ・エントリだけを選択し有効にするというものです。この例の場合だと、あるデスクトップ・エントリの `Categories` というキーの中に Utility が含まれているが System は含まれていない場合にのみ、このデスクトップ・エントリが `Accessories` というメニューに表示されるというものです。`Categories` キーについて詳細は「menustructure-desktopentry」をご覧ください。

#### `.menu` ファイルの例

    <!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
     "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">
    <Menu>
      <Name>Applications</Name>
      <Directory>Applications.directory</Directory>

      <!-- まず .directory と .desktop ファイルが格納されているシステム規模のフォルダを読み込む -->
      <DefaultAppDirs/>
      <DefaultDirectoryDirs/>

      <!-- Accessories (アクセサリ) というサブメニュー -->
      <Menu>
        <Name>Accessories</Name>
        <Directory>Accessories.directory</Directory>
        <Include>
          <And>
            <Category>Utility</Category>
            <Not>
              <Category>System</Category>
            </Not>
          </And>
        </Include>
      </Menu> <!-- ここがサブメニューの終わり -->

      <!-- さらにたくさんのサブメニューを追加できる -->

    </Menu> <!-- Applications メニューの終わり -->

menustructure-xmlmenu に `.menu` ファイルで指定できる要素を示します。さらに詳細は「XDG メニューの仕様」をご覧ください。

### メニューの定義ファイルに記載する要素

要素 | 説明
`<Menu>` | 定義ファイルのルート要素で、サブメニューを定義する際はこの `<Menu>` 要素をネストさせて定義する (どのようにネストしているかによってメニューの構成が変わる)
`<Name>` | メニューの名前を指定する (`<Menu>` 要素毎にこの `<Name>` 要素を定義しなければならない)
`<Directory>` | メニューの名前やコメント、アイコンなどを記述した `.directory` ファイル (ディレクトリ・エントリ・ファイル) の名前を指定する (この要素が指定されていない場合は、`<Name>` 要素で指定した文字列をメニューにメニュー名として表示する) デフォルトで `.directory` ファイルは、「XDG メニューの仕様」の中で説明されているように、`$XDG_DATA_DIRS/desktop-directories/` の場所から捜し出される
`<DefaultAppDirs>` | これは、`$XDG_DATA_DIRS/applications/` の中を解析した結果から利用可能なデスクトップ・エントリ (`.desktop`) のすべてを取得する命令である (この命令が指定されていない場合は、その場所からはデスクトップ・エントリを捜さないという意味になる)
`<DefaultDirectoryDirs>` | これは、`$XDG_DATA_DIRS/desktop-directories/` の中を解析した結果から利用可能なディレクトリ・エントリ (`.directory`) のすべてを取得する命令である (この命令が指定されなかった場合、この場所からはディレクトリ・エントリを捜さないという意味になる)
`<Include>` | 実際のメニューを生成する際に使用するフィルタリングのルールを並べて指定する (`<Filename>` や `<Category>`、`<And>`、`<Or>`、`<Not>`、あるいは `<All>` といったルールの中から適宜選択する;１個以上のルールを指定すると、ルールが論理和されるので、結果的にデスクトップ・エントリはここで指定したルールのいずれかにマッチすることになる)
`<Exclude>` | `<Include>` の逆であり、この要素の中にあるデスクトップ・エントリのいずれかが実際のメニュー構成から削除される (そのため、この要素は `<Include>` の要素よりも後に記述すること)
`<Filename>` | デスクトップ・エントリのファイル名 (`Desktop File-Id`) とこの `<Filename>` 要素が持つ内容が一致したら、そのデスクトップ・エントリを有効にするルール
`<Category>` | デスクトップ・エントリに記載された `Categories` というキーワードとこの `<Category>` 要素が持つ内容が一致したら、そのデスクトップ・エントリを有効にするルール
`<And>` | この `<And>` 要素の中でネストされているすべてのフィルタリングのルールによって取得したデスクトップ・エントリを有効にするルール
`<Or>` | この `<Or>` 要素の中でネストされているいずれかのフィルタリングのルールによって取得したデスクトップ・エントリを有効にするルール
`<Not>` | この `<Not>` 要素の中でネストされているいずれかのフィルタリングのルールよって取得したデスクトップ・エントリを有効にしないルール
`<All>` | すべてのデスクトップ・エントリを有効にするルール

### デスクトップ・エントリのファイル

「デスクトップ・エントリのファイル」はメニュー項目に関する情報を提供するデータ・ファイルの一つです。このファイルを使ってメニュー項目の名前や起動するコマンド、メニューに表示するアイコンなどの詳細な情報を指定します。さらに、メニューの階層でこのメニュー項目が表示される場所を特定するために使用するキーワードもいくつか含まれています。

このデスクトップ・エントリのファイルは `$XDG_DATA_DIRS/applications` というフォルダの中に格納され、`.desktop` という拡張子がつけられていなければなりません。環境変数 `$XDG_DATA_DIRS`

$XDG_DATA_DIRS という環境変数は「XDG ベース・ディレクトリの仕様」で定義されています。

が設定されていない場合、`/usr/share` がデフォルトのパスとなります。これは、ユーザ専用のデスクトップ・エントリのファイルを `$XDG_DATA_HOME/applications` に配置することができるということも意味しています。 (このフォルダが最初に検索されます)。ここで、`$XDG_DATA_HOME` が設定されていないと、デフォルト値の `~/.local/share` を使用します。デスクトップ・エントリはすべて `環境変数 $XDG_DATA_DIRS` に格納されたフォルダから取得します。同名のデスクトップ・エントリがあった場合は `$XDG_DATA_DIRS` に指定されたフォルダの中で先に出現する方が優先されます。

次はデスクトップ・エントリのファイルの例です:

    [Desktop Entry]
    Encoding=UTF-8
    Name=Calculator
    Name[ja]=関数電卓
    ...
    Comment=Perform arithmetic, scientific or financial calculations
    Comment[ja]=算術/科学/財務の計算を行います
    ...
    Exec=gcalctool
    Icon=accessories-calculator
    Terminal=false
    Type=Application
    StartupNotify=true
    Categories=GNOME;GTK;Utility;Calculator

menustructure-TBL-7 にデスクトップ・エントリのファイルで最もよく利用するキーワードを示します。デスクトップ・エントリのファイルについて詳細については「XDG デスクトップ・エントリの仕様」をご覧ください。

### デスクトップ・エントリのキーワード

キーワード | 説明
`Categories` | アイテムを説明するためのキーワードをセミコロン (;) を区切り文字としていくつか羅列する (カテゴリを表す標準的なキーワードは「 http://www.freedesktop.org/Standards/menu-spec」にあるデスクトップ・メニューの仕様に一覧としてまとめられている) 「いろいろなメニュー定義ファイル」では、この Categories キーに対するフィルタリングのルールを使って、デスクトップ・エントリをメニュー項目にマップしている (関連付けている)
`Comment` | この項目の概要を表す (このキーワードはメニュー項目の上にポインタをのせた時に現れるツールチップの中に表示される文章である)
`Encoding` | デスクトップ・エントリに記載する情報のエンコーディングを表す
`Exec` | メニュー項目を選択した時に実行するコマンドを表す
`Icon` | メニュー項目に表示されるアイコンのファイル名を表す (ファイル名のパス、あるいは拡張子は指定しないこと)
`MimeType` | このデスクトップ・エントリが表すアプリケーションで扱える MIME 型を表す
`Name` | メニュー項目の名前を表す文字列 (この文字列が実際のメニューに表示される)
`NoDisplay` | このオプションは「アプリケーションは存在しているが、メニュー項目としては表示しない」という時に指定する
`Terminal` | キーワードの `Exec` に指定したコマンドを端末の中から起動するかどうかを表す (ここで `true` を指定すると、端末の中からコマンドを起動する) 起動するコマンドがウィンドウを生成しない場合、このキーワードには `true` を指定すること
`Type` | メニュー項目の種類を表す (この値は次のいずれかとする): `Application`: １アプリケーションとして起動する `Link`: ファイルやフォルダ、あるいはリモートのリソース (FTP サイトとかウェブ・サイト、Windows 共有など...) へのリンクである `FSDevice`: ファイルシステムのデバイスを表す `Directory`: フォルダを表す

デスクトップ・エントリのファイルについて詳細については、次の URL にある仕様書をご覧ください:

        http://www.freedesktop.org/Standards/desktop-entry-spec

パネルのランチャとデスクトップ上のオブジェクトもデスクトップ・エントリのファイルを利用しています。ランチャやデスクトップ上のオブジェクトで使用するデスクトップ・エントリのファイルはメニュー項目で使用するものと同じ情報が記載されています。例えば、デスクトップ・エントリのファイルはランチャをクリックした時に起動するコマンドが記載されています。

### ディレクトリ・エントリのファイル

「ディレクトリ・エントリのファイル」はメニューそのものの情報を提供するデータ・ファイルの一つです。このファイルを使ってメニューの名前やツールチップの説明、そしてアイコンなどの詳細な情報を指定します。このファイルの拡張子は `.directory` です。

このディレクトリ・エントリのファイルは `$XDG_DATA_DIRS/desktop-directories` というフォルダの中に格納されていなければなりません。もし環境変数である `$XDG_DATA_DIRS` が指定されていないと、デフォルト値である `/usr/share` を使用します。さらに、ユーザ専用のディレクトリ・エントリのファイルも `$XDG_DATA_HOME/desktop-directories` に格納されているものとみなします (このファイルを見つける際に一番最初に調査するフォルダということです)。ここで、環境変数である `$XDG_DATA_HOME` が指定されていないと、デフォルト値の `~/.local/share` を使用します。ディレクトリ・エントリは全て `$XDG_DATA_DIRS` という環境変数に格納されたフォルダから取得します。同名のディレクトリ・エントリがあった場合は環境変数である `$XDG_CONFIG_DIRS` に格納されたフォルダの中で先に出現するファイルが優先されます。

次はディレクトリ・エントリのファイルの例です:

    [Desktop Entry]
    Name=Graphics
    Name[ja]=グラフィックス
    ...
    Comment=Graphics applications
    Comment[ja]=グラフィックス関連のアプリケーションです
    ...
    Icon=gnome-graphics
    Type=Directory
    Encoding=UTF-8

menustructure-TBL-15 にディレクトリ・エントリのファイルで最もよく利用するキーワードを示します。

### ディレクトリ・エントリのキーワード

キーワード | 説明
`Name` | メニューの名前を表す文字列 (この文字列が実際のメニューに表示される)
`Comment` | このメニューの概要を表す (このキーワードはメニューの上にポインタをのせた時に現れるツールチップの中に表示される文章である)
`Icon` | メニューに表示されるアイコンのファイル名を表す (ファイル名のパス、あるいは拡張子は指定fしないこと)
`Type` | メニューの種類を表す (このキーの値は常に `Directory` である)

### システム・メニューを編集する

手動でメニューの設定ファイルとデータ・ファイルを編集して、いろいろなメニューをカスタマイズできるようになっています。

#### メニューを追加する

すべてのユーザ向けにメニューを１つ追加する手順は次のとおりです:

1. 追加するメニューに対応したディレクトリ・エントリのファイルを作成し、`$XDG_DATA_DIRS/desktop-directories` というフォルダに格納する (ディレクトリ・エントリのファイルについて詳細は「menustructure-14」を参照のこと)

2. `$XDG_CONFIG_DIRS/menus/applications.menu` ファイルを開く

3. この `.menu` ファイルで、新しいメニュー用に `<Menu>` 要素を追加する (`.menu` ファイルについて詳細は「menustructure-13」を参照のこと)

4. 先ほど作成した `<Menu>` 要素の配下に `<Name>` という要素とそのデータを追加する (このデータをメニューの名前にすること)

5. 一番最初に作成した `<Menu>` 要素の配下に `<Directory>` という要素とそのデータを新たに追加する (このデータをディレクトリ・エントリのファイル名にすること)

6. ここで新たに作成したメニューにメニュー項目を追加する際は「menustructure-4」を参照のこと

ユーザが次回ログインすると、ここで作成したメニューがメニュー・バーの中に表示されるはずです。

##### 作成したメニューが見つからない場合

`<Include>` 要素で指定したフィルタリングのルールにマッチするメニューが一つも存在しない場合や、マッチするデスクトップ・エントリが一つも存在しないような場合、そのメニューはメニュー・バーに表示されません。

#### メニュー項目をメニューに追加する

すべてのユーザ向けにメニュー項目を１つ追加する手順は次のとおりです:

1. 追加するメニュー項目に対応したデスクトップ・エントリのファイルを作成する (デスクトップ・エントリのファイルについて詳細は「menustructure-desktopentry」を参照のこと)

2. 作成したデスクトップ・エントリのファイルを `$XDG_DATA_DIRS/applications` というフォルダに格納する

3. `$XDG_CONFIG_DIRS/menus/applications.menu` ファイルを開く

4. `<Menu>` という要素の中に `<Include>` という要素が格納され、かつ手順１で作成したデスクトップ・エントリのファイルを選択するようなフィルタリングのルールになっているか確認する

ユーザが次回ログインすると、ここで作成したメニュー項目が表示されるはずです。

#### メニューのプロパティを編集する

すべてのユーザ向けにメニューのプロパティを編集する手順は次のとおりです:

1. `$XDG_CONFIG_DIRS/menus/applications.menu` ファイルを開く

2. このファイルの中から、編集したいプロパティを持つメニューに対応した `<Menu>` 要素を見つけ、さらに `<Directory>` という要素が持つデータを取得する (これがディレクトリ・エントリのファイル名)

3. このディレクトリ・エントリのファイルを開き、メニューのプロパティを変更する (`.directory` について詳細については「menustructure-14」を参照のこと)

#### メニュー項目を編集する

メニュー項目を編集する手順は次のとおりです:

1. メニュー項目に対応したデスクトップ・エントリのファイルを `$XDG_DATA_DIRS/applications` というフォルダの中から見つけて開く

2. デスクトップ・エントリのファイルでメニュー項目のプロパティを編集する (デスクトップ・エントリのファイルについて詳細は「menustructure-desktopentry」を参照のこと)

#### メニューからメニュー項目を削除する

すべてのユーザ向けにメニューからメニュー項目を削除する手順は次のとおりです:

1. `$XDG_CONFIG_DIRS/menus/applications.menu` ファイルを開く

2. このファイルの中から、削除したいデスクトップ・エントリ名を含む `<Menu>` 要素を見つける

3. `<Include>` 要素が閉じている箇所の後に `<Exclude>` 要素を挿入する (この要素が、手順２に示したように、`<Menu>` 要素の中に内包されているか確認すること)

4. `<Exclude>` 配下の要素としてフィルタリングのルールである `<Filename>` を挿入し、対象外にするデスクトップ・エントリを明示的に指定する

ユーザが次回ログインすると、ここで指定したメニュー項目が表示されないはずです。menustructure-deleteitem に `applications.menu` を使った例を示します。この例では `dasher.desktop` というデスクトップ・エントリのファイルを明示的にアクセシビリティのメニューで表示しないようにしています。

##### メニューからメニュー項目を削除する

    <!-- ... -->

      <Menu>
        <Name>Accessibility</Name>
        <Directory>Accessibility.directory</Directory>
        <Include>
          <And>
            <Category>Accessibility</Category>
            <Not><Category>Settings</Category></Not>
          </And>
        </Include>
        <Exclude>
          <Filename>dasher.desktop</Filename>
        </Exclude>
      </Menu>

    <!-- ... -->

### ユーザ・メニューを編集したり複数のメニューをまとめる

次の GNOME アプリケーションを使ってユーザ毎に自分のメニューを編集できるようになっています:

- GNOME メニュー・エディタまたはメイン・メニュー (alacarte)

ユーザが自分のメニューを編集する際に利用できるシンプルなメニュー・エディタがあります。詳細については GNOME ユーザ・ガイドにある「メイン・メニューの使い方」をご覧ください (訳注: GNOME 2.22 ではメニュー・エディタに関連するドキュメントは存在しません)。あるいは、手動でメニュー関連のファイルを作成したり編集できます。

ユーザが独自にメニューを定義する際は、`$XDG_CONFIG_HOME/menus/applications.menu` というユーザ専用のファイルが必要になります。。環境変数である `$XDG_CONFIG_HOME` がセットされていない場合はデフォルト値の `~/.config` を使用します。これは `applications.menu` ファイルを探す際に一番最初に解析するフォルダなので、その他のフォルダよりも優先されます。

ユーザ定義のメニューでは「menustructure-13」で説明した全ての要素を利用できます。他にもいろいろ利用可能な要素があるので、詳細は「XDG メニューの仕様」をご覧ください。

ユーザ定義のメニューはシステム規模のメニューよりも優先されるようになっているので、システム規模のメニューと明示的に結合しない限り、ユーザ定義のメニューがシステム規模のそれを完全に上書きするような仕組みになっています。この次のセクションでメニューの結合について説明します。

#### システム規模のメニューと結合してまとめる

たまに標準的なシステム規模のメニューに加えて何かメニュー項目を追加したり、使わないメニュー項目を削除したい場合があります。このような場合は、ユーザ専用の `applications.menu` ファイルの中で `type="parent"` という属性を持つ `<MergeFile>` という要素を使うことをお薦めします。

`<MergeFile>` という要素を使うと、システム規模のメニューでユーザ専用のメニューと結合してまとめることができるようになります。ここで `type="parent"` という属性を指定すると、`<MergeFile>` 要素の内容を無視して `$XDG_CONFIG_DIRS/menus` フォルダの中にある `applications.menu` ファイルの方を結合します。

##### 古い仕様では

以前の仕様では `type` という属性を使わずに、単に結合するメニュー定義ファイルのパスを指定し `<MergeFile>` 要素の内容を結合していただけでした。そのため、現在でも `type="parent"` を指定した場合 `<MergeFile>` 要素を使ってメニュー定義ファイルのパスを指定するようになっています。

メニューの結合は次のように実施されます:

- 結合してまとめたメニュー定義ファイル

  結合したメニュー定義ファイルは `$XDG_CONFIG_DIRS/menus` フォルダの中にある `applications.menu` ファイルを参照します。

  の中にある `<Menu>` 要素の配下にある子要素がベースのメニュー定義ファイルにある `<MergeFile>` 要素のかわりになります。

- `<Menu>` 要素の配下にある同名の子要素がすべて一個の `<Menu>` 要素に統合されます。これは、`<Menu>` 要素毎に同じ名前を持つ子要素をすべてメニュー要素の最後に出現するメニュー要素として追加することで実現しています。

menustructure-systemmerge にシステム規模のメニュー定義ファイルとユーザ定義のメニューとを明示的に結合しまとめた例を示します。

##### システム規模のメニューと結合してまとめる

    <!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
     "http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">

    <Menu>
      <Name>Applications</Name>
      <MergeFile type="parent">/etc/xdg/menus/applications.menu</MergeFile>
      <Menu>
        <Name>Accessibility</Name>
        <Exclude>
          <Filename>dasher.desktop</Filename>
        </Exclude>
      </Menu>
    </Menu>

#### 独自のメニューを結合しまとめる

独自のメニュー定義ファイルをシステム規模のメニューと同じ方法で結合しまとめることができるようになっています。異なる点は `type` という属性を `path` に指定するか、または `<MergeFile>` 要素から削除してこの類の結合を行えるようにすることです。

マージするメニュー定義ファイルが格納されている場所を `<MergeFile>` 要素のデータとして指定することを除いて、システム規模のメニューの結合と同じように処理されます。

## テーマのインストール

この章では GNOME デスクトップで利用できるいろいろなテーマとその設定、テーマを設定するオプションのインストール方法、そして独自のオプションを作成する方法について説明します。

### テーマについて

テーマとは、GNOME デスクトップの部品に対する視覚的な外観を指定する「既に調整された設定」の集まりです。ユーザはいろいろなテーマの中から一つ選択して自分が使っている GNOME デスクトップの外観を変更することができるようになっています。

テーマには、次に示すような GNOME デスクトップのいろいろな部分に作用する設定が含まれています:

コントロール (GUI の部品)

- テーマにおけるコントロールの設定はウィンドウやパネル、そしてアプレットの視覚的な外観を決定します。さらにコントロールの設定は GNOME と互換性のあるインタフェース (例えば、メニューやアイコン、ボタンなど) の視覚的な外観も決定します。利用可能なコントロールの設定のほとんどは特別なアクセシビリティが必要となるように設計されています。外観の設定ツールでテーマを選択し、カスタマイズのボタンをクリックして表示されるダイアログからコントロールというタブを開いてコントロールのオプションを選択できます。

ウィンドウの境界 (フレーム)

- テーマにおけるウィンドウの境界の設定はウィンドウの周囲に付与されたフレームの外観だけを決定します。ユーザは外観の設定ツールのテーマタブからカスタマイズボタンをクリックして表示されるダイアログからウィンドウの境界というタブを開いてウィンドウの境界オプションを選択できます。

Icon

- テーマにおけるアイコンの設定は、パネルの中にあるアイコンの外観を決定します。外観の設定ツールでテーマを選択し、カスタマイズのボタンをクリックして表示されるダイアログからアイコンというタブを開いてアイコンのオプションを選択できます。

### テーマの Index ファイル

テーマ毎に Index ファイルが用意されており、このファイルの中でテーマの特徴を定義します。Index ファイルの名前は `/usr/share/themes/`テーマの名前`/index.theme` です。

次はテーマの Index ファイルの例です:

    [Desktop Entry]
    Type=X-GNOME-Metatheme
    Name=High Contrast Large
    Name[ja]=ハイ・コントラスト (大)
    Comment=Large black-on-white text and icons
    Comment[ja]=白地に黒色のテキストとアイコンの拡大版
    Encoding=UTF-8

    [X-GNOME-Metatheme]
    GtkTheme=HighContrastLargePrint
    IconTheme=HighContrast
    MetacityTheme=Atlanta
    ApplicationFont=sans 18

テーマの Index ファイルで利用するキーワードを次の表に示します:

### テーマの Index ファイルで利用できるキーワード

キーワード | 説明
`Type` | このテーマが、コントロール (GUI の部品) やウィンドウの境界 (フレーム) 、アイコンといったテーマのオプションの外観を決定することを指定する
`Name` | テーマの名前を指定する (これは外観の設定ツールで表示されるテーマの名前になる)
`Comment` | テーマの簡単な説明を指定する (これは外観の設定ツールのテーマの名前の下に表示される文章である)
`GtkTheme` | 外観の設定ツールのテーマにあるコントロールの設定に相当する (ウィンドウやパネル、アプレットといった GUI の部品に一括して適用する設定を指定する)
`IconTheme` | 外観の設定ツールのカスタマイズにあるアイコンに相当する (デスクトップのオブジェクトやメニューのアイコンに一括して適用するアイコンの種類を指定する)
`MetacityTheme` | 外観の設定ツールのカスタマイズにあるウィンドウの境界に相当する (ウィンドウの境界に一括して適用する設定を指定する)
`ApplicationFont` | 外観の設定ツールのフォントにあるアプリケーションのフォントに相当する

### 新しいコントロールのオプションをインストールする

外観の設定ツールのテーマで設定できるコントロールの新しいオプションをインストールできるようになっています。このオプションは `/usr/share/themes` というフォルダに格納されます。このオプションの基本的な構造は次のとおりです:

オプションのファイル

- `/usr/share/themes/`オプション名`/gtk-2.0/gtkrc`

画像ファイル

- `/usr/share/themes/`オプション名`/pixmaps/*.*`

一般的に、コントロールに対する新しいオプションは `.tar.gz` 形式のファイルで提供されます。新しいコントロールのオプションをインストールする際は、まず `.tar.gz` ファイルを `unzip` して `.tar` ファイルを `/usr/share/themes` フォルダ配下に展開してください。

ユーザはコントロールの設定に関する独自のオプションもインストールできます。もしユーザ専用のオプションをインストールするのであれば、その設定ファイルを `$HOME/.themes` フォルダの配下に格納してください。

### 新しいウィンドウの境界をインストールする

外観の設定ツールのカスタマイズで設定できるウィンドウの境界の新しいオプションをインストールできるようになっています。このオプションは `/usr/share/themes/`オプション名`/metacity-1` というフォルダに格納されます。このオプションの基本的な構造は次のとおりです:

オプションのファイル

- `/usr/share/themes/`オプション名`/metacity-1/metacity-theme-1.xml`

画像ファイル

- `/usr/share/themes/`オプション名`/metacity-1/*.*`

一般的に、ウィンドウの境界に対する新しいオプションは `.tar.gz` 形式のファイルで提供されます。新しいオプションをインストールする際は、まず `.tar.gz` ファイルを `unzip` して `.tar` ファイルを `/usr/share/themes` フォルダ配下に展開してください。

ユーザはコントロールの設定に関する独自のオプションもインストールできます。もしユーザ専用のオプションをインストールするのであれば、その設定ファイルを `$HOME/.themes` フォルダの配下に格納してください。

### 新しいアイコンをインストールする

外観の設定ツールのカスタマイズで設定できるアイコンのの新しいオプションをインストールできるようになっています。このオプションは `/usr/share/icons/`オプション名`` というフォルダに格納されます。このオプションの基本的な構造は次のとおりです:

オプションのファイル

- `/usr/share/icons/`オプション名``

画像ファイル

- `/usr/share/icons/`オプション名`/icons/*.*`

一般的に、アイコンに対する新しいオプションは `.tar.gz` 形式のファイルで提供されます。新しいアイコンのオプションをインストールする際は、まず `.tar.gz` ファイルを `unzip` して `.tar` ファイルを `/usr/share/icons` フォルダ配下に展開してください。

ユーザはアイコンの設定に関する独自のオプションもインストールできます。もしユーザ専用のオプションをインストールするのであれば、その設定ファイルを `$HOME/.icons/`オプション名``というフォルダの配下に格納してください。

### テーマに応じたアイコンをインストールする

GNOME デスクトップでは特殊な視覚効果を必要とするユーザ向けにいくつかのテーマをを提供しています。例えば、テーマの多くは視力の低いユーザに配慮して設計されています。そのため、いろいろなテーマで同じアイコンを正しく表示するには、複数のバージョンをインストールしておく必要があるかもしれません。

アプリケーションによっては新しいアイコンをインストールしなければならない場合もあるかもしれません。新規にアイコンをインストールする際は、いろいろなテーマの中でアイコンを正しく表示できるようにするために、そのアイコンに対して複数のバージョンを作成しておいてください。作成しておくアイコンのバージョンは次のとおりです:

- GNOME デスクトップのアプリケーションで使用するためのアイコン

- GTK+ のアプリケーション、または GTK+ のストック・アイコンとしてアプリケーション内部で使用するためのアイコン

Portable Network Graphic (PNG) 形式のような、いろいろな書式のアイコンを作成することが可能になっています。デスクトップ環境において推奨されるアイコンの大きさは 48 x 48 ピクセルです。この大きさだと、ほとんどのテーマで適度に拡大縮小して表示することが可能だからです。

新規にアイコンをインストールする際は、次に示すような 48 x 48 ピクセルのアイコンを複数作成しておいてください:

- 通常のアイコン

- 低コンストラストなアイコン

- 高コンストラストなアイコン

- 高コンストラストなアイコンを反転したアイコン

可能であれば、大きな画面を持たないデスクトップのテーマ向けに、16 x 16 ピクセルのアイコンもそれぞれ作成しておいてください。

アイコンを「themes-3」や「themes-5」で説明したテーマの画像を格納するフォルダにインストールしてください。例えば HighContrastLargePrint というテーマにアイコンを追加する場合は `/usr/share/themes/HighContrastLargePrint/pixmaps` というフォルダにアイコンをインストールします。そして関連するテーマにアイコンを参照するためのリファレンスを追加してください。例えば HighContrastLargePrint というテーマにアイコンをインストールした場合は、そのアイコンを参照するリファレンス命令を `/usr/share/themes/HighContrastLargePrint/gtk-2.0/gtkrc` というファイルの中に追加します。この `gtkrc` ファイルを編集して GTK+ のストック・アイコンにインストールしたアイコンを関連付けます。

アプリケーションのランチャやパネルに表示するアイコンを作成する方法について詳細は「アイコンテーマの仕様」をご覧ください。

### 独自にコントロールのオプションを作成する

コントロールを設定するオプションがお使いのユーザにマッチしないのであれば、独自にコントロールのオプションを定義してみてください。独自のオプションを作成する手順は次のとおりです:

1. `/usr/share/themes` の下に、コントロールのオプションを格納するためのフォルダを作成するが、その際は他のオプションが採用しているフォルダ階層と同じにする; 例えば、SmallPrint というオプションを定義する際は次のようなフォルダを作成する:

   - `/usr/share/themes/SmallPrint`

   - `/usr/share/themes/SmallPrint/gtk-2.0`

2. システム規模のテーマからユーザの要求を満たす設定に最も近い `gtkrc` ファイルを探し、新しいオプションをインストールする `gtk-2.0` フォルダにコピーする

3. `gtkrc` ファイルをテキスト・エディタの中に開いて、必要の応じコントロールを意味する GUI インタフェースの属性を編集する

4. もし新しいオプションに画像を含めたいのであれば、その画像を新しいオプションをインストールする `pixmaps` フォルダにコピーしておく (別のオプションが持つ画像を利用するような場合は画像のコピーを作成せずに、その画像へのリファレンスが `gtkrc` ファイルの `pixmap_path` エントリで定義されているか確認すること)

これでユーザは新しいコントロールのオプションを選択できるようになりました。

`gtkrc` ファイルについて詳細は「http://developer.gnome.org/doc/API/2.0/gtk/index.html」(日本語版) をご覧ください。

## フォントの設定

この章では GNOME デスクトップのフォントを設定する方法を説明します。

### フォントの設定について

GNOME デスクトップでは `fontconfig` というフォント設定ツールと関連ライブラリを利用しています。`fontconfig` のライブラリは、PostScript の Type 1 形式や TrueType 形式のフォントを含め、すべての種類のフォントを利用できるようになっています。

`fontconfig` のライブラリはお使いの GNOME デスクトップで利用できるフォントの一覧を提供してくれます。この一覧をコンパイルする際、`fontconfig` は `/etc/fonts/fonts.conf` というファイルの中に記載されたフォルダを解析します。システム規模で利用可能なフォントの一覧を取得するには、ファイル・マネージャで `fonts:///` という場所にアクセスしてみてください。

`fontconfig` のライブラリについて詳細は次の URL を参照してみてください:

          http://freedesktop.org/software/fontconfig

### フォントの置き換え

`fontconfig` ライブラリは、フォントそのものが存在しない、またはいくつかの文字が存在しない時にフォントの置き換えを実施します。もしシステムで利用できないフォントを表示しなければならなくなったら、`fontconfig` は類似したフォントを使った表示を試みます。例えば、ウェブ・ページで Verdana というフォントを使った表示を要求し、そのフォントがシステムにインストールされていなかった場合、`fontconfig` のライブラリは Helvetica のような類似したフォントで描画します。類似したフォントの一覧は `/etc/fonts/fonts.conf` というファイルの中に定義されています。

選択したフォントの中には存在していない文字を表示しなければならなくなった場合、`fontconfig` のライブラリは類似した別のフォントにある文字を使った表示を試みます。例えば、Bitstream Vera Sans というフォントをテキスト・エディタで設定しているものとします。そして、この Bitstream Vera というフォントにはキリル文字は含まれていません。ここでキリル文字を含むドキュメントを開くと、テキスト・エディタはキリル文字を表示するためにキリル文字を含んでいるよく似たフォントを利用します。

さらに `fontconfig` のライブラリは、`serif` とか `sans-serif` とか `monospace` といったフォントに対する別名を定義します。フォントの別名から一つ選択すると、システムは `/etc/fonts/fonts.conf` で別名として定義した一番最初のフォントを利用します。

### すべてのユーザ向けにフォントを追加する

デスクトップ環境を利用するすべてのユーザ向けにフォントを追加する手順は次のとおりです:

1. フォントのファイルを `/etc/fonts/fonts.conf` ファイルに記述したフォルダのいずれかにコピーする (一般的にフォントは `/usr/share/fonts/` というフォルダにインストールされる)

2. `fontconfig` のライブラリがフォントの一覧を自動的に更新するが、もし何らかの理由で更新されなかったら、次のコマンドラインを実行する:

       fc-cache フォルダ名

### ユーザ毎にフォントを追加する

ユーザが個々にフォントを追加する手順は次のとおりです:

1. フォントのファイルをユーザの `$HOME/.fonts` というフォルダにコピーする (フォントのファイルをファイル・マネージャから `fonts:///` という場所にドラッグした場合、フォントのファイルのコピーが自動的に `$HOME/.fonts` というフォルダに作成される)

2. `fontconfig` のライブラリがフォントの一覧を自動的に更新するが、もし何らかの理由で更新されなかったら、次のコマンドラインを実行する:

       fc-cache フォルダ名

## MIME 型

この章ではアプリケーションで MIME 型を検出する方法や、MIME 型を登録する方法、そして GNOME デスクトップにアプリケーションを追加する方法について説明します。

本章は、MIME データベースをいろいろ設定する方法に関するシステム管理者の理解を促し、加えて MIME システムの一般的な概要を説明することを目的としています。そのため、必要以上に詳しく解説するつもりはありません。さらに学習したいのであれば「XDG Shared MIME Info の仕様」をご覧ください。

### MIME 型について

Multipurpose Internet Mail Extension (多目的インターネットメール拡張) [MIME] 型はファイルの形式や書式を識別する際に使用する規格です。インターネット・ブラウザとか電子メールのクライアントなどのアプリケーションはファイルの MIME 型に応じてどのようなアクションを実行するかを決定します。例えば、電子メールのクライアントは MIME 型を利用してメールに添付されているデータの種類を識別し、そのファイルを処理するのに妥当なビューアを自動的に選択します (テキストのドキュメントならば gedit を起動するなど)。

もう一つ別の例を紹介すると、Nautilus というファイル・マネージャは次に示す処理を行うために、選択したファイルの MIME 型を知っておく必要があります:

- そのファイルを妥当なアプリケーションで開く

- そのファイルの種類を説明する文字列を表示する

- そのファイルの種類を表す妥当なアイコンを表示する

- そのファイルを開くことができる他のアプリケーションの一覧を表示する

もともと MIME 型は電子メールの本文の形式を識別するための標準として提案されていたものでした。現在では、たくさんのシステムがこの MIME 型を利用してシステムに格納されているファイルの種類を特定しています。MIME 型は、トップレベルは type (メディアの種類) と subtype (詳細な形式) という二つの情報から構成されています (これらの情報は `/` で区切られています)。MIME 型の一例として `image/jpeg` というものがあります。この例では、メディアの種類は `image` で、詳細な形式は `jpeg` に相当します。トップレベルの type はファイルに格納されているデータの一般的な分類を表しており、subtype の方はファイルの形式 (フォーマット) を特定するための識別子です。

現在のところ IANA [Internet Assigned Naming Authority] が定義しているメディアの種類 type は８個あります。この８つの type は

- application
- audio
- image
- message
- model
- multipart
- text
- video

です。各 type 毎にたくさんの subtype が存在します。詳細は IANA のウェブ・サイトにある「MIME Media Types」をご覧ください。

GNOME における MIME 型の実装は「XDG Shared MIME Info の仕様」に準拠します。この仕様には次のような特徴があります:

- MIME に関連するすべてのファイルの標準的な場所を特定できる

- 新しく MIME 型の情報を登録する標準的な方法をアプリケーションに提供できる

- 任意のファイルから MIME 型を取得する標準的な方法を提供できる

- 任意の MIME 型に関する情報を取得する標準的な方法を提供できる

本章の残りの部分で MIME 型のデータベースを構成しているファイルやフォルダについて説明し、それからソース XML の詳細と MIME 型を作成したり編集する方法、そして特定の MIME 型を取り扱うハンドラとしてアプリケーションを登録する方法、最後にアプリケーションを GNOME デスクトップに追加する方法について説明します。

### MIME 型のデータベースについて

MIME 型のデータベースは、次に示すデータを持った、いろいろな種類のファイルから構成されています:

- MIME 型の種類

- ファイルの MIME 型を決定するメソッド

- MIME 型に関するメタ情報 (例えば MIME 型を説明する可読な情報など)

#### データの保管場所

システム管理者が MIME 型を使ったシステムを理解する上で最も重要でかつ基本的なことは、このシステムを構成しているファイルがどこに保管されているかということを知るということです。「XDG Shared MIME Info の仕様」がＸのデスクトップ・グループによって起草されたことに起因して、「XDG ベース・ディレクトリの仕様」も同時に適用されます。システム管理者としてメニューを編集するといった作業も重要ですが、その一環として MIME 型の仕様を理解することも強くお薦めします。MIME 型の仕様に関するフォルダの構成についてその概要はこれ以降で説明します。

MIME 型のデータベースは `$XDG_DATA_HOME/mime` と `$XDG_DATA_DIRS/mime` のフォルダに格納されている複数のファイルの集合から構成されています。これらの環境変数が共にセットされていない場合、それぞれデフォルト値の `~/.local/share` と `/usr/local/share:/usr/share` を使用します。`$XDG_DATA_DIRS` のデフォルト値を見てもわかるように、環境変数はそれぞれコロン (`:`) を区切り文字として複数のフォルダのからなるリストになっています。`$XDG_DATA_HOME/mime` にあるユーザ専用のデータベースは `$XDG_DATA_DIRS/mime` にあるシステム規模のデータベースよりも優先順位が高いです。XDG Shared Mime Info の仕様と同様に、これ以降はこれらのフォルダを `<MIME>` として参照することにします (置き換えて説明することにします)。

例えば環境変数のためのデフォルトのパスを想定し、「`<MIME>/text/plain.xml` を読み込みます」といった場合は次に示すファイルを読み込むという意味になります:

- `~/.local/share/mime/text/plain.xml`

- `/usr/local/share/mime/text/plain.xml`

- `/usr/share/mime/text/plain.xml`

#### データの内容

次の一覧は MIME 型のデータベースを構成しているフォルダとファイル、そしてその概要を説明したものです:

`<MIME>/packages/`

- このフォルダにはたくさんの XML ファイルが格納されており、それぞれのファイルには複数の MIME 型の説明が記述されています。デフォルトでは、`freedesktop.org.xml` というファイルがシステム規模の `/usr/share/mime/packages` というフォルダにインストールされているはずです。このファイルには一般的に広く使われ認知されているデフォルトの MIME 型がすべて含まれています。

  新しい MIME 型に関するデータを提供するアプリケーションは、このフォルダに１個の新しい ソース XML ファイルをインストールします。アプリケーションがインストールされる場所の接頭子に応じて、環境変数の `$XDG_DATA_HOME:$XDG_DATA_DIRS` で示されたいずれかのフォルダの `/mime/package` サブフォルダの中にファイルを生成します。例えば `/usr/bin` にインストールされるアプリケーションは `/usr/share/mime/packages` フォルダに新しいソース XML のファイルをインストールしなければなりません。`packages` フォルダの中にあるソース XML のファイルについて詳細は「mimetypes-source-xml」をご覧ください。

`<MIME>/`メディアの種類`/`詳細な形式`.xml`

- これらのフォルダとそこに格納されているファイルは、update-mime-database というコマンドを使って、`<MIME>/packages/` サブフォルダの中にあるソース XML ファイルの集合から自動的に生成されます。例えば、`mime-type` という要素が `/usr/share/mime/packages/freedesktop.org.xml` ファイルの中にありますが、この要素毎に MIME 型のメディアの種類に対応したフォルダが `/usr/share/mime/` の中にサブフォルダとして生成されます。同様にソース XML ファイルは MIME 型の詳細な形式を表す識別子に対応したサブフォルダの中に生成されます。生成した XML ファイルの中身はコメント (と、それをさまざまな言語に翻訳したもの)、詳細な形式の識別子と別名が含まれています。

  ##### 例: `/usr/share/mime/text/plain.xml` ファイル

      <?xml version='1.0' encoding='utf-8'?>
      <mime-type xmlns="http://www.freedesktop.org/standards/shared-mime-info" type="text/plain">
      <!--update-mime-database コマンドで自動的に生成されます (** 編集しないこと！ **)-->
        <comment>plain text document</comment>
        <!-- (いろいろな言語で翻訳したコメントが続く) -->
        <comment xml:lang="fr">document plein texte</comment>
        <comment xml:lang="hu">egyszerű szöveg</comment>
        <comment xml:lang="it">Documento in testo semplice</comment>
        <comment xml:lang="ja">平文テキストドキュメント</comment>
        <!-- (いろいろな言語で翻訳したコメントが続く) -->
      </mime-type>

  このファイルは、update-mime-database というコマンドがデフォルトのソース XML ファイルである `freedesktop.org.xml` を読み込んで自動的に生成されます。

`<MIME>/globs`

- このファイルには、１行につき１つの MIME 型と１つの グロブ・パターンが記述されています (区切り文字はコロン `:`)。この グロブ・パターンにマッチしたファイルが最終的にコロンの前で定義された MIME 型に関連付けられます。ここで、ファイル名が グロブ・パターンにマッチさせる特別なルールがいくつかあります。これらのルールについて詳細は「XDG shared mime specification」をご覧ください。

  このファイルも update-mime-database というコマンドがデフォルトのソース XML ファイルである `freedesktop.org.xml` を読み込んで自動的に生成されます。

`<MIME>/magic`

- これは、ファイルの中身の「においをかぐ」(Sniffing する) ことで MIME 型を解決する方法を格納したバイナリ・ファイルです。これは一般的に、「ファイルの中身の先頭バイトが `%PDF-` という文字列で始まっているかどうかチェックする; もしそうならば MIME 型として `application/pdf` を関連付ける」といったルールが１個以上記述されています。

  このファイルも update-mime-database コマンドを使って生成されます。

`<MIME>/XMLnamespaces`

- このファイルには XML の名前空間を MIME 型にマッピングする情報が記述されています。１行につき名前空間と localName と MIME 型の三つの情報が記述され、区切り文字はスペース `` です。もし localName が空ならば、名前空間と MIME 型の間には２つのスペースが並ぶことになります。

  このファイルも update-mime-database コマンドを使って生成されます。

`<MIME>/aliases`

- このファイルには MIME 型の別名が一覧で記述されています。別名とはまれに MIME 型が別の型として扱われることを意味します。一行ごとに２つのデータを記述します: 先頭が別名で、最後が MIME 型です (区切り文字はスペース `` です)。

  このファイルも update-mime-database コマンドを使って生成されます。

`<MIME>/subclasses`

- このファイルにはサブクラス化した MIME 型とそれらの「親」に相当する MIME 型が一覧で記述されています。「XDG Shared MIME Info の仕様」によれば:

  > 最初の型のいずれかのインスタンスが最後の型のインスタンスの一つになるのであれば、その型は別の型のサブクラスといいます。例えば、image/svg 型のファイルは全て text/xml でかつ text/plain でかつ application/octet-stream なファイルといえます。実際は、データの種類ではなくファイルの形式でサブクラスに分類しています (例えば、すべてのスプレッドシートが継承する「汎用的なスプレッドシート」なんてものは存在しませんから)。

  このファイルは `<MIME>/aliases` と書式が似ています。一行ごとに二つのデータを記述します。 先頭がサブクラス化した MIME 型で最後が親の MIME 型です (区切り文字はスペース `` です)。

  このファイルも update-mime-database コマンドを使って生成されます。

#### MIME 型データベースを更新する

新しい MIME 型をシステムに追加するとか、MIME 型の情報を変更するといった作業を行うシステム管理者にとって、MIME 型のデータベースを更新する方法を理解しておくことは重要なことです。ここでは update-mime-database というコマンドが既にインストールされているものとして説明します。

例えば、アプリケーションが新しい MIME 型の情報を `/usr/share/mime/packages/diff.xml` にインストールしたら、その後に必ず update-mime-database というコマンドを `/usr/share/mime` という引数を指定して呼び出してください。

    # update-mime-database /usr/share/mime
    ***
    * Updating MIME database in /usr/share/mime...
    ***

すると、`<MIME>/packages` のフォルダにあるすべてのソース XML ファイルを解析して、MIME 型のデータベースを更新します。

### ソース XML ファイル

`<MIME>/packages` というフォルダの中に格納されている、これらの XML ファイルは update-mime-database によってデータベースにインストールされる MIME 型に関するすべての情報を提供します。この XML ファイルにはいくつか規則があります:

- 名前空間を `http://www.freedesktop.org/standards/shared-mime-info` に指定すること

- ルート要素は `mime-info` にすること

- `mime-info` 要素の子要素として０個以上の `mime-type` 要素を指定すること。`type` 属性を、定義される MIME 型を指定するために使用する

デフォルトで、`freedesktop.org.xml` というファイルが `<MIME>` が示すいずれかのパス (通常は `/usr/share/mime/packages`) にある `packages` というフォルダにインストールされています。

mimetypes-mimeinfo-elements は、ルート要素である `mime-type` の子要素になることが可能な要素の概要を一覧にまとめたものです。

### `<mime-type>` の子要素

要素 (含む属性) | 説明
`<glob pattern="`*.xyz`">` | この要素はファイル名に対する glob のパターンを表し、もしファイル名がこのパターンにマッチしたら、親の `mime-type` の MIME 型が割り当てられる (`pattern` という属性は必須である)
`<magic priority="`50`">` | この要素には子要素としていくつかの `match` 要素が含まれることになるが、`priority` という属性はオプションであり、マッチングの優先度を 0〜100 の間で指定する (子要素の `match` には必須の属性が三つあり ( `type` `offset` `value` )、四つ目の `mask` はオプションである; これらの属性について詳細は 「XDG Shared MIME Info の仕様」 を参照のこと)
`<alias type="`media`/`subtype`">` | この要素を使って、親の `mime-type` 要素に対する別名を定義する (別名とは、たまに MIME 型が別の型として扱われることを意味する; 例えば、`application/x-pdf` という型の別名は `application/pdf` である)
`<sub-class-of type="`media`/`subtype`">` | この要素では MIME 型のサブクラスとして `type` を属性とする親の `mime-type` 要素を定義する (例えば、`image/svg` は `text/xml` や `text/plain`、そして `application/octet-stream` のサブクラスである)
`<comment xml:lang="`ロケール名`">` | この要素は MIME 型に対する可読な説明を提供する (一行ごとに `xml:lang` という属性に対して重複しない値を指定している限り、０個以上の可読な説明を定義することが可能である)
`<root-XML namespaceURI="`名前空間`" localName="">` | ファイルが１個のソース XML ファイルとわかった場合、この要素を使って `namespaceURI` と `localName` という属性 (共に必須) からさらに詳細な MIME 型に分類する (属性の `namespaceURI` は XML ドキュメントの名前空間であり、`localName` はそのドキュメントのルート要素である; もし `localName` を指定したもののその値が空の場合、ルート要素には名前を付けることは可能であるが、名前空間とマッチしていなければならない)

これらのルールを理解する一番簡単な方法は、やはり「サンプルを見る」ということでしょう。「XDG Shared MIME Info の仕様」にある例を拝借し、mimetypes-source-xml-example に `diff.xml` という名前のソース XML ファイルの内容を示します。この例には `text/x-diff` という MIME 型が定義されています。この例には `comment` という子要素が複数あり、この MIME 型の名前がいろいろな言語で記載されています。この MIME 型には glob パターンによるマッチングとファイルの中身の「においをかぐ」Sniffing (`magic` とも言います) による解析の両方がルールとして定義されています。ファイルの拡張子が `.diff` または `.patch` のファイルはすべてこの MIME 型が割り当てられます。さらに、データが `match` 要素の中で指定した `value` 属性の文字列で始まるすべてのファイルもこの `text/x-diff` 型が割り当てられます。

glob のパターンと magic ルールを並べる順番はこのドキュメントのスコープを越えて適用されます。スコープについて詳細は「XDG Shared MIME Info の仕様」を参照ください。

#### ソース XML ファイルの例: `diff.xml`

    <?xml version='1.0'?>
    <mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
      <mime-type type="text/x-diff">
        <comment>Differences between files</comment>
        <comment xml:lang="ja">ファイル間の差分</comment>
        <!-- 以下、他の言語で翻訳したコメント文が続く... -->
        <magic priority="50">
          <match type="string" offset="0" value="diff\t"/>
          <match type="string" offset="0" value="***\t"/>
          <match type="string" offset="0" value="Common subdirectories: "/>
        </magic>
        <glob pattern="*.diff"/>
        <glob pattern="*.patch"/>
      </mime-type>
    </mime-info>

### MIME 型を変更する

アプリケーションが `<MIME>/packages` フォルダにインストールしたソース XML ファイルを直接変更しないでください。代わりに、`Overrides.xml` という編集専用のファイルを変更してください。このファイルは同じ `<MIME>/packages` というフォルダにインストールしたどのソース XML ファイルよりも優先されます。但し、あなたがアプリケーション開発者ならば、このルールは無用です。新しいソース XML ファイルを作成し `<MIME>/packages` フォルダにインストールするようにしてください (当然ながら `Makefile` 側でこのような配慮をすべきです)。

システム規模ですべてのユーザに対する MIME 型データベースを変更することも、特定のユーザのためだけに変更することもできるようになっています。すべてのユーザに対してデータベースを変更する際は、`$XDG_DATA_DIRS/mime/packages` フォルダにある `Overrides.xml` というファイルを修正してください。特定のユーザだけに変更する際は、`$XDG_DATA_HOME/mime/packages` フォルダにある `Overrides.xml` というファイルを修正してください。

変更が済んだら、必ず update-mime-database コマンドに MIME データベースの場所を指定して実行してください。

#### MIME 型を追加したり変更する

すべてのユーザに対して一つ以上の MIME 型を追加する手順は次のとおりです:

1. MIME 型の定義をいろいろ記述したソース XML ファイルの `Overrides.xml` を作成するか、または変更する (詳細は「mimetypes-source-xml」を参照のこと)

2. この `Overrides.xml` ファイルを `/usr/share/mime/packages` というフォルダに格納する

3. システム管理者の権限で update-mime-database コマンドを実行し MIME 型のデータベースを更新する

       update-mime-database /usr/share/mime

特定のユーザに対してのみ一つ以上の MIME 型を追加する場合の手順は、ここで編集した `Overrides.xml` ファイルを格納する先が `~/.local/share/mime/packages` フォルダである以外はすべて同じです。加えて、update-mime-database コマンドを使って更新する MIME 型データベースの所在は `~/.local/share/mime/packages` になります。

#### 変更点を検証する

MIME 型のデータベースに変更を加えその内容を更新したら、gnomevfs-info (または gvfs-info) というコマンドを使って実際に変更内容を検証することができます。このコマンドは MIME 型の情報とファイルに関する有益な情報をいろいろ提供してくれます。

SVG のファイルに対して gnomevfs-info コマンドを実行した結果を下に示します。その結果から、この MIME 型に対するデフォルトのアプリケーションが `eog.desktop` であることがわかります。デフォルトのアプリケーションについては「mimetypes-registering」で説明します。

    $ gnomevfs-info mime-diagram.svg
    Name              : mime-diagram.svg
    Type              : Regular
    MIME type         : image/svg+xml
    Default app       : eog.desktop
    Size              : 14869
    Blocks            : 32
    I/O block size    : 4096
    Local             : YES
    SUID              : NO
    SGID              : NO
    Sticky            : NO
    Permissions       : 600644
    Link count        : 1
    UID               : 1000
    GID               : 100
    Access time       : Wed Feb 22 18:24:47 2006
    Modification time : Wed Feb 22 18:24:42 2006
    Change time       : Wed Feb 22 18:24:42 2006
    Device #          : 775
    Inode #           : 297252
    Readable          : YES
    Writable          : YES
    Executable        : NO
    $

「mimetypes-newtype-example」では新しい MIME 型を作成し gnomevfs-info を使って変更内容を検証する手順を順を追って説明しています。

#### `application/x-newtype` の例

MIME 型を作成 (または上書き) して検証する際の手順は次のとおりです:

1. ホーム・フォルダに `testing.xyz` という新しい空のファイルを作成する

2. gnomevfs-info コマンドを使ってこのファイルの MIME 型を解析してみる (このファイルの MIME 型が `text/plain` として検出されているかどうかを確認すること; なぜなら glob パターンも magic ルールも存在していないので

   特定のファイルにマッチさせる glob パターンや magic ルールが必要ない時に、ファイルの中に文字列からなるデータが格納されているならば `text/plain` という MIME 型を、あるいはバイナリ・データが格納されていれば `application/octet-stream` という MIME 型を割り当てます (もしファイルが空ならば、デフォルトでは `text/plain` を割り当てます)。

   )

3. 「mimetypes-addmodify」で説明したように、mimetypes-overrides-xml の内容で `Overrides.xml` というファイルを作成するかまたは変更する

4. update-mime-database コマンドでデータベースを更新する

5. gnomevfs-info コマンドを使い、変更点の内容を検証する (この `testing.xyz` ファイルの MIME 型が `application/x-newtype` になっているか確認する)

       $ gnomevfs-info testing.xyz | grep MIME
       MIME type         : application/x-newtype
       $

##### `Overrides.xml` ファイル

    <?xml version='1.0' encoding='utf-8'?>
    <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
      <mime-type type="application/x-newtype"><comment>new mime type</comment><glob pattern="*.xyz"/></mime-type>
    </mime-info>

### MIME 型を処理するアプリケーションを登録する

任意の MIME 型のファイルを扱うアプリケーションの登録はかなり単純です。それらのアプリケーションの `.desktop` の中に `MimeType` キーを持つエントリを一つ作成し、MIME 型をセミコロン (;) で区切って並べます。`MimeType` というキーは、`Type` キーの値が `Application` である `.desktop` でのみ使用するようにしてください。`.desktop` ファイルについて詳細は「menustructure-desktopentry」をご覧ください。

`.desktop` ファイルを作成するか変更するなどしたら、update-desktop-database コマンドを使ってデスクトップ・アプリケーション用のデータベースを更新してください (このコマンドは引数を受け取らない点を除いて、update-mime-database とかなり類似しています)。このコマンドは `mimeinfo.cache` というファイルを `$XDG_DATA_HOME:$XDG_DATA_DIRS` が示す各フォルダの `applications` サブフォルダの中に生成します。このキャッシュ・ファイルが存在していることで、デスクトップ・エントリのファイルから `MimeType` キーを取得する際に、すべての `.desktop` ファイルを解析する必要がなく、デスクの I/O を抑えることができます。

特定の MIME 型で使用するデフォルトのアプリケーションは `defaults.list` と呼ばれるファイルの中で指定します。このファイルは環境変数である `$XDG_DATA_HOME` と `$XDG_DATA_DIRS` が示すフォルダの `applications` サブフォルダの中に保管されています。このファイルには、一行ごとに MIME 型とデスクトップ・エントリのファイルの識別子 (デスクトップ・エントリのファイル名) が `=` で区切られて記述されています。mimetypes-registering-example に `~/.local/share/applications` というフォルダに格納された `defaults.list` ファイルの短い例を示します。

#### ユーザ用の `defaults.list` ファイル

    [Default Applications]
    application/pdf=evince.desktop
    text/html=epiphany.desktop
    text/plain=gedit.desktop
    image/jpeg=eog.desktop
    image/png=eog.desktop
    text/xml=gedit.desktop

#### XDG デスクトップ・エントリの仕様

アプリケーション毎に MIME 型を登録する方法は「XDG Shared MIME Info の仕様」というよりは、むしろ「XDG デスクトップ・エントリの仕様」の一部です。

### アプリケーションを GNOME デスクトップに追加する

アプリケーションを GNOME デスクトップに追加する手順は次のとおりです:

1. アプリケーションのメニュー項目を追加する (メニュー項目をメニューに追加する方法について詳細は「menustructure-2」を参照のこと)

2. アプリケーションのアイコンを `/usr/share/icons/`テーマ名`/`アイコンの大きさ`/apps` というフォルダにインストールする (アイコンとテーマに関して詳細は「themes-11」を参照のこと)

3. もしアプリケーションに新しい MIME 型が必要ならば、ソース XML ファイルを MIME 型のデータベースに追加する (詳細は「mimetypes-modifying」を参照のこと)

4. もしアプリケーションに新しい MIME 型が必要ならば、その MIME 型のアイコンを `/usr/share/icons/`テーマ名`/`アイコンの大きさ`/mimetypes` にインストールする (アイコンとテーマに関して詳細は「themes-0」を参照のこと)

5. アプリケーションと MIME 型を関連付ける時は `MimeType` キーをその `.desktop` ファイルに挿入する (詳細は「mimetypes-registering」を参照のこと)

## スクリーンセーバーの設定

この章ではスクリーンセーバーを設定する方法について説明します。さらに、スクリーンセーバーを利用できるように表示を変更する方法についても説明します。

### スクリーンセーバーについて

「スクリーンセーバー」は、モニタの画面が使用されなくなったらそれを何か別の画像で置きかえるアプリケーションです。これに相当するアプリケーションは、GNOME デスクトップでは gnome-screensaver になります。これ以降のセクションではこの gnome-screensaver アプリケーションの設定方法と、スクリーンセーバーを利用できるテーマに変更する方法について説明します。

### スクリーンセーバーの設定を指定する

スクリーンセーバーの設定はすべて GConf の中に保管されています。

スクリーンセーバーの設定を変更する際、ユーザはスクリーンセーバーの設定ツールを利用します。この設定ツールについて詳細は「GNOME デスクトップのユーザ・ガイド」をご覧ください。

さらに、ユーザは `/usr/bin/gnome-screensaver-preferences` というコマンドを直接実行して、スクリーンセーバーの設定ダイアログを開くことも可能です。

すべてのユーザに対してデフォルトの設定とポリシーを指定したいのであれば、デフォルトの GConf 設定ソースの中にあるスクリーンセーバー用の項目を編集してください。

すべてユーザに対してなんらかの設定とポリシーを強制したいのであれば、変更不可の GConf 設定ソースの中にあるスクリーンセーバー用の項目を編集してください。

### スクリーンセーバーのテーマを変更する

スクリーンセーバーのアプリケーションを利用すると、ユーザは一つ以上のスクリーンセーバーのテーマを選択できます。スクリーンセーバーのテーマとは、モニタの画面が使用されなくなったらユーザの画面に何か画像を表示するアプリケーションです。利用可能なスクリーンセーバーのテーマはスクリーンセーバー設定ツールの中に一覧表示されます。

新しいスクリーンセーバーのテーマを追加する時はスクリーンセーバーのテーマ・エンジンに相当する実行形式を環境変数 PATH が通っているどこか、またはシステム規模の専用のフォルダにインストールしてください。お使いのシステムで、スクリーンセーバーのテーマ・エンジンを格納する専用のフォルダは次のコマンドで取得できます:

    pkg-config --variable=privlibexecdir gnome-screensaver

それから、インストールしたテーマの `.desktop` ファイルをスクリーンセーバーのテーマ・フォルダにインストールします。スクリーンセーバーのテーマ・フォルダは次のコマンドで取得できます:

    pkg-config --variable=themesdir gnome-screensaver

`.desktop` ファイルの `Exec` エントリにインストールしたスクリーンセーバーのテーマをウィンドウ単位ではなくモニタの画面全体に対して起動するのに必要な引数を追加しておきます。例えば、古いバージョンのテーマ・エンジンの場合だと `-root` というオプションを指定して、モニタの画面全体に対してスクリーンセーバーを起動するようにしなければなりません。

スクリーンセーバーは「XDG メニューの仕様」に準拠した実装になっています。この仕様に準拠することで、GNOME では次のようなことができるようになっています:

- テーマを簡単にカスタマイズできる (テーマを利用可能な状態にカスタマイズするのにたくさんのファイルを変更する必要がなく、アプリケーションを変更したりファイルを移動する必要もない)

- テーマを簡単にインストールできる (テーマをインストールするのにシステム情報を提供する必要がない)

- ユーザがテーマを変更できないようにすることも可能である

詳細は「menustructure-0」をご覧ください。

## セッションの管理

この章ではセッションの管理について紹介し、セッション・デフォルトを指定する方法を説明します。加えて、セッションとログイン・スクリプトに関する情報も紹介します。

### セッションについて

セッションは、ユーザが GNOME デスクトップにログインしてからユーザがログアウトするまでの間に発生するものです。ログイン・マネージャがユーザの認証を受け入れたらセッション・マネージャを起動します。このセッション・マネージャを使うと、ユーザはセッションそのものを管理できるようになります。例えば、セッションの状態を保存したり、次回ユーザがログインしたら保存しておいたセッションに復帰することが可能になります。

少なくとも、セッションの中で次に示すアプリケーションが起動されます:

- セッション・マネージャである `gnome-session`

- GConf の設定デーモンである `gnome-settings-daemon`

- GNOME デスクトップでパネルとして使用する gnome-panel

- Metacity ウィンドウ・マネージャ

### セッション・デフォルトを指定する

デフォルトのセッション情報を格納するファイルを次の表に示します:

ファイル | 説明
`/usr/share/gnome/default.session` | デフォルト・セッションのファイル (このファイルの中にデフォルトのセッション情報の詳細が保管されている)
`$HOME/.gnome2/session` | ユーザ専用のセッション・ファイル (ユーザがセッションを編集すると、その詳細がこのファイルの中に保管される)

すべてのユーザに対してデフォルトのセッションの詳細を指定する際は、デフォルト・セッションのファイルを編集してください。

すべてのユーザに対してデフォルト・セッションの設定に戻す際は、ユーザ専用のセッション・ファイルを削除してください。すると、ユーザ専用のセッション・ファイルが存在しない場合、`/usr/share/gnome/default.session` をデフォルト・セッションとして使用します。

現在実行中のセッションをデフォルト・セッションとして保存する際は `gnome-session-save` というコマンドを実行してください。

## ヘルプ・システム

この章では GNOME デスクトップのヘルプ・システムについて説明します。

### ヘルプ・システムについて

GNOME デスクトップは Yelp というヘルプ・ブラウザの中にヘルプを表示するようになっています。ヘルプ・ブラウザについて詳細は GNOME デスクトップのユーザ・ガイドにある「Yelp ヘルプ・ブラウザ」をご覧ください。

ヘルプのソース・ドキュメントは XML 形式のファイルです。XML ファイルは DocBook XML Version 4.1.2 という文書型定義 (DTD) で記述されています。DocBook XML ファイルは、 gnome-doc-utils と一緒にインストールされたスタイルシートを用い HTML に変換され、その HTML がヘルプ・ブラウザの中に表示されるような仕組みになっています。DocBook XML について詳細は次の URL をご覧ください:

          http://www.oasis-open.org/docbook/xml

ヘルプ・システムは Open Source Metadata Framework (OMF) のファイルとカタログ・システムを利用しています。次のセクションでは OMF ファイルとカタログ・システムについて説明します。

### OMF ファイル

マニュアル毎に用意されている XML ファイルは一個の OMF ファイルに関連づけられています。この OMF ファイルにはヘルプ・ブラウザによって使用されるマニュアルの構成などの情報が記述されています。OMF ファイルの拡張子は `.omf` です。

アプリケーションをインストールする場合、その過程で OMF ファイルを専用のフォルダにインストールするようにしてください。ヘルプのドキュメントがインストールした OMF ファイルに関連づけられていると、ヘルプ・ブラウザの中にヘルプのドキュメントが表示されるようになります。

OMF ファイルには、次に示すようなヘルプのドキュメントに関する情報が記述されています:

- ヘルプ・ドキュメントに対する XML ファイルの所在 (パス名)

- ヘルプのドキュメントのタイトル

- ヘルプのドキュメントが属すサブジェクトのカテゴリ

OMF ファイルの作成方法について詳細は「Writing Scrollkeeper OMF Files」をご覧ください。

### ScrollKeeper のカタログ作成システム

ScrollKeeper はドキュメント用のカタログを作成するシステムです。その主要な機能はヘルプ・ブラウザ向けに OMF ファイルに記載された情報を管理することです。アプリケーションをインストールする際、OMF ファイルのコピーが ``$prefix`/share/omf/`<アプリケーション名>`` というフォルダに作成されます。

ScrollKeeper は ``$prefix`/etc/scrollkeeper.conf` という設定ファイルの中で指定されているフォルダの OMF ファイルの集合から目録を構築します。通常、この設定ファイルには、`OMF_DIR` で始まり OMF ファイルを再帰的に検索するための複数のフォルダをコンマ (`:`) で区切った一行だけが記載されています。

    OMF_DIR=/usr/share/omf:/usr/local/share/omf:/opt/gnome2/share/omf:/opt/kde/omf

ScrollKeeper にはヘルプのドキュメントが属すことが可能な複数のカテゴリからなる階層ツリーが含まれています。OMF ファイルの中にあるサブジェクトのカテゴリを使って、ヘルプのドキュメント・ブラウザが提供している目録の中からドキュメントの所在を確定します。

カテゴリの階層は ``$prefix`/scrollkeeper/Templates/`<言語>`/scrollkeeper_cl.xml` というファイルの中に定義されています。ドキュメントのカテゴリはこのファイルの中で指定されている任意のカテゴリと関連付けられている必要があります。

Scrollkeeper システムの詳細については「http://scrollkeeper.sourceforge.net/」をご覧ください。

ヘルプ・ドキュメントの XML ファイルを別の場所に移動したら、OMF ファイルに記述した場所も同様に更新する必要があります。

## パフォーマンスの改善

この章では GNOME デスクトップのパフォーマンスを改善する方法について説明します。

### パフォーマンスの改善について

この章では、GNOME デスクトップのパフォーマンスを改善するために変更することが可能な設定項目を紹介します。`gconftool-2` コマンドを使い、ユーザ向けの設定値を指定できます。この章で紹介するサンプルはユーザの設定ソースの中で値を指定する方法です。

さらに `--direct` と `--config-source` オプションを使えば変更不可の値やデフォルト値を指定することも可能です。また、`gconftool-2` コマンドをスクリプトの中から呼び出せば、一度にたくさんの値を指定できます。`gconftool-2` コマンドとそのオプションについて詳細については「gconf-0」をご覧ください (【訳注】GNOME デスクトップの最新版で利用できないオプションが紹介されている場合もあります)。

### CPU の使用率を減らす

このセクションでは、GNOME デスクトップで CPU 使用率を低減させたい場合に指定することが可能な設定項目について説明します。

#### 少ない CPU リソースでまかなえるテーマ・オプションを使う

ウィンドウの境界に影響するテーマ・オプションの中には、フレームそのものの画像をファイルとして直接読み込むものがあります。それ以外のテーマ・オプションはそれよりも簡単な方法でウィンドウのフレームを描画しています。

`Crux` というテーマ・オプションは大量の画像ファイルを読み込むため、CPU のリソースが制限されているシステムでは処理が遅くなる可能性があります。ここで CPU の使用率を低減したいのであれば、次に示すテーマ・オプションを選択してみてください:

- Atlanta

- Esco

次のテーマ・オプションも `Crux` よりも少ない CPU リソースで利用できます:

- AgingGorilla

- Bright

- Metabox

Metabox は HighContrastInverse のようにコントロール (インタフェースの部品) を反転させるオプションではうまく動作しません。コントロールを反転させるのであれば Atlanta というオプションを利用してみてください。

ウィンドウ・フレームに影響するテーマ・オプションを変更する際は、次のコマンドを実行します:

    gconftool-2 \
    --type string \
    --set /apps/metacity/general/theme オプション名

例えば、Atlanta というテーマ・オプションを指定する場合のコマンドは次のようになります:

    gconftool-2 \
    --type string \
    --set /apps/metacity/general/theme Atlanta

もしくは、テーマの設定ツールを使って妥当なテーマ・オプションを選択することも可能です。

Metacity のテーマ・ビューアを使ってウィンドウ・フレームのテーマ・オプションのパフォーマンスを計測したり、プレビューすることも可能です。この Metacity のテーマ・ビューアを起動する際のコマンドは次のとおりです:

    metacity-theme-viewer オプション名

例えば、Atlanta をプレビューしながらその描画パフォーマンスを計測する際のコマンドは次のとおりです:

    metacity-theme-viewer Atlanta

#### メニューの中にアイコンを表示しないようにして CPU の使用率を減らす

メニュー項目の中にはその横にアイコンを表示するものがあります。この機能を無効にする際は、次のコマンドを実行します:

    gconftool-2 \
    --type bool \
    --set /desktop/gnome/interface/menus_have_icons false

もしくは、外観の設定ツールの外観を開いてメニューの中にアイコンを表示するというオプションを無効にしてください。

#### スプラッシュ・スクリーンを無効にして CPU の使用率を減らす

デフォルトでは、 ユーザがデスクトップにログインすると、スプラッシュ・スクリーンが表示されます。ログイン処理を行っている間、アイコンがスプラッシュ・スクリーン上に表示されます。このスプラッシュ・スクリーンを無効にして、ログイン時の CPU 使用率を低減させることが可能です。

この機能を無効にする際は、次のコマンドを実行します:

    gconftool-2 \
    --type bool \
    --set /apps/gnome-session/options/show_splash_screen false

もしくは、セッションの設定ツールを利用してログイン時にスプラッシュ・スクリーンを表示するというオプションを無効にしてください (【訳注】GNOME デスクトップの最新版で利用できないオプションです)。

#### パネルのアニメーションを無効にすることで CPU の使用率を減らす

ユーザがパネルを表示したり隠したりする際に、アニメーション効果を付与することが可能になっています。この効果を無効にする際は、次のコマンドを実行します:

    gconftool-2 \
    --type bool \
    --set /apps/panel/global/enable_animations false

もしくは、パネルの設定ツールからアニメーションを有効にするというオプションを無効にしてください (【訳注】GNOME デスクトップの最新版で利用できないオプションです)。

#### ファイル・マネージャのパフォーマンスを改善する

Nautilus ファイル・マネージャにはそのパフォーマンスを改善するために変更できる機能がいくつか含まれています。

##### パフォーマンスの設定を変更する

ファイル・マネージャにはパフォーマンスに関連する設定があります。パフォーマンスの設定はそれぞれ三つの値から一つ選択できるようになっています。これらの値の意味を次の表に記します:

値 | 説明
`常に (`always`)` | ローカルにあるファイルと他のファイルシステム上にあるファイルの両方に対して指定した操作を実行する
`ローカルのみ (`local_only`)` | ローカルのファイルシステム上にあるファイルに対してのみ指定した操作を実行する (この設定にすると CPU の使用率が減る)
`しない (`never`)` | 指定した操作を実行しない (この設定にすると CPU の使用率とネットワークのトラフィックが減る)

次の表はファイル・マネージャのパフォーマンス設定について説明しています。CPU の使用率を低減させたいのであれば、設定値を「`しない`」にしてください。

設定項目 | 説明
`show_icon_text` | アイコン表示の時にテキスト・ファイルの中身をプレビューするかどうかを指定する; テキスト・ファイルの中身をプレビューしない場合は次のコマンドを実行する:
    gconftool-2 \
    --type string \
    --set /apps/nautilus/preferences/show_icon_text never
もしくは、次の手順でも同様の効果を得られる: ファイル・マネージャのウィンドウから編集設定をクリックしてから、プレビュータブを選択する アイコン内のテキスト表示という設定からオプションを一つ選択する
`show_directory_item_counts` | フォルダの中にあるアイテム総数を表示するかどうかを指定する; フォルダの中にあるアイテムの総数を表示しない場合は次のコマンドを実行する:
    gconftool-2 \
    --type string \
    --set /apps/nautilus/preferences/show_directory_item_counts never
もしくは、次の手順でも同様の効果を得られる: ファイル・マネージャのウィンドウから編集設定をクリックしてから、プレビュータブを選択する アイテム数のカウントという設定からオプションを一つ選択する
`show_image_thumbnails` | 画像ファイルのサムネイルを表示するかどうかを指定する; サムネイルを表示しない場合は次のコマンドを実行する:
    gconftool-2 \
    --type string \
    --set /apps/nautilus/preferences/show_image_thumbnails never
もしくは、次の手順でも同様の効果を得られる: ファイル・マネージャのウィンドウから編集設定をクリックしてから、プレビュータブを選択する サムネイルの表示という設定からオプションを一つ選択する
`preview_sound` | サウンド・ファイルを演奏するかどうかを指定する; サウンド・ファイルを演奏しない場合は次のコマンドを実行する:
    gconftool-2 \
    --type string \
    --set /apps/nautilus/preferences/preview_sound never
もしくは、次の手順でも同様の効果を得られる: ファイル・マネージャのウィンドウから編集設定をクリックしてから、プレビュータブを選択する サウンド・ファイルの演奏という設定からオプションを一つ選択する

##### サイド・ペインやツールバー、場所バーを無効にする

ファイル・マネージャにはサイド・ペインやツールバーを表示しないようにする設定があります。ファイル・マネージャのパフォーマンスを改善する際は、サイド・ペインやツールバーを無効にしてみてください。

サイドペインを無効にする際は、次のコマンドを実行します:

    gconftool-2 \
    --type bool \
    --set /apps/nautilus/preferences/start_with_sidebar false

ツールバーを無効にする際は、次のコマンドを実行します:

    gconftool-2 \
    --type bool \
    --set /apps/nautilus/preferences/start_with_toolbar false

さらに場所バーも無効にすることができます。無効にした後に必要であれば、Ctrl L というキーボード・ショートカットで再び場所バーを表示することができるようになっています。

場所バーを無効にする際は、次のコマンドを実行します:

    gconftool-2 \
    --type bool \
    --set /apps/nautilus/preferences/start_with_location_bar false

##### デスクトップを無効にする

ファイル・マネージャには Nautilus を使ってデスクトップを管理するような設定があります。デスクトップを無効にしてパフォーマンスを改善することは可能ですが、デスクトップを無効にしてしまうと、次に示すように使い勝手が悪くなります:

- デスクトップの背景で使用するパターンや色をファイル・マネージャから変更できなくなる

- ゴミ箱のようなデスクトップ上のオブジェクトを利用できなくなる (これらのオブジェクトがデスクトップ上に表示されなくなる)

以上を承知の上でデスクトップを無効にする際は、次のコマンドを実行します:

    gconftool-2 \
    --type bool \
    --set /apps/nautilus/preferences/show_desktop false

### Ｘウィンドウ・システムのネットワーク・トラフィックを減らす

このセクションでは、GNOME デスクトップにおけるＸウィンドウ・システムのネットワーク・トラフィック (通信量) を低減させたい場合に指定することが可能な設定項目について説明します。

#### 少ないネットワーク・トラフィックでまかなえるテーマ・オプションを使う

リモート表示する際のＸプロトコルは、特定の範囲にあるピクセルがすべて同じ色であるならば、それらのピクセルを一個一個転送するようなことはしません。

そのため、Ｘウィンドウ・システムのネットワーク・トラフィックを低減させたいのであれば、複数の色ではなく単ー色を使用しているウィンドウ・フレームのテーマ・オプションを選択してみてください。具体的には次のようなオプションのいずれかを選択してみてください:

- Atlanta

- Esco

テーマ・オプションの変更方法について詳細は「performance-3」をご覧ください。

#### メニューの中にアイコンを表示しないようにしてネットワーク・トラフィックを減らす

メニュー項目の中にはその横にアイコンを表示するものがあります。もしそのアイコンが別のファイルシステム上に格納されていると、このアイコン表示の機能によってＸウィンドウ・システムのネットワーク・トラフィックが増大する可能性があります。さらに、リモート・ホスト上にパネルを表示する際に、Ｘウィンドウ・システムのネットワーク・トラフィックを増大させる可能性もあります。

この機能を無効にする方法について詳細は「performance-2」をご覧ください。

### 使用する色数を減らして表示の品質を改善する

現在あるコンピュータ・システムの多くは 24ビット色、すなわち 16,777,216色をサポートしています。しかしながら、依然として 8ビット色、すなわち 256色をサポートしているシステムを利用しているユーザもたくさんいます。

GNOME デスクトップでは「Websafe カラー・パレット」を利用しています。このパレットは 216 色からなる汎用的な目的で使用するパレットで、8ビット色をサポートしているようなシステムで最適な色を利用するために設計されたものです。しかしながら、GNOME デスクトップのビジュアルなコンポーネントの中には 24ビット色をサポートするシステム向けに設計されたものもあります。

次に示す表示上の問題が 8ビット色をサポートするシステムで発生する可能性があります:

- ウィンドウやアイコン、そして背景の画像などが粗く表示される場合があります。テーマや背景の画像、アイコンの多くは Websafe カラー・パレットにはない色を使っています。パレットに存在しない色は限りなく等価な色またはディザ法で近似した色で置き換えられます。このように色を置き換えることで見映えが粗くなってしまうのです。

- Websafe カラー・パレットを利用しないアプリケーションでは利用できる色数が少ないため、色に関するエラーが発生する場合があります。アプリケーションのユーザ・インタフェースで正しく色が表示されない場合があります。アプリケーションが色を確保できない場合、アプリケーション自身がクラッシュするものもあります。

- Websafe カラー・パレットを利用しているアプリケーションと利用していないアプリケーションとをユーザが切り替えようとすると、色のちらつきが発生する場合があります。Websafe カラー・パレットを利用していないアプリケーションでは独自のカラー・マップを使用しているかもしれません。独自のカラー・マップを使用すると、他のビジュアルなコンポーネントに色が表れず全く何も表示されなくなってしまう場合もあります。

次のセクションでは 8ビット色をサポートするコンピュータで GNOME デスクトップの外観を最適化する方法について説明します。

#### Websafe カラー・パレットを利用しているテーマ・オプションを使う

ウィンドウ・フレームのテーマ・オプションの中には Websafe カラー・パレットの色を利用するものがあります。`Bright` と `Esco` は Websafe カラー・パレットの色を利用しています。この二つのテーマ・オプションは 8ビット色で表示すると、ウィンドウのフレーム (境界) が粗く表示されます。8ビットの表示モードではこのテーマ・オプションから選択してください。

テーマ・オプションの変更方法について詳細は「performance-3」をご覧ください。

#### メニューの中にアイコンを表示しないようにして使用する色数を減らす

メニュー項目の中にはその横にアイコンを表示するものがあります。もしアイコンに含まれている色が Websafe カラー・パレットのものでない場合、この機能によって使用する色数が増える場合があります。

この機能を無効にする方法について詳細は「performance-2」をご覧ください。

#### スプラッシュ・スクリーンを無効にして使用する色数を減らす

スプラッシュ・スクリーンを無効にすることで GNOME デスクトップとそのアプリケーションで利用する色数を増やすことができます。

スプラッシュ・スクリーンを無効にする方法について詳細は「performance-6」をご覧ください。

#### 背景に単一色を指定することで使用する色数を減らす

デスクトップの背景に単一色を指定します。１個しか色を利用しないので GNOME デスクトップで使用する色数が減ることになります。

背景に単一色を指定する際は、次のコマンドを実行します:

    gconftool-2 \
    --type string \
    --set /desktop/gnome/background/picture_options none

    gconftool-2 \
    --type string \
    --set /desktop/gnome/background/color_shading_type solid

    gconftool-2 \
    --type string \
    --set /desktop/gnome/background/primary_color #16進表記の色

もしくは、外観の設定ツールにある背景で背景に単一色を指定することもできます。

## GNOME デスクトップ機能の無効化

この章では GNOME デスクトップが提供している特定の機能を使えなくする方法について説明します。

### GNOME デスクトップ機能の無効化について

GNOME デスクトップでは、ある特定の機能にアクセスすることを制限するための方法が提供されています。特定の機能を無効にするのは、システム管理者としてあなたのコンピュータに対する操作を制限させたいような場合に便利です。例えば、どこかの展示会で不特定多数のユーザによって操作される可能性があるデモ・マシンで、コマンドラインによる操作を無効にしたい場合などです。このように特定の機能を無効にすることを、「機能をロックダウンする」といいます。

GConf キーを機能の無効にセットします。GConf キーを指定する方法について詳細は「gconf-0」をご覧ください。または設定エディタというアプリケーションを使って、ユーザの設定ソースにある GConf キーを指定することも可能になっています。設定エディタについて詳細は「GConf エディタのマニュアル」をご覧ください。

### 手動でロックダウンを指定する

#### 画面のロックとログアウトを無効にする

画面のロックとログアウトの機能を無効にする時は `/apps/panel/global/disable_lock_screen` と `/apps/panel/global/disable_log_out` というキーをそれぞれ `true` にします。

画面のロックとログアウトの機能を無効にすると、次に示すアイテムが表示されなくなります:

- メイン・メニューにある画面のロックと `user` のログアウトというメニュー項目

- パネルへ追加ダイアログにあるにある画面のロックとログアウトという項目

- メニュー・バー・アプレットの中にあるシステム・メニューの画面のロックと `user` のログアウトというメニュー項目

加えて、パネル上にある画面のロックとログアウト・ボタンも表示されなくなります。

#### コマンドライン操作を無効にする

コマンドラインからの操作を無効にする時は `/desktop/gnome/lockdown/disable_command_line` というキーを `true` にします。

コマンドラインの操作を無効にすると、次に示すような変更がユーザ・インタフェースの中で発生します:

- アプリケーションの実行という項目が次のメニューから表示されなくなります:

  - メイン・メニュー

  - パネルへ追加ダイアログにあるアクションというサブメニュー

  - メニュー・バー・アプレットの中にあるシステム・メニュー

- 加えて、パネル上にある実効ボタンも表示されなくなります。

コマンドラインを無効にする場合は、端末を起動するメニュー項目も削除しておく必要があります。例えば、メニューから次のコマンドを含んだメニュー項目を削除した方が良いかもしれません:

- GNOME 端末コマンド (すなわち `/usr/bin/gnome-terminal`)

- `/usr/bin/xterm`

- `/usr/bin/setterm`

メニュー項目が次のメニューから削除されます:

- メイン・メニュー

- パネルへ追加 メニューから起動する

さらに、コマンドラインというアプレットも無効にしておいた方が良いでしょう。このコマンドラインというアプレットを無効にするには、`/apps/panel/global/disabled_applets` というキーを追加しておいてください。ここでコマンドラインというアプレットを無効すると、このコマンドライン・アプレットがメイン・メニューとパネルへ追加というダイアログで表示されなくなります。

#### パネルの設定を変更できないようにする

パネルの設定を変更できないようにする時は `/apps/panel/global/locked_down` というキーを `true` にします。

パネルの設定を変更できないようにすると、次に示すような変更がユーザ・インタフェースの中で発生します:

- パネルのポップアップ・メニューや引き出しのポップアップ・メニューから、次に示すメニュー項目が表示されなくなります:

  - パネルへ追加

  - このパネルを削除する

  - プロパティ

  - 新しいパネル

- ランチャ毎のポップアップ・メニューが利用できなくなります

- アプレット毎のポップアップ・メニューから次のメニュー項目が表示されなくなります:

  - パネルから削除

  - ロックする

  - 移動

- メイン・メニューのポップアップ・メニューが利用できなくなります

- ランチャのドラッグは利用できなくなります (ランチャをドラッグして何かしたり、ドラッグしたものを何かすることがすべてできなくなります)

- パネルのドラッグは利用できなくなります (パネルをドラッグして別の場所に移動することはできなくなります)

### ロックダウン・エディタについて

GNOME 2.14 から Pessulus という GUI を備えたロックダウン・エディタが提供されるようになり、デスクトップの設定を利用できないようにする作業が以前よりも簡単になりました (【訳注】お使いのバージョンによってロックダウン・エディタのユーザ・インタフェースが異なる場合もあります)。

#### 始めてみる

ロックダウン・エディタの起動方法は次のいずれかです:

- メイン・メニューのシステムシステム管理ロックダウン・エディタをクリックする

- 端末から `pessulus` コマンドを実行する

すると、いろいろなタブを持ったウィンドウが表示されます。これらのタブを使って、無効にすることが可能なデスクトップの設定をそれぞれ分類しています。次のセクションではそれぞれのタブについて説明し、無効にすることが可能な設定について概要を紹介します。

#### 機能を無効にする

ある設定を利用できないようにする場合、説明の横にあるチェックボックスがチェックされているか確認してください。ほとんどの設定はすぐに変更が反映されますが、中にはアプリケーションの再起動が必要なものもあります。

pessulus を起動すると、まず GConf の変更不可の設定ソースへの接続を試みます。この設定ソースは `xml:merged:`$prefix`/etc/gconf/gconf.xml.mandatory` です。pessulus を起動したユーザがこの設定ソースへアクセスする権限を持っていたら、チェックボックスの横に鍵のアイコンが表示されます。鍵のアイコンをクリックすると、その設定を変更可能また変更不可でトグルします。もし設定が変更不可ならば、通常のユーザはその設定を変更したり上書きすることはできません。pessulus を起動したユーザが変更不可の設定ソースにアクセスする権限が無い場合は、鍵のアイコンは表示されません。このような場合、すべて無効な設定が単にユーザのデフォルト設定ソースの中に格納され、後で gconf-editor や gconftool-2 といったツールを使って変更することができます。GConf と変更不可の設定ソースについて詳細は「 gconf-26」をご覧ください。

次のセクションでは、カテゴリ毎に無効にすることが可能な設定を簡単に説明します。

お使いのシステムによってはパッケージのインストール状況に応じ、ここで説明するカテゴリが存在しない場合もあります。

##### 全般

コマンドラインを無効にする

- ユーザが端末にアクセスしたり指定したコマンドを実行できないようにする (例えば、パネルにあるアプリケーションの実行ダイアログにアクセスできないようにする)

印刷を無効にする

- 印刷できないようにする (例えば、すべてのアプリケーションが提供する印刷ダイアログにアクセスできなくなる)

印刷設定を無効にする

- 印刷設定を変更できないようにする (例えば、すべてのアプリケーションが提供する印刷設定ダイアログにアクセスできないようになる)

ディスクへの保存を無効にする

- ファイルをディスクに保存できないようにする (例えば、すべてのアプリケーションが提供する別名で保存ダイアログにアクセスできないようになる)

##### パネル

パネル操作を利用不可にする

- チェックすると、パネルに対するいかなる変更も受け入れられなくなるが、パネルの上にあるアプレットはそれぞれロックダウンしてやる必要がある (パネルの再起動が必要である)

強制終了を無効にする

- チェックすると、ユーザはアプリケーションを強制的に終了させることができなくなる (終了ボタンにアクセスできなくなるので)

画面のロックを無効にする

- チェックすると、ユーザは画面をロックさせることができなくなる (画面のロックというメニュー項目にアクセスできなくなるので)

ログアウトを無効にする

- チェックすると、ユーザはログアウトできなくなる (ログアウトというメニュー項目にアクセスできなくなるので)

##### Epiphany ウェブ・ブラウザ

終了を無効にする

- Epiphany ウェブ・ブラウザを閉じることができなくなる

URL の入力を無効にする

- URL を入力する機能を利用できなくなる

ブックマークの編集を無効にする

- ブックマークを追加したり編集できなくなる

履歴の操作を無効にする

- 履歴情報のすべてにアクセスできなくする (進むと戻るのボタンが利用できなくなり、履歴ダイアログも開かなくなり、最近使用したブックマークの一覧も表示されなくなるので)

JavaScript 処理を無効にする

- ウィンドウ Chrome を介した JavaScript の制御が利用できなくなる

ツールバーの編集を無効にする

- ツールバーを編集できなくなる

強制的にフルスクリーン・モードにする

- フルスクリーン・モードに固定してしまう

メニューバーを隠す

- デフォルトでメニューバーを表示しない (F10 キーを使えばメニューバーにはアクセスできる)

安全ではないプロトコルを無効にする

- 危険なプロトコルからの読み込みを無効にする (安全なプロトコルとは `http` と `https` とする)

##### GNOME スクリーンセーバー

起動時に画面をロックする

- チェックすると、スクリーンセーバーを起動すると画面をロックする

ログアウトを許可する

- チェックすると遅延ログアウトするためのダイアログを表示するオプションを追加する (遅延時間は `logout_delay` キーに指定する)

ユーザの切り替えを許可する

- チェックすると、別のユーザ・アカウントに切り替えるためのダイアログを表示するオプションを追加する

## 隠しフォルダの一覧

この章では、GNOME デスクトップがユーザのホームに追加する隠しフォルダについて説明します。

隠しフォルダとはその名前がピリオド (.) で始まるフォルダ (ディレクトリ) のことです。appendixa-TBL-2 に GNOME デスクトップがユーザのホームに追加する隠しフォルダの一覧を示します:

## ユーザのホームにある隠しフォルダの一覧

フォルダ名 | 説明
`.config` | 環境変数の `XDG_CONFIG_HOME` がセットされていない時のデフォルトの場所 (ユーザ定義のメニューを `menus/applications.menu` というファイルに記述することが可能である)
`.fonts` | ユーザ専用のフォントを格納する場所 (フォントを Nautilus から `fonts:///` URI にドラッグしてインストールすると、フォントのコピーがこの場所に作成される)
`.esd_auth` | GNOME のサウンド・デーモンに対する認証クッキーを格納する場所 (GNOME のサウンド・デーモンは Enlightened Sound Daemon (ESD) である) 注意: これはフォルダではなく、ファイルである
`.gconf` | GConf のユーザ向けの設定ソースを格納する場所 (ユーザが任意の設定を指定すると、新しい設定情報がこの場所に追加される)
`.gconfd` | 次に示す GConf デーモンの詳細情報を格納する場所: 設定情報 任意の Interoperable Object Reference (IOR) が参照しているオブジェクトのロック情報 任意の IOR が参照しているオブジェクトの状態
`.gnome` | GConf リポジトリには保管されないユーザ専用のアプリケーション情報 (または GConf をサポートしていないアプリケーションの情報) を格納する場所 注意: このフォルダは廃止でかつ GNOME 1.x のアプリケーションのみが使用する
`.gnome2` | GConf リポジトリには保管されないユーザ専用のアプリケーション情報 (または GConf をサポートしていないアプリケーションの情報) を格納する場所で、例えば次のような情報を保管する: キーボード・ショートカットの情報 ウィンドウを配置する場所 パネルのランチャを表す `.desktop` エントリ・ファイル さらに、このフォルダにはアプリケーション専用のデータを格納するためのサブ・フォルダがいくつか含まれている
`.gnome2-private` | このフォルダは無視すること (現在のところ、このフォルダには何の機能もない)
`.local/share` | 環境変数の `XDG_DATA_HOME` がセットされていない時のデフォルトの場所 (ユーザ定義のデスクトップ・ファイルを `applications` というサブ・フォルダの中に作成することが可能であり、ユーザ定義の MIME 型を `mime/packages/Overrides.xml` というサブ・フォルダの中に作成することが可能である)
`.metacity` | Metacity ウィンドウ・マネージャのセッション・データを格納する場所
`.nautilus` | ファイル・マネージャのユーザ専用データを格納する場所で、例えば次のような情報を保管する: ユーザが作業したフォルダのメタデータ ユーザが追加した Nautilus のエンブレム Nautilus のデスクトップ画像
`.themes` | テーマ・オプションやウィンドウ・フレーム、またはアイコンなどのユーザ向けテーマ・オプションを保管する場所 (ユーザは外観の設定ツールを使ってテーマを追加できる)
`.thumbnails` | ユーザ専用の画像のサムネイルを格納する場所で、画像のサムネイルはファイル・マネージャで使用する (ちなみに、ファイル・マネージャはこのサムネイルを生成しないように制限する設定も提供している)

## SMB プリンタを設定する際のセキュリティ上の注意事項

この章では、Windows ネットワーク共有で使用するプリンタの設定においてセキュリティに関連する注意事項を説明します。

Windows のネットワーク共有は Samba または SMB 共有として参照されます。この SMB 共有上で任意のプリンタを設定する際は、印刷キューに対するユーザ名とパスワードを指定しなければなりません。

印刷キューに対するユーザ名とパスワードは `/etc/cups/printers.conf` という暗号化されていない通常のテキスト・ファイルの中に保管されます。このファイルは root 権限を持つユーザに対してのみ読み込み専用の権限が付与されているので、他のユーザが root 権限を取得した場合、印刷キューに対するユーザ名とパスワードを入手できてしまいます。

重大なセキュリティ侵害の可能性からくるインパクトを減らすには、これらのユーザ名とパスワードを印刷キューのためだけに利用するということを保証しなければなりません。これにより、認証していない印刷キューの使用を制限すると同時にセキュリティ情報の漏洩を未然に防ぐということにもつながります。

## 用語の解説

`.desktop` ファイル
`.directory` ファイル
`.omf` ファイル
アプリケーション・レジストリ

アプリケーション・レジストリとは、アプリケーションを登録するいろいろなデスクトップ・エントリのファイルの集合です。GNOME デスクトップで、このアプリケーション・レジストリが保管されている場所は `$XDG_DATA_DIRS:$XDG_DATA_HOME/applications/` です。

デスクトップ・エントリのファイル

メニュー項目に相当する情報を提供するためのデータ・ファイルの一種です。デスクトップ・エントリのファイルには、メニュー項目として表示する名前や実行するコマンド、メニュー項目に表示するアイコンなどのような詳細情報を指定します。このファイルの拡張子は `.desktop` です。

ディレクトリ・エントリのファイル

メニューに相当する情報を提供するためのデータ・ファイルの一種です。ディレクトリ・エントリのファイルには、メニューとして表示する名前やツールチップの説明、メニューに表示するアイコンなどのような詳細情報を指定します。このファイルの拡張子は `.directory` です。

GConf の設定ソース

GConf のリポジトリの中にある設定情報を保管する場所の一つです。例えば、`xml:readonly:/etc/gconf/gconf.xml.defaults` という設定ソースがあります。

GConf の設定キー

GConf リポジトリの中にある要素の一つで、アプリケーションの設定項目に相当します。例えば、`/apps/gnome-session/options/show_splash_screen` というキーはセッションの設定ツールにあるログイン時にスプラッシュ・スクリーンを表示するというオプションに相当します。

GConf のパス・ファイル

いろいろな GConf の設定ソースを羅列したファイルで、羅列する順番が設定ソースを検索する優先順位になります。

GConf スキーマ

スキーマ・キーとスキーマ・オブジェクトに対する総称です。

GConf のスキーマの定義ファイル

GConf のスキーマの定義ファイルには特定のアプリケーションで使用するキーが羅列されており、それぞれのキーに関する特徴が定義されています。GConf スキーマは、このスキーマの定義ファイルから生成されます。このファイルの拡張子は `.schemas` です。

GConf スキーマ・キー

設定キー毎にスキーマ・オブジェクトを格納する際に使用するキーです。例えば、`/schemas/desktop/gnome/interface/font_name` は `/desktop/gnome/interface/font_name` という設定キーに対するスキーマ・キーです。

GConf スキーマ・オブジェクト

GConf の設定ソースに保管されている要素の一つで、設定キーに関する情報 (デフォルト値や設定キーの説明など) を格納しています。

Glob パターン

Glob パターンは特殊な文字 (`*` とか `?`) を使ってファイル名を検索するためのパターンです。MIME 型のシステムではこの Glob パターンを使って、ファイル名や拡張子に応じた MIME 型を割り当てます。

IOR

Interoperable Object Reference (略して IOR) は CORBA オブジェクトへの参照の一つです (実体は文字列)。IOR は任意のホスト名やポート番号を符号化したもので、オブジェクトを管理するために送信されるデータです。さらに IOR にはそのオブジェクトを識別するためのオブジェクト・キーが一つ格納されています。

マジック・ルール

マジック・ルールは、任意のファイルの先頭に何が格納されているか (文字列だったりバイナリ・データだったり) を指定することによって MIME 型を定義するものです。このデータを検索するためのオフセットをマジック・ルールの中で定義しておきます。

メニューの定義ファイル

メニューの定義ファイルは GNOME のメニューバーの中で使用するメニューの階層構造を定義したものです。

MIME

Multipurpose Internet Mail Extension の略で、多目的インターネットメール拡張という規格です。

MIME 型のソース XML ファイル

MIME 型のソース XML ファイルは、いろいろな種類のファイルに対してどのように MIME 型を解決するかを定義したものです。MIME 型を解決する方法が三つあります: ファイルの拡張子を調べる方法 (Glob パターン)、マジック・ルールを使う方法、そして XML の名前空間を利用する方法です。MIME 型のソース XML ファイルは `$XDG_DATA_DIRS:$XDG_DATA_HOME/mime/packages` というフォルダの中に格納されています。

MIME 型

MIME 型はファイルの形式を明らかにするものです。MIME 型を使うと、アプリケーションはファイルを読むことができます (MIME 型から、どのようにファイルを読めばよいかが分かるので)。例えば、メール・クライアントは `image/png` という MIME 型を利用して、メールに添付されているファイルが PNG 画像 (Portable Networks Graphic) であることを知ることができます。

MIME 型のデータベース

MIME 型のデータベースは、デスクトップ環境に応じていろいろな MIME 型を登録するファイルの集合です。MIME 型のデータベースが格納されている場所は `$XDG_DATA_DIRS:$XDG_DATA_HOME/mime` です。

OMF ファイル

Open Source Metadata Framework ファイル (略して OMF) は、ドキュメントやマニュアルの XML ファイルに関連づけられたファイルです。この OMF ファイルにはヘルプ・ブラウザが使用するドキュメントに関する情報が格納されています。OMF ファイルの拡張子は `.omf` です。

PAM

Pluggable Authentication Modules (略して PAM) というユーザ認証方法の一つです。

スクリーンセーバー

スクリーンセーバーは、モニタの画面が使用されなくなったらそれを何か別の画像で置きかえるアプリケーションです。GNOME デスクトップにおけるスクリーンセーバー・アプリケーションは XScreenSaver です。

スクリーンセーバーのディスプレイ

スクリーンセーバーのディスプレイは、モニタの画面が使用されなくなったらユーザの画面に何か別の画像を表示するアプリケーションです。

UDP

User Datagram Protocol (略して UDP) です。

URI

Uniform Resource Identifier (略して URI) はファイル・システムまたはインターネット上にある特定の場所を表す文字列です。例えば、ウェ・ページのアドレスは URI の一つです。

Websafe カラー・パレット

Websafe カラー・パレットは 216 色からなる汎用的な目的で使用するパレットです。このカラー・パレットは 8ビット色をサポートしているようなシステムで最適な色を利用するために設計されたものです。このカラー・パレットは Netscape カラー・パレットとか Netscape カラー・キューブとも呼ばれています。