ディスプレイにGUIを表示するウィンドウシステムの1つ。
X の man ページ によれば以下のどれかの名称で呼ぶことが推奨されています。
「X という名前の Window System」なので「X Window」と略すと変です。「X Window s 」と書くと、かすりもしない上にやたら煽られます。
X にはオープンソースで開発されているものが2つ存在します。
XFree86 バージョン 4.4.0 以降でのライセンス変更により、XFree86 4.3.0 を元に開発が分岐された X.Org がディストリビューションで公式に採用される傾向にあります。
以下を参照。
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をアップデートする度にビデオドライバを再インストールしなければならず面倒です。以下ではメーカーサイトからのインストール方法を説明します。
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 謹製ドライバは XRandR に対応していないので、NVIDIA X Server Setting Toolの「X Server Display Configuration」で「Enable Xinerama」を指定するか、Xinerama非対応のウインドウマネージャでも「TwinView」を指定することで、複数のモニタを1枚のように扱えます。しかしウインドウマネージャのメニュー等が扱いづらいという感じる方は、XRandR とは別のデュアルモニタ対応機構を持っている KDEや XFce4を試してみるのも手です。
Ubuntu Weekly Recipe デュアルディスプレイを使う(gihyo.jp)
http://gihyo.jp/admin/serial/01/ubuntu-recipe/0048?page=3
nvidia-settings で、ちらつきの出る X Screen の「Sync to VBlank」の項目にチェックを入れてみてください。
nVIDIAってどうよ
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 付属のツール、直接設定を編集する方法があります。
system-config-display というのがあります。
YaST のメニューから起動するか、root で # sax2 と入力してください。
パッケージからインストールした場合は sudo dpkg-reconfigure xserver-xorg と入力して設定し直すことができます。
/sbin/xfplamoconfig
xorgcfg, xf86cfg で設定できます。通常はGUIモードですが --textmode オプションをつけて呼び出すとテキストモードになります。xorgconfig, xf86config も使えます。
X の -configure オプションで設定の雛型を作り、それを元に編集する方法もあります。root で Xorg -configure などと入力すると /root に雛形の xorg.conf.new ができるので、編集して /etc/X11 辺りに移動しましょう。
設定ファイルの場所は /etc/X11, /usr/X11R6/etc/X11 辺り、名前は xorg.conf, XF86Config, XF86Config-4 辺りです。
設定の書式については Gentoo Linux ドキュメント -- X サーバー設定ガイド などを参照。
グラフィックチップ固有のオプションについてはX Window System のドキュメントを参照してください。
X の設定を変更した時、純粋に X が起動するかどうかだけ確認したい場合は、xinit と実行して起動します。ウィンドウマネージャなどの設定を無視して、初期状態の X だけが起動します。
終了するにはマウスのカーソルをターミナルに合わせて、exit と入力します。 Ctrl + Alt + Backspace キーで一時的に CUI に切り替えることもできます。
X の設定を確認してください。
以下の行が無ければ InputDevice セクションに追加してください。
Option "Protocol" "IMPS/2" Option "Buttons" "5" #ボタン数+3 (2ボタン+スクロールの場合。) Option "ZAxisMapping" "4 5" #スクロールの上下にボタン4、5を割り当てる。
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" なども試してみましょう。
このままだと、マウスホイールの上下スクロールが6と7のボタンになってしまい、Mozillaなどでマウスホイールが効かなくなります。~/.Xmodmap に
pointer = 1 2 3 6 7 4 5
と追記してください。
もしくは、.xinitrcに
xmodmap -e "pointer = 1 2 3 6 7 4 5"
を追記してください。
xev を実行し、xev のウィンドウで4つめや5つめのボタンを押したりホイールを回してみて、イベントが発生していることを確かめる。
二つぶん設定すれば普通に使えます。Second Mouse in X mini-HOWTO 参照のこと。
モニタに対応していないリフレッシュレートを選択してしまった場合、もしくは対応しているリフレッシュレートが選択できなかったとき、画面がずれることがあります。
また、リフレッシュレートが1つしか選択できず変更できないこともあります。ここではそのどちらも一括設定できる方法を記します。
※ここでは、1024x768のディスプレイでリフレッシュレートを60Hzに変更する方法を例にやります。
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 を参照のこと。
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 ログイン」になっています。
OS 起動時にDMが起動されないようにすれば、「CUI (コンソール) ログイン」になる。
起動時のランレベルが 5 だとDMが起動し、ランレベルが 3 のときは起動しないように設定されています。
OS 起動時のランレベルは /etc/inittab の id=数字 で設定されているので、これを 3 に変更して再起動すればOK。
CUI / GUI の区別なくランレベル 2 で起動するので、update-rc.d, rcconf を使ってDMの起動を停止してください。
具体的には(GDMの例)、
# update-rc.d -f gdm remove
とすることで、/etc/init.d/ からリンクされている起動設定を削除することができます。元に戻したい場合もコマンド一発で可能です。
頻繁に CUI と GUI を行き来するのなら、未使用のランレベル (3 など) にDMを使わない設定をしておき、inittab のランレベルを切り替えても良いでしょう。
今後特に GUI ログインする必要がなければ、DMを含むパッケージをアンインストールしてしまっても大丈夫です。
一時的にコンソールログインを利用する場合は Ctrl+Alt キーと F1~F6 キーのどれかを押してください。 コンソールログイン画面に切り替えられます。(GUI ログインの画面への復帰は Alt+F7 キー)
ディスプレイマネージャが起動している状態だと、コンソールでログインしても startx 等で X を起動することができません。X が必要な場合はコンソールからログアウトして GUI ログインの画面に戻ってログインしてください。
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
xset r on でオートリピートが有効になります。xset r off とすると無効になります。
~/.xinitrc などにでも書いておいてください。
Windows キーの押下を検知した際にどう振舞うかを ~/.xinitrc などに設定しておけば使えます。
ITMediaのX上でWindowsキーを使いたいを参照のこと。
ジョイパッドの設定は、Xだけで実現するよりも js2mouse を利用するのが簡単です。
~/.Xresourcesと~/.Xdefaultsって、どう違うんですか? を参照の事。
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 が起動しなくなるかもしれません。その場合は元に戻してやりましょう。
3D がやたら重いのなら、DRI なるものが効いていないからでしょう。ぐぐって調べて下さい。
glxgears, xdpyinfo コマンドで、DRI が効いているか調べられます。
i810 だと 16bit, 1024x768 以上だとの DRI は効かなかったりとかもします。最近のゲームとかでは 24bit 以上を要求するものもあるし、必要に応じてグラボの買い替えも検討すると良いかも。
XFS 経由でフォントを使っているなら XFS を止めて X の設定の Files セクションに FontPath を直接書いてみると軽くなるかもしれません。
KDE とか GNOME はいろいろと重たいので、そういうのを使ってたらもう少し軽い奴を試してみるとか。
「\」が Windows では「¥」と見えるのに、X で見ると「\」となっている。
これは正常です。表示に使うフォントで割り当てられている文字が違うだけでデータ的には同じです。
Windows 向けフォントでは円記号(¥)、X 向けフォントではバックスラッシュ(\)であることが多い模様。X で¥と表示されるフォントもたまにあります。
コマンド使用時やプログラミング時には表示が「¥」となっていても「バックスラッシュ」と呼ぶことが多いです。
元々の規格では「\」などいくつかの文字は各国ごとに任意に割り当てを変えていいことになっていました。 そこで日本の規格で「\」の位置に「¥」を割り当てたのが原因です。
昔ながらの X クライアントは「コピー&ペースト」でなくて、「領域選択 (囲って) &ペースト」。
Windows の場合
X の場合
その他使っている GUI ツールキットで Windows 風の操作 *も* 使えることもある。(これは X のコピペとは無関係に動作)
Emacs や Bash 等 GNU ソフトウェアではカット&ペーストという名称が普及する前からこれらが "kill" (キル), "yank" (ヤンク) と呼ばれていたりするので、Web 上の解説や man ページなどを読むときは注意しよう。
固まる原因となったプログラムを強制的に終了させてみよう。
そのウィンドウ上で
でも単に処理中で入力を受け付けないだけだったということが多々…
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 でもダメなら、Ctr+Alt+Backspace キーで X を強制終了。
X の強制終了キーで強制終了できない場合は Ctrl+Alt+Delete キーでシャットダウン。
魔法の SysRQ キーと呼ばれるキーコンビ (Alt+SysRQ+α) が有効になってるかもしれない。JF の 神秘のSYSRQキー文書 に使い方は書いてあるので、大事に至る前に前もって読んでおいて設定しておくのも良いかも。
さんざん手を尽くしたなら祈りながら電源スイッチに全てを託そう。神の御加護を。データが無事である事を祈る! (こういう事もあるので、破壊に強いジャーナリングファイルシステム (ext3, ReiserFS, ...) を黙って使っとけって)
X を終了するようにしているはずなのに電源まで切れてしまうという場合、APM の設定を見直してください。マザーボードによっては Ctrl + Alt + Backspace キーと APM のコールがかち合っていて電源が落ちてしまう物があるそうです。
Xorg.0.log,XFree86.0.log など、それっぽいファイルが /var/log ディレクトリにあります。
方法はいろいろ。
xwd > hoge.xwd (hoge.xwd または単に hoge などお好きな名前で) と入力してリターンを押すと、マウスポインタの形が変わります。保存したい画面の中にポインタを移動させ、そこでポインタをクリックします。「ピ・ピッ」と音が2回鳴ったら、保存が済んでいます。
これで撮ったスクリーンショットは xwud < hoge.xwd あるいは display hoge.xwd と入力して見るか、convert hoge.xwd hoge.png あたりで別な形式に変換して使ってください。convert はImageMagick に含まれています
import hoge.png のようにファイル名に拡張子 (.jpeg, .miff, .png など) を付加して、指定した形式で保存することも可能です。jpeg 形式で保存すると、かなり小さなサイズで保存できます。xwd を使用する時も、同様に形式を指定して保存できます。
import では、マウスをドラッグすることで自由に範囲指定することもできます。
import は ImageMagick に含まれています
GIMP のメニューから ファイル > 取り込み > 画面取り込み を選ぶ。
KSnapshot を起動し [新規スナップショット] > スナップショットを保存 を選ぶ。
PrintScreenキーで画面全体、Alt+PrinScreenでアクティブなウィンドウのキャプチャが取れます。
メニューのデスクトップ>スクリーンショットからも撮れるかも。またはアクション>スクリーンショットとか、システム>スクリーンショットとか。
xdpyinfo で見ることができます。表示が大きいので xdpyinfo | grep resolution のようにフィルタリングして見るのがいいでしょう。
vutils の setwm コマンドを使いましょう。setwm とオプションをつけずに実行すると使い方が表示されます。
vutils の setdm コマンドを使いましょう。setdm とオプションをつけずに実行すると使い方が表示されます。
/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
/etc/X11/Xsession.d/以下に並んでるファイル。GNOMEのまんまなら55gnome-session_gnomercあたりがいいんじゃないかと。