X Window System 関連に関する疑問や質問。


X って何?

ディスプレイにGUIを表示するウィンドウシステムの1つ。

X はなんて呼べばいいの?

X の man ページ によれば以下のどれかの名称で呼ぶことが推奨されています。

  • X
  • X Window System (X ウィンドウシステム)
  • X Version 11 (X バージョン 11)
  • X Window System, Version 11 (X ウィンドウシステム, バージョン 11)
  • X11

「X という名前の Window System」なので「X Window」と略すと変です。「X Window s 」と書くと、かすりもしない上にやたら煽られます。

X の公式サイトはどこですか?

X にはオープンソースで開発されているものが2つ存在します。

XFree86 バージョン 4.4.0 以降でのライセンス変更により、XFree86 4.3.0 を元に開発が分岐された X.Org がディストリビューションで公式に採用される傾向にあります。

X に関する公式のマニュアルはどこですか?

以下を参照。

X.Org

XFree86

GUI ツールキット (X ツールキット) って何?

X で GUI アプリを作るためのウィジェット(部品)ライブラリです。

X では、GUI の仕様が最低限までしか定められていません。そこで、Xlib 等の低レベルなライブラリを直接触らないですむように、楽に開発できるようなツールキットが別に作られました。

UNIX では標準的に Motif というツールキットが使われていました。ただし Motif は商用だったので、Motif で作ったソフトはそれ自体はフリーでも Motif を購入しないと使えないという、非常に微妙なものになってしまっていました。

そこで、当時 Motif で作られていた GIMP の開発メンバーが、代わりに生み出したのが GIMP Toolkit(GTK+) です。これが後の GNOME で使われました。

さらに、標準的なツールキットが存在しない Linux のバラバラな GUI 状況をどうにかしようと、Trolltech という会社が作ったのが Qt(Q toolkit) です。Qt は KDE で採用されました。

GTK+ と Qt が現在の Linux における2大ツールキットになっています。

このビデオチップ (カード) は対応していますか?

X.Org / XFree86 の公式マニュアルを参照してください。
メーカー公式または非公式にドライバや情報を公開している事もあります。

メーカー製ドライバのインストール

Linuxカーネル付属のオープンソースのドライバとは別に、ビデオチップによってはメーカー製ドライバが提供されている場合があります。最近はダウンロードレポジトリが用意されているディストリビューションが多いので、これを利用するのがお勧めです。
レポジトリが用意されてない場合は、チップメーカーの公式サイトからダウンロードする必要がありますが、カーネルやlibcをアップデートする度にビデオドライバを再インストールしなければならず面倒です。以下ではメーカーサイトからのインストール方法を説明します。

NVIDIA

http://www.nvidia.com/object/unix.html から、ビデオチップの種類と Linux 32-bit または 64-bit の区別に該当するドライバをダウンロードします。
nVIDIAのインストーラは X を止めないと動きません。
rpm系ディストリビューションの場合は、

# init 3

と入力してランレベル3でインストーラを起動してください。
deb系ディストリビューションの場合は、ランレベル1でGUIを外すとネットワーク接続も外れるので、インストーラから警告が出て止まってしまいます。

$ sudo /etc/init.d/gdm stop

としてXサーバを止めて、インストーラを起動します。プロンプトが出ない場合は Ctrl+Alt+F2 を押してコンソールを切り替えてみてください。
インストール終了後に再起動し、sudo /etc/init.d/gdm start とすればGUIログインが復活します。

xorg.confの書き換えには NVIDIA X Server Setting Tool を利用してください。メニューの項目([アプリケーション]→[システムツール]など)に無い場合、つぎのコマンドで起動します。

# nvidia-settings

NVIDIA製ドライバでデュアルモニタを使用する

NVIDIA 謹製ドライバは XRandR に対応していないので、NVIDIA X Server Setting Toolの「X Server Display Configuration」で「Enable Xinerama」を指定するか、Xinerama非対応のウインドウマネージャでも「TwinView」を指定することで、複数のモニタを1枚のように扱えます。しかしウインドウマネージャのメニュー等が扱いづらいという感じる方は、XRandR とは別のデュアルモニタ対応機構を持っている KDEXFce4を試してみるのも手です。

