「Xorg」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (関連記事を修正(英語版に追従)) |
Kusanaginoturugi (トーク | 投稿記録) (→ユーザーが X を終了できないようにする: === Rootless Xorg === を英語版より追加) |
||
549行目: | 549行目: | ||
Option "DontZap" "True" |
Option "DontZap" "True" |
||
EndSection}} |
EndSection}} |
||
+ | |||
+ | === Rootless Xorg === |
||
+ | |||
+ | Xorg may run with standard user privileges instead of root (so-called "rootless" Xorg). This is a significant security improvement over running as root. Note that most display managers do not support rootless Xorg. |
||
+ | |||
+ | You can verify which user Xorg is running as with {{ic|ps -o user $(pgrep Xorg)}}. |
||
+ | |||
+ | See also {{man|1|Xorg.wrap}}, {{man|8|systemd-logind}}, [[Systemd/User#Xorg as a systemd user service]], [[Fedora:Changes/XorgWithoutRootRights]] and {{Bug|41257}}. |
||
+ | |||
+ | ==== Using xinitrc ==== |
||
+ | |||
+ | To configure rootless Xorg using [[xinitrc]]: |
||
+ | |||
+ | * Run startx as a subprocess of the login shell; run {{ic|startx}} directly and do not use {{ic|exec startx}}. |
||
+ | * Ensure that Xorg uses virtual terminal for which permissions were set, i.e. passed by logind in {{ic|$XDG_VTNR}} via [[xinit#xserverrc|.xserverrc]]. |
||
+ | * If using certain proprietary display drivers, [[kernel mode setting]] [https://cgit.freedesktop.org/xorg/xserver/tree/hw/xfree86/xorg-wrapper.c#n222 auto-detection] will fail. In such cases, you must set {{ic|1=needs_root_rights = no}} in {{ic|/etc/X11/Xwrapper.config}}. |
||
+ | |||
+ | ==== Using GDM ==== |
||
+ | |||
+ | [[GDM]] will run Xorg without root privileges by default when [[kernel mode setting]] is used. |
||
+ | |||
+ | ==== Session log redirection ==== |
||
+ | |||
+ | When Xorg is run in rootless mode, Xorg logs are saved to {{ic|~/.local/share/xorg/Xorg.log}}. However, the stdout and stderr output from the Xorg session is not redirected to this log. To re-enable redirection, start Xorg with the {{ic|-keeptty}} flag and redirect the stdout and stderr output to a file: |
||
+ | |||
+ | startx -- -keeptty >~/.xorg.log 2>&1 |
||
+ | |||
+ | Alternatively, copy {{ic|/etc/X11/xinit/xserverrc}} to {{ic|~/.xserverrc}}, and append {{ic|-keeptty}}. See [https://bbs.archlinux.org/viewtopic.php?pid=1446402#p1446402]. |
||
==トラブルシューティング== |
==トラブルシューティング== |
2021年10月23日 (土) 14:54時点における版
- X.Org プロジェクトは X Window System のオープンソース実装を提供しています。開発作業は freedesktop.org コミュニティと共同で行われています。
Xorg は X window system バージョン 11 のオープンソースのリファレンス実装です。Linux ユーザーの中で Xorg が一番ポピュラーな選択となってから、GUI アプリケーションにとって Xorg は欠かせない存在となり、ほとんどのディストリビューションで広く採用されています。詳しくは Wikipedia の Xorg や Xorg のウェブサイト を見て下さい。
目次
- 1 インストール
- 2 起動
- 3 設定
- 4 入力デバイス
- 5 モニターの設定
- 6 コンポジット
- 7 ヒントとテクニック
- 8 トラブルシューティング
- 8.1 共通
- 8.2 右 CTRL キーが oss キーマップとして動作しない
- 8.3 "su" で X クライアントの起動が失敗する
- 8.4 プログラムが "font '(null)'" を要求する
- 8.5 フレームバッファモード問題
- 8.6 Matrox カードで DRI が停止する
- 8.7 リカバリ: GUI ログインの前に Xorg を無効化
- 8.8 X が起動できない: Keyboard initialization failed
- 8.9 black screen, No protocol specified.., Resource temporarily unavailable for all or some users
- 8.10 Rootless Xorg (v1.16)
- 8.11 動画を視聴しようとすると緑色の画面が表示される
- 8.12 SocketCreateListener エラー
- 9 参照
インストール
X サーバーをインストールするには、まず xorg-server パッケージをインストールする必要があります。
また、設定作業などに必要なパッケージのいくつかが 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) | ドキュメント |
---|---|---|---|---|---|
AMD/ATI | オープンソース | xf86-video-amdgpu | mesa | lib32-mesa | AMDGPU |
xf86-video-ati | ATI | ||||
プロプライエタリ | catalystAUR | catalyst-libglAUR | lib32-catalyst-libglAUR | AMD Catalyst | |
Intel | オープンソース | xf86-video-intel | mesa | lib32-mesa | Intel Graphics |
Nvidia | オープンソース | xf86-video-nouveau | mesa | lib32-mesa | Nouveau |
プロプライエタリ | nvidia | nvidia-utils | lib32-nvidia-utils | NVIDIA | |
nvidia-340xxAUR | nvidia-340xx-utilsAUR | lib32-nvidia-340xx-utilsAUR | |||
VIA | オープンソース | xf86-video-openchrome | – | VIA |
他のビデオドライバーは xorg-drivers グループで見つけることができます。
Xorg はクローズドソースのドライバーがなくとも問題なく動作するはずです。基本的に、ゲームのための 3D 支援レンダリングや、デュアルスクリーン、TV 出力など高度な機能を使う場合にのみプロプライエタリのドライバが必要になります。
AMD
GPU アーキテクチャ | Radeon カード | オープンソースドライバー | プロプライエタリドライバー |
---|---|---|---|
GCN 4 以降 | Wikipedia を参照 | AMDGPU | AMDGPU PRO |
GCN 3 | AMDGPU | Catalyst / AMDGPU PRO | |
GCN 2* | AMDGPU / ATI | Catalyst2 | |
GCN 1* | AMDGPU / ATI | Catalyst1 | |
TeraScale 2&3 | HD 5000 - HD 6000 | ATI | Catalyst |
TeraScale 1 | HD 2000 - HD 4000 | Catalyst Legacy | |
TeraScale 以前 | X1000 以前 | - |
- *: 実験的な AMDGPU サポート。
起動
ディスプレイマネージャ
X を起動する楽な方法はディスプレイマネージャを使うことです。ただし、他のアプリケーションや依存パッケージが必要になります。
手動
ディスプレイマネージャを使わずに X サーバーを起動したい場合、Xinitrc を見て下さい。
設定
Xorg は初期設定に xorg.conf
という名前の設定ファイルと .conf
が末尾につくファイルを使います: これらのファイルが使われるフォルダの一覧は [1] を見たり man xorg.conf
を実行することで(利用できるオプションの説明と一緒に)調べることができます。
.conf ファイルを使う
/etc/X11/xorg.conf.d/
ディレクトリにはユーザー定義の設定を保存します。あなたは自由に設定ファイルを /etc/X11/xorg.conf.d/
に追加することができますが、ファイル名には XX-
(XX は数字です) を先頭につけ拡張子は .conf
である必要があります (例えば 10 は 20 より早く読み込まれます)。これらのファイルは X サーバーの起動時にパースされ従来の xorg.conf
設定ファイルの一部として扱われます。基本的に X サーバーは設定ファイルの集合を xorg.conf
の最後のエントリとしてひとつの大きなファイルとして扱います。
xorg.conf を使う
/etc/X11/xorg.conf
や /etc/xorg.conf
で Xorg を設定することもできます。xorg.conf
のスケルトンを生成するには
# Xorg :0 -configure
上のコマンドで /root/
に xorg.conf.new
ファイルが作られるはずです。これを /etc/X11/xorg.conf
にコピーして上書きすることができます。
もしくは、あなたのビデオカードドライバに自動で Xorg を設定するツールが含まれているかもしれません。詳しくは NVIDIA や AMD Catalyst などあなたの使っているビデオカードの記事を見て下さい。
入力デバイス
入力デバイスのドライバーについては、X サーバーはデフォルトで libinput ドライバー (xf86-input-libinput) を使用しますが、xf86-input-evdev と関連するドライバーも使用できます [2]。
Udev があなたのハードウェアを検知し、/usr/share/X11/xorg.conf.d/
ディレクトリに入っているデフォルト設定ファイル 10-evdev.conf
と 40-libinput.conf
によって、evdev と libinput がほとんど全てのデバイスのホットプラグ・インプットドライバーとして動作します。Udev は systemd によって提供されています。
X サーバーの起動後、ログファイルを確認することで、どちらのドライバーがデバイスによってホットプラグされているか確認できます (ログファイルの名前は違っているかもしれません):
$ grep -e "Using input driver " Xorg.0.log
evdev や libinput があなたの持っているデバイスをサポートしていないときは、必要なドライバーを xorg-drivers グループからインストールしてください。
ホットプラグの動作については#設定を見てください。
マウスのアクセラレーション
次のページを参照してください: マウスのアクセラレーション
特殊なマウスボタン
次のページを参照してください: 全てのマウスボタンを動作させる
タッチパッド
次のページを参照してください: libinput または Synaptics タッチパッド
タッチスクリーン
次のページを参照してください: タッチスクリーン
キーボードの設定
次のページを参照してください: Xorg でのキーボード設定
InputClass
参照: https://fedoraproject.org/wiki/Input_device_configuration
InputClass は、ひとつのデバイスではなく「あるクラス」のデバイス(ホットプラグのデバイスを含む)に適用される新しいタイプの設定セクションです。InputClass セクションの適用範囲は指定された match によって決まります – 入力デバイスに適用するには、全ての match をデバイスにあてがう必要があります。例えば InputClass セクションは以下のように使われます:
Section "InputClass" Identifier "touchpad catchall" MatchIsTouchpad "on" Driver "synaptics" EndSection
次のスニペットも理解するのに役立つかもしれません:
Section "InputClass" Identifier "evdev touchpad catchall" MatchIsTouchpad "on" MatchDevicePath "/dev/input/event*" Driver "evdev" EndSection
このスニペットが xorg.conf
や xorg.conf.d に存在する場合、システム上の全てのタッチパッドに synaptics ドライバが割り当てられます。優先順位 (xorg.conf.d の英数字の順番) によってドライバーの設定は前の設定を上書きすることに注意してください – 一般的なクラスほど、初めの方に置くべきです。xorg-server パッケージによって提供されるデフォルトのスニペットは 00-evdev.conf
であり、全ての入力デバイスに evdev ドライバを割り当てます。
match オプションによってセクションを適用するのはどのデバイスなのか指定します。全ての match 行を満たしたデバイスだけに、セクションが適用されます。使うことができる match は以下の通り:
MatchIsPointer
,MatchIsKeyboard
,MatchIsTouchpad
,MatchIsTouchscreen
,MatchIsJoystick
– デバイスグループに適用するための boolean オプション。MatchProduct "foo|bar"
: 製品の名前に "foo" か "bar" が含まれているデバイスにマッチMatchVendor "foo|bar|baz"
: 製造者(ベンダー)名に "foo" や "bar"、"baz" が含まれているデバイスにマッチMatchDevicePath "/dev/input/event*"
: デバイスパスが一致しているデバイスにマッチ (利用できるパターンは fnmatch(3) を見て下さい)MatchTag "foo|bar"
: "foo" や "bar" といったタグが付けられたデバイスにマッチ。タグはバックエンドの設定 – udev によって指定され特別な設定が必要なデバイスをラベリングします。
ユーザー定義設定のためのセクションの例:
Section "InputClass" Identifier "lasermouse slowdown" MatchIsPointer "on" MatchProduct "Lasermouse" MatchVendor "LaserMouse Inc." Option "ConstantDeceleration" 20 EndSection
このセクションは、"Lasermouse Inc." によって作られた "Lasermouse" という名前を持つポインティングデバイスにマッチし、デバイスには 20 の値の constant deceleration が適用されます。20倍マウスの速度が遅くなります。
X サーバーによって扱って欲しくないデバイスがあるかもしれません。設定によってそうしたデバイスを無視させることができます:
Section "InputClass" Identifier "no need for accelerometers in X" MatchProduct "accelerometer" Option "Ignore" "on" EndSection
設定例
以下のサブセクションでは一般的に使われる設定オプションのための設定例を記述しています。あなたが GNOME や KDE などのデスクトップ環境を使っている場合、xorg.conf に設定したオプションはログイン時にユーザー定義オプションによって上書きされてしまう可能性があります。
例: (トラックポイント用の) ホイールエミュレーション
トラックポイントのある PC (例: Thinkpad) を使っている場合、以下を xorg.conf
に追加することでミドルボタンを使ってマウスホイールをエミュレートできます:
Section "InputClass" Identifier "Wheel Emulation" MatchIsPointer "on" MatchProduct "TrackPoint" Option "EmulateWheelButton" "2" Option "EmulateWheel" "on" EndSection
(横スクロールを含む) トラックポイントの完全なサポートをするには以下を使って下さい:
Section "InputClass" Identifier "Trackpoint Wheel Emulation" MatchProduct "TPPS/2 IBM TrackPoint|DualPoint Stick|Synaptics Inc. Composite TouchPad / TrackPoint|ThinkPad USB Keyboard with TrackPoint|USB Trackpoint pointing device" MatchDevicePath "/dev/input/event*" Option "EmulateWheel" "true" Option "EmulateWheelButton" "2" Option "Emulate3Buttons" "false" Option "XAxisMapping" "6 7" Option "YAxisMapping" "4 5" EndSection
例: Tap-to-click
Tap-to-click は(タッチパッドタブの)マウス設定ダイアログから有効にすることができますが、gdm でタップを有効にする必要があるなら、以下のスニペットを使って下さい:
Section "InputClass" Identifier "tap-by-default" MatchIsTouchpad "on" Option "TapButton1" "1" EndSection
例: Acer 5920G ラップトップのキーボードレイアウト・モデル
キーボードモデルやレイアウトは /etc/X11/xorg.conf.d/keyboard.conf
ファイルや同じディレクトリの他の .conf ファイルで設定できます。
MatchIsKeyboard "yes"
: 入力デバイスをキーボードに設定Option "XkbModel" "acer_laptop"
: キーボードモデルを Acer ラップトップキーボードに設定。acer_laptop
はあなたの使っているキーボードに置き換えられます。Option "XkbLayout" "jp"
: キーボードレイアウトを日本語に設定。jp
は使いたいレイアウトに変えることができます。Option "XkbVariant" "sundeadkeys"
: レイアウトのバリアントを Sun dead keys に設定。デフォルトのバリアントを使うならXkbVariant
オプションは省略できます。
キーボードレイアウト・モデルのリストは /usr/share/X11/xkb/rules/base.lst
にあります。
Section "InputClass" Identifier "Keyboard Defaults" MatchIsKeyboard "yes" Option "XkbModel" "acer_laptop" Option "XkbLayout" "jp" Option "XkbVariant" "sundeadkeys" EndSection
例: (3ボタンマウス用の) 中ボタンのエミュレーション
中ボタンのエミュレーションによって、右・左ボタンを一緒に押すことで3つ目のボタンのイベントを発動させるようにすることができます。これは X でのコピーアンドペーストに役に立つでしょう。
/etc/X11/xorg.conf.d/10-evdev.conf
の mouse input catchall を修正します
Section "InputClass" Identifier "evdev pointer catchall" MatchIsPointer "on" MatchDevicePath "/dev/input/event*" Driver "evdev" Option "Emulate3Buttons" "True" Option "Emulate3Timeout" "25" EndSection
Option "Emulate3Buttons" "True"
オプションで3ボタンのエミュレートを有効にして Option "Emulate3Timeout" "25"
オプションで中ボタンのクリックとして認識する時間を 25ms としています。
モニターの設定
はじめに
まず、/etc/X11/xorg.conf.d/10-monitor.conf
のような、新しい設定ファイルを作成します。
/etc/X11/xorg.conf.d/10-monitor.conf
Section "Monitor" Identifier "Monitor0" EndSection Section "Device" Identifier "Device0" Driver "vesa" #Choose the driver used for this monitor EndSection Section "Screen" Identifier "Screen0" #Collapse Monitor and Device section to Screen section Device "Device0" Monitor "Monitor0" DefaultDepth 16 #Choose the depth (16||24) SubSection "Display" Depth 16 Modes "1024x768_75.00" #Choose the resolution EndSubSection EndSection
マルチモニター
一般的な情報はマルチディスプレイを見て下さい。
GPU 固有の手順は以下を参照してください:
- NVIDIA#マルチモニター
- Nouveau#デュアルディスプレイ
- AMD Catalyst#デュアルディスプレイ (デュアルヘッド / デュアルスクリーン / Xinerama)
- ATI#マルチモニターの設定
複数のグラフィックカード
利用するドライバを正しく定めてグラフィックカードのバス ID を入力する必要があります。
Section "Device" Identifier "Screen0" Driver "nouveau" BusID "PCI:0:12:0" EndSection Section "Device" Identifier "Screen1" Driver "radeon" BusID "PCI:1:0:0" EndSection
バス ID を取得するには:
$ lspci | grep VGA
01:00.0 VGA compatible controller: nVidia Corporation G96 [GeForce 9600M GT] (rev a1)
この場合バス ID は 1:0:0。
画面サイズと DPI
X サーバーの DPI は以下の順番で決定されます:
- -dpi コマンドラインオプションが一番優先されます。
- オプションが使われていない場合、X 設定ファイルの DisplaySize 設定が DPI の設定に使われます。
- DisplaySize が設定されていない場合、DDC のモニターサイズ値が DPI の設定に使われます。
- DDC がサイズを指定していない場合、75 DPI がデフォルトで使われます。
正しいドット密度 (DPI) を設定するには、ディスプレイのサイズを知る必要があります。(フォントレンダリングなど)細部の設定が必要な場合、適切な DPI の設定は特に重要です。以前は、メーカーは 96 DPI を標準として作成していました (10.3" モニターなら 800x600、13.2" モニターなら 1024x768)。最近では、画面の DPI は様々であり、縦横で等しくないこともあります。例えば、19" ワイドスクリーン LCD が 1440x900 なら DPI が 89x87 になります。DPI を設定するために、Xorg サーバーはグラフィックカードを通して DDC によってモニターの物理的な画面サイズを自動検出します。
ディスプレイのサイズと DPI が正しく検出・計算されているか確認するには:
$ xdpyinfo | grep -B2 resolution
dimensions がディスプレイサイズと一致しているかチェックしてください。正しく画面サイズを計算できない時、Xorg サーバは 75x75 DPI をデフォルトにするので、あなたはそれを計算する必要があります。
スクリーンの物理的な大きさがわかっているときは、Xorg の設定ファイルに入力することで正しい DPI が計算されます:
Section "Monitor" Identifier "Monitor0" 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
スクリーンの横と縦の物理的な長さがわからないときは(最近は対角線の長さ(インチ数)しかわからないことも多い)、モニターの最大解像度(アスペクト比)か対角線の長さを使って縦と横の長さを計算できます。(ピタゴラスの定理を使って)最大解像度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
手動で DPI を設定する
RandR に対応しているドライバ (例えばオープンソースの ATI ドライバ) なら、次のコマンドで設定できます:
$ xrandr --dpi 144
設定を永続的にするには xprofile を見て下さい。
プロプライエタリの NVIDIA ドライバー
使う解像度が一つの場合 DPI を手動で設定することができます (DPI calculator):
Section "Monitor" Identifier "Monitor0" Option "DPI" "96 x 96" EndSection
/etc/X11/xorg.conf.d/20-nvidia.conf
内で以下のオプションを (Device セクションに) 追加して DPI を手動設定できます:
Option "UseEdidDpi" "False" Option "DPI" "96 x 96"
DPMS
DPMS (Display Power Management Signaling) はコンピュータが使われていない時にモニターを省電力モードに移行させる技術です。一定時間後にモニタを自動で standby にすることができます。DPMS を見て下さい。
コンポジット
X の Composite 拡張によってウィンドウ階層のサブツリー全体がオフスクリーンバッファにレンダリングされます。アプリケーションはバッファの内容を取得できるようになります。オフスクリーンバッファは親のウィンドウに自動的にマージされるか、コンポジットマネージャと呼ばれる外部のプログラムによってマージされます。詳しくは次のページを見て下さい: コンポジット型ウィンドウマネージャ。
ウィンドウマネージャによっては、コンポジットマネージャをインストールしなくてもコンポジットが行われます (例: Compiz, Enlightenment, KWin, Marco, Metacity, Muffin, Mutter, Xfwm)。そうでないウィンドウマネージャの場合、スタンドアロンのコンポジットマネージャを使用します。
コンポジットマネージャ一覧
- Picom — X コンポジタ (xcompmgr-dana のフォーク)。
- Xcompmgr — X.org 向けのウィンドウ効果ができるコンポジットマネージャ。
- Unagi — モジュール式のコンポジットマネージャ。C で書かれており XCB をベースにしています。
ヒントとテクニック
X スタートアップ (startx) 調整
X のオプションを見るには:
$ man Xserver
以下のオプションは /usr/bin/startx
ファイルの "defaultserverargs"
変数に追加してください:
- 16ビットフォントの遅延ロードを有効にする:
-deferglyphs 16
ネストした X セッション
他のデスクトップ環境に入れ子になったセッションを起動するには:
$ /usr/bin/Xnest :1 -geometry 1024x768+0+0 -ac -name Windowmaker & wmaker -display :1
上記で現在の X セッションの中に 1024x768 のウィンドウの Window Maker セッションが起動します。
このためには xorg-server-xnest パッケージをインストールする必要があります。
リモートで GUI プログラムを実行する
次の記事を参照してください: Secure Shell#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"
ホットキーでアプリケーションを終了
ホットキーでスクリプトを実行:
#!/bin/bash windowFocus=$(xdotool getwindowfocus); pid=$(xprop -id $windowFocus | grep PID); kill -9 $pid
依存パッケージ: xorg-xprop, xdotool
TTY のアクセスをブロック
X から tty へのアクセスをブロックしたい場合、以下を xorg.conf
に追加してください:
Section "ServerFlags" Option "DontVTSwitch" "True" EndSection
ユーザーが X を終了できないようにする
X が動作しているときにユーザーから kill されないようにしたい場合、以下を xorg.conf
に追加してください:
Section "ServerFlags" Option "DontZap" "True" EndSection
Rootless Xorg
Xorg may run with standard user privileges instead of root (so-called "rootless" Xorg). This is a significant security improvement over running as root. Note that most display managers do not support rootless Xorg.
You can verify which user Xorg is running as with ps -o user $(pgrep Xorg)
.
See also Xorg.wrap(1), systemd-logind(8), Systemd/User#Xorg as a systemd user service, Fedora:Changes/XorgWithoutRootRights and FS#41257.
Using xinitrc
To configure rootless Xorg using xinitrc:
- Run startx as a subprocess of the login shell; run
startx
directly and do not useexec startx
. - Ensure that Xorg uses virtual terminal for which permissions were set, i.e. passed by logind in
$XDG_VTNR
via .xserverrc. - If using certain proprietary display drivers, kernel mode setting auto-detection will fail. In such cases, you must set
needs_root_rights = no
in/etc/X11/Xwrapper.config
.
Using GDM
GDM will run Xorg without root privileges by default when kernel mode setting is used.
Session log redirection
When Xorg is run in rootless mode, Xorg logs are saved to ~/.local/share/xorg/Xorg.log
. However, the stdout and stderr output from the Xorg session is not redirected to this log. To re-enable redirection, start Xorg with the -keeptty
flag and redirect the stdout and stderr output to a file:
startx -- -keeptty >~/.xorg.log 2>&1
Alternatively, copy /etc/X11/xinit/xserverrc
to ~/.xserverrc
, and append -keeptty
. See [3].
トラブルシューティング
共通
何か問題が発生したらログを確認してください。ログは /var/log/
または (v1.16 からデフォルトのルートレス X の場合) ~/.local/share/xorg/
の中に保存されています。GDM を使っている場合は systemd の journal をチェックしてください [4]。
ログファイルの名前は 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
- ログファイルの中に
(EE)
で始まる行が存在しないか確認してください。(EE)
はエラーです。また、(WW)
は警告です。
$HOME
に存在する.xinitrc
ファイルが空の場合、X を起動するにはファイルを削除するか正しく編集する必要があります。空の場合、X は画面を表示せずXorg.0.log
にエラーも出力されません。ファイルを削除するとデフォルトの X 環境が起動します。- 画面が真っ黒になった場合、別の仮想端末に切り替えて (例:
Ctrl+Alt+F2
)、root でログインしてください。root
と入力して root パスワードを入力することでログインできます。
- 次のコマンドで X サーバーを終了させることが可能です:
# pkill X
- 上記のコマンドが機能しない場合、再起動してください:
# reboot
- キーボード・マウス・タッチパッドなどに問題がおこる場合は カテゴリ:入力デバイス内のそれぞれのページを見て下さい。
- ATI、Intel、NVIDIA の記事に問題の解決方法が載ってないか調べてください。
右 CTRL キーが oss キーマップとして動作しない
root で /usr/share/X11/xkb/symbols/fr
を編集して:
include "level5(rctrl_switch)"
を
// include "level5(rctrl_switch)"
に変更して X を再起動するか次を実行してください:
setxkbmap fr oss
"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
キーを管理します。
プログラムが "font '(null)'" を要求する
- エラーメッセージ: "unable to load font `(null)'."
いくつかのプログラムはビットマップフォントでだけ動作します。2つの主要なビットマップフォントのパッケージがあります、xorg-fonts-75dpi と xorg-fonts-100dpi です。両方は必要ありません、片方だけで十分です。どちらがあなたに適しているか調べるには、次を実行してください:
$ xdpyinfo | grep resolution
それからあなたに適している方を使って下さい (XX は 75 か 100 に置き換える):
# pacman -S xorg-fonts-XXdpi
フレームバッファモード問題
以下のログメッセージを残して 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 パッケージをアンインストールしてください。
Matrox カードで DRI が停止する
Matrox カードを使っていて Xorg をアップグレードすると DRI が停止する場合、次の行を xorg.conf
のビデオカードの Device セクションに追加してください:
Option "OldDmaInit" "On"
リカバリ: 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 でログインして以下を行います。
設定に応じて、以下の作業のどれか、または複数を行う必要があります:
- ディスプレイマネージャを無効化。
- X の自動起動を無効化。
~/.xinitrc
の名前を変更するかexec
行をコメントアウト。
X が起動できない: Keyboard initialization failed
ハードディスクが満杯の場合、startx は失敗します。/var/log/Xorg.0.log
の最後が次のようになるはずです:
(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
root パーティションに空き容量を作ってから X を起動してください。
X は設定と一時ファイルをユーザーの home ディレクトリに作成します。あなたの home ディレクトリが入っているパーティションに十分な空き容量があることを確認してください。悪いことに、ディスク容量が不足していることを X サーバーは何も知らせません。
Rootless Xorg (v1.16)
バージョン 1.16 から [5]、Xorg は logind
を利用して通常ユーザーの権限で動作させることが出来るようになっています。このために必要なのは:
- systemd; 複数のインスタンスを扱えるバージョン216以降
- xinit で X を起動; ディスプレイマネージャはサポートされていません
- プロプライエタリのディスプレイドライバにおける KMS 実装は自動的に検出できないため
/etc/X11/Xwrapper.config
でneeds_root_rights = no
を手動で設定する必要があります [6]
以上の条件を満たさない場合、/etc/X11/Xwrapper.config
で root 権限を有効にしてください:
needs_root_rights = yes
Xorg.wrap(1) や systemd/ユーザー#systemd のユーザーサービスとしての Xorg も参照。
GDM は Kernel Mode Setting が使われている場合、デフォルトで root 権限を利用しないで Xorg を起動します。
リダイレクトが機能しない
ユーザーの Xorg ログが ~/.local/share/xorg/Xorg.log
に保存されるとき、X セッションからの出力はログに含まれません。リダイレクトを有効にするには、-keeptty
フラグを使って X を起動してください:
exec startx -- -keeptty > ~/.xorg.log 2>&1
もしくは /etc/X11/xinit/xserverrc
を ~/.xserverrc
にコピーして、-keeptty
を追記して下さい。[7] を参照。
動画を視聴しようとすると緑色の画面が表示される
色深度の設定が間違っています。例えば、16ではなく24に設定する必要があります。
SocketCreateListener エラー
"SocketCreateListener() failed" というエラーメッセージを吐いて X が落ちてしまう場合、/tmp/.X11-unix
内のソケットファイルを削除する必要があります。この問題は root で Xorg を起動した場合に発生します。
参照
- Xplain - X Window System の詳しい解説