LinuxやUnixではGUIを実現するためにX Window System(X, X11)が使われています。
Linuxではフリーの X Window System として XFree86 が採用されていましたが、ライセンスの関係で現在は X.Org が主流となっています。
X は最初からネットワークを意識してデザインされており、 「クライアント - サーバ」 モデルを採用しています。
X では、「X サーバ」 はキーボードやモニタ、 マウスが接続されたコンピュータ上で動かし、ハードウェアの管理を行います。 このX サーバはディスプレイの表示を管理したり、キーボード、 マウスからの入力を処理したり、他の入出力装置 (すなわち、入力装置として “タブレット” を利用できますし、 出力装置としてビデオプロジェクタを利用することもできます) を取り扱います。 各 X アプリケーション (XTerm や Firefox など) は 「X クライアント」 になります。 クライアントは 「この座標にウィンドウを描いてください」 といったメッセージをサーバへ送り、サーバは 「ユーザが ENTER キーを押しました」 といったメッセージを送り返します。
家庭や小さなオフィスのような環境では、X サーバと X クライアントは同じコンピュータ上で動くことになります。 しかし、X サーバを非力なデスクトップコンピュータで動かし、 X アプリケーション (クライアント) は、例えばオフィス全体で使うような高機能で高価なマシン上で動かすことも可能です。この場合、 X クライアント と X サーバ の通信はネットワークを通じて行なわれます。
X サーバとはモニタとキーボードがついているマシンのことであり、 X クライアントとはウィンドウを表示するプログラムです。
「クライアント」が自分たちのデスク上にあり、サービスを提供する離れた場所のマシンが「サーバー」となっている一般的なクライアント-サーバーモデルとは、反対になっているので注意してください。
Xサーバとその関連設定ファイルは/etc/X11/ディレクトリ内にあります。
Xサーバ用の設定ファイルは/etc/X11/xorg.confです。xorg.confにはキーボード・マウス・モニター・フォント・ディスプレイの解像度などの設定ができます。
Linux インストール直後では、/etc/X11/xorg.conf ファイルは存在しません。下記のコマンドで作成します。
# Xorg -configure |
実行すると、/root/xorg.conf.new が作成されるので、/etc/X11 下に xorg.conf としてコピーします。
/etc/X11/xorg.confのファイルは、異なるセクションの集まりで構成されています。
各セクションは Section "<セクション名>" 行で始まり、EndSection行で終了します。
各セクションは複数のエントリ行からなります。
エントリは、オプション名と少なくとも1つのオプション値からなります。
いくつかのオプションはブール値をとり、これが機能のオンとオフの切り換えをします。
1、on、true、yes 等の値はオプション機能をオンにします。
0、off、false、no 等の値はオプション機能をオフにします。
#マークで始まる行はコメントとして使用されます。
ServerFlagsセクションではグローバルなX サーバ設定を行います。
このセクションの設定はServerLayoutセクションにあるオプションで上書きされます。
ServerFlagsセクション内の各エントリは、Optionで始まりその後に2重引用符(")で囲まれたオプションが続きます。
Section "ServerFlags" Option "DontZap" "true" EndSection |
ServerLayoutセクションは、Xサーバで制御される入力/出力用のデバイスを定義します。
最低でもこのセクションは1つの出力デバイス(スクリーン)と2つの入力デバイス(キーボードとマウス)を指定します。
Section "ServerLayout" Identifier "Default Layout" Screen 0 "Screen0" 0 0 InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" EndSection |
Filesセクションは、X サーバへのサービス用パスを設定します。
Section "Files" RgbPath "/usr/X11R6/lib/X11/rgb" FontPath "unix/:7100" EndSection |
Moduleは、X サーバがロードする予定の/usr/X11R6/lib/modules/ディレクトリ内のモジュールを指定します。 モジュールはXサーバに追加の機能を与えます。
● Moduleセクションの例Section "Module" Load "dbe" Load "extmod" Load "fbdevhw" Load "glx" Load "record" Load "freetype" Load "type1" Load "dri" EndSection |
各InputDeviceセクションは X サーバに対して1つの入力デバイスを設定します。 システムには最低でも2つのInputDeviceセクション(キーボードとマウス)が必要です。
● InputDeviceの例Section "InputDevice" Identifier "Mouse0" <--- マウス用 Driver "mouse" Option "Protocol" "IMPS/2" Option "Device" "/dev/input/mice" Option "Emulate3Buttons" "no" EndSection Section "InputDevice" Identifier "Keyboard0" <--- キーボード用 Driver "kbd" Option "XkbModel" "jp106" <--- 日本語106キーボード Option "XkbLayout" "jp" <--- 日本語配列 EndSection |
各Monitorセクションでシステムによって使用されるモニタのタイプを1つ設定します。
1つのMonitorセクションは 最低限必要ですが、マシンによって使用される各モニターの追加の設定も可能です。
Section "Monitor" Identifier "Monitor0" VendorName "Monitor Vendor" ModelName "Monitor Model Name" DisplaySize 320 240 HorizSync 30.0 - 70.0 <--- 水平走査周波数 VertRefresh 50.0 - 180.0 <--- 垂直同期周波数 EndSection |
各Deviceセクションでシステム上のビデオカード1つを設定します。
最低1つのDeviceセクションが必要ですか、マシン上にインストールされている各ビデオカードの為に追加の設定も可能です。
Section "Device" Identifier "Videocard0" <--- ビデオカードの設定 Driver "mga" VendorName "Videocard vendor" BoardName "Videocard Name" VideoRam 8192 Option "dpms" EndSection |
各Screenセクションでは、1つのビデオカードを、DeviceセクションとMonitorセクションを参照することにより1つのモニタに結合します。
● Screenセクションの例Section "Screen" Identifier "Screen0" Device "Videocard0" Monitor "Monitor0" DefaultDepth 16 SubSection "Display" Depth 24 <--- 色深度24ビットカラー Modes "1280x1024" "1280x960" "1152x864" "1024x768" "800x600" "640x480" EndSubSection SubSection "Display" Depth 16 <--- 色深度24ビットカラー Modes "1152x864" "1024x768" "800x600" "640x480" EndSubSection EndSection |
オプションのDRIセクションは、DRI(Direct Rendering Infrastructure)用のパラメータを指定します。
DRI は、最新のビデオハードウェアに組込みの3Dハードウェア高速化機能 の利点を3Dソフトウェアアプリケーションが利用できるようにするインターフェースです。 また、DRIは、ビデオカードドライバでサポートされていれば、 ハードウェア高速化から2Dのパフォーマンスも向上させることができます。
Section "DRI" Group 0 Mode 0666 EndSection |
X Window SystemはクライアントとサーバがXプロトコルで通信するネットワーク型のウィンドウシステムであり、この特徴を生かしてクライアントプログラムをリモートホストで実行し、ローカルホスト上のXサーバで表示や操作をすることができます。
ローカルホストになくリモートホスト上にあるアプリケーションをローカルホストで表示・操作したり、高速なリモートホスト上で演算主体のアプリケーションを実行して表示・操作をローカルホストで行うことができます。
1. xhostコマンドを実行して、Xクライアントホスト(リモート)からのアクセスを許可します。
(Xサーバ接続許可リストに追加します。)
# xhost +Xクライアントホスト名 |
・すべてのクライアントからのアクセスを許可する場合:xhost +
・特定クライアントからのアクセスを許可する場合:xhost +Xクライアントホスト名
・特定クライアントからのアクセスを取り消す場合:xhost -Xクライアントホスト名
1. Xクライアント(リモート)側の環境変数DISPLAYにXサーバを指定します。
$ DISPLAY=Xサーバ名:0.0 $ export DISPLAY |
Xサーバ名、又はXサーバのIPアドレスを指定します。
書式: DISPLAY=ホスト名:ディスプレイ番号.スクリーン番号
左側の 0 はディスプレイ番号のことです。ディスプレイ番号は通常 0 です。
右側の 0 はスクリーン番号です。これも通常 0 です。
2. Xクライアント側でアプリケーションを起動します。
$ xclock & |
xclockの表示がXサーバ側に表示されます。
X Window System を開始するには、ランレベル 3 の状態のときには、startx コマンドを実行します。 その後の起動の流れは以下のようになります。
xwininfo コマンドは、X のウィンドウ情報を表示するユーティリティです。
● xwininfo コマンド構文![]() |
|
xwininfo [オプション] |
|
![]() |
![]() |
|
-id | idを表示する このオプションを使うことで、ユーザはマウスを使わずに、コマンド行から対象となるウィンドウを指定することができる。指定されるのは、ウィンドウIDが id であるウィンドウである。 このオプションは、対象となるウィンドウがスクリーンにマップされなかったり、マウスの使用が不可能あるいはアプリケーションに干渉されるような、X アプリケーションのデバッグの際に便利である。 |
![]() |
|
-tree | 全ての子ウィンドウも表示する |
![]() |
|
-root | rootウィンドウの情報を得る |
![]() |
|
-stats | 指定したウィンドウに関する位置や外見についての属性が表示される。(オプション省略時のデフォルト) |
![]() |
$ xwininfo xwininfo: Please select the window about which you would like information by clicking the mouse in that window. . xwininfo: Window id: 0x180002e "デスクトップ" . Absolute upper-left X: 0 Absolute upper-left Y: 0 Relative upper-left X: 0 Relative upper-left Y: 0 Width: 1024 Height: 768 Depth: 24 Visual Class: TrueColor Border width: 0 Class: InputOutput Colormap: 0x20 (installed) Bit Gravity State: NorthWestGravity Window Gravity State: NorthWestGravity Backing Store State: NotUseful Save Under State: no Map State: IsViewable Override Redirect State: no Corners: +0+0 -0+0 -0-0 +0-0 -geometry 1024x768+0+0 |
xdpyinfo コマンドは、Xサーバーのディスプレイ情報を表示するコマンドです。
Xサーバに関するディスプレイ情報を表示するユーティリティです。このプログラムは、サーバの機能、クライアントとサーバ間の通信で使われる各種パラメータの既定値、利用可能なスクリーンやビジュアルのタイプを調べることができます。
![]() |
|
xdpyinfo [オプション] |
|
![]() |
![]() |
|
-ext all | 詳細情報を表示する |
![]() |
$ xdpyinfo name of display: :0.0 version number: 11.0 vendor string: The X.Org Foundation vendor release number: 60802000 X.Org version: 6.8.2 maximum request size: 16777212 bytes (以下省略) |
X サーバーは、/etc/X11/xorg.conf設定ファイルのFilesセクション内のFontPathディレクティブに指定してあるフォントサーバーを探します。
X サーバーは、指定のポート上でxfsサーバーに接続し、フォント情報を取得します。この理由から、X がスタートするためにxfsサービスは実行中でなければなりません。
/etc/rc.d/init.d/xfs スクリプトは xfs サーバーを開始します。
設定ファイル、/etc/X11/fs/config の中で各オプションが設定できます。
次は一般的なオプションの一覧です:
コア X フォントサブシステム(xfs)にフォントを追加するには、 次の手順で行います。
1. /usr/share/fonts/local/ディレクトリがなければ、ルートで作成します。
# mkdir /usr/share/fonts/local/ |
/usr/share/fonts/local/ディレクトリの作成が必要な場合、次のコマンドをルートで入力してディレクトリをxfsのパスに追加します。
# chkfontpath --add /usr/share/fonts/local/ |
2. 新しいフォントファイルを/usr/share/fonts/local/ ディレクトリにコピーします。
3. ルートとして次のコマンドを発行して、フォント情報を更新します。
# ttmkfdir -d /usr/share/fonts/local/ -o /usr/share/fonts/local/fonts.scale |
4. root になり次のコマンドを発行してxfsフォントサーバーを再ロードします。
# service xfs reload |
Xの1つの特徴としてウィンドウに関する見た目、操作などをXサーバは管理していないということがあげられます。これはXサーバが行う仕事はマウス、キーボードなどからのイベント通知、ウィンドウの座標位置、高さ、幅などの描画に関する情報の管理であって、ウィンドウの見た目、移動、サイズ変更などはXクライアントによって提供されるものであるという考えのためです。つまりX Window Systemという仕組みはウィンドウの表現方法を自身ではもっていないということになり、表現をXクライアントというかたちで自由に実現できることを意味しています。このような複数のウィンドウの概観や操作に関する管理を行うのがXクライアントであるウィンドウマネージャです。
ウィンドウマネージャはウィンドウ周りの機能を提供する X クライアントです。ウィンドウマネージャはアプリケーションの外観を操作します: ボーダー、タイトルバー、サイズ、ウィンドウのリサイズ機能などはウィンドウマネージャによって管理されます。
www.it-shikaku.jp