Ubuntu Weekly Recipe デュアルディスプレイを使う(gihyo.jp)
http://gihyo.jp/admin/serial/01/ubuntu-recipe/0048?page=3

NVIDIA製ドライバで動画再生時にちらつきが出る

nvidia-settings で、ちらつきの出る X Screen の「Sync to VBlank」の項目にチェックを入れてみてください。

nVIDIAってどうよ

ATI

http://support.amd.com/us/gpudownload/Pages/index.aspx から、Linux x86 または x86_64 の区別とビデオチップの種類に該当するドライバをダウンロードします。
ATIのインストーラはGUIのままインストールできますが、いまのところ自動ビルドに対応しているディストリビューションは OpenSUSE や Ubuntu などです。それ以外のディストリビューションではインストーラのスクリプトの修正などが必要になる場合があります。

インストール後に,以下のコマンドで xorg.conf を自動作成します。

# aticonfig --initial

インストール後の設定は、ATI Catalyst コントロールセンターで行います。
デスクトップアイコンが出ない場合は、つぎのコマンドで立ち上がります。

# amdcccle

ATI Part2
http://pc11.2ch.net/test/read.cgi/linux/1241136718/
ATI
http://pc11.2ch.net/test/read.cgi/linux/1189481591/
ATIってどうよ
http://pc11.2ch.net/test/read.cgi/linux/1062191844/


設定

X の設定をやり直したい。

ディストリビューション独自の設定ツール、X 付属のツール、直接設定を編集する方法があります。

Red Hat 系付属設定ツール (system-config-*)

system-config-display というのがあります。

Suse Linux 付属設定ツール (sax2)

YaST のメニューから起動するか、root で # sax2 と入力してください。

Debian 系付属設定ツール (dpkg-reconfigure)

パッケージからインストールした場合は sudo dpkg-reconfigure xserver-xorg と入力して設定し直すことができます。

Plamo Linux 付属設定ツール (xfplamoconfig)

/sbin/xfplamoconfig

X 付属設定ツール (xorgcfg, xorgconfig)

xorgcfg, xf86cfg で設定できます。通常はGUIモードですが --textmode オプションをつけて呼び出すとテキストモードになります。xorgconfig, xf86config も使えます。

X の設定の雛型を自動作成する場合

X の -configure オプションで設定の雛型を作り、それを元に編集する方法もあります。root で Xorg -configure などと入力すると /root に雛形の xorg.conf.new ができるので、編集して /etc/X11 辺りに移動しましょう。

X の設定を直接編集する場合

設定ファイルの場所は /etc/X11, /usr/X11R6/etc/X11 辺り、名前は xorg.conf, XF86Config, XF86Config-4 辺りです。

設定の書式については Gentoo Linux ドキュメント -- X サーバー設定ガイド などを参照。

グラフィックチップ固有のオプションについてはX Window System のドキュメントを参照してください。

X だけ試しに起動させてみたい。(xinit)

X の設定を変更した時、純粋に X が起動するかどうかだけ確認したい場合は、xinit と実行して起動します。ウィンドウマネージャなどの設定を無視して、初期状態の X だけが起動します。

終了するにはマウスのカーソルをターミナルに合わせて、exit と入力します。 Ctrl + Alt + Backspace キーで一時的に CUI に切り替えることもできます。

スクロール(ホイール)マウスが使えません (InputDevice に追記)

X の設定を確認してください。

以下の行が無ければ InputDevice セクションに追加してください。

Option    "Protocol"        "IMPS/2"
Option    "Buttons"         "5"      #ボタン数+3 (2ボタン+スクロールの場合。)
Option    "ZAxisMapping"    "4 5"    #スクロールの上下にボタン4、5を割り当てる。

5ボタンマウスを使いたい

(1) X の設定の InputDevice に次のように書く。

 Section "InputDevice"
   Identifier    "Mouse0"
   Driver    "mouse"
   Option    "Protocol"  "ExplorerPS/2"
   Option    "Device"  "/dev/psaux"
   Option    "Buttons"  "7"
   Option    "ZAxisMapping"  "6 7"
   Option    "Emulate3Buttons"  "no"
 EndSection

