web-dev-qa-db-ja.com

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

これら2つのファイルは同じ機能を持っているようです。 2つの違いがある場合、その違いは何ですか?

62
freedrull

~/.Xdefaultsは、Xリソースを保存する古い方法です。このファイルは、Xlibプログラムが開始されるたびに再読み取りされます。 X11をネットワーク経由で使用する場合、ファイルはプログラムと同じファイルシステムに存在する必要があります。

~/.Xresourcesの方が新しいです。 xrdbとともにX11ルートウィンドウのRESOURCE_MANAGERプロパティに読み込まれます。プログラムがリソースを検索するときは常に、RESOURCE_MANAGERから直接読み取られます。

このプロパティが存在しない場合、Xlibはプログラムの起動ごとに.Xdefaultsを読み取る古い方法にフォールバックします。ほとんどのディストリビューションは~/.Xresourcesが存在する場合は自動的にロードするため、xrdbを手動で実行したことがなくても.Xdefaultsが無視されることに注意してください。

新しいメソッドの利点は、xrdbを1回呼び出すだけで十分であり、ローカルまたはリモートにかかわらず、このディスプレイで実行されているすべてのプログラムがリソースを利用できることです。 (名前~/.Xresourcesは慣例にすぎません。xrdbを使用して、.Xdefaultsも含めて任意のファイルをロードできます。)

XlibプログラミングマニュアルP.441:

X11R2より前のバージョンでは、Xリソースの設定はユーザーのホームディレクトリの.Xdefaultsファイルから読み込まれ、オプションでXクライアントが実行されているマシンで読み込まれたため、複数のファイルを維持することは困難でした。

その後、xrdbプログラムは、ユーザーのリソース設定を.Xresourcesから現在のXサーバーのルートウィンドウのXA_RESOURCE_MANAGERプロパティに格納するように作成されたため、同じサーバーに接続されているすべてのクライアントがそれらにアクセスできます。ユーザーが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ディレクトリは、プログラムの名前が付けられたファイルがある場合、プログラムの起動時にチェックされます。たとえば、(Arch Linux上の)XTermは以下を使用します。

    • /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

    App-defaultsファイルは通常、プログラム自体とともに/usr/shareにインストールされます。管理者による上書きは/etcに移動します。


上記のすべては、X.orgツールキットのドキュメント–記事X Toolkit Intrinsics-C Language Interface、セクションリソースデータベースのロードに詳細に記載されています。

残念ながら、Xリソースについて説明している最近のユーザーガイドは見つかりませんでした。主に、それらは2012年には無関係であるためです。しかし、履歴情報(読む:ひどく時代遅れ)については、X Window SystemユーザーのX Window SystemのX11 R3およびR4のガイドセクション9:リソースの設定(181ページ以降)。

70
user1686