「X リソース」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎参照: 記事の追加)
(→‎使用方法: 記事を更新)
22行目: 22行目:
 
{{pkg|xorg-xrdb}} パッケージを[[インストール]]してください。
 
{{pkg|xorg-xrdb}} パッケージを[[インストール]]してください。
   
== 使用方法 ==
+
== 設定 ==
   
  +
{{man|7|X|RESOURCES}} および {{man|3|XrmGetDatabase|FILE SYNTAX}} には、''X リソース''のメカニズムとファイル構文に関する詳細情報が記載されています。
=== リソースファイルのロード ===
 
   
  +
{{ic|~/.Xresources}} は一般的なファイル名であり、{{ic|xrdb}} はこれを独自に扱っているわけではありません。他のファイル名(例えば {{ic|~/.config/X11/Xresources}} や {{ic|~/.config/X11/Xresources.d/''application-name''}})を使用することもできます([[#サンプル]]および[[#インクルードファイル]]も参照)。
リソースは X サーバーに保存されるため、一度だけ読み込む必要があります。また、リモートの X11 クライアントからもアクセスできます (SSH 経由で[[Secure Shell#X11 フォワーディング|フォワーディング]]される場合など)。
 
   
  +
=== 基本構文 ===
リソースファイルをロードして現在の設定を置き換えるには:
 
   
  +
''X リソース''ファイルの構文は以下のような ''リソース行'' のシーケンスです:
$ xrdb ''~/.Xresources''
 
   
  +
application_name.Class.resourceName: value
リソースファイルをロードして現在の設定とマージするには:
 
  +
application_name.resourceName: value
  +
Class.resourceName: value
  +
application_name*resourceName: value
  +
*resourceName: value
   
  +
{{ic|application_name}} と {{ic|Class}} のサブストリングにはドット({{ic|.}})は含まれませんが、{{ic|resourceName}} のサブストリングにはドットが含まれる場合があります。例えば、{{ic|Dialog.bodyFont}} は [[XScreenSaver]] の内部リソースであり、本文フォントおよびフォールバックフォントを設定するために指定されます:
$ xrdb -merge ''~/.Xresources''
 
   
  +
xscreensaver-auth.default.Dialog.bodyFont: times new roman 12, dejavu serif 12
{{Note|
 
* 大抵の[[ディスプレイマネージャ]]はログイン時に {{ic|~/.Xresources}} ファイルをロードします。
 
* 古い {{ic|~/.Xdefaults}} ファイルは X11 プログラムが起動したときに読み込まれます。ただし現在のセッションで ''xrdb'' が使われていない場合に限ります [https://groups.google.com/forum/#!msg/comp.windows.x/hQBEdql8l-Q/hF3DETcIHGwJ]。
 
}}
 
   
  +
;application_name
=== xinitrc ===
 
  +
:アプリケーションの名前、例えば {{ic|urxvt}}, {{ic|xpdf}}, {{ic|xterm}} など。 ''インスタンス名'' とも呼ばれます。
   
  +
;Class
デフォルトの [[xinitrc]] のコピーを {{ic|.xinitrc}} として使っている場合、既に {{ic|~/.Xresources}} はマージされています。
 
  +
:リソースをまとめるために使用される分類。クラス名は通常大文字です。
   
  +
;resourceName
カスタムした {{ic|.xinitrc}} を使っている場合、以下の行を追加してください:
 
  +
:値を設定するリソースの名前。リソースは通常、連結された大文字と小文字で表されます。
   
  +
;value
<nowiki>[[ -f ~/.Xresources ]] && xrdb -merge -I$HOME ~/.Xresources</nowiki>
 
  +
:リソースの実際の値。これには次の3種類があります:
  +
:* 整数(整数値)
  +
:* ブール値(true/false、yes/no、on/off)
  +
:* 文字列(文字の列)— 例えば単語({{ic|white}})、色({{ic|#ffffff}})、またはパス({{ic|/usr/bin/firefox}})
   
  +
;区切り文字
{{Note|{{ic|~/.xinitrc}} の中で xrdb コマンドをバックグラウンドで実行してはいけません。リソースがロードされる前に xrdb の後に起動したプログラムがリソースを検索してしまう可能性があります。}}
 
  +
* ドット({{ic|.}})は ''tight binding'' であり、直近のコンポーネントを分離するために使用されます(つまり、階層の各ステップを示す)。上記の例では、アプリケーション名から始まり、クラスに降り、最後にリソース自体に降ります。
  +
* アスタリスク({{ic|*}})は ''loose binding'' であり、何らかのコンポーネントを表すために使用されます(含まれない場合もあります)。
  +
* コロン({{ic|:}})はリソース名と値を分離するために使用されます。
   
  +
{{Note|
===デフォルト設定===
 
  +
* リソースファイル構文の観点から見ると、コロン({{ic|:}})の前にあるものはすべてリソース名です。ユーザーの視点からは、''リソース'' は最も右側のコンポーネントのみを指すことがよくあります。言い換えると、''リソース名'' は ''アプリケーション名''、''Class''、および ''リソース名'' のサブストリングから成る文字列です。これが混乱の原因になるかもしれません。
インストールした X11 アプリのデフォルト設定を確認したいときは、{{ic|/usr/share/X11/app-defaults/}} の中を見て下さい。
 
  +
* リソースの命名スキーマは完全にアプリケーションに依存します。あるアプリケーションが {{ic|application_name.Class.resourceName}} を使用する場合、別のアプリケーションは {{ic|application_name.resourceName}} および {{ic|Class.resourceName}} のみを理解するかもしれません。
  +
}}
   
  +
=== ワイルドカードマッチング ===
プログラムの resources に関する詳細はプログラムの man ページに大抵記述されています。xterm の man ページなどが良い例で、X resources とデフォルト値のリストが載っています。
 
   
  +
クエスチョンマーク({{ic|?}})とアスタリスク({{ic|*}})はワイルドカードとして使用でき、多くの異なるアプリケーションや要素に適用できる単一のルールを書くのが簡単になります。{{ic|?}} は任意の単一のコンポーネント名に一致し、{{ic|*}} は任意の数の中間コンポーネントを含むものに一致します。
現在ロードされている resources を確認するには:
 
$ xrdb -query -all
 
   
  +
前述の例を使用して、クラス名に {{ic|Dialog}} を含むすべてのプログラムに同じフォントを適用したい場合(XScreenSaver に限らず)、次のように書くことができます:
===Xresources の構文===
 
====基本構文====
 
Xresources ファイルの構文は以下の通りです:
 
'''name.Class.resource: value'''
 
実際の例:
 
xscreensaver.Dialog.headingFont: -*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1
 
   
  +
'''?'''.Dialog.headingFont: -*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1
;name
 
:アプリケーションの名前。xterm や xpdf など。
 
   
  +
クラスに関係なく、{{ic|headingFont}} リソースを含むすべてのプログラムに同じルールを適用したい場合は、次のように書くことができます:
;class
 
:リソースをグループ化するのに使われるクラス。クラスの名前は一文字目を大文字にします。
 
   
  +
'''*'''headingFont: -*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1
;resource
 
:値を変更するリソースの名前。リソースは小文字+大文字で表現します。
 
   
  +
{{Note|
;value
 
  +
* クエスチョンマーク({{ic|?}})はコンポーネント名のようなものであるため、その隣には ''バインディング文字''(ドット({{ic|.}})またはアスタリスク({{ic|*}}))が必要です。
:リソースの値。3つのタイプが存在します:
 
  +
* アスタリスク({{ic|*}})は ''バインディング文字'' そのものであり、その隣にドットを置く必要はありません。また、ファイル処理中にドットとアスタリスクの連続が単一のアスタリスクに置き換えられます。
:* Integer (数字)
 
  +
}}
:* Boolean (true/false, yes/no, on/off)
 
:* String (文字列) (例: 単語 ({{ic|white}}), 色 ({{ic|#ffffff}}), パス ({{ic|/usr/bin/firefox}}))
 
   
  +
詳細については {{man|3|XrmGetResource|MATCHING RULES}} を参照してください。
;区切り文字
 
:ドット ({{ic|'''.'''}}) は階層を一つ下ることを示します。上記の例では、名前、クラス、リソースの順番で降りて行っています。コロン ({{ic|''':'''}}) はリソースの宣言と値を分けるのに使われます。
 
   
  +
=== コメント ===
{{Note|Xresources ファイルの構文についてさらに詳しくは {{man|3|XrmGetDatabase|FILE_SYNTAX}} を見てください。}}
 
   
  +
感嘆符({{ic|!}})で始まる行は無視されます。例えば:
====ワイルドカードマッチ====
 
   
  +
! 次のルールはコメントアウトされているため無視されます
クエスチョンマークとアスタリスクはワイルドカードとして使うことができ、一つのルールを多数のアプリケーションやエレメントに適用することができます。{{ic|?}} はどれかひとつのコンポーネントの名前にマッチし、{{ic|*}} は任意の数のコンポーネントを表します。
 
  +
!Xft.antialias: true
   
  +
{{Note|
前記の例であれば、XScreenSaver だけでなく、クラス名 {{ic|Dialog}} にリソース名 {{ic|headingFont}} を含む全てのプログラムに同じフォントを適用したい場合、以下のように記述できます:
 
  +
* 感嘆符は行の最初の文字でなければなりません。
  +
* [https://gcc.gnu.org/onlinedocs/cpp/ GNU CPP]({{pkg|gcc}})のような [[Wikipedia:C preprocessor|C プリプロセッサ]]がインストールされている場合、[[C]]-スタイル({{ic|//}} および {{ic|/* … */}})のコメントを使用できます([[#サンプル]] も参照)。
  +
}}
   
  +
=== インクルードファイル ===
'''?'''.Dialog.headingFont: -*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1
 
   
  +
リソース設定を複数のファイルに分けるため(例:各アプリケーションに独自のファイルを使用するため)、''C preprocessor'' の {{ic|#include}} ''ディレクティブ'' を使用します:
クラスは関係なくリソース {{ic|headingFont}} を含む全てのプログラムに同一のルールを適用したい場合、以下のように記述します:
 
   
  +
{{hc|~/.config/X11/Xresources|
'''*'''headingFont: -*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1
 
  +
#include "Xresources.d/fonts"
  +
#include "Xresources.d/rxvt-unicode"
  +
#include "Xresources.d/xscreensaver"
  +
#include "Xresources.d/xterm"
  +
}}
   
  +
''#include'' で参照されるファイルが適用される設定ファイルのディレクトリから到達できない場合は、検索するディレクトリを渡す必要があります:
ワイルドカードのマッチングルールについて詳しくは {{man|3|XrmGetResource|MATCHING_RULES}} を参照してください。
 
   
  +
$ xrdb -load -I''${HOME}/.config/X11 ~/.Xresources''
==== コメント ====
 
Xresources ファイルにコメントを付けたいときは、コメントの前にエクスクラメーションマークを付けて下さい ({{ic|!}})、例:
 
   
  +
=== デフォルト設定 ===
! The following rule will be ignored because it has been commented out
 
!Xft.antialias: true
 
   
エククラメーションマークは行最初の文字でなければならないこと注意してください。
+
イントールされている X11 アプリケーションのデフォルト設定を確認するは、{{ic|/usr/share/X11/app-defaults/}} を参照してください。
   
  +
プログラム固有のリソースに関する詳細情報は通常、プログラムの man ページに記載されています。{{man|1|xterm|RESOURCES}} はその良い例であり、X リソースとそのデフォルト値のリストが含まれています。
==== ファイルのインクルード ====
 
   
  +
現在ロードされているリソースを確認するには:
{{Note|この機能を使うには {{ic|GNU CPP}} などの C プリプロセッサが必要です。}}
 
   
  +
$ xrdb -query -all
アプリケーションごとに別々のファイルを使いたい場合、メインファイルで {{ic|#include}} を使ってください。例:
 
 
{{hc|~/.Xresources|
 
#include ".Xresources.d/xterm"
 
#include ".Xresources.d/rxvt-unicode"
 
#include ".Xresources.d/fonts"
 
#include ".Xresources.d/xscreensaver"
 
}}
 
 
ファイルのロードが失敗する場合、''xrdb'' に {{ic|-I}} パラメータを付けてディレクトリを指定してください。例:
 
 
{{hc|~/.xinitrc|
 
xrdb -I''$HOME'' ~/.Xresources
 
}}
 
 
=== リソースの値を取得 ===
 
   
  +
=== サンプル ===
(bash スクリプトなどで使いたい場合) {{AUR|xgetres}} を使うことでリソースの値を取得できます:
 
   
  +
* [[コンソールのカラー出力#ターミナルエミュレータ]]
$ xgetres xscreensaver.Dialog.headingFont
 
  +
* [[カーソルテーマ#X リソース]]
-*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1
 
  +
* [[フォント設定#fontconfig をサポートしていないアプリケーション]]
  +
* [[rxvt-unicode#設定]]
  +
* {{man|1|xpdf|OPTIONS}}
  +
* [[Xterm#設定]]
  +
* [https://github.com/mrdotx/dotfiles/tree/master/.config/X11 klassiker (mrdotx)] — [[Rxvt-unicode]] パッチ開発者の[[ドットファイル]]
   
 
== 使用法 ==
 
== 使用法 ==

2024年7月2日 (火) 19:15時点における版

関連記事

X リソースファイル はユーザーレベルの設定ドットファイルで、通常は ~/.Xresources に存在します。X クライアントアプリケーションの設定パラメータである X resources を設定するのに使われます。

Xresources は様々な設定をすることができます、例えば:

インストール

xorg-xrdb パッケージをインストールしてください。

設定

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_nameClass のサブストリングにはドット(.)は含まれませんが、resourceName のサブストリングにはドットが含まれる場合があります。例えば、Dialog.bodyFontXScreenSaver の内部リソースであり、本文フォントおよびフォールバックフォントを設定するために指定されます:

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
ノート:
  • 感嘆符は行の最初の文字でなければなりません。
  • GNU CPPgcc)のような C プリプロセッサがインストールされている場合、C-スタイル(// および /* … */)のコメントを使用できます(#サンプル も参照)。

インクルードファイル

リソース設定を複数のファイルに分けるため(例:各アプリケーションに独自のファイルを使用するため)、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 サーバーに保存されるため、一度だけ読み込めばよいです。また、リモート の 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 に従ってみてください。 また、そこに記載されているファイルの一部が空である可能性があることに注意してください。

参照