xorg – .Xresources と .Xdefaults の違いは何ですか?

xorg

この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-8enのように)

  • 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


タイトルとURLをコピーしました