この2つのファイルは同じ機能を持っているようです。もしあれば、この2つの違いは何でしょうか?
63 freedrull 2011-02-10
~/.Xdefaults
は、Xリソースを保存する古い方法です。このファイルは、Xlib プログラムが起動されるたびに再読込されます。X11 をネットワーク経由で使用する場合、このファイルはプログラムと同じファイルシステム上に存在しなければなりません
~/.Xresources
の方が新しい。X11のルートウィンドウのRESOURCE_MANAGER
プロパティにxrdb
と一緒に読み込まれます。どのプログラムでもリソースを探すときはいつでも、RESOURCE_MANAGER
から直接読み込まれます
このプロパティが存在しない場合、Xlibはプログラムの起動時に.Xdefaults
を読み込む古い方法に戻ります。ほとんどのディストリビューションでは、~/.Xresources
があれば自動的に読み込まれるので、xrdb
を手動で実行したことがなくても.Xdefaults
は無視されてしまうことに注意してください
新しいメソッドの利点は、xrdb
を一度だけ呼び出すだけで十分であり、リソースはローカルでもリモートでも、このディスプレイ上で実行されているどのプログラムでも利用可能になるということです。(~/.Xresources
という名前は単なる慣習に過ぎません – xrdb
を使って .Xdefaults
であっても、どんなファイルでもロードすることができます)
Xlib プログラミングマニュアル P.441
X11R2 以前は、X リソースの設定は、ユーザーのホームディレクトリにある .Xdefaults ファイルと、X クライアントが実行されているマシン上の任意の場所にある .Xdefaults ファイルから読み込まれていたので、複数のファイルを維持するのは大変でした
その後、.Xresourcesにあるユーザーのリソース設定を、現在のXサーバーのルートウィンドウのXA_RESOURCE_MANAGERプロパティに格納して、同じサーバーに接続しているすべてのクライアントがアクセスできるようにするためのxrdbプログラムを作成しました。ユーザーが xrdb を呼び出してプロパティを設定していない場合は、.Xdefaults が読み込まれます
ウィキペディア
[….] Xリソースは、すべての画面に適用されるか、特定の画面に適用されるかによって、2つの標準的な場所に保存されます
- スクリーン0のルートウィンドウのRESOURCE_MANAGERプロパティを変更します
- 任意の画面のルートウィンドウのSCREEN_RESOURCESプロパティを指定します
それだけでは終わらない
- 変数
$XENVIRONMENT
もあり、これは設定されていない場合は~/.Xdefaults-hostname
がデフォルトとなります。これは.Xdefaults
と同じように使われますが、RESOURCE_MANAGER
があるかどうかに関係なく常に読み込まれます。.Xdefaults-hostname
ファイルを使ってマシン固有の設定を保持し、グローバルな設定にはxrdb
を使うことができます
以下の項目#4と#5は、GTK 3や他のツールキットではなく、純粋なXlibプログラムでのみ使用されているようです
4 番目の場所は、環境変数
$XAPPLRESDIR
が指すディレクトリです。(奇妙なことに、この変数が設定されていない場合、$HOME
がデフォルトとして使用されます。) プログラムが起動されると、以下のファイルが存在するかどうかを調べます(ファイル名はプログラムのクラス名と同じです)$XAPPLRESDIR/$LC_CTYPE/XTerm
$XAPPLRESDIR/language/XTerm
$XAPPLRESDIR/XTerm
(
language
は、最初の要素以外をすべて取り除くことで$LC_CTYPE
から派生します; 例えば、en_US.utf-8
→en
のように)5番目の場所は、システム全体の “app-defaults “ディレクトリです。ここでも、app-defaults ディレクトリはプログラムの起動時に、プログラムにちなんだ名前のファイルがあるかどうかチェックされます。例えば、XTerm (Arch Linux上) は以下のように使用しています
/etc/X11/$LC_CTYPE/app-defaults/XTerm
/etc/X11/language/app-defaults/XTerm
/etc/X11/app-defaults/XTerm
/usr/share/X11/$LC_CTYPE/app-defaults/XTerm
/usr/share/X11/language/app-defaults/XTerm
/usr/share/X11/app-defaults/XTerm
アプリのデフォルトファイルは通常、プログラム自体と一緒に
/usr/share
にインストールされます
上記で述べたことはすべて、X.org ツールキットのドキュメント – 記事 X Toolkit Intrinsics – C Language Interface, セクション リソースデータベースの読み込み に詳細に書かれています
残念ながら、私は X のリソースについて説明している最近のユーザーガイドを見つけることができませんでした。しかし、歴史的な (読み方: 恐ろしく古い) 情報については、X Window System の X11 R3 および R4 用の X Window System ユーザーズガイド 第 9 章: リソースの設定 (181 ページから) を参照してください
74 user1686 2011-02-10