X Window System 関連に関する疑問や質問。
X って何?
ディスプレイにGUIを表示するウィンドウシステムの1つ。
全体を大幅に簡略化して説明すると、
ディスプレイ
↑
表示
|
ウィンドウシステム(GUI) (←操作→ネットワーク)
↑ ↑
操作 読み取り
↓ |
ソフト OS←—信号—キーボード/マウス
つまり、カーネルやシェルだけでは文字ベースの出力に限られるOSの中でも、好きなGUIを表示することを可能にするソフト。
X の公式サイトはどこですか?
X にはオープンソースで開発されているものが2つ存在します。
XFree86 バージョン 4.4.0 以降でのライセンス変更により、XFree86 4.3.0 を元に開発が分岐された X.Org がディストリビューションで公式に採用される傾向にあります。
このビデオチップ (カード) は対応していますか?
X に関する公式のマニュアルはどこですか?
以下を参照。
X.Org
XFree86
設定
X の設定をやり直したい。
ディストリビューション独自の設定ツール、X 付属のツール、直接設定を編集する方法があります。
Red Hat 系付属設定ツール (system-config-*)
redhat-config-xfree86, system-config-xfree86 というのがあります。(X.Org の場合はまた違います)
Red Hat 8 以前の古いディストリなら Xconfigurator で設定することができます。(Red Hat 9 以降には入っていません)
Debian 系付属設定ツール (dpkg-reconfigure)
パッケージからインストールした場合は root で dpkg-reconfigure xserver-xfree86 と入力して設定し直すことができます。
etch 以降は dpkg-reconfigure xserver-xorg です。
Plamo Linux 付属設定ツール (xfplamoconfig)
/sbin/xfplamoconfig
X 付属設定ツール (xorgcfg, xorgconfig)
xf86cfg, xorgcfg で設定できます。通常はGUIモードですが --textmode オプションをつけて呼び出すとテキストモードになります。xf86config, xorgconfig も使えます。
X の設定の雛型を自動作成する場合
X の -configure オプションで設定の雛型を作り、それを元に編集する方法もあります。root で XFree86 -configure などと入力すると /root に雛形の XF86Config.new ができるので、編集して /etc/X11 辺りに移動しましょう。
X の設定を直接編集する場合
設定ファイルの場所は /etc/X11, /usr/X11R6/etc/X11 辺り、名前は XF86Config, XF86Config-4, xorg.conf 辺りです。
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つめのボタンを押したりホイールを回してみて、イベントが発生していることを確かめる。
動作確認状況
動作確認したマウス
参考マニュアル
水平スクロールや多ボタンマウスを認識させたい
LogitechのMX1000とかMX510,MX700のような多ボタン、水平スクロール可能なマウスを認識させる方法です。~
ここが英語だけどわかりやすいです。~
要は、evdevプロトコルをインストールして認識させてくださいねということみたいです。~
evdevのネイティブなサポートはどうやらX.Org 7.0からみたいです。(この情報は間違っているかもしれません...)
マウスを二つ使いたい
X の画面ずれを直したい、リフレッシュレートを変更したい(gtf)
モニタに対応していないリフレッシュレートを選択してしまった場合、もしくは対応しているリフレッシュレートが選択できなかったとき、画面がずれることがあります。
また、リフレッシュレートが1つしか選択できず変更できないこともあります。ここではそのどちらも一括設定できる方法を記します。~
※ここでは、1024x768のディスプレイでリフレッシュレートを60Hzに変更する方法を例にやります。
- /etc/X11/xorg.confを開く
- 端末から# gtf 幅 高さ リフレッシュレート を入力 (ex.# gtf 1024 768 60)
- 出てきた数字をコピーして xorg.confの Section "Monitor"〜EndSectionの間にModeline行を貼り付け
- "1024x768_60.00" の所を "1024x768" に修正 (数字が違う人は各自読みかえてください)
- Xの再起動
- これでうまくいっているはずです。うまくいかない場合は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 を再起動すると反映されます。
リフレッシュレートなど画面周波数の設定を変更したい
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の起動を停止してください。
頻繁に CUI と GUI を行き来するのなら、未使用のランレベル (3 など) にDMを使わない設定をしておき、inittab のランレベルを切り替えても良いでしょう。
今後特に 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 などに設定しておけば使えます。
XInputにジョイパッドを使いたい。(js2mouse)
ジョイパッドの設定は、Xだけで実現するよりも
js2mouse を利用するのが簡単です。
環境、トラブル
ディスプレイマネージャ (gdm, kdm, xdm) から root でログインできません。
ディストリビューションのセキュリティポリシーにより、root でログインできないように設定してあることがあります。一般ユーザーでログインしてください。
インストールしたばかりでユーザーがいないなら、Ctrl+Alt+F1 キーを押してコンソールに入ってから root でログインして
adduser コマンドでユーザーを作ってください。
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 以上を要求するものもあるし、必要に応じてグラボの買い替えも検討すると良いかも。
注)リンク先はLinuxではなくてFreeBSDの場合なので drm-kmod のインストールとカーネルの再構築の項はとばしましょう。
XFS (X Fonts Server) を止める
XFS 経由でフォントを使っているなら XFS を止めて X の設定の Files セクションに FontPath を直接書いてみると軽くなるかもしれません。
ウィンドウマネージャを軽いのに変える
KDE とか GNOME はいろいろと重たいので、そういうのを使ってたらもう少し軽い奴を試してみるとか。
円記号「¥」がバックスラッシュ「\」になっています!オカシイです!
「\」が Windows では「¥」と見えるのに、X で見ると「\」となっている。
これは正常です。表示に使うフォントで割り当てられている文字が違うだけでデータ的には同じです。
Windows 向けフォントでは円記号(¥)、X 向けフォントではバックスラッシュ(\)であることが多い模様。X で¥と表示されるフォントもたまにあります。
コマンド使用時やプログラミング時には表示が「¥」となっていても「バックスラッシュ」と呼ぶことが多いです。
元々「\」だった文字コードに日本仕様で「¥」を入れたのが原因です。
X アプリ間でコピー&ペーストできません!!
昔ながらの X クライアントは「コピー&ペースト」でなくて、「領域選択 (囲って) &ペースト」。
Windows の場合
- 領域を選択する (文字列を囲む)
- 右クリックメニュー>コピー (Ctrl+c) でコピー。
- 貼り付け先にカーソルをあわせる。
- 右クリックメニュー>ペースト (Ctrl+v) でペースト。
X の場合
- 領域を選択 (文字列を囲む) ← この状態ですでにバッファに入っている
- 貼り付け先にカーソルをあわせてマウスの真ん中ボタンをクリック (ホイールマウスならホイールをクリック。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
(コマンド入力が可能だということでここで 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 はなんて呼べばいいの?
- X
- X Window System (X ウィンドウシステム)
- X Version 11 (X バージョン 11)
- X Window System, Version 11 (X ウィンドウシステム, バージョン 11)
- X11
「X という名前の Window System」なので「X Window」と略すと変です。「X Windows」と書くと、かすりもしない上にやたら煽られます。
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 では、マウスをドラッグすることで自由に範囲指定することもできます。
GIMP のメニューから ファイル > 取り込み > 画面取り込み を選ぶ。
KSnapshot を起動し [新規スナップショット] > スナップショットを保存 を選ぶ。
xv
GNOME
PrintScreenキーで画面全体、Alt+PrinScreenでアクティブなウィンドウのキャプチャが取れます。
メニューのデスクトップ>スクリーンショットからも撮れるかも。またはアクション>スクリーンショットとか、システム>スクリーンショットとか。
X のログってどこにあるの?
XFree86.0.log, Xorg.0.log など、それっぽいファイルが /var/log ディレクトリにあります。
現在の dpi (dots per inch) を知りたい。(xdpyinfo)
xdpyinfo で見ることができます。表示が大きいので xdpyinfo | grep resolution のようにフィルタリングして見るのがいいでしょう。
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大ツールキットになっています。
~/.Xresources やら ~/.Xdefaults やら ~/.xsession やら ~/.xinitrc やらわけが分かりません。
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あたりがいいんじゃないかと。
GNOMEもKDEもXFCEも厭。もっと軽いウインドウマネージャないの?
最終更新:2007年02月14日 15:48