f

2016-09-25

The location of the X Window System user configuration file

X Window Systemの設定ファイルであるxorg.confのユーザー設定の格納場所を調べた。結論をいうと,ユーザー設定とシステム設定ファイルの場所は以下となる。

ユーザー設定
/etc/X11/xorg.conf.d
システム設定
/usr/share/X11/xorg.conf.d

Introduction

LinuxやUNIXでは,X Window Systemと呼ばれるシステムを使い,画面を描画したり,マウス,キーボード,タッチパッド,ライトといったデバイスの挙動を制御する。つまり,これらの挙動を変更したければ,X Window Systemの設定ファイルを変更することになる。

現在はX.Org FounationがX Window Systemの標準仕様を策定し,その実装であるXorgも提供している。Xorgの設定はxorg.confファイルやxorg.conf.dディレクトリで設定する。これらのxorg.confファイルを設定することで,例えば以下のような設定が可能となる。

  • タッチパッドの感度,2本指クリックや3本指クリックの動作,認識範囲
  • マウス速度
  • ポインティング・スティック(トラックポイントなど)の感度
  • キー割り当て
  • 画面明るさ

デバイスの設定をOSネイティブで行うにはXorgを使うしかなく,快適なPCの利用にあたってこの設定が非常に重要となる場合がある。しかし,これらの設定ファイルの場所がどこにあるのかはっきりとした情報があまりないと感じた。そこで,システムの標準設定の場所と,ユーザー用設定ファイルの場所を調べた。

Xorgの設定ファイルの配置場所

Xorgの設定ファイルはxorg.confと呼ばれている。xorg.confのマニュアルは公式サイトか,Linuxであれば以下のコマンドで確認できる。

man xorg.conf

このマニュアルを参考にして,Xorgの設定ファイルの場所をまとめる。

Xorgの設定は以下の2種類のファイルを使う。

  • xorg.confファイル
  • xorg.conf.d配下の.confファイル

マニュアルを見る限り,xorg.conf.d配下のファイル名は拡張子が.confであること以外に指定はない。ただし,標準のシステム設定では,以下のように数字-デバイス名.confのような命名規則となっているので,これに従うのがよいだろう。

ls /usr/share/X11/xorg.conf.d/
10-amdgpu.conf  11-evdev-quirks.conf      50-vmmouse.conf
10-evdev.conf   11-evdev-trackpoint.conf  50-wacom.conf
10-quirks.conf  50-synaptics.conf         51-synaptics-quirks.conf

Xorgの設定ファイルは大きく以下の分類で検索される。

  • 初期設定ファイル
    • 一般ユーザー
    • ルートユーザー
  • 追加設定ディレクトリ
    • 一般ユーザー
    • ルートユーザー
  • システム設定

一般ユーザーとルートユーザーの違いは,ルートユーザーでXorgを起動した場合,起動オプション-config-configdir,環境変数$XORGCONFIGで指定されるファイルやディレクトリを追加で探すことだ。

システム設定は,システム利用に予約されたディレクトリのことだ。このディレクトリの設定は,ベンダーやサードパーティのパッケージから分離されている。システム設定をユーザーが変更する必要はない。

Xorgの設定ファイルの場所一覧を以下の表に示す。

Xorgの設定ファイルの場所一覧
分類 一般ユーザー ルートユーザー

初期設定ファイルの<cmdline>起動時の-configオプションで指定。

追加設定ディレクトリの<cmdline>起動時の-configdirオプションで指定。

<hostname> gethostname関数で得られるホスト名。

$XORGCONFIG 環境変数。既定は空。
初期設定ファイル

/etc/X11/<cmdline> /usr/etc/X11/<cmdline>
/etc/X11/$XORGCONFIG /usr/etc/X11/$XORGCONFIG /etc/X11/xorg.conf /etc/xorg.conf /usr/etc/X11/xorg.conf.<hostname> /usr/etc/X11/xorg.conf /usr/lib/X11/xorg.conf.<hostname> /usr/lib/X11/xorg.conf
<cmdline>
/etc/X11/<cmdline>
/usr/etc/X11/<cmdline>
$XORGCONFIG
/etc/X11/$XORGCONFIG
/usr/etc/X11/$XORGCONFIG
/etc/X11/xorg.conf
/etc/xorg.conf
/usr/etc/X11/xorg.conf.<hostname>
/usr/etc/X11/xorg.conf
/usr/lib/X11/xorg.conf.<hostname>
/usr/lib/X11/xorg.conf
追加設定ディレクトリ

/etc/X11/<cmdline> /usr/etc/X11/<cmdline> /etc/X11/xorg.conf.d /usr/etc/X11/xorg.conf.d
<cmdline>
/etc/X11/<cmdline>
/usr/etc/X11/<cmdline>
/etc/X11/xorg.conf.d
/usr/etc/X11/xorg.conf.d
システム設定
/usr/share/X11/xorg.conf.d

Xorgのユーザー設定ファイルはどこに配置すべきか?

ここまでで,Xorgの設定ファイルの格納場所が全てわかった。それでは,ユーザーが変更した設定ファイルはどこに配置するのがベストだろうか?

答えは,/etc/X11/xorg.conf.d/だ。

まず,初期設定ファイルはシステムで用意されている可能性があるので,使わないほうがいいだろう。そして,Xorgの起動時のオプションは期待できないので,<cmdline>オプションを使っている場所も避けるべきだろう。これらを考慮すると,配置場所候補が以下の2個に絞られる。

/etc/X11/xorg.conf.d
/usr/etc/X11/xorg.conf.d

この2択から/etc/X11/xorg.conf.dを選ぶべき理由は以下の3点だ。

  1. /usr/share/X11/xorg.conf.d/50-synaptics.conf で指示されている。
  2. FHSでは/usr/etc/X11は定義されていないが,/etc/X11は定義されている。
  3. 標準のUbuntu 16.04でxorg.confは使われておらず,xorg.conf.dを使ったほうが柔軟な設定が可能。

1点目。Ubuntu 16.04で以下のコマンドを実行すると,設定ファイルが/etc/X11/xorg.conf.dを使うように指示していることがわかる。

head /usr/share/X11/xorg.conf.d/50-synaptics.conf
# Example xorg.conf.d snippet that assigns the touchpad driver
# to all touchpads. See xorg.conf.d(5) for more information on
# InputClass.
# DO NOT EDIT THIS FILE, your distribution will likely overwrite
# it when updating. Copy (and rename) this file into
# /etc/X11/xorg.conf.d first.
# Additional options may be added in the form of
#   Option "OptionName" "value"
#
Section "InputClass"

2点目。FHS (Filesystem Hierarchy Standard)というLinuxにおけるディレクトリ構造の標準仕様が存在する。FHSにおいて,/etc/X11/ディレクトリは以下のとおりオプションだが定義されている。

3.7.5. /etc/X11 : Configuration for the X Window System (optional)

3.7.5.1. Purpose

/etc/X11 is the location for all X11 host-specific configuration. This directory is necessary to allow local control if /usr is mounted read only.
Filesystem Hierarchy Standard

しかし,/usr/etc/X11/は定義されていない。特に理由がなければ,FHSに従うべきだろう。

3点目。xorg.confは単体で利用可能なファイルとなっている。しかし,このファイルは標準のUbuntu 16.04では存在しない。また,Xorgの設定はデバイスごとに分類され,設定できる項目は多い。xorg.conf.d配下の.confファイルでデバイスごとや用途ごとにファイルを分けた方が管理しやすい。

まとめ

これらのことから,Xorgのユーザー設定とシステム設定ファイルの場所は以下となる。

ユーザー設定
/etc/X11/xorg.conf.d
システム設定
/usr/share/X11/xorg.conf.d

Xorgの設定はネット上であまりなく,ユーザー設定の配置場所についても特に理由や根拠もなく/etc/X11/xorg.conf.dを使うように書かれていることが多い。今回の記事でユーザー設定ファイルの場所を明確な根拠もって示すことができたので自信をもってXorgの設定に望めるだろう。Xorg自体の設定は膨大にあるので,また調べてみたい。

0 件のコメント:

コメントを投稿