LinuxにおけるX Window Systemの使い方についてまとめました。
- X Window Systemとは
- X Window System の設定(xorg.conf)
- X Window Systemの操作
- X Window Systemの開始
- X Window Systemの主なコマンド
- Xのウィンドウ情報を表示(xwininfoコマンド)
- Xサーバのディスプレイ情報を表示(xdpyinfo コマンド)
- X フォントサーバー(xfs)
- ウィンドウマネージャ(twm)
- ディスプレイマネージャ
- Xフォントサーバーにフォントを追加
- 【使用例】Xクライアント上で実行したGUIアプリケーションをXサーバ上のデフォルトディスプレイで表示させる場合の環境変数DISPLAYの設定
- 【使用例】Xクライアント上で実行したプログラム「xeyes」をXサーバのディスプレイに表示させる場合
- 関連ページ
X Window Systemとは
X Window System(X、X11)は、Linux系OSでGUIを実現するために使用されています。
X Window Systemは以下のようなクライアント・ サーバモデルで構成されます。
- X サーバ
- ユーザのハードウェア管理(ディスプレイの表示、キーボードからの入力処理など)を行うプログラム。ディスプレイ、キーボード、マウスなどが接続されたローカルホスト上で実行される。
- X クライアント
- データを処理し、Xサーバへ話しかけるプログラム。要はブラウザやエディタなど、ウィンドウを表示するプログラム。リモートホスト上で実行される。
- アプリケーションサーバ
データを処理しクライアントへ話しかけるプログラム。リモートホスト上で実行される - アプリケーションクライアント
- ユーザのディスプレーや入力デバイスが接続されたプログラム。ローカルホスト上で実行される。
X Window System の設定(xorg.conf)
X Window System の設定は以下のコマンドを実行して生成される「/root/xorg.conf.new」をコピーしてファイル名を変更した「/etc/X11/xorg.conf」ファイルで行います。
$ Xorg -configure
「/etc/X11/xorg.conf」ファイルは、複数のセクションの集まりで構成されます。
各セクションは Section “<セクション名>” 行で始まり、EndSection行で終了します。
「#」マークで始まる行は、コメント行です。
セクション名 | 概要 |
---|---|
ServerFlags | グローバルなX サーバの設定 |
ServerLayout | Xサーバで制御される入出力デバイスの定義 |
Files | X サーバへのサービス用パスを設定 |
Module | Xサーバがロードする「/usr/X11R6/lib/modules/」内のモジュール(Xサーバの追加機能)を指定。 |
InputDevice | Xサーバに対して1つの入力デバイスを設定。 システムには2つ以上のInputDeviceセクション(キーボード及びマウス)が必要となる。 |
Monitor | モニタのタイプを設定。 |
Device | ビデオカードを設定。1つ以上のDeviceセクションが必要。 |
Screen | 1つのビデオカードを、DeviceセクションとMonitorセクションを参照して1つのモニタに結合する。 |
DRI | DRI(Direct Rendering Infrastructure)用のパラメータを設定。DRIは、3D ソフトウェアアプリケーションが最新のビデオハードウェアに組み込まれた 3D ハードウェアアクセラレーション機能を活用できるようにするインターフェース。 |
X Window Systemの操作
① Xサーバー側(ローカル側)で以下のコマンドを実行してXサーバー接続許可リストに追加し、Xクライアントホスト(リモート)からのアクセスを許可します。
$ xhost +Xクライアントホスト名
なお、すべてのクライアントからのアクセスを許可する場合は「xhost +」、アクセス許可を取り消す場合は「xhost -Xクライアントホスト名」を実行します。
②Xクライアント側(リモート側)で「DISPLAY=ホスト名:ディスプレイ番号.スクリーン番号」を実行し、環境変数DISPLAYにXサーバを指定します。
$ DISPLAY=ホスト名:0.0 $ export DISPLAY
- 補足
- 「ホスト名(Xサーバ名)」もしくは「XサーバのIPアドレス」を指定
- ディスプレイ番号とスクリーン番号は通常0
③Xクライアント側で以下のコマンドを実行し、アプリケーションを起動します。
$ xclock &
④Xサーバ側にxclockが表示されます。
X Window Systemの開始
①ランレベル3の状態で「startx」コマンドを実行します。
(統合デスクトップ環境のGUI画面が表示されます、つまりCUI環境からGUI環境に移行します)
$ startx
② xinit コマンドを実行します
$ xinit
③ユーザーのホームディレクトリ内の .xinitrc ファイルを検索し、デスクトップ環境、実行すべき他の X クライアントアプリケーションを定義します。
.xinitrcファイルがない場合、システムデフォルトの「/etc/X11/xinit/xinitrc」ファイルを代わりに使用します。
④xinitrcスクリプトは、ユーザーのホーム ディレクトリ内で「.Xresources」「.Xmodmap」「.Xkbmap」、「/etc/X11/」ディレクトリ内で「Xresources」「Xmodmap」「Xkbmap」などのユーザー定義ファイルやシステムファイルを探し、見つかればそのファイルに従って設定されます。
例えば、XmodmapとXkbmapは、xmodmapユーティリティに使用され、キーボードの設定を行います。
⑤xinitrcスクリプトが「/etc/X11/xinit/xinitrc.d/」ディレクトリ内の全てのスクリプトを実行します。
⑥xinitrcスクリプトは、ユーザーのホームディレクトリ内の .Xclientsを実行します。
.Xclientsスクリプトは .Xclients-default ファイルにあるユーザー指定のデスクトップ環境を起動します。
⑦ウィンドウマネージャが開始され、デスクトップ環境で操作できます。
X Window Systemの主なコマンド
Xサーバー側のコマンド
- xauth list
- Xサーバごとの接続に使用される資格情報を表示
Xクライアント側のコマンド
- xauthコマンド
- ユーザ単位でXサーバへのアクセスを制限。
- xauthのaddコマンドで、接続ユーザの「~/.Xauthority」ファイル(クライアント認証ファイル)にXサーバと同じ資格情報を保存。
- Xサーバと資格情報が一致したユーザのみアクセス可能になる。
- xhost
- ホスト単位でXサーバへのアクセス許可・不許可を制御。ホスト単位の制御はセキュリティ上好ましくないため、xauthコマンドでユーザ単位でXサーバへのアクセスを制限するのが一般的。
Xのウィンドウ情報を表示(xwininfoコマンド)
「xwininfo」コマンドは、Xのウィンドウ情報を表示します。
オプション | 概要 |
---|---|
-id | ウィンドウID(id)を表示。ウインドウIDがわかると、マウスなしで、コマンド行から対象ウィンドウを指定できる。 |
-tree | 全ての子ウィンドウを表示 |
-root | rootウィンドウの情報を表示 |
-stats | 指定したウィンドウの位置や外観の情報を表示 |
実行例
$ xwininfo
Xサーバのディスプレイ情報を表示(xdpyinfo コマンド)
xdpyinfoコマンドは、Xサーバのディスプレイ情報を表示します。
オプション | 概要 |
---|---|
-ext all | 詳細情報を表示 |
実行例
$ xdpyinfo
X フォントサーバー(xfs)
X サーバーは、「/etc/X11/xorg.conf」ファイルのFilesセクションのFontPathディレクティブに指定してあるフォントサーバ(xfs)に接続し、フォント情報を取得します。
オプション | 概要 |
---|---|
alternate-servers | フォントサーバーが利用できない場合にの代替フォントサーバーの一覧を指定。 |
catalogue | 使用するフォントパスの順番の一覧を指定。 |
client-limit | フォントサーバーが処理するクライアントの最大数を指定(デフォルトは10)。 |
default-point-size | デフォルトのフォントを指定(デフォルトの120は、12pt) |
default-resolutions | X サーバーによりサポートされている解像度のリストを指定。 |
use-syslog | システムエラーログを使用するか指定。 |
ウィンドウマネージャ(twm)
「twm」は最小限の機能を備えたウィンドウマネージャです。
ウィンドウマネージャとは、 ウィンドウの外観、アイコン、カーソル、メニューなどを提供するXクライアントのアプリケーションの1つです。
ディスプレイマネージャ
ディスプレイマネージャの特徴は以下のとおりです。
- デスクトップ環境を準備する
- initやsystemdによりディスプレイマネージャーサービスが起動
- ユーザにGUI環境のログインを提供
Xフォントサーバーにフォントを追加
以下の手順で追加します。
①以下のコマンドで「/usr/share/fonts/local/」ディレクトリを作成します。
$ mkdir ./usr/share/fonts/local/
②以下のコマンドをルート実行し、ディレクトリをxfsのパスに追加します。
$ chkfontpath --add /usr/share/fonts/local/
③ 追加したいフォントファイルを「/usr/share/fonts/local/」ディレクトリにコピーします。
④ ルートで以下のコマンドを実行し、フォント情報を更新します。
$ ttmkfdir -d /usr/share/fonts/local/ -o /usr/share/fonts/local/fonts.scale
⑤ rootになり、以下のコマンドを実行し、xfsフォントサーバーを再読み込みします。
$ service xfs reload
【使用例】Xクライアント上で実行したGUIアプリケーションをXサーバ上のデフォルトディスプレイで表示させる場合の環境変数DISPLAYの設定
Xクライアント上で実行したGUIアプリケーションをXサーバ上のデフォルトディスプレイで表示させる場合、Xクライアント側の環境変数DISPLAYで以下のように表示先(Xサーバ)を指定します。
[Xサーバ]:ディスプレイ番号.スクリーン番号
デフォルトのディスプレイを使用する場合はディスプレイ番号に0を指定します。
例えば、XサーバのIPアドレスが「192.168.0.10」のとき環境変数DISPLAYで「192.168.0.10:0」もしくは「192.168.0.10:0.0」と指定します。
【使用例】Xクライアント上で実行したプログラム「xeyes」をXサーバのディスプレイに表示させる場合
Xクライアント上で実行したプログラム「xeyes」をXサーバのディスプレイに表示させる場合、以下の順でコマンドを実行します。
ここで、XサーバーのIPアドレスは「192.168.1.1」、XクライアントのIPアドレスは「192.168.1.2」とします。
Xサーバー側で以下のコマンドを実行し、xhostコマンドで、Xクライアントからのアクセスを許可します。
$ xhost +192.168.1.2
Xクライアント側で以下のコマンドを実行し、環境変数DISPLAYで表示先(Xサーバ)を指定し、Xサーバに表示させたいプログラム(xeyes)を実行します。
$ DISPLAY=172.16.0.1:0 $ export DISPLAY $ xeyes &
コメント