「X リソース」の版間の差分
(en:X resourcesへの転送ページ) |
Kusanaginoturugi (トーク | 投稿記録) (序文を修正) |
||
(4人の利用者による、間の16版が非表示) | |||
1行目: | 1行目: | ||
+ | [[Category:設定ファイル]] |
||
− | #redirect[[en:X resources]] |
||
+ | [[Category:X サーバー]] |
||
+ | [[de:Xdefaults]] |
||
+ | [[en:X resources]] |
||
+ | [[ru:X resources]] |
||
+ | {{Related articles start}} |
||
+ | {{Related|X Logical Font Description}} |
||
+ | {{Related|ドットファイル}} |
||
+ | {{Related articles end}} |
||
+ | '''X リソースファイル''' はユーザーレベルの設定''ドットファイル''で、通常は {{ic|~/.Xresources}} に存在します。X クライアントアプリケーションの設定パラメータである [[Wikipedia:X resources|X resources]] を設定するのに使われます。 |
||
+ | |||
+ | 特に次の目的で使用できます: |
||
+ | |||
+ | * ターミナル環境の設定(例:ターミナルの色) |
||
+ | * DPI やアンチエイリアス、ヒンティングなど X [[フォント]]の設定 |
||
+ | * X [[カーソルテーマ]]の変更 |
||
+ | * [[xscreensaver]] のテーマ設定 |
||
+ | * 低水準 X アプリケーションの設定 ({{Pkg|xorg-xclock}}, {{Pkg|xpdf}}, [[rxvt-unicode]] など) |
||
+ | |||
+ | == インストール == |
||
+ | |||
+ | {{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 リソース''ファイルの構文は以下のような ''リソース行'' のシーケンスです: |
||
+ | |||
+ | 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]] の内部リソースであり、本文フォントおよびフォールバックフォントを設定するために指定されます: |
||
+ | |||
+ | xscreensaver-auth.default.Dialog.bodyFont: times new roman 12, dejavu serif 12 |
||
+ | |||
+ | ;application_name |
||
+ | :アプリケーションの名前、例えば {{ic|urxvt}}, {{ic|xpdf}}, {{ic|xterm}} など。 ''インスタンス名'' とも呼ばれます。 |
||
+ | |||
+ | ;Class |
||
+ | :リソースをまとめるために使用される分類。クラス名は通常大文字です。 |
||
+ | |||
+ | ;resourceName |
||
+ | :値を設定するリソースの名前。リソースは通常、連結された大文字と小文字で表されます。 |
||
+ | |||
+ | ;value |
||
+ | :リソースの実際の値。これには次の3種類があります: |
||
+ | :* 整数(整数値) |
||
+ | :* ブール値(true/false、yes/no、on/off) |
||
+ | :* 文字列(文字の列)— 例えば単語({{ic|white}})、色({{ic|#ffffff}})、またはパス({{ic|/usr/bin/firefox}}) |
||
+ | |||
+ | ;区切り文字 |
||
+ | * ドット({{ic|.}})は ''tight binding'' であり、直近のコンポーネントを分離するために使用されます(つまり、階層の各ステップを示す)。上記の例では、アプリケーション名から始まり、クラスに降り、最後にリソース自体に降ります。 |
||
+ | * アスタリスク({{ic|*}})は ''loose binding'' であり、何らかのコンポーネントを表すために使用されます(含まれない場合もあります)。 |
||
+ | * コロン({{ic|:}})はリソース名と値を分離するために使用されます。 |
||
+ | |||
+ | {{Note| |
||
+ | * リソースファイル構文の観点から見ると、コロン({{ic|:}})の前にあるものはすべてリソース名です。ユーザーの視点からは、''リソース'' は最も右側のコンポーネントのみを指すことがよくあります。言い換えると、''リソース名'' は ''アプリケーション名''、''Class''、および ''リソース名'' のサブストリングから成る文字列です。これが混乱の原因になるかもしれません。 |
||
+ | * リソースの命名スキーマは完全にアプリケーションに依存します。あるアプリケーションが {{ic|application_name.Class.resourceName}} を使用する場合、別のアプリケーションは {{ic|application_name.resourceName}} および {{ic|Class.resourceName}} のみを理解するかもしれません。 |
||
+ | }} |
||
+ | |||
+ | === ワイルドカードマッチング === |
||
+ | |||
+ | クエスチョンマーク({{ic|?}})とアスタリスク({{ic|*}})はワイルドカードとして使用でき、多くの異なるアプリケーションや要素に適用できる単一のルールを書くのが簡単になります。{{ic|?}} は任意の単一のコンポーネント名に一致し、{{ic|*}} は任意の数の中間コンポーネントを含むものに一致します。 |
||
+ | |||
+ | 前述の例を使用して、クラス名に {{ic|Dialog}} を含むすべてのプログラムに同じフォントを適用したい場合(XScreenSaver に限らず)、次のように書くことができます: |
||
+ | |||
+ | '''?'''.Dialog.headingFont: -*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1 |
||
+ | |||
+ | クラスに関係なく、{{ic|headingFont}} リソースを含むすべてのプログラムに同じルールを適用したい場合は、次のように書くことができます: |
||
+ | |||
+ | '''*'''headingFont: -*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1 |
||
+ | |||
+ | {{Note| |
||
+ | * クエスチョンマーク({{ic|?}})はコンポーネント名のようなものであるため、その隣には ''バインディング文字''(ドット({{ic|.}})またはアスタリスク({{ic|*}}))が必要です。 |
||
+ | * アスタリスク({{ic|*}})は ''バインディング文字'' そのものであり、その隣にドットを置く必要はありません。また、ファイル処理中にドットとアスタリスクの連続が単一のアスタリスクに置き換えられます。 |
||
+ | }} |
||
+ | |||
+ | 詳細については {{man|3|XrmGetResource|MATCHING RULES}} を参照してください。 |
||
+ | |||
+ | === コメント === |
||
+ | |||
+ | 感嘆符({{ic|!}})で始まる行は無視されます。例えば: |
||
+ | |||
+ | ! 次のルールはコメントアウトされているため無視されます |
||
+ | !Xft.antialias: true |
||
+ | |||
+ | {{Note| |
||
+ | * 感嘆符は行の最初の文字でなければなりません。 |
||
+ | * [https://gcc.gnu.org/onlinedocs/cpp/ GNU CPP]({{pkg|gcc}})のような [[Wikipedia:C preprocessor|C プリプロセッサ]]がインストールされている場合、[[C]]-スタイル({{ic|//}} および {{ic|/* … */}})のコメントを使用できます([[#サンプル]] も参照)。 |
||
+ | }} |
||
+ | |||
+ | === インクルードファイル === |
||
+ | |||
+ | リソース設定を複数のファイルに分けるため(例:各アプリケーションに独自のファイルを使用するため)、''C preprocessor'' の {{ic|#include}} ''ディレクティブ'' を使用します: |
||
+ | |||
+ | {{hc|~/.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 アプリケーションのデフォルト設定を確認するには、{{ic|/usr/share/X11/app-defaults/}} を参照してください。 |
||
+ | |||
+ | プログラム固有のリソースに関する詳細情報は通常、プログラムの man ページに記載されています。{{man|1|xterm|RESOURCES}} はその良い例であり、X リソースとそのデフォルト値のリストが含まれています。 |
||
+ | |||
+ | 現在ロードされているリソースを確認するには: |
||
+ | |||
+ | $ xrdb -query -all |
||
+ | |||
+ | === サンプル === |
||
+ | |||
+ | * [[コンソールのカラー出力#ターミナルエミュレータ]] |
||
+ | * [[カーソルテーマ#X リソース]] |
||
+ | * [[フォント設定#fontconfig をサポートしていないアプリケーション]] |
||
+ | * [[rxvt-unicode#設定]] |
||
+ | * {{man|1|xpdf|OPTIONS}} |
||
+ | * [[Xterm#設定]] |
||
+ | * [https://github.com/mrdotx/dotfiles/tree/master/.config/X11 klassiker (mrdotx)] — [[Rxvt-unicode]] パッチ開発者の[[ドットファイル]] |
||
+ | |||
+ | == 使用法 == |
||
+ | |||
+ | === リソースファイルの読み込み === |
||
+ | |||
+ | リソースは X サーバーに保存されるため、一度だけ読み込めばよいです。また、''リモート'' の X11 クライアント(例えば [[OpenSSH#X11 フォワーディング|SSH 経由で転送]] されるもの)からもアクセスできます。 |
||
+ | |||
+ | リソースファイル(一般的な {{ic|.Xresources}} など)を読み込み、現在の設定を置き換えます: |
||
+ | |||
+ | $ xrdb ''~/.Xresources'' |
||
+ | |||
+ | リソースファイルを読み込み、現在の設定にマージします: |
||
+ | |||
+ | $ xrdb -merge ''~/.Xresources'' |
||
+ | |||
+ | {{Note| |
||
+ | * ほとんどの [[ディスプレイマネージャ]]はログイン時に {{ic|~/.Xresources}} ファイルを読み込みます。 |
||
+ | * 古い {{ic|~/.Xdefaults}} ファイルは X11 プログラムが開始されるときに読み込まれますが、現在のセッションで ''xrdb'' が使用されていない場合に限ります。 [https://groups.google.com/forum/#!msg/comp.windows.x/hQBEdql8l-Q/hF3DETcIHGwJ] |
||
+ | }} |
||
+ | |||
+ | === xinitrc === |
||
+ | |||
+ | デフォルトの [[xinitrc]] のコピーを {{ic|.xinitrc}} として使用している場合、それはすでに {{ic|~/.Xresources}} をマージしています。 |
||
+ | |||
+ | カスタムのものを使用している場合は、次を追加します: |
||
+ | |||
+ | {{hc|.xinitrc|<nowiki>[[ -f ~/.Xresources ]] && xrdb -merge -I$HOME ~/.Xresources</nowiki>}} |
||
+ | |||
+ | {{Note|{{ic|~/.xinitrc}} 内で xrdb コマンドをバックグラウンドにしないでください。そうしないと、xrdb の後に起動したプログラムがリソースを読み込む前にリソースを探すことがあります。}} |
||
+ | |||
+ | === リソース値の取得 === |
||
+ | |||
+ | リソースの値を取得したい場合(例えば、bash スクリプトで使用したい場合)、{{AUR|xgetres}} を使用できます: |
||
+ | |||
+ | $ xgetres xscreensaver.Dialog.headingFont |
||
+ | -*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1 |
||
+ | |||
+ | == トラブルシューティング == |
||
+ | |||
+ | === 解析エラー === |
||
+ | |||
+ | [[GDM]] などの[[ディスプレイマネージャ]]は ''xrdb'' で {{ic|--nocpp}} 引数を使用することがあります。 |
||
+ | |||
+ | === xrdb -query からの出力が無い === |
||
+ | |||
+ | {{ic|xrdb -query}} が何も出力しないことも珍しくありません。上記の [[X resources#リソースファイルのロード|リソースファイルのロード]] と [[X resources#xinitrc|xinitrc]] に従ってみてください。 また、そこに記載されているファイルの一部が空である可能性があることに注意してください。 |
||
+ | |||
+ | ==参照== |
||
+ | |||
+ | * [https://engineering.purdue.edu/ECN/Support/KB/Docs/UsingTheXdefaultsFil Using the Xdefaults File] - X が Xdefaults ファイルをどのように解釈するのか説明した記事 |
||
+ | * [https://unix.stackexchange.com/questions/216723/xterm-or-xterm-in-configuration-file/292992#292992 Overlooked Points of X Resources] by Thomas Dickey |
||
+ | |||
+ | {{TranslationStatus|X resources|2024-07-02|807397}} |
2024年7月2日 (火) 19:19時点における最新版
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 であり、何らかのコンポーネントを表すために使用されます(含まれない場合もあります)。 - コロン(
:
)はリソース名と値を分離するために使用されます。
ワイルドカードマッチング
クエスチョンマーク(?
)とアスタリスク(*
)はワイルドカードとして使用でき、多くの異なるアプリケーションや要素に適用できる単一のルールを書くのが簡単になります。?
は任意の単一のコンポーネント名に一致し、*
は任意の数の中間コンポーネントを含むものに一致します。
前述の例を使用して、クラス名に 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
xinitrc
デフォルトの xinitrc のコピーを .xinitrc
として使用している場合、それはすでに ~/.Xresources
をマージしています。
カスタムのものを使用している場合は、次を追加します:
.xinitrc
[[ -f ~/.Xresources ]] && xrdb -merge -I$HOME ~/.Xresources
リソース値の取得
リソースの値を取得したい場合(例えば、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