X リソース
X リソースファイル はユーザーレベルの設定ドットファイルで、通常は ~/.Xresources に存在します。X クライアントアプリケーションの設定パラメータである X resources を設定するのに使われます。
特に次の目的で使用できます:
- ターミナル環境の設定(例:ターミナルの色)
- DPI やアンチエイリアス、ヒンティングなど X フォントの設定
- X カーソルテーマの変更
- xscreensaver のテーマ設定
- 低水準 X アプリケーションの設定 (xorg-xclock, xpdf, rxvt-unicode など)
インストール
設定
X(7) § RESOURCES および XrmGetDatabase(3) § FILE SYNTAX には、X リソースのメカニズムとファイル構文に関する詳細情報が記載されています。
~/.Xresources は一般的なファイル名であり、xrdb はこれを独自に扱っているわけではありません。他のファイル名(例えば ~/.config/X11/Xresources や ~/.config/X11/Xresources.d/application-name)を使用することもできます(#サンプルおよび#インクルードファイルも参照)。
基本構文
X リソースファイルの構文は以下のような リソース行 のシーケンスです:
application_name.Class.resourceName: value
application_name.resourceName: value
Class.resourceName: value
application_name*resourceName: value
*resourceName: value
application_name と Class のサブストリングにはドット(.)は含まれませんが、resourceName のサブストリングにはドットが含まれる場合があります。例えば、Dialog.bodyFont は XScreenSaver の内部リソースであり、本文フォントおよびフォールバックフォントを設定するために指定されます:
xscreensaver-auth.default.Dialog.bodyFont: times new roman 12, dejavu serif 12
- application_name
- アプリケーションの名前、例えば
urxvt,xpdf,xtermなど。 インスタンス名 とも呼ばれます。
- Class
- リソースをまとめるために使用される分類。クラス名は通常大文字です。
- resourceName
- 値を設定するリソースの名前。リソースは通常、連結された大文字と小文字で表されます。
- value
- リソースの実際の値。これには次の3種類があります:
- 整数(整数値)
- ブール値(true/false、yes/no、on/off)
- 文字列(文字の列)— 例えば単語(
white)、色(#ffffff)、またはパス(/usr/bin/firefox)
- 区切り文字
- ドット(
.)は tight binding であり、直近のコンポーネントを分離するために使用されます(つまり、階層の各ステップを示す)。上記の例では、アプリケーション名から始まり、クラスに降り、最後にリソース自体に降ります。 - アスタリスク(
*)は loose binding であり、何らかのコンポーネントを表すために使用されます(含まれない場合もあります)。 - コロン(
:)はリソース名と値を分離するために使用されます。
- リソースファイル構文の観点から見ると、コロン(
:)の前にあるものはすべてリソース名です。ユーザーの視点からは、リソース は最も右側のコンポーネントのみを指すことがよくあります。言い換えると、リソース名 は アプリケーション名、Class、および リソース名 のサブストリングから成る文字列です。これが混乱の原因になるかもしれません。 - リソースの命名スキーマは完全にアプリケーションに依存します。あるアプリケーションが
application_name.Class.resourceNameを使用する場合、別のアプリケーションはapplication_name.resourceNameおよびClass.resourceNameのみを理解するかもしれません。
ワイルドカードマッチング
クエスチョンマーク(?)とアスタリスク(*)はワイルドカードとして使用でき、多くの異なるアプリケーションや要素に適用できる単一のルールを書くのが簡単になります。? は任意の単一のコンポーネント名に一致し、* は任意の数の中間コンポーネントを含むものに一致します。
前述の例を使用して、クラス名に Dialog を含むすべてのプログラムに同じフォントを適用したい場合(XScreenSaver に限らず)、次のように書くことができます:
?.Dialog.headingFont: -*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1
クラスに関係なく、headingFont リソースを含むすべてのプログラムに同じルールを適用したい場合は、次のように書くことができます:
*headingFont: -*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1
- クエスチョンマーク(
?)はコンポーネント名のようなものであるため、その隣には バインディング文字(ドット(.)またはアスタリスク(*))が必要です。 - アスタリスク(
*)は バインディング文字 そのものであり、その隣にドットを置く必要はありません。また、ファイル処理中にドットとアスタリスクの連続が単一のアスタリスクに置き換えられます。
詳細については XrmGetResource(3) § MATCHING RULES を参照してください。
コメント
感嘆符(!)で始まる行は無視されます。例えば:
! 次のルールはコメントアウトされているため無視されます !Xft.antialias: true
インクルードファイル
リソース設定を複数のファイルに分けるため(例:各アプリケーションに独自のファイルを使用するため)、C preprocessor の #include ディレクティブ を使用します:
~/.config/X11/Xresources
#include "Xresources.d/fonts" #include "Xresources.d/rxvt-unicode" #include "Xresources.d/xscreensaver" #include "Xresources.d/xterm"
#include で参照されるファイルが適用される設定ファイルのディレクトリから到達できない場合は、検索するディレクトリを渡す必要があります:
$ xrdb -load -I${HOME}/.config/X11 ~/.Xresources
デフォルト設定
インストールされている X11 アプリケーションのデフォルト設定を確認するには、/usr/share/X11/app-defaults/ を参照してください。
プログラム固有のリソースに関する詳細情報は通常、プログラムの man ページに記載されています。xterm(1) § RESOURCES はその良い例であり、X リソースとそのデフォルト値のリストが含まれています。
現在ロードされているリソースを確認するには:
$ xrdb -query -all
サンプル
- コンソールのカラー出力#ターミナルエミュレータ
- カーソルテーマ#X リソース
- フォント設定#fontconfig をサポートしていないアプリケーション
- rxvt-unicode#設定
- xpdf(1) § OPTIONS
- Xterm#設定
- klassiker (mrdotx) — Rxvt-unicode パッチ開発者のドットファイル
使用法
リソースファイルの読み込み
リソースは X サーバーに保存されるため、一度だけ読み込めばよいです。また、リモート の X11 クライアント(例えば SSH 経由で転送 されるもの)からもアクセスできます。
リソースファイル(一般的な .Xresources など)を読み込み、現在の設定を置き換えます:
$ xrdb ~/.Xresources
リソースファイルを読み込み、現在の設定にマージします:
$ xrdb -merge ~/.Xresources
- ほとんどの ディスプレイマネージャはログイン時に
~/.Xresourcesファイルを読み込みます。 - 古い
~/.Xdefaultsファイルは X11 プログラムが開始されるときに読み込まれますが、現在のセッションで xrdb が使用されていない場合に限ります。 [1]
xinitrc
デフォルトの xinitrc のコピーを .xinitrc として使用している場合、それはすでに ~/.Xresources をマージしています。
カスタムのものを使用している場合は、次を追加します:
.xinitrc
[[ -f ~/.Xresources ]] && xrdb -merge -I$HOME ~/.Xresources
~/.xinitrc 内で xrdb コマンドをバックグラウンドにしないでください。そうしないと、xrdb の後に起動したプログラムがリソースを読み込む前にリソースを探すことがあります。リソース値の取得
リソースの値を取得したい場合(例えば、bash スクリプトで使用したい場合)、xgetresAUR を使用できます:
$ xgetres xscreensaver.Dialog.headingFont -*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1
トラブルシューティング
解析エラー
GDM などのディスプレイマネージャは xrdb で --nocpp 引数を使用することがあります。
xrdb -query からの出力が無い
xrdb -query が何も出力しないことも珍しくありません。上記の リソースファイルのロード と xinitrc に従ってみてください。 また、そこに記載されているファイルの一部が空である可能性があることに注意してください。
参照
- Using the Xdefaults File - X が Xdefaults ファイルをどのように解釈するのか説明した記事
- Overlooked Points of X Resources by Thomas Dickey