Protocol は、適宜 "IntelliMouse", "Auto", "MouseManPlusPS/2" なども試してみましょう。

(2) ボタンの順番を入れ換える (.Xmodmap に追記)

このままだと、マウスホイールの上下スクロールが6と7のボタンになってしまい、Mozillaなどでマウスホイールが効かなくなります。~/.Xmodmap に

pointer = 1 2 3 6 7 4 5

と追記してください。

もしくは、.xinitrcに

xmodmap -e "pointer = 1 2 3 6 7 4 5"

を追記してください。

(3) ログインしなおし、イベントの発生状況を確認する。(xev)

xev を実行し、xev のウィンドウで4つめや5つめのボタンを押したりホイールを回してみて、イベントが発生していることを確かめる。

参考マニュアル

マウスを二つ使いたい

二つぶん設定すれば普通に使えます。Second Mouse in X mini-HOWTO 参照のこと。

X の画面ずれを直したい、リフレッシュレートを変更したい(gtf)

モニタに対応していないリフレッシュレートを選択してしまった場合、もしくは対応しているリフレッシュレートが選択できなかったとき、画面がずれることがあります。 また、リフレッシュレートが1つしか選択できず変更できないこともあります。ここではそのどちらも一括設定できる方法を記します。
※ここでは、1024x768のディスプレイでリフレッシュレートを60Hzに変更する方法を例にやります。

  1. /etc/X11/xorg.confを開く
  2. 端末から# gtf 幅 高さ リフレッシュレート を入力 (ex.# gtf 1024 768 60)
  3. 出てきた数字をコピーして xorg.confの Section "Monitor"~EndSectionの間にModeline行を貼り付け
  4. "1024x768_60.00" の所を "1024x768" に修正 (数字が違う人は各自読みかえてください)
  5. Xの再起動
  6. これでうまくいっているはずです。うまくいかない場合はLinuxを再起動してみるといいかもしれません。

X の画面がずれているので直したい (xvidtune)

X が表示する画面の位置を調整するには xvidtune を使います。

xvidtune を端末エミュレータ上で起動後、ボタンで位置をずらしていき、ちょうどいい位置に調整できたなら、SHOW ボタンを押して下さい。その時の ModeLine が起動した端末エミュレータ上に表示されます。

表示された設定内容を X の設定の Monitor にコピペしてください。

Section "Monitor"
   Identifier   "FugaHoge"
   HorizSync    24.8-65.0
   VertRefresh  55-100
   Option       "DPMS"
   ModeLine     "1024x768" 78.80 1024 1040 1136 1312 768 769 772 800 +hsync +vsync
   # ↑こんな感じで追加します。
EndSection

X を再起動すると反映されます。

リフレッシュレートなど画面周波数の設定を変更したい

そのように再度設定します(そのまんまだ)。man XF86Config の Monitor Section を参照のこと。

GUI ログインの設定でインストールしたが、コンソールログインに変えたい

Red Hat系はランレベルの設定変更で、Debianはディスプレイマネージャの設定変更で、ディスプレイマネージャを停止してください。

簡単な説明

Red Hat 系: root になって /etc/inittab の id=数字 の行を編集し、起動するランレベルを変える。id=3 にすると CUI、id=5 にすると GUI (ディスプレイマネージャ) で起動される。

Debian 系: update-rc.d, rcconf を使って xdm, gdm, kdm の起動を停止する。

詳しい解説

「GUI ログイン」を担当しているのは xdm, gdm, kdm などの「ディスプレイマネージャ(DM)」という種類のソフトです。これらが OS 起動時に起動されるため「GUI ログイン」になっています。

  • ps -ef | grep dm と実行するとどのディスプレイマネージャが起動しているか分かります。

OS 起動時にDMが起動されないようにすれば、「CUI (コンソール) ログイン」になる。

Red Hat ・ Slackware 系: デフォルトのランレベルを3に変更

