XDG Base Directory Specification
「XDG Base Directory Specification」はデスクトップ環境における標準的なフォルダー構造を規定した仕様です。「XDG Base Directory Specification」仕様を見ると、Ubuntuのフォルダー構造の一部が見えてきます。
Ubuntu 12.10のリリースノートを見ると、GNOME 3.6を採用していることが分かります。
また、GNOME 3.6のリリースノートを見ると、XDG Base Directory Specificationに準拠したことが分かります。
XDG Base Directory Specificationの目的
例えば各アプリは、ユーザー固有の設定ファイルや各データをユーザーのホームフォルダー直下に隠しファイル(フォルダー)として保存することが多く、以下のように煩雑な状況になっています。また「~/.fonts」や「~/.icons」などもユーザーのホームフォルダー直下に作成され、様々な種類のデータが混在した状態になっています。
標準的な仕様を設けることで一貫性のある方法を提供し、このような状況を整理しようというのが、「XDG Base Directory Specification」の目的です。
対応状況
アプリの対応状況はバラバラで、まだ足並みは揃っていません。「XDG Base Directory Specification」は、各々のアプリがこの仕様に対応する必要があります。
多くのGNOME標準アプリは「XDG Base Directory Specification」に対応しています。
Ubuntu 12.04ではこの仕様に関する記述が見つかりませんでしたが、多くのGNOME標準アプリが対応しているようです。
Ubuntu12.04/Ubuntu 12.10共に似たような状況です。
今後この仕様に準じた実装になっていくでしょう。
環境変数
「XDG Base Directory Specification」では環境変数にフォルダーパスを指定することで、任意のフォルダーを指定できるようになっています。環境変数を設定しなかった場合は、デフォルトのフォルダーパスが利用されます。
XDG Base Directory Specificationのフォルダー
「XDG Base Directory Specification」が規定するフォルダーです。$XDG_DATA_HOME
アプリのデータを置くフォルダーのパスです。デフォルトでは「~/.local/share」がパスになります。
パスから分かるようにユーザー固有のデータです。
アプリのデータは、テーマファイルやサウンドファイル等のデータが該当します。
ゴミ箱内のファイルもこのフォルダー内に置かれます。
隠しフォルダーですので、ユーザーが作成するドキュメント等はここに含まれません。
このフォルダーの構造は、「/usr/share」と似たようなフォルダー構造になります。
「/usr/share」のユーザー固有版といったところでしょうか。
直接アプリのデータを変更する場合を除いて、ユーザーが直接このフォルダー内にアクセスすることはありません。
Ubuntuでは「~/.local/share」がパスになります。
$XDG_CONFIG_HOME
アプリの設定ファイルを保存するフォルダーです。デフォルトでは「~/.config」がパスになります。
パスから分かるようにユーザー固有のデータです。
Ubuntuでは「~/.config」がパスになります。
$XDG_DATA_DIRS
「$XDG_DATA_HOME」に加え、アプリのデータを検索するフォルダーのパスリストが指定されます。各パスは「:」で区切られます
デフォルトでは「/usr/local/share/:/usr/share/」がパスリストになります。
このパスリストはアプリのデータを検索するパスの順番も兼ねています。
従ってアプリのデータを検索する順番は、「$XDG_DATA_HOME」:「$XDG_DATA_DIRS」ということになり、ユーザー固有のアプリのデータが優先されます。
Ubuntuでは「/usr/share/ubuntu:/usr/share/gnome:/usr/local/share/:/usr/share/」がパスリストになります。
$XDG_CONFIG_DIRS
「$XDG_CONFIG_HOME」に加え、アプリの設定ファイルを検索するフォルダーのパスリストが指定されます。各パスは「:」で区切られます
デフォルトでは「/etc/xdg」がパスリストになります。
このパスリストはアプリが設定ファイルを検索するパスの順番も兼ねています。
従ってアプリの設定ファイルを検索する順番は、「$XDG_CONFIG_HOME」:「$XDG_CONFIG_DIRS」ということになり、ユーザー固有のアプリの設定が優先されます。
Ubuntuでは「/etc/xdg/xdg-ubuntu:/etc/xdg」がパスリストになります。
$XDG_CACHE_HOME
アプリのキャッシュデータを置くフォルダーのパスです。デフォルトでは「~/.cache」がパスになります。
パスから分かるようにユーザー固有のデータです。
キャッシュデータですから、削除してもアプリの動作には影響がありません。
ただしキャッシュデータを削除する場合は、そのユーザーがログインしていない状態で行ったほうが良いでしょう。
Ubuntuでは「~/.cache」がパスになります。
$XDG_RUNTIME_DIR
アプリが実行時に生成するファイルを置くフォルダーのパスです。Ubuntu 12.04では定義されておらず、「/tmp」が使われているようです。
Ubuntu 12.10では「/run/user/ユーザー名」がパスになります。
アプリが実行時に生成するファイルは、ソケットやパイプ等が該当します。
ユーザーのホームフォルダ以下に設定されることはありませんが、ユーザーごとにフォルダーが別れており、そのユーザー専用のファイルになります。