「Xorg」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎トラブルシューティング: 英語版に存在しないセクションを削除 & ソート)
(同期)
 
(2人の利用者による、間の32版が非表示)
1行目: 1行目:
 
[[Category:X サーバー]]
 
[[Category:X サーバー]]
[[cs:Xorg]]
 
[[da:Xorg]]
 
 
[[de:X]]
 
[[de:X]]
[[el:Xorg]]
 
 
[[en:Xorg]]
 
[[en:Xorg]]
[[es:Xorg]]
 
 
[[fr:Xorg]]
 
[[fr:Xorg]]
[[it:Xorg]]
 
[[nl:Xorg]]
 
[[pl:Xorg]]
 
 
[[pt:Xorg]]
 
[[pt:Xorg]]
[[ro:Xorg]]
 
 
[[ru:Xorg]]
 
[[ru:Xorg]]
  +
[[uk:Xorg]]
 
[[zh-hans:Xorg]]
 
[[zh-hans:Xorg]]
[[zh-hant:Xorg]]
 
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related|自動起動}}
 
{{Related|自動起動}}
32行目: 24行目:
 
'''Xorg''' (一般的には単に '''X''' と呼ばれる)は、Linux ユーザーの間で最も人気のあるディスプレイサーバーです。その普遍性により、GUI アプリケーションにとって Xorg は欠かせない存在となり、ほとんどのディストリビューションで広く採用されています。詳しくは Wikipedia の [[Wikipedia:ja:X.Org Server|Xorg]] や [https://www.x.org/wiki/ Xorg のウェブサイト] を見て下さい。
 
'''Xorg''' (一般的には単に '''X''' と呼ばれる)は、Linux ユーザーの間で最も人気のあるディスプレイサーバーです。その普遍性により、GUI アプリケーションにとって Xorg は欠かせない存在となり、ほとんどのディストリビューションで広く採用されています。詳しくは Wikipedia の [[Wikipedia:ja:X.Org Server|Xorg]] や [https://www.x.org/wiki/ Xorg のウェブサイト] を見て下さい。
   
Xorg の代替または後継候補については[[Wayland]] を参照してください。
+
Xorg の代替かつ後継については [[Wayland]] を参照してください。
   
 
==インストール==
 
==インストール==
44行目: 36行目:
 
=== ドライバーのインストール ===
 
=== ドライバーのインストール ===
   
Linux カーネルにはオープンソースのビデオドライバーが含まれておりハードウェアでアクセラレートされたフレームバッファをサポートしています。しかし、OpenGL や X11 における 2D アクセラレーションを使うにはユーザーランドのサポートが必要です。
+
Linux カーネルにはオープンソースのビデオドライバーが含まれておりハードウェアでアクセラレートされたフレームバッファをサポートしています。しかし、[[OpenGL]] や X11 における 2D アクセラレーションを使うにはユーザーランドのサポートが必要です。
   
 
まず、あなたのカードを確認してください:
 
まず、あなたのカードを確認してください:
56行目: 48行目:
 
Xorg はインストールされているドライバーを自動的に検索します:
 
Xorg はインストールされているドライバーを自動的に検索します:
   
* 使用しているハードウェアにあったドライバー(以下に記載)がインストールされていない場合、Xorg はまず最初に ''fbdev'' ({{pkg|xf86-video-fbdev}}) を検索します。
+
* 使用しているハードウェアに合うドライバー(以下に記載)がインストールされていない場合、Xorg はまず最初に ''fbdev'' ({{pkg|xf86-video-fbdev}}) を検索します。
 
* ''fbdev'' が存在しなかった場合、次に汎用ドライバーである ''vesa'' ({{pkg|xf86-video-vesa}}) を検索します。''vesa'' はほとんどのチップセットで動作しますが 2D や 3D のアクセラレーションは含まれていません。
 
* ''fbdev'' が存在しなかった場合、次に汎用ドライバーである ''vesa'' ({{pkg|xf86-video-vesa}}) を検索します。''vesa'' はほとんどのチップセットで動作しますが 2D や 3D のアクセラレーションは含まれていません。
 
* ''vesa'' も見つからない場合、Xorg は[[Kernel Mode Setting|カーネルモードセッティング]]にフォールバックします。カーネルモードセッティングでは GLAMOR アクセラレーションが利用できます ({{man|4|modesetting}} を参照)。
 
* ''vesa'' も見つからない場合、Xorg は[[Kernel Mode Setting|カーネルモードセッティング]]にフォールバックします。カーネルモードセッティングでは GLAMOR アクセラレーションが利用できます ({{man|4|modesetting}} を参照)。
64行目: 56行目:
 
{| class="wikitable" style="text-align:center"
 
{| class="wikitable" style="text-align:center"
 
|-
 
|-
  +
! ブランド
! ブランド !! 種類 !! ドライバ !! OpenGL !! OpenGL ([[multilib]]) !! ドキュメント
 
  +
! 種類
  +
! ドキュメント
  +
! ドライバ
  +
! OpenGL
  +
! OpenGL ([[multilib]])
  +
! Vulkan
  +
! Vulkan ([[multilib]])
 
|-
 
|-
! rowspan="3" | AMD / ATI
+
| rowspan="3" | AMD (旧 ATI)
| rowspan="2" | オープンソース || {{Pkg|xf86-video-amdgpu}} || rowspan="2" | {{Pkg|mesa}} || rowspan="2" | {{Pkg|lib32-mesa}} || [[AMDGPU]]
+
| rowspan="2" | オープンソース
  +
| [[AMDGPU]]
  +
| {{Pkg|xf86-video-amdgpu}}
  +
| rowspan="2" | {{Pkg|mesa}}
  +
| rowspan="2" | {{Pkg|lib32-mesa}}
  +
| {{Pkg|vulkan-radeon}} / {{Pkg|amdvlk}}<sup>4</sup>
  +
| {{Pkg|lib32-vulkan-radeon}} / {{Pkg|lib32-amdvlk}}<sup>4</sup>
 
|-
 
|-
| {{Pkg|xf86-video-ati}} || [[ATI]]
+
| [[ATI]]
  +
| {{Pkg|xf86-video-ati}}
  +
| colspan="2" | 無し
 
|-
 
|-
  +
| プロプライエタリ
| プロプライエタリ || {{Pkg|xf86-video-amdgpu}} || {{AUR|amdgpu-pro-libgl}} || {{AUR|lib32-amdgpu-pro-libgl}} || [[AMDGPU PRO]]
 
  +
| [[AMDGPU PRO]]
  +
| {{Pkg|xf86-video-amdgpu}}
  +
| {{AUR|amdgpu-pro-oglp}}
  +
| {{AUR|lib32-amdgpu-pro-oglp}}
  +
| {{AUR|vulkan-amdgpu-pro}}
  +
| {{AUR|lib32-vulkan-amdgpu-pro}}
 
|-
 
|-
! Intel
+
| Intel
  +
| オープンソース
| オープンソース || {{Pkg|xf86-video-intel}}<sup>1</sup> || {{Pkg|mesa}} || {{Pkg|lib32-mesa}} || [[Intel Graphics]]
 
  +
| [[Intel graphics]]
  +
| {{Pkg|xf86-video-intel}}<sup>2</sup>
  +
| {{Pkg|mesa}} または {{Pkg|mesa-amber}}<sup>3</sup>
  +
| {{Pkg|lib32-mesa}}
  +
| {{Pkg|vulkan-intel}}
  +
| {{Pkg|lib32-vulkan-intel}}
 
|-
 
|-
! rowspan="4" | NVIDIA
+
| rowspan="4" | NVIDIA
  +
| オープンソース
| オープンソース || {{Pkg|xf86-video-nouveau}} || {{Pkg|mesa}} || {{Pkg|lib32-mesa}} || [[Nouveau]]<sup>2</sup>
 
  +
| [[Nouveau]]<sup>1</sup>
  +
| {{Pkg|xf86-video-nouveau}}
  +
| {{Pkg|mesa}}
  +
| {{Pkg|lib32-mesa}}
  +
| {{Pkg|vulkan-nouveau}}
  +
| {{Pkg|lib32-vulkan-nouveau}}
 
|-
 
|-
| rowspan="3" | プロプライエタリ || {{Pkg|nvidia}} || {{Pkg|nvidia-utils}} || {{Pkg|lib32-nvidia-utils}} || rowspan="3" | [[NVIDIA]]<sup>2</sup>
+
| rowspan="3" | プロプライエタリ
  +
| rowspan="3" | [[NVIDIA]]<sup>1</sup>
  +
| {{Pkg|nvidia}}
  +
| {{Pkg|nvidia-utils}}
  +
| {{Pkg|lib32-nvidia-utils}}
  +
| {{Pkg|nvidia-utils}}
  +
| {{Pkg|lib32-nvidia-utils}}
 
|-
 
|-
| {{AUR|nvidia-470xx-dkms}} || {{AUR|nvidia-470xx-utils}} || {{AUR|lib32-nvidia-470xx-utils}}
+
| {{AUR|nvidia-470xx-dkms}}
  +
| {{AUR|nvidia-470xx-utils}}
  +
| {{AUR|lib32-nvidia-470xx-utils}}
  +
| {{AUR|nvidia-470xx-utils}}
  +
| {{AUR|lib32-nvidia-470xx-utils}}
 
|-
 
|-
| {{AUR|nvidia-390xx}} || {{AUR|nvidia-390xx-utils}} || {{AUR|lib32-nvidia-390xx-utils}}
+
| {{AUR|nvidia-390xx-dkms}}
  +
| {{AUR|nvidia-390xx-utils}}
  +
| {{AUR|lib32-nvidia-390xx-utils}}
  +
| {{AUR|nvidia-390xx-utils}}
  +
| {{AUR|lib32-nvidia-390xx-utils}}
 
|}
 
|}
   
  +
# 統合 GPU と専用 GPU を組み合わせて使用する NVIDIA Optimus 対応のノート PC に関しては [[NVIDIA Optimus]] を参照してください。
# 第4世代およびそれ以上の Intel graphics については、[[Intel Graphics#インストール]] で利用可能なドライバーを見てください。
 
  +
# 第4世代及びそれ以降の Intel グラフィックスに関しては、[[Intel graphics#インストール]] で利用可能なドライバを確認してください。
# オンボードのグラフィックカードとディスクリート GPU が混載されていて NVIDIA Optimus が有効になっているノートパソコンを使用する場合は [[NVIDIA Optimus]] を見てください。
 
  +
# 古いハードウェア用のクラシック OpenGL (Gallium3D でない) ドライバです (Mesa 22.0 及びそれ以降では、i915 クラシックドライバのサポートが落とされています)。
  +
# {{Pkg|vulkan-radeon}} / {{Pkg|lib32-vulkan-radeon}} は {{Pkg|amdvlk}} / {{Pkg|lib32-amdvlk}} よりも推奨されます ([[AMDGPU#インストール]] を参照)。
   
 
他のビデオドライバーは {{Grp|xorg-drivers}} グループで見つけることができます。
 
他のビデオドライバーは {{Grp|xorg-drivers}} グループで見つけることができます。
95行目: 136行目:
 
==== AMD ====
 
==== AMD ====
   
モデル名 (例: ''Radeon RX 6800'') から GPU アーキテクチャ (例: ''Radeon RX 6800'') への変換は、[[wikipedia:List of AMD graphics processing units]] を見てください。
+
モデル名 (例: ''Radeon RX 6800'') から GPU アーキテクチャ (例: ''RDNA 2'') への変換は、[[Wikipedia:List of AMD graphics processing units#Features overview]] を見てください。
   
 
{| class="wikitable" style="text-align:center"
 
{| class="wikitable" style="text-align:center"
101行目: 142行目:
 
! GPU アーキテクチャ !! オープンソースドライバ !! プロプライエタリドライバ
 
! GPU アーキテクチャ !! オープンソースドライバ !! プロプライエタリドライバ
 
|-
 
|-
| RDNA, RDNA 2 || rowspan=2 | [[AMDGPU]] || rowspan=2 | [[AMDGPU PRO]]
+
| RDNA 及びそれ以降 || rowspan=2 | [[AMDGPU]] || rowspan=2 | [[AMDGPU PRO]]
 
|-
 
|-
| GCN 3, GCN 4, GCN 5
+
| GCN 3 及びそれ以降
 
|-
 
|-
| GCN 1, GCN 2 || [[AMDGPU]]* / [[ATI]] || ''利用不可''
+
| GCN 1 2 || [[AMDGPU]]<sup>1</sup> / [[ATI]] || ''利用不可''
 
|-
 
|-
| TeraScale<br/>およびそれ以前 || [[ATI]] || ''利用不可''
+
| TeraScale<br/>びそれ以前 || [[ATI]] || ''利用不可''
 
|-
 
|-
 
|}
 
|}
  +
: *: 実験的
 
  +
# 試験的。
   
 
== 起動 ==
 
== 起動 ==
161行目: 203行目:
 
=== 入力の識別 ===
 
=== 入力の識別 ===
   
[[特別なキーボードキー#Xorg]] を見てください。
+
[[キーボード入力#Xorg でキーコードを確認する]] を見てください。
   
 
=== マウスのアクセラレーション ===
 
=== マウスのアクセラレーション ===
220行目: 262行目:
   
 
一般的な情報は[[マルチディスプレイ]]を見て下さい。
 
一般的な情報は[[マルチディスプレイ]]を見て下さい。
 
GPU 固有の手順は以下を参照してください:
 
 
* [[NVIDIA#マルチモニター]]
 
* [[Nouveau#デュアルディスプレイ]]
 
* [[ATI#マルチモニターの設定]]
 
   
 
==== 複数のグラフィックカード ====
 
==== 複数のグラフィックカード ====
327行目: 363行目:
 
=== Display Power Management ===
 
=== Display Power Management ===
   
DPMS (Display Power Management Signaling) はコンピュータが使われていない時にモニターを省電力モードに移行させる技術です。一定時間後にモニタを自動で standby にすることができます。[[DPMS]] を見て下さい
+
[[DPMS]] はコンピュータが使われていない時にモニターを省電力モードに移行させる技術です。一定時間後にモニタを自動で待機状態にすることができます。
   
 
== コンポジット ==
 
== コンポジット ==
337行目: 373行目:
 
=== コンポジットマネージャ一覧 ===
 
=== コンポジットマネージャ一覧 ===
   
* {{App|[[Picom]]|X コンポジタ (xcompmgr-dana のフォーク)。|https://github.com/yshui/picom|{{Pkg|picom}}}}
+
* {{App|[[Picom]]|影、高度なぼかし、フェード機能を搭載した軽量なコンポジタ。Compton からフォークされました。|https://github.com/yshui/picom|{{Pkg|picom}}}}
 
* {{App|[[Xcompmgr]]|X.org 向けのウィンドウ効果ができるコンポジットマネージャ。|https://gitlab.freedesktop.org/xorg/app/xcompmgr/|{{Pkg|xcompmgr}}}}
 
* {{App|[[Xcompmgr]]|X.org 向けのウィンドウ効果ができるコンポジットマネージャ。|https://gitlab.freedesktop.org/xorg/app/xcompmgr/|{{Pkg|xcompmgr}}}}
  +
* {{App|[[Gamescope]]|Valve のマイクロコンポジタ。FSR アップスケーリングなどのゲーム志向の機能が搭載されています。steamos-compositor からフォークされました。|https://github.com/ValveSoftware/gamescope|{{Pkg|gamescope}}}}
* {{App|Unagi|モジュール式のコンポジットマネージャ。C で書かれており XCB をベースにしています。|https://projects.mini-dweeb.org/projects/unagi|{{AUR|unagi}}}}
 
  +
* {{App|steamos-compositor-plus|Valve のコンポジタ。いくつかの調整と修正が加えられています。|https://github.com/chimeraos/steamos-compositor-plus|{{AUR|steamos-compositor-plus}}}}
   
 
==ヒントとテクニック==
 
==ヒントとテクニック==
348行目: 385行目:
   
 
{| class="wikitable"
 
{| class="wikitable"
! ツール !! パッケージ !! マニュアル !! [[特別なキーボードキー|Keysym]]<br>インプット !! ウィンドウ<br>操作 !! 備考
+
! ツール !! パッケージ !! マニュアル !! [[Keysym]]<br>インプット !! ウィンドウ<br>操作 !! 備考
 
|-
 
|-
 
! xautomation
 
! xautomation
385行目: 422行目:
 
===リモートで GUI プログラムを実行する===
 
===リモートで GUI プログラムを実行する===
   
次の記事を参照してください: [[Secure Shell#X11 フォワーディング]]
+
次の記事を参照してください: [[OpenSSH#X11 フォワーディング]]
   
 
===必要に応じて入力ソースを有効化・無効化===
 
===必要に応じて入力ソースを有効化・無効化===
  +
{{ic|xinput}} を使えば一時的に入力ソースを有効化・無効化することができるようになります。ThinkPad のように複数のマウスがあって、どちらか片方だけ使いたい時などに役立ちます。
 
  +
''xinput'' を使えば一時的に入力ソースを有効化・無効化することができるようになります。ThinkPad のように複数のマウスがあって、どちらか片方だけ使いたい時などに役立ちます。
   
 
{{Pkg|xorg-xinput}} パッケージを[[インストール]]してください。
 
{{Pkg|xorg-xinput}} パッケージを[[インストール]]してください。
398行目: 436行目:
 
例えば Lenovo ThinkPad T500 では、出力は以下のようになります:
 
例えば Lenovo ThinkPad T500 では、出力は以下のようになります:
   
{{hc|$ xinput|<nowiki>⎡ Virtual core pointer id=2 [master pointer (3)]
+
{{hc|$ xinput|<nowiki>
Virtual core XTEST pointer id=4 [slave pointer (2)]
+
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ TPPS/2 IBM TrackPoint id=11 [slave pointer (2)]
+
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=10 [slave pointer (2)]
+
⎜ ↳ TPPS/2 IBM TrackPoint id=11 [slave pointer (2)]
Virtual core keyboard id=3 [master keyboard (2)]
+
SynPS/2 Synaptics TouchPad id=10 [slave pointer (2)]
Virtual core XTEST keyboard id=5 [slave keyboard (3)]
+
⎣ Virtual core keyboard id=3 [master keyboard (2)]
Power Button id=6 [slave keyboard (3)]
+
Virtual core XTEST keyboard id=5 [slave keyboard (3)]
Video Bus id=7 [slave keyboard (3)]
+
Power Button id=6 [slave keyboard (3)]
Sleep Button id=8 [slave keyboard (3)]
+
Video Bus id=7 [slave keyboard (3)]
AT Translated Set 2 keyboard id=9 [slave keyboard (3)]
+
Sleep Button id=8 [slave keyboard (3)]
ThinkPad Extra Buttons id=12 [slave keyboard (3)]</nowiki>
+
AT Translated Set 2 keyboard id=9 [slave keyboard (3)]
  +
↳ ThinkPad Extra Buttons id=12 [slave keyboard (3)]
}}
 
  +
</nowiki>}}
   
 
{{ic|xinput --disable ''device_id''}} (''device_id'' は無効化したいデバイスの ID) でデバイスを無効にします。次の例では Synaptics Touchpad の ID 10 を無効にします:
 
{{ic|xinput --disable ''device_id''}} (''device_id'' は無効化したいデバイスの ID) でデバイスを無効にします。次の例では Synaptics Touchpad の ID 10 を無効にします:
422行目: 461行目:
   
 
$ xinput --disable "SynPS/2 Synaptics TouchPad"
 
$ xinput --disable "SynPS/2 Synaptics TouchPad"
  +
  +
=== 入力ソースを永続的に無効化する ===
  +
  +
以下の設定スニペットを使用することで、特定の入力ソースを無効化できます:
  +
  +
{{hc|/etc/X11/xorg.conf.d/30-disable-''device''.conf|
  +
Section "InputClass"
  +
Identifier "disable-''device''"
  +
Driver "''driver_name''"
  +
MatchProduct "''device_name''"
  +
Option "Ignore" "True"
  +
EndSection
  +
}}
  +
  +
{{ic|''device''}} は任意の名前です。{{ic|''driver_name''}} は入力ドライバの名前です (例: {{ic|libinput}})。{{ic|''device_name''}} は、適切なデバイスとマッチするように使用されるものです。正しいデバイスを指定する他の方法 ([[libinput]] の {{ic|MatchIsTouchscreen}} など) は、使用している入力ドライバのドキュメントを調べてください。この例では libinput を使用していますが、これはドライバに依存しない方法であり、対象のデバイスがドライバに伝達されないようにします。
   
 
=== ホットキーでアプリケーションを終了 ===
 
=== ホットキーでアプリケーションを終了 ===
  +
 
ホットキーでスクリプトを実行:
 
ホットキーでスクリプトを実行:
   
435行目: 490行目:
 
[[#視覚的にアプリケーションを kill する]] も参照。
 
[[#視覚的にアプリケーションを kill する]] も参照。
   
=== TTY のアクセスをブロック ===
+
=== TTY のアクセスをブロック ===
   
 
X から tty へのアクセスをブロックしたい場合、以下を {{ic|xorg.conf}} に追加してください:
 
X から tty へのアクセスをブロックしたい場合、以下を {{ic|xorg.conf}} に追加してください:
  +
{{bc|Section "ServerFlags"
 
  +
{{bc|
  +
Section "ServerFlags"
 
Option "DontVTSwitch" "True"
 
Option "DontVTSwitch" "True"
EndSection}}
+
EndSection
  +
}}
  +
  +
これは、信頼できないユーザによる、システムのコマンドラインへのアクセスを制限するのに役立ちます。
   
 
=== ユーザーが X を終了できないようにする ===
 
=== ユーザーが X を終了できないようにする ===
456行目: 516行目:
 
=== 視覚的にアプリケーションを kill する ===
 
=== 視覚的にアプリケーションを kill する ===
   
アプリケーションが誤動作したり固まったりした場合、ターミナルから {{ic|kill}} や {{ic|killall}} を使うためにプロセス ID や名前を見つける代わりに、{{Pkg|xorg-xkill}} を使えばアプリケーションをクリックして強制停止させることができます。
+
アプリケーションが誤動作したり固まったりした場合、ターミナルから {{ic|kill}} や {{ic|killall}} を使うためにプロセス ID や名前を見つける代わりに、{{Pkg|xorg-xkill}} を使えばアプリケーションをクリックして X サーバとの接続を閉じることができます。多くの既存のアプリケーションは、X サーバとの接続が閉じるとアボートしますが、一部のアプリケーションは実行し続ける可能性があります。
   
 
=== Rootless Xorg ===
 
=== Rootless Xorg ===
   
Xorg は root の代わりに標準的なユーザー権限で実行することができます (いわゆる "rootless" Xorg)。これは root で実行するよりもセキュリティ上重要な改善です。一部の人気なディスプレイマネージャ(例: [https://github.com/canonical/lightdm/issues/18 LightDM] や [[XDM]])はルートレス Xorg をサポートしていないことに注意してください。
+
Xorg は root の代わりに標準的なユーザー権限で実行することができます (いわゆる "rootless" Xorg)。これは root で実行するよりもセキュリティ上重要な改善です。一部の人気な[[ディスプレイマネージャ]] (例: [https://github.com/canonical/lightdm/issues/18 LightDM] や [[XDM]]) はルートレス Xorg をサポートしていないことに注意してください。
   
Xorg がどのユーザーとして実行されているかは {{ic|ps -o user $(pgrep Xorg)}} で確認できます。
+
Xorg がどのユーザーとして実行されているかは {{ic|1=ps -o user= -C Xorg}} で確認できます。
   
 
{{man|1|Xorg.wrap}}, {{man|8|systemd-logind}}, [[Systemd/ユーザー#systemd のユーザーサービスとしての Xorg|systemd のユーザーサービスとしての Xorg]], [[Fedora:Changes/XorgWithoutRootRights]] , {{Bug|41257}} も参照して下さい。
 
{{man|1|Xorg.wrap}}, {{man|8|systemd-logind}}, [[Systemd/ユーザー#systemd のユーザーサービスとしての Xorg|systemd のユーザーサービスとしての Xorg]], [[Fedora:Changes/XorgWithoutRootRights]] , {{Bug|41257}} も参照して下さい。
468行目: 528行目:
 
==== xinitrc の使用 ====
 
==== xinitrc の使用 ====
   
ルートレス Xorg を設定するには [[xinitrc]] を使用します。
+
[[xinitrc]] を使ってルートレス Xorg を設定するには:
   
 
* {{ic|startx}} を直接実行し、{{ic|exec startx}} を使用しないでください。
 
* {{ic|startx}} を直接実行し、{{ic|exec startx}} を使用しないでください。
* [[Xinit#xserverrc|.xserverrc]] を介して {{ic|$XDG_VTNR}} で logind から渡されたパーミッションの仮想端末を Xorg が使用することを確認してください。
+
* [[Xinit#xserverrc|.xserverrc]] を介して {{ic|$XDG_VTNR}} で logind から渡されたパーミッションの仮想コンソールを Xorg が使用することを確認してください。
* 特定のプロプライエタリなディスプレイドライバを使用している場合、[[Kernel Mode Setting|カーネルモード設定]] が必要です。[https://cgit.freedesktop.org/xorg/xserver/tree/hw/xfree86/xorg-wrapper.c#n222 自動検出]失敗す場合 {{ic|1=needs_root_rights = no}} を {{ic|/etc/X11/Xwrapper.config}} で設定する必要があります。
+
* 特定のプロプライエタリなディスプレイドライバを使用している場合、[[Kernel Mode Setting|カーネルモードセッティング]][https://gitlab.freedesktop.org/xorg/xserver/-/blob/master/hw/xfree86/xorg-wrapper.c#L222 自動検出]失敗しま。その場合は、{{ic|/etc/X11/Xwrapper.config}} で {{ic|1=needs_root_rights = no}} を設定する必要があります。
   
 
==== GDM の使用 ====
 
==== GDM の使用 ====
   
[[GDM]] で、[[Kernel Mode Setting|カーネルモード設定]] を使用する場合、デフォルトで root 権限なしに Xorg を実行します。
+
[[カーネルモード設定]]を使用する場合、[[GDM]] はデフォルトで root 権限なしに Xorg を実行します。
   
 
==== セッションログのリダイレクト ====
 
==== セッションログのリダイレクト ====
499行目: 559行目:
 
=== 一般 ===
 
=== 一般 ===
   
何か問題が発生したらログを確認してください。ログは {{ic|/var/log/}} または (v1.16 からデフォルトのルートレス X の場合) {{ic|~/.local/share/xorg/}} の中に保存されています。[[GDM]] を使っている場合は [[systemd]] の journal をチェックしてください [https://bbs.archlinux.org/viewtopic.php?id=184639]。
+
何か問題が発生したらログを確認してください。ログは {{ic|/var/log/}} または (v1.16 からデフォルトのルートレス X の場合) {{ic|~/.local/share/xorg/}} の中に保存されています。[[GDM]] を使っている場合は [[systemd/ジャーナル|systemd のジャーナル]]をチェックしてください [https://bbs.archlinux.org/viewtopic.php?id=184639]。
   
ログファイルの名前は {{ic|Xorg.n.log}} {{ic|n}} はディスプレイ番号に置き換えられます。デフォルト設定のシングルユーザーマシンの場合は {{ic|Xorg.0.log}} を確認すれば良いですが、他の構成の場合は見るべきログは違うかもしれません。X サーバーのセッションが起動したときのタイムスタンプと X が起動するのに使われたコンソールを確認することで適切なログファイルを見分けられます。例:
+
ログファイルの名前は {{ic|Xorg.n.log}} という形式を取りま: {{ic|n}} はディスプレイ番号す。デフォルト設定のシングルユーザーマシンの場合は {{ic|Xorg.0.log}} を確認すれば良いですが、他の構成の場合は見るべきログは違うかもしれません。X サーバーのセッションが起動したときのタイムスタンプと X が起動するのに使われたコンソールを確認することで適切なログファイルを見分けられます。例:
   
{{hc|1=$ grep -e Log -e tty Xorg.0.log|2=[ 40.623] (==) Log file: "/home/archuser/.local/share/xorg/Xorg.0.log", Time: Thu Aug 28 12:36:44 2014
+
{{hc|$ grep -e Log -e tty Xorg.0.log|2=
  +
[ 40.623] (==) Log file: "/home/archuser/.local/share/xorg/Xorg.0.log", Time: Thu Aug 28 12:36:44 2014
[ 40.704] (--) controlling tty is VT number 1, auto-enabling KeepTty}}
 
  +
[ 40.704] (--) controlling tty is VT number 1, auto-enabling KeepTty
  +
}}
   
  +
{{Tip|読みやすいタイムスタンプをログに追加するには、{{man|1|tail}} の出力を {{man|1|ts}} ({{Pkg|moreutils}} パッケージに含まれています) にパイプで繋ぐことができます。ただし、コマンドが実行されている時にログに追加された行にしか正しいタイムスタンプは追加されません。例:
* ログファイルの中に {{ic|(EE)}} で始まる行が存在しないか確認してください。{{ic|(EE)}} はエラーです。また、{{ic|(WW)}} は警告です。
 
  +
$ tail -f ~/.local/share/xorg/Xorg.0.log {{!}} ts
  +
}}
   
  +
* ログファイルの中に {{ic|(EE)}} で始まる行が存在しないか確認してください。{{ic|(EE)}} はエラーです。また、{{ic|(WW)}} は警告です。
 
* {{ic|$HOME}} に存在する {{ic|.xinitrc}} ファイルが空の場合、X を起動するにはファイルを削除するか正しく編集する必要があります。空の場合、X は画面を表示せず {{ic|Xorg.0.log}} にエラーも出力されません。ファイルを削除するとデフォルトの X 環境が起動します。
 
* {{ic|$HOME}} に存在する {{ic|.xinitrc}} ファイルが空の場合、X を起動するにはファイルを削除するか正しく編集する必要があります。空の場合、X は画面を表示せず {{ic|Xorg.0.log}} にエラーも出力されません。ファイルを削除するとデフォルトの X 環境が起動します。
* 画面が真っ黒になった場合、別の仮想端末に切り替えて (例: {{ic|Ctrl+Alt+F2}})、root ログインしてください。{{ic|root}} と入力し root パスワードを入力することでログインできます
+
* 画面がブラックアウト場合、異なる仮想コンソールに切り替えて(例: {{ic|Ctrl+Alt+F6}})、スクリーンの出力無しで root としてログインできますそうするには、{{ic|root}} と入力し(その後 {{ic|Enter}} を押して)、root パスワードを入力してください(その後、再び {{ic|Enter}} を押してください)
   
 
: 次のコマンドで X サーバーを終了させることが可能です:
 
: 次のコマンドで X サーバーを終了させることが可能です:
: {{bc|# pkill X}}
+
: {{bc|# pkill -x X}}
 
: 上記のコマンドが機能しない場合、再起動してください:
 
: 上記のコマンドが機能しない場合、再起動してください:
 
: {{bc|# reboot}}
 
: {{bc|# reboot}}
   
*キーボード・マウス・タッチパッドなどに問題がおこる場合は [[:カテゴリ:入力デバイス]]内のそれぞれのページを見て下さい。
+
* キーボード・マウス・タッチパッドなどに問題がおこる場合は [[:カテゴリ:入力デバイス]] 内のそれぞれのページを見て下さい。
*[[ATI]]、[[Intel Graphics|Intel]]、[[NVIDIA]] の記事に問題の解決方法が載ってないか調べてください。
+
* [[AMDGPU]]、[[Intel Graphics]]、[[NVIDIA]] の記事に問題の解決方法が載ってないか調べてください。
   
=== Black screen, No protocol specified, Resource temporarily unavailable for all or some users ===
+
=== 一部またはすべてのユーザで黒画面、No protocol specifiedResource temporarily unavailable ===
   
X は設定と一時ファイルをユーザーの home ディレクトリに作成します。あなたの home ディレクトリが入っているパーティションに十分な空き容量があることを確認してください。悪いことに、ディスク容量が不足していることを X サーバーは何も知らせません。
+
X は設定ファイルと一時ファイルをユーザーのホームディレクトリに作成します。あなたのホームディレクトリが入っているパーティションに十分な空き容量があることを確認してください。悪いことに、ディスク容量が不足していることを X サーバーは何も知らせません。
   
 
=== Matrox カードで DRI が停止する ===
 
=== Matrox カードで DRI が停止する ===
549行目: 614行目:
 
=== プログラムが "font '(null)'" を要求する ===
 
=== プログラムが "font '(null)'" を要求する ===
   
*エラーメッセージ: "''unable to load font `(null)'.''"
+
エラーメッセージ: {{ic|unable to load font `(null)'}}
  +
いくつかのプログラムはビットマップフォントでだけ動作します。2つの主要なビットマップフォントのパッケージがあります、{{Pkg|xorg-fonts-75dpi}} と {{Pkg|xorg-fonts-100dpi}} です。両方は必要ありません、片方だけで十分です。どちらがあなたに適しているか調べるには、次を実行してください:
 
  +
いくつかのプログラムはビットマップフォントでだけ動作します。2つの主要なビットマップフォントのパッケージがあります、{{Pkg|xorg-fonts-75dpi}} と {{Pkg|xorg-fonts-100dpi}} です。両方は必要ありません、片方だけで十分です。どちらがあなたに適しているか調べるには、{{Pkg|xorg-xdpyinfo}} の {{ic|xdpyinfo}} を試してください:
  +
 
$ xdpyinfo | grep resolution
 
$ xdpyinfo | grep resolution
  +
それからあなたに適している方を使って下さい (XX は 75 か 100 に置き換える):
 
  +
そして、出力された値に最も近い方のフォントを使用してください。
# pacman -S xorg-fonts-XXdpi
 
   
 
=== リカバリ: GUI ログインの前に Xorg を無効化 ===
 
=== リカバリ: GUI ログインの前に Xorg を無効化 ===
577行目: 644行目:
 
=== X が起動できない: Keyboard initialization failed ===
 
=== X が起動できない: Keyboard initialization failed ===
   
ハードディが満杯の場合、startx は失敗します。{{ic|/var/log/Xorg.0.log}} の最後が次のようになるはずです:
+
ファイルシテム(特に {{ic|/tmp}})が満杯の場合、{{ic|startx}} は失敗します。ログファイルには以下のように出力されます:
(EE) Error compiling keymap (server-0)
 
(EE) XKB: Couldn't compile keymap
 
(EE) XKB: Failed to load keymap. Loading default keymap instead.
 
(EE) Error compiling keymap (server-0)
 
(EE) XKB: Couldn't compile keymap
 
XKB: Failed to compile keymap
 
Keyboard initialization failed. This could be a missing or incorrect setup of xkeyboard-config.
 
Fatal server error:
 
Failed to activate core devices.
 
Please consult the The X.Org Foundation support at http://wiki.x.org
 
for help.
 
Please also check the log file at "/var/log/Xorg.0.log" for additional information.
 
(II) AIGLX: Suspending AIGLX clients for VT switch
 
   
  +
{{bc|
root パーティションに空き容量を作ってから X を起動してください。
 
  +
(EE) Error compiling keymap (server-0)
  +
(EE) XKB: Could not compile keymap
  +
(EE) XKB: Failed to load keymap. Loading default keymap instead.
  +
(EE) Error compiling keymap (server-0)
  +
(EE) XKB: Could not compile keymap
  +
XKB: Failed to compile keymap
  +
Keyboard initialization failed. This could be a missing or incorrect setup of xkeyboard-config.
  +
Fatal server error:
  +
Failed to activate core devices.
  +
...
  +
}}
  +
  +
関連するファイルシステムにいくらかの空き領域を作れば X は起動するでしょう。
   
 
=== 動画を視聴しようとすると緑色の画面が表示される ===
 
=== 動画を視聴しようとすると緑色の画面が表示される ===
600行目: 667行目:
 
=== SocketCreateListener エラー ===
 
=== SocketCreateListener エラー ===
   
"SocketCreateListener() failed" というエラーメッセージを吐いて X が落ちてしまう場合、{{ic|/tmp/.X11-unix}} 内のソケットファイルを削除する必要があります。この問題は root Xorg を起動した場合に発生ます。
+
{{ic|SocketCreateListener() failed}} というエラーメッセージを吐いて X が落ちてしまう場合、{{ic|/tmp/.X11-unix}} 内のソケットファイルを削除する必要があります。この問題は、(例えば {{ic|xorg.conf}} を生成するために)前回に Xorg を root として実行した場合に発生することがあります。
  +
  +
=== プログラムを root として実行しようとした際に Invalid MIT-MAGIC-COOKIE-1 key ===
  +
  +
このエラーは、現在のユーザのみが X サーバへのアクセス権を持っていることを意味しています。解決策は root にアクセス権を与えることです:
  +
  +
$ xhost +si:localuser:root
  +
  +
このコマンドは、root 以外のユーザに X へのアクセス権を与える際にも使用できます。
  +
  +
=== Xorg-server Fatal server error: (EE) AddScreen/ScreenInit ===
  +
  +
Xorg サーバがランダムに動作しなくなり、Xorg のログに以下が出力される場合:
  +
  +
systemd-logind: failed to take device /dev/dri/card0: Operation not permitted
  +
...
  +
AddScreen/ScreenInit failed for driver 0
  +
  +
この問題は [https://github.com/systemd/systemd/issues/13943 systemd issue 13943] により発生する場合があります。[[Kernel Mode Setting#Early KMS start|KMS の早期起動]]をセットアップしてください。
   
 
== 参照 ==
 
== 参照 ==
   
 
* [https://magcius.github.io/xplain/article/ Xplain] - X Window System の詳しい解説
 
* [https://magcius.github.io/xplain/article/ Xplain] - X Window System の詳しい解説
  +
* {{man|1|Xorg}}
  +
* [https://developer.ibm.com/tutorials/l-lpic1-106-1/ Prepare for LPIC-1 exam 2 - topic 106.1: X11] - アーキテクチャ、[[#設定]]、[[デスクトップ環境]]、リモートでの使用、[[Wayland]] に関して簡単に説明しています。
  +
* {{man|5|xorg.conf}}
  +
* [[Gentoo:Xorg/Guide/ja#設定]]
  +
  +
{{TranslationStatus|Xorg|2024-07-04|807409}}

2024年7月4日 (木) 23:56時点における最新版

関連記事

https://www.x.org/wiki/ より:

X.Org プロジェクトは X Window System のオープンソース実装を提供しています。開発作業は freedesktop.org コミュニティと共同で行われています。X.Org Foundation は理事会がこの取り組みを提供し、メンバーがこの作業を主導する教育非営利法人です。

Xorg (一般的には単に X と呼ばれる)は、Linux ユーザーの間で最も人気のあるディスプレイサーバーです。その普遍性により、GUI アプリケーションにとって Xorg は欠かせない存在となり、ほとんどのディストリビューションで広く採用されています。詳しくは Wikipedia の XorgXorg のウェブサイト を見て下さい。

Xorg の代替かつ後継については Wayland を参照してください。

目次

インストール

Xorg は xorg-server パッケージでインストールできます。

また、設定作業などに必要なパッケージのいくつかが xorg-apps グループに入っており、それぞれ関連するセクションで説明しています。

xorg グループも利用できます。このグループには Xorg サーバのパッケージや xorg-apps のパッケージ、フォントが含まれています。

ドライバーのインストール

Linux カーネルにはオープンソースのビデオドライバーが含まれておりハードウェアでアクセラレートされたフレームバッファをサポートしています。しかし、OpenGL や X11 における 2D アクセラレーションを使うにはユーザーランドのサポートが必要です。

まず、あなたのカードを確認してください:

$ lspci | grep -e VGA -e 3D

それから適切なドライバーをインストールしてください。パッケージデータベースを検索してオープンソースビデオドライバーの一覧を表示することができます:

$ pacman -Ss xf86-video

Xorg はインストールされているドライバーを自動的に検索します:

  • 使用しているハードウェアに合うドライバー(以下に記載)がインストールされていない場合、Xorg はまず最初に fbdev (xf86-video-fbdev) を検索します。
  • fbdev が存在しなかった場合、次に汎用ドライバーである vesa (xf86-video-vesa) を検索します。vesa はほとんどのチップセットで動作しますが 2D や 3D のアクセラレーションは含まれていません。
  • vesa も見つからない場合、Xorg はカーネルモードセッティングにフォールバックします。カーネルモードセッティングでは GLAMOR アクセラレーションが利用できます (modesetting(4) を参照)。

ビデオアクセラレーション機能を動かしたり、GPU が設定できる全てのモードを表示するには、適切なビデオドライバが必要です:

ブランド 種類 ドキュメント ドライバ OpenGL OpenGL (multilib) Vulkan Vulkan (multilib)
AMD (旧 ATI) オープンソース AMDGPU xf86-video-amdgpu mesa lib32-mesa vulkan-radeon / amdvlk4 lib32-vulkan-radeon / lib32-amdvlk4
ATI xf86-video-ati 無し
プロプライエタリ AMDGPU PRO xf86-video-amdgpu amdgpu-pro-oglpAUR lib32-amdgpu-pro-oglpAUR vulkan-amdgpu-proAUR lib32-vulkan-amdgpu-proAUR
Intel オープンソース Intel graphics xf86-video-intel2 mesa または mesa-amber3 lib32-mesa vulkan-intel lib32-vulkan-intel
NVIDIA オープンソース Nouveau1 xf86-video-nouveau mesa lib32-mesa vulkan-nouveau lib32-vulkan-nouveau
プロプライエタリ NVIDIA1 nvidia nvidia-utils lib32-nvidia-utils nvidia-utils lib32-nvidia-utils
nvidia-470xx-dkmsAUR nvidia-470xx-utilsAUR lib32-nvidia-470xx-utilsAUR nvidia-470xx-utilsAUR lib32-nvidia-470xx-utilsAUR
nvidia-390xx-dkmsAUR nvidia-390xx-utilsAUR lib32-nvidia-390xx-utilsAUR nvidia-390xx-utilsAUR lib32-nvidia-390xx-utilsAUR
  1. 統合 GPU と専用 GPU を組み合わせて使用する NVIDIA Optimus 対応のノート PC に関しては NVIDIA Optimus を参照してください。
  2. 第4世代及びそれ以降の Intel グラフィックスに関しては、Intel graphics#インストール で利用可能なドライバを確認してください。
  3. 古いハードウェア用のクラシック OpenGL (Gallium3D でない) ドライバです (Mesa 22.0 及びそれ以降では、i915 クラシックドライバのサポートが落とされています)。
  4. vulkan-radeon / lib32-vulkan-radeonamdvlk / lib32-amdvlk よりも推奨されます (AMDGPU#インストール を参照)。

他のビデオドライバーは xorg-drivers グループで見つけることができます。

Xorg はクローズドソースのドライバーがなくとも問題なく動作するはずです。基本的に、ゲームのための 3D 支援レンダリングや、デュアルスクリーン、TV 出力など高度な機能を使う場合にのみプロプライエタリのドライバが必要になります。オープンソースのドライバーでサポートされない最近の GPU (特に NVIDIA GPU)は例外です。

AMD

モデル名 (例: Radeon RX 6800) から GPU アーキテクチャ (例: RDNA 2) への変換は、Wikipedia:List of AMD graphics processing units#Features overview を見てください。

GPU アーキテクチャ オープンソースドライバ プロプライエタリドライバ
RDNA 及びそれ以降 AMDGPU AMDGPU PRO
GCN 3 及びそれ以降
GCN 1 と 2 AMDGPU1 / ATI 利用不可
TeraScale
及びそれ以前
ATI 利用不可
  1. 試験的。

起動

Xorg(1) コマンドを直接実行することは通常ありません。代わりに、ディスプレイマネージャxinit を用いて X サーバを起動します。

ヒント: たいてい、X の機能を補完するために ウィンドウマネージャデスクトップ環境 をインストールすることになるでしょう。

設定

ノート: Arch はデフォルトの設定ファイルを /usr/share/X11/xorg.conf.d に配置しており、ほとんどの場合、追加の設定は必要ありません。

Xorg は初期設定に xorg.conf という名前の設定ファイルと .conf が末尾につくファイルを使います: これらのファイルが検索されるフォルダの完全なリストは xorg.conf(5) で見られます(利用可能なすべてのオプションの詳細な説明付き)。

.conf ファイルを使う

/etc/X11/xorg.conf.d/ ディレクトリにはホスト固有の設定を保存します。あなたは自由に設定ファイルをそのディレクトリに追加することができますが、ファイル名には .conf 拡張子がなければなりません。さらに、これらのファイルは ASCII 順で読み込まれます。これらのファイル名は XX- (2桁の整数とハイフン)で始めるのが慣例です(例えば 10 は 20 よりも早く読み込まれます)。これらのファイルは X サーバーの起動時にパースされオリジナルの xorg.conf 設定ファイルの一部として扱われます。設定が競合した場合は、一番最後のファイルが処理されることに注意してください。これにより、最も一般的な設定ファイルは名前順で一番最初にあるべきです。xorg.conf ファイル内の設定エントリは一番最後に処理されます。

設定オプションの例は Fedora:Input device configuration#xorg.conf.d を見てください。

xorg.conf を使う

/etc/X11/xorg.conf/etc/xorg.conf で Xorg を設定することもできます。xorg.conf のスケルトンを生成するには

# Xorg :0 -configure

上のコマンドで /root/xorg.conf.new ファイルが作られるはずです。これを /etc/X11/xorg.conf にコピーして上書きすることができます。

ヒント: 既に X サーバーを動作させている場合は、別のディスプレイを使って下さい、例: Xorg :2 -configure

もしくは、あなたのビデオカードドライバに自動で Xorg を設定するツールが含まれているかもしれません。詳しくは NVIDIAAMDGPU PRO などあなたの使っているビデオカードの記事を見て下さい。

ノート: 設定ファイルは大文字・小文字を区別しません、また “_” は無視されます。(Option など) 設定ファイル内のほとんどの文字列も大文字・小文字・空白・“_” を区別しません。

入力デバイス

入力デバイスのドライバーについては、X サーバーはデフォルトで libinput ドライバー (xf86-input-libinput) を使用しますが、xf86-input-evdev と関連するドライバーも使用できます [1]

Udev があなたのハードウェアを検知し、/usr/share/X11/xorg.conf.d/ ディレクトリに入っているデフォルト設定ファイル 10-evdev.conf40-libinput.conf によって、evdev と libinput がほとんど全てのデバイスのホットプラグ・インプットドライバーとして動作します。Udevsystemd によって提供されています。

X サーバーの起動後、ログファイルを確認することで、どちらのドライバーがデバイスによってホットプラグされているか確認できます (ログファイルの名前は違っているかもしれません):

$ grep -e "Using input driver " Xorg.0.log

evdev や libinput があなたの持っているデバイスをサポートしていないときは、必要なドライバーを xorg-drivers グループからインストールしてください。

ホットプラグの動作については#設定を見てください。

より詳細な手順については、libinput の記事や以下に述べる記事、より多くの例は Fedora:Input device configuration を見てください。

入力の識別

キーボード入力#Xorg でキーコードを確認する を見てください。

マウスのアクセラレーション

マウスのアクセラレーション を見てください。

特殊なマウスボタン

全てのマウスボタンを動作させる を見てください。

タッチパッド

libinput または Synaptics タッチパッド を見てください。

タッチスクリーン

タッチスクリーン を見てください。

キーボードの設定

Xorg でのキーボード設定 を見てください。

モニターの設定

手動設定

ノート:
  • Xorg の新しいバージョンは自動設定されます。なので、手動設定は必要ないはずです。
  • Xorg がモニタを検出できない場合や自動設定をしたくない場合、設定ファイルを使用することができます。これが必要になる一般的なケースとしては、モニタ無しで起動し、Xorg が自動的に起動するヘッドレスなシステムに仮想コンソールディスプレイマネージャを使用してログインする場合です。

ヘッドレスな環境においては、xf86-video-dummy ドライバが必須です; それをインストールし、例えば以下のような設定ファイルを作成してください:

/etc/X11/xorg.conf.d/10-headless.conf
Section "Monitor"
        Identifier "dummy_monitor"
        HorizSync 28.0-80.0
        VertRefresh 48.0-75.0
        Modeline "1920x1080" 172.80 1920 2040 2248 2576 1080 1081 1084 1118
EndSection

Section "Device"
        Identifier "dummy_card"
        VideoRam 256000
        Driver "dummy"
EndSection

Section "Screen"
        Identifier "dummy_screen"
        Device "dummy_card"
        Monitor "dummy_monitor"
        SubSection "Display"
        EndSubSection
EndSection

マルチモニター

一般的な情報はマルチディスプレイを見て下さい。

複数のグラフィックカード

利用するドライバを正しく定めてグラフィックカードのバス ID を(10進数表記で)入力する必要があります。

Section "Device"
    Identifier             "Screen0"
    Driver                 "intel"
    BusID                  "PCI:0:2:0"
EndSection

Section "Device"
    Identifier             "Screen1"
    Driver                 "nouveau"
    BusID                  "PCI:1:0:0"
EndSection

(16進数の)バス ID を取得するには:

$ lspci | grep -e VGA -e 3D
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 630 (rev 04)
01:00.0 3D controller: NVIDIA Corporation GP107M [GeForce GTX 1050 Mobile] (rev a1)

この場合、バス ID は 0:2:01:0:0 となります。

画面サイズと DPI

2009 以降、デフォルトで Xorg は常に DPI を 96 に設定します([2] を参照)。適切な DPI を自動検出する変更がバージョン 21.1 で加えられましたが、差し戻されました(FS#72661 を参照)。

X サーバの DPI は -dpi コマンドラインオプションで設定できます。

細かなディーテールが要求される場面(フォントレンダリングなど)では、正しい DPI を設定すると役に立つことがあります。以前は、メーカーは 96 DPI を標準として作成していました (10.3" モニターなら 800x600、13.2" モニターなら 1024x768)。最近では、画面の DPI は様々であり、縦横で等しくないこともあります。例えば、19" ワイドスクリーン LCD が 1440x900 なら DPI が 89x87 になります。

ディスプレイのサイズと DPI が正しく検出・計算されているか確認するには:

$ xdpyinfo | grep -B2 resolution

寸法がディスプレイサイズと一致しているかチェックしてください。

スクリーンの物理的な大きさがわかっているときは、Xorg の設定ファイルに入力することで正しい DPI が計算されます(実際の xrandr の出力に合わせて Identifier を調整してください):

Section "Monitor"
    Identifier             "DVI-D-0"
    DisplaySize             286 179    # ミリメートル単位
EndSection

フルの xorg.conf を作成しないでモニタの仕様の入力だけを行いたい場合は新しい設定ファイルを作成してください。例えば (/etc/X11/xorg.conf.d/90-monitor.conf):

Section "Monitor"
    Identifier             "<default monitor>"
    DisplaySize            286 179    # In millimeters
EndSection
ノート: プロプライエタリな NVIDIA ドライバを使用している場合、上記の変更を反映させるために、DeviceScreen セクションに Option "UseEdidDpi" "FALSE" を追加する必要がある場合があります。

スクリーンの横と縦の物理的な長さがわからないときは(最近は対角線の長さ(インチ数)しかわからないことも多い)、モニターの最大解像度(またはアスペクト比)と対角線の長さを使って縦と横の長さを計算できます。ピタゴラスの定理を使って最大解像度1280x800(もしくはアスペクト比16:10)、13.3インチのスクリーンの場合:

$ echo 'scale=5;sqrt(1280^2+800^2)' | bc  # 1509.43698

このコマンドでピクセルの対角線の長さがわかり、この値を使うことで物理的な縦と横の長さを知ることができます (そしてそれをミリメートルに変換できます):

$ echo 'scale=5;(13.3/1509)*1280*25.4' | bc  # 286.43072
$ echo 'scale=5;(13.3/1509)*800*25.4'  | bc  # 179.01920
ノート: 上記の計算はピクセルアスペクト比が1:1のモニターでは上手く行きますが、モニターによってはアスペクト比が潰されることがあります (例: 16:10 のアスペクト解像度が 16:9 のモニターに適用される)。その場合、画面の大きさを手動で計測する必要があります。

手動で DPI を設定する

ノート: dpi は自由に設定することができ、Qt や GTK を使用しているアプリケーションはそれにあわせてスケールしますが、スケールによる画像の乱れがビットマップを使用する GUI に現れないように dpi は 96, 120 (25% 増分), 144 (50% 増分), 168 (75% 増分), 192 (100% 増分) などに設定するのを推奨します。また、アイコンの最低 dpi は基本的に 96 になっているので、96 dpi 未満に設定しても GUI のグラフィックのサイズは小さくなりません。

RandR に対応しているドライバ (例えばオープンソースの ATI ドライバ) なら、次のコマンドで設定できます:

$ xrandr --dpi 144
ノート: 変更はすぐにはアプリケーションに適用されません。再起動する必要があります。

設定を永続的にするには 自動起動#Xorg のスタートアップ を見て下さい。

プロプライエタリの NVIDIA ドライバー

DeviceScreen セクション下にオプションを追加することで DPI を手動で設定できます:

Option              "DPI" "96 x 96"
Manual DPI Setting Caveat

GTK はしばしば、オプションの Xresource Xft.dpi を通して Xorg サーバの DIP を上書きします。これがあなたの環境で起こっているかどうかを確認するには:

$ xrdb -query | grep dpi

GTK ライブラリのバージョン 3.16 以降、この変数が明示的に設定されていない場合、GTK はこの変数の値を 96 に設定します。GTK アプリがサーバの DPI に従うようにするには、Xft.dpi の値をサーバのもとと同じに明示的に設定する必要があります。Xft.dpi リソースは、一部のデスクトップ環境の個人設定で DIP を特定の値に強制的に設定する手段です。KDETDE がその例です。

Display Power Management

DPMS はコンピュータが使われていない時にモニターを省電力モードに移行させる技術です。一定時間後にモニタを自動で待機状態にすることができます。

コンポジット

X の Composite 拡張によってウィンドウ階層のサブツリー全体がオフスクリーンバッファにレンダリングされます。アプリケーションはバッファの内容を取得できるようになります。オフスクリーンバッファは親のウィンドウに自動的にマージされるか、コンポジットマネージャと呼ばれる外部のプログラムによってマージされます。詳しくは次のページを見て下さい: Wikipedia:ja:コンポジット型ウィンドウマネージャ

ウィンドウマネージャによっては、コンポジットマネージャをインストールしなくてもコンポジットが行われます (例: Compiz, Enlightenment, KWin, Marco, Metacity, Muffin, Mutter, Xfwm)。そうでないウィンドウマネージャの場合、スタンドアロンのコンポジットマネージャを使用します。

コンポジットマネージャ一覧

  • Picom — 影、高度なぼかし、フェード機能を搭載した軽量なコンポジタ。Compton からフォークされました。
https://github.com/yshui/picom || picom
  • Xcompmgr — X.org 向けのウィンドウ効果ができるコンポジットマネージャ。
https://gitlab.freedesktop.org/xorg/app/xcompmgr/ || xcompmgr
  • Gamescope — Valve のマイクロコンポジタ。FSR アップスケーリングなどのゲーム志向の機能が搭載されています。steamos-compositor からフォークされました。
https://github.com/ValveSoftware/gamescope || gamescope
  • steamos-compositor-plus — Valve のコンポジタ。いくつかの調整と修正が加えられています。
https://github.com/chimeraos/steamos-compositor-plus || steamos-compositor-plusAUR

ヒントとテクニック

自動化

このセクションでは、キーボード/マウスの入力やウィンドウ操作(移動、リサイズ、レイズなど)の自動化のためのユーティリティを挙げています。

ツール パッケージ マニュアル Keysym
インプット
ウィンドウ
操作
備考
xautomation xautomation xte(1) Yes No スクリーンスクレイピングツールも同梱。F13 などのシミュレート不可。
xdo xdo xdo(1) No Yes ウィンドウの基本的なアクションを行う小さな X ユーティリティ。
xdotool xdotool xdotool(1) Yes Yes バグが多く、活発に開発されていない。例: CLI パースが壊れている[3][4]
xvkbd xvkbdAUR xvkbd(1) Yes No Xorg のための仮想キーボード。文字を送るための -text オプションもあり。
AutoKey autokey-qtAUR autokey-gtkAUR ドキュメント Yes Yes 高レベルで強力なマクロとスクリプトユーティリティ。Qt と Gtk の両方のフロントエンドあり。

クリップボード#ツールX 自動化ツールの概要 も参照してください。

ネストした X セッション 

他のデスクトップ環境に入れ子になったセッションを起動するには:

$ /usr/bin/Xnest :1 -geometry 1024x768+0+0 -ac -name Windowmaker & wmaker -display :1

上記で現在の X セッションの中に 1024x768 のウィンドウの Window Maker セッションが起動します。

このためには xorg-server-xnest パッケージをインストールする必要があります。

X セッションをネストする、よりモダンな方法は Xephyr です。

ウィンドウマネージャ無しでアプリケーションを起動する

xinit#ウィンドウマネージャを使わずにアプリケーションを起動 を見てください。

リモートで GUI プログラムを実行する

次の記事を参照してください: OpenSSH#X11 フォワーディング

必要に応じて入力ソースを有効化・無効化

xinput を使えば一時的に入力ソースを有効化・無効化することができるようになります。ThinkPad のように複数のマウスがあって、どちらか片方だけ使いたい時などに役立ちます。

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

無効化したいデバイスの ID を調べて下さい:

$ xinput

例えば Lenovo ThinkPad T500 では、出力は以下のようになります:

$ xinput
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ TPPS/2 IBM TrackPoint                     id=11   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=10   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=9    [slave  keyboard (3)]
    ↳ ThinkPad Extra Buttons                    id=12   [slave  keyboard (3)]

xinput --disable device_id (device_id は無効化したいデバイスの ID) でデバイスを無効にします。次の例では Synaptics Touchpad の ID 10 を無効にします:

$ xinput --disable 10

デバイスを有効にするには、次のコマンドを実行してください:

$ xinput --enable 10

もしくはデバイス名を使うこともできます。タッチパッドを無効化するコマンドは:

$ xinput --disable "SynPS/2 Synaptics TouchPad"

入力ソースを永続的に無効化する

以下の設定スニペットを使用することで、特定の入力ソースを無効化できます:

/etc/X11/xorg.conf.d/30-disable-device.conf
Section "InputClass"
       Identifier   "disable-device"
       Driver       "driver_name"
       MatchProduct "device_name"
       Option       "Ignore" "True"
EndSection

device は任意の名前です。driver_name は入力ドライバの名前です (例: libinput)。device_name は、適切なデバイスとマッチするように使用されるものです。正しいデバイスを指定する他の方法 (libinputMatchIsTouchscreen など) は、使用している入力ドライバのドキュメントを調べてください。この例では libinput を使用していますが、これはドライバに依存しない方法であり、対象のデバイスがドライバに伝達されないようにします。

ホットキーでアプリケーションを終了

ホットキーでスクリプトを実行:

#!/bin/sh
windowFocus=$(xdotool getwindowfocus)
pid=$(xprop -id "$windowFocus" | grep PID)
kill -9 "$pid"

依存パッケージ: xorg-xprop, xdotool

#視覚的にアプリケーションを kill する も参照。

TTY へのアクセスをブロック

X から tty へのアクセスをブロックしたい場合、以下を xorg.conf に追加してください:

Section "ServerFlags"
    Option "DontVTSwitch" "True"
EndSection

これは、信頼できないユーザによる、システムのコマンドラインへのアクセスを制限するのに役立ちます。

ユーザーが X を終了できないようにする

X が動作しているときにユーザーから kill されないようにしたい場合、以下を xorg.conf に追加してください:

Section "ServerFlags"
    Option "DontZap"      "True"
EndSection
ノート: Ctrl+Alt+Backspace ショートカットは、直接 X サーバの kill をトリガーするものではなく、キーマップの Terminate_Server アクションをトリガーします。通常、これはデフォルトで設定されていません。Xorg でのキーボード設定#Ctrl+Alt+Backspace で Xorg を終了する を見てください。

視覚的にアプリケーションを kill する

アプリケーションが誤動作したり固まったりした場合、ターミナルから killkillall を使うためにプロセス ID や名前を見つける代わりに、xorg-xkill を使えばアプリケーションをクリックして X サーバとの接続を閉じることができます。多くの既存のアプリケーションは、X サーバとの接続が閉じるとアボートしますが、一部のアプリケーションは実行し続ける可能性があります。

Rootless Xorg

Xorg は root の代わりに標準的なユーザー権限で実行することができます (いわゆる "rootless" Xorg)。これは root で実行するよりもセキュリティ上重要な改善です。一部の人気なディスプレイマネージャ (例: LightDMXDM) はルートレス Xorg をサポートしていないことに注意してください。

Xorg がどのユーザーとして実行されているかは ps -o user= -C Xorg で確認できます。

Xorg.wrap(1), systemd-logind(8), systemd のユーザーサービスとしての Xorg, Fedora:Changes/XorgWithoutRootRights , FS#41257 も参照して下さい。

xinitrc の使用

xinitrc を使ってルートレス Xorg を設定するには:

  • startx を直接実行し、exec startx を使用しないでください。
  • .xserverrc を介して $XDG_VTNR で logind から渡されたパーミッションの仮想コンソールを Xorg が使用することを確認してください。
  • 特定のプロプライエタリなディスプレイドライバを使用している場合、カーネルモードセッティング自動検出は失敗します。その場合は、/etc/X11/Xwrapper.configneeds_root_rights = no を設定する必要があります。

GDM の使用

カーネルモード設定を使用する場合、GDM はデフォルトで root 権限なしに Xorg を実行します。

セッションログのリダイレクト

Xorg をルートレスモードで実行すると、Xorg のログは、~/.local/share/xorg/Xorg.log に保存されます。しかし、Xorg セッションからの stdout と stderr の出力はこのログにリダイレクトされません。リダイレクトを再度有効にするには、Xorg を -keeptty フラグで起動し、stdout と stderr の出力をファイルにリダイレクトします。

startx -- -keeptty >~/.xorg.log 2>&1

もしくは、/etc/X11/xinit/xserverrc~/.xserverrc にコピーして、-keeptty を追加します。[5] を参照してください。

root として Xorg を実行

上記の通り、rootless Xorg がデフォルトであるような状況が存在します。rootless Xorg がデフォルトである環境で Xorg を root として実行する必要がある場合、Xorg.wrap(1) を設定して root を要求するようにできます。

警告: Xorg を root として実行するとセキュリティ上の問題を引き起こします。さらなる議論については #Rootless Xorg を見てください。
/etc/X11/Xwrapper.config
needs_root_rights = yes

トラブルシューティング

一般

何か問題が発生したらログを確認してください。ログは /var/log/ または (v1.16 からデフォルトのルートレス X の場合) ~/.local/share/xorg/ の中に保存されています。GDM を使っている場合は systemd のジャーナルをチェックしてください [6]

ログファイルの名前は Xorg.n.log という形式を取ります: n はディスプレイ番号です。デフォルト設定のシングルユーザーマシンの場合は Xorg.0.log を確認すれば良いですが、他の構成の場合は見るべきログは違うかもしれません。X サーバーのセッションが起動したときのタイムスタンプと X が起動するのに使われたコンソールを確認することで適切なログファイルを見分けられます。例:

$ grep -e Log -e tty Xorg.0.log
[    40.623] (==) Log file: "/home/archuser/.local/share/xorg/Xorg.0.log", Time: Thu Aug 28 12:36:44 2014
[    40.704] (--) controlling tty is VT number 1, auto-enabling KeepTty
ヒント: 読みやすいタイムスタンプをログに追加するには、tail(1) の出力を ts(1) (moreutils パッケージに含まれています) にパイプで繋ぐことができます。ただし、コマンドが実行されている時にログに追加された行にしか正しいタイムスタンプは追加されません。例:
$ tail -f ~/.local/share/xorg/Xorg.0.log | ts
  • ログファイルの中に (EE) で始まる行が存在しないか確認してください。(EE) はエラーです。また、(WW) は警告です。
  • $HOME に存在する .xinitrc ファイルが空の場合、X を起動するにはファイルを削除するか正しく編集する必要があります。空の場合、X は画面を表示せず Xorg.0.log にエラーも出力されません。ファイルを削除するとデフォルトの X 環境が起動します。
  • 画面がブラックアウト場合、異なる仮想コンソールに切り替えて(例: Ctrl+Alt+F6)、スクリーンの出力無しで root としてログインできます。そうするには、root と入力し(その後 Enter を押して)、root のパスワードを入力してください(その後、再び Enter を押してください)。
次のコマンドで X サーバーを終了させることが可能です:
# pkill -x X
上記のコマンドが機能しない場合、再起動してください:
# reboot

一部またはすべてのユーザで黒画面、No protocol specified、Resource temporarily unavailable

X は設定ファイルと一時ファイルをユーザーのホームディレクトリに作成します。あなたのホームディレクトリが入っているパーティションに十分な空き容量があることを確認してください。悪いことに、ディスク容量が不足していることを X サーバーは何も知らせません。

Matrox カードで DRI が停止する

Matrox カードを使っていて Xorg をアップグレードすると DRI が停止する場合、次の行を xorg.conf のビデオカードの Device セクションに追加してください:

Option "OldDmaInit" "On"

フレームバッファモード問題

以下のログメッセージを残して X の起動が失敗する場合:

(WW) Falling back to old probe method for fbdev
(II) Loading sub module "fbdevhw"
(II) LoadModule: "fbdevhw"
(II) Loading /usr/lib/xorg/modules/linux//libfbdevhw.so
(II) Module fbdevhw: vendor="X.Org Foundation"
       compiled for 1.6.1, module version=0.0.2
       ABI class: X.Org Video Driver, version 5.0
(II) FBDEV(1): using default device

Fatal server error:
Cannot run in framebuffer mode. Please specify busIDs for all framebuffer devices

xf86-video-fbdev パッケージをアンインストールしてください。

プログラムが "font '(null)'" を要求する

エラーメッセージ: unable to load font `(null)'

いくつかのプログラムはビットマップフォントでだけ動作します。2つの主要なビットマップフォントのパッケージがあります、xorg-fonts-75dpixorg-fonts-100dpi です。両方は必要ありません、片方だけで十分です。どちらがあなたに適しているか調べるには、xorg-xdpyinfoxdpyinfo を試してください:

$ xdpyinfo | grep resolution

そして、出力された値に最も近い方のフォントを使用してください。

リカバリ: GUI ログインの前に Xorg を無効化

Xorg を自動的に起動するように設定していて、なんらかの理由でログイン・ディスプレイマネージャが表示される前に Xorg が起動するのを防ぎたい場合(例えば、システムを間違って設定したせいで Xorg がマウスやキーボード入力を受け付けない場合)、以下の2つの方法でこれを達成できます。

  • デフォルトのターゲットを rescue.target に変更してください。systemd#起動時のデフォルトターゲットを変更する を参照。
  • 誤ってシステムを設定して Xorg を使えなくしただけでなく、GRUB メニューの待ち時間をゼロに設定、または起動時から Xorg を無効にするのに GRUB を使えない場合、Arch Linux のライブ CD を使って下さい。インストールガイドに従ってインストールした Arch Linux をマウントして chroot します。もしくは、Ctrl+Alt + function キー (通常は X によって使用されていない F1 から F7) を使って tty を切り替えてから root でログインして以下を行います。

設定に応じて、以下の作業のどれか、または複数を行う必要があります:

"su" で X クライアントの起動が失敗する

"Client is not authorized to connect to server" と表示される場合、次の行を /etc/pam.d/su/etc/pam.d/su-l に追加して下さい:

session        optional        pam_xauth.so

pam_xauth が正しく環境変数を設定し xauth キーを管理します。

X が起動できない: Keyboard initialization failed

ファイルシステム(特に /tmp)が満杯の場合、startx は失敗します。ログファイルには以下のように出力されます:

(EE) Error compiling keymap (server-0)
(EE) XKB: Could not compile keymap
(EE) XKB: Failed to load keymap. Loading default keymap instead.
(EE) Error compiling keymap (server-0)
(EE) XKB: Could not compile keymap
XKB: Failed to compile keymap
Keyboard initialization failed. This could be a missing or incorrect setup of xkeyboard-config.
Fatal server error:
Failed to activate core devices.
...

関連するファイルシステムにいくらかの空き領域を作れば X は起動するでしょう。

動画を視聴しようとすると緑色の画面が表示される

色深度の設定が間違っています。例えば、16ではなく24に設定する必要があります。

SocketCreateListener エラー

SocketCreateListener() failed というエラーメッセージを吐いて X が落ちてしまう場合、/tmp/.X11-unix 内のソケットファイルを削除する必要があります。この問題は、(例えば xorg.conf を生成するために)前回に Xorg を root として実行した場合に発生することがあります。

プログラムを root として実行しようとした際に Invalid MIT-MAGIC-COOKIE-1 key

このエラーは、現在のユーザのみが X サーバへのアクセス権を持っていることを意味しています。解決策は root にアクセス権を与えることです:

$ xhost +si:localuser:root

このコマンドは、root 以外のユーザに X へのアクセス権を与える際にも使用できます。

Xorg-server Fatal server error: (EE) AddScreen/ScreenInit

Xorg サーバがランダムに動作しなくなり、Xorg のログに以下が出力される場合:

systemd-logind: failed to take device /dev/dri/card0: Operation not permitted
...
AddScreen/ScreenInit failed for driver 0

この問題は systemd issue 13943 により発生する場合があります。KMS の早期起動をセットアップしてください。

参照

翻訳ステータス: このページは en:Xorg の翻訳バージョンです。最後の翻訳日は 2024-07-04 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。