起動時のランレベルが 5 だとDMが起動し、ランレベルが 3 のときは起動しないように設定されています。

  • /usr/sbin/chkconfig --list と実行すると各デーモンの起動ランレベルを確認できます。

OS 起動時のランレベルは /etc/inittab の id=数字 で設定されているので、これを 3 に変更して再起動すればOK。

Debian 系: それ以外の方法

CUI / GUI の区別なくランレベル 2 で起動するので、update-rc.d, rcconf を使ってDMの起動を停止してください。

具体的には(GDMの例)、

# update-rc.d -f gdm remove

とすることで、/etc/init.d/ からリンクされている起動設定を削除することができます。元に戻したい場合もコマンド一発で可能です。

頻繁に CUI と GUI を行き来するのなら、未使用のランレベル (3 など) にDMを使わない設定をしておき、inittab のランレベルを切り替えても良いでしょう。

  • ログインマネージャーqingyを利用することで、/etc/X11/Sessions/ の内容を反映しつつコンソールログインとの切り替えも自由になります。 ただしDebianの場合qingyをaptitude installしただけでは自動で起動しないので、/etc/rc.local などに起動を明示する必要がある。

今後特に GUI ログインする必要がなければ、DMを含むパッケージをアンインストールしてしまっても大丈夫です。

一時的にコンソールログインを利用するには

一時的にコンソールログインを利用する場合は Ctrl+Alt キーと F1~F6 キーのどれかを押してください。 コンソールログイン画面に切り替えられます。(GUI ログインの画面への復帰は Alt+F7 キー)

ディスプレイマネージャが起動している状態だと、コンソールでログインしても startx 等で X を起動することができません。X が必要な場合はコンソールからログアウトして GUI ログインの画面に戻ってログインしてください。

フォントキャッシュを増やしたい (xset)

X では、Font Cache Extension を組み込んだ xset で調整することができます。以下のような書式です:

set fc himark lowmark balance

himark, lowmark はキロバイト単位、balance はパーセント単位で指定します。ハイマーク値1MByte/ローマーク値500KByte/バランス値50%にする場合 xset fc 1024 500 50 となります。

次の設定を ~/.xinitrc とか ~/.xsession に書いておくといいでしょう。

xset fc 9216 6144 70

X上でキーボードのオートリピートを使いたい/止めたい (xset)

xset r on でオートリピートが有効になります。xset r off とすると無効になります。

~/.xinitrc などにでも書いておいてください。

X上でWindowsキーを使いたい/再設定したい

Windows キーの押下を検知した際にどう振舞うかを ~/.xinitrc などに設定しておけば使えます。

ITMediaのX上でWindowsキーを使いたいを参照のこと。

XInputにジョイパッドを使いたい。(js2mouse)

ジョイパッドの設定は、Xだけで実現するよりも js2mouse を利用するのが簡単です。

~/.Xresources やら ~/.Xdefaults やら ~/.xsession やら ~/.xinitrc やらわけが分かりません。

~/.Xresourcesと~/.Xdefaultsって、どう違うんですか? を参照の事。


トラブル

X の動作が重過ぎるんですが。

X が動いたのはいいものの、滅茶苦茶重くてやってられん。そんなときはとりあえず以下の項目を調べてみよう。

ハードウェアアクセラレーションが働いているか調べる

2D が重い場合 X の設定に以下の記述のどれかがあるかどうか調べましょう。(以下五つは全て同じ意味です)

Option "Accel"   "Off"
Option "NoAccel"
Option "NoAccel" "On"
Option "Accel"   "false"
Option "Accel"   "no"

上記の記述がある場合はハードウェアアクセラレーションが無効になっています。

Option "Accel"   "On"
Option "NoAccel" "Off"
Option "Accel"   "true"
Option "Accel"   "yes"

上記四つのどれかに書き換えましょう。 ただし X がグラフィックチップのハードウェアアクセラレーションに対応していない場合は X が起動しなくなるかもしれません。その場合は元に戻してやりましょう。

DRI が使われているか調べる (glxgears, xdpyinfo)

3D がやたら重いのなら、DRI なるものが効いていないからでしょう。ぐぐって調べて下さい。

glxgears, xdpyinfo コマンドで、DRI が効いているか調べられます。

i810 だと 16bit, 1024x768 以上だとの DRI は効かなかったりとかもします。最近のゲームとかでは 24bit 以上を要求するものもあるし、必要に応じてグラボの買い替えも検討すると良いかも。

XFS (X Fonts Server) を止める

XFS 経由でフォントを使っているなら XFS を止めて X の設定の Files セクションに FontPath を直接書いてみると軽くなるかもしれません。

ウィンドウマネージャを軽いのに変える

KDE とか GNOME はいろいろと重たいので、そういうのを使ってたらもう少し軽い奴を試してみるとか。

円記号「¥」がバックスラッシュ「\」になっています!オカシイです!

「\」が Windows では「¥」と見えるのに、X で見ると「\」となっている。

これは正常です。表示に使うフォントで割り当てられている文字が違うだけでデータ的には同じです。

Windows 向けフォントでは円記号(¥)、X 向けフォントではバックスラッシュ(\)であることが多い模様。X で¥と表示されるフォントもたまにあります。

コマンド使用時やプログラミング時には表示が「¥」となっていても「バックスラッシュ」と呼ぶことが多いです。

元々の規格では「\」などいくつかの文字は各国ごとに任意に割り当てを変えていいことになっていました。 そこで日本の規格で「\」の位置に「¥」を割り当てたのが原因です。

X アプリ間でコピー&ペーストできません!!

昔ながらの X クライアントは「コピー&ペースト」でなくて、「領域選択 (囲って) &ペースト」。

Windows の場合

  1. 領域を選択する (文字列を囲む)
  2. 右クリックメニュー>コピー (Ctrl+c) でコピー。
  3. 貼り付け先にカーソルをあわせる。
  4. 右クリックメニュー>ペースト (Ctrl+v) でペースト。

X の場合

  1. 領域を選択 (文字列を囲む) ← この状態ですでにバッファに入っている
  2. 貼り付け先にカーソルをあわせてマウスの真ん中ボタンをクリック (ホイールマウスならホイールをクリック。2ボタンマウスなら同時押し。)

その他使っている GUI ツールキットで Windows 風の操作 *も* 使えることもある。(これは X のコピペとは無関係に動作)

Emacs や Bash 等 GNU ソフトウェアではカット&ペーストという名称が普及する前からこれらが "kill" (キル), "yank" (ヤンク) と呼ばれていたりするので、Web 上の解説や man ページなどを読むときは注意しよう。

プログラムが固まって反応しなくなったのでマシンを再起動したいんですが

固まる原因となったプログラムを強制的に終了させてみよう。

ターミナルエミュレータ上でコマンドラインのプログラムが無反応

そのウィンドウ上で

  • Ctrl+q キーを押す (Ctrl+s キーを押してしまってた場合の復帰)
  • Ctrl+c キーを押す
  • マウスで閉じる

でも単に処理中で入力を受け付けないだけだったということが多々…

X アプリでマウスのクリックもキーボードの入力も効かない (コマンドラインから kill で強制終了)

Ctrl+Alt キーと F1~F6 キーのどれかを押すとコンソールログイン画面に切り替えられます。(X 画面への復帰は Alt+F7 キー)

あるいは固まったマシンが LAN などネットワークでつながっているなら、別のマシンから SSH, Telnet などでログインすることもできるかもしれません。

無事ログインしたら、原因と思われるプログラムの PID (プロセス番号) を ps と入力(ps aux だと全部見れる)して探し、kill PID と入力して強制終了させます。それでもだめなら kill -9 PID とします。

$ ps
 PID TTY          TIME CMD
 404 pts/1    00:00:00 bash
 460 pts/1    00:00:00 ps
 480 pts/1    00:00:00 X
$ kill 480

関連: コマンドを強制終了する(2)

(コマンド入力が可能だということでここで shutdown -r now と入力してリブートするのも可。)

kill でもどうにもならない (Xごと強制終了)

別個の kill でもダメなら、Ctr+Alt+Backspace キーで X を強制終了。

X の強制終了キーで強制終了できない場合は Ctrl+Alt+Delete キーでシャットダウン。

事前に SysRQ が有効化されている場合

魔法の SysRQ キーと呼ばれるキーコンビ (Alt+SysRQ+α) が有効になってるかもしれない。JF の 神秘のSYSRQキー文書 に使い方は書いてあるので、大事に至る前に前もって読んでおいて設定しておくのも良いかも。

ぽちっとな

さんざん手を尽くしたなら祈りながら電源スイッチに全てを託そう。神の御加護を。データが無事である事を祈る! (こういう事もあるので、破壊に強いジャーナリングファイルシステム (ext3, ReiserFS, ...) を黙って使っとけって)

X を終了させようと Ctrl + Alt + Backspace を押すとなぜか電源が切れてしまうんですが

X を終了するようにしているはずなのに電源まで切れてしまうという場合、APM の設定を見直してください。マザーボードによっては Ctrl + Alt + Backspace キーと APM のコールがかち合っていて電源が落ちてしまう物があるそうです。

X のログってどこにあるの?

Xorg.0.log,XFree86.0.log など、それっぽいファイルが /var/log ディレクトリにあります。


その他

X上でスクリーンショットを撮りたい。

方法はいろいろ。

xwd

xwd > hoge.xwd (hoge.xwd または単に hoge などお好きな名前で) と入力してリターンを押すと、マウスポインタの形が変わります。保存したい画面の中にポインタを移動させ、そこでポインタをクリックします。「ピ・ピッ」と音が2回鳴ったら、保存が済んでいます。

これで撮ったスクリーンショットは xwud < hoge.xwd あるいは display hoge.xwd と入力して見るか、convert hoge.xwd hoge.png あたりで別な形式に変換して使ってください。convert はImageMagick に含まれています

import

import hoge.png のようにファイル名に拡張子 (.jpeg, .miff, .png など) を付加して、指定した形式で保存することも可能です。jpeg 形式で保存すると、かなり小さなサイズで保存できます。xwd を使用する時も、同様に形式を指定して保存できます。

import では、マウスをドラッグすることで自由に範囲指定することもできます。

import は ImageMagick に含まれています

GIMP

GIMP のメニューから ファイル > 取り込み > 画面取り込み を選ぶ。

KSnapshot

KSnapshot を起動し [新規スナップショット] > スナップショットを保存 を選ぶ。

GNOME

PrintScreenキーで画面全体、Alt+PrinScreenでアクティブなウィンドウのキャプチャが取れます。

メニューのデスクトップ>スクリーンショットからも撮れるかも。またはアクション>スクリーンショットとか、システム>スクリーンショットとか。

現在の dpi (dots per inch) を知りたい。(xdpyinfo)

xdpyinfo で見ることができます。表示が大きいので xdpyinfo | grep resolution のようにフィルタリングして見るのがいいでしょう。

Vine Linux

ウインドウ・マネージャを切り替えたい。

vutils の setwm コマンドを使いましょう。setwm とオプションをつけずに実行すると使い方が表示されます。

デスクトップ・マネージャを切り替えたい。

vutils の setdm コマンドを使いましょう。setdm とオプションをつけずに実行すると使い方が表示されます。

新しいウィンドウ・マネージャーをインストールしたんだけど、wdmが認識しません。

/etc/X11/wdm/wdmReconfig*に項目を追加します。 たとえばxfce4なら次の項目を付け加えてください。

# entry for xfce4
rc_word=xfce4-session  #ここにウィンドウ・マネージャを立ち上げる命令を書く。
XFCE_PATH=""
for rc_dir in $path; do
  if test -x $rc_dir/$rc_word; then
     XFCE_PATH=$rc_dir/$rc_word
     WMLIST="$WMLIST:xfce4"
     setupWM xfce4 ${XFCE_PATH}
     break
  fi
done

Ubuntu Linux

自力でATOKやWnn8入れたんだけど~/.xinitrcにあたるのはどこ?

/etc/X11/Xsession.d/以下に並んでるファイル。GNOMEのまんまなら55gnome-session_gnomercあたりがいいんじゃないかと。

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2011年09月23日 19:07