LinuC Level1 v10.0 対策コース(パート1)13/39
X Window System の構成要素についての基本的な理解と知識
こちらの記事では X Window System について解説します。 X Window Systemとは、LinuxなどのUNIX系OSでGUI(Graphical User Interface)を使用するためのシステムです。
X Window System
X Window SystemとはXサーバーとXクライアントから構成されているウィンドウシステムです。UNIX系のOSでは標準的に用いられており、統一的なGUIを提供します。
X Window Systemではメニュー・アイコン・バックグラウンドイメージ等のデザインや操作性が統一されたデスクトップ環境が稼働します。
通常、UNIX系のOSはテキストベースのインターフェースを使用します。しかし、X Window System を導入することでGUIによる操作が可能となります。
統合デスクトップ環境
統合デスクトップ環境とは、LinuxなどでGUIを利用するために必要なソフトウェア群を一つにまとめたもののことを指します。主にウィンドウマネージャー・ファイル管理システム・端末エミュレーター等が含まれます。
Linuxでは、統合デスクトップ環境を使用しなくても自由にGUI環境を構築することが可能です。しかし、その場合は見た目や操作性が統一されないため、最適な環境とは言えません。有名なディストリビューションであれば統合デスクトップ環境でGUIが構成されているため、同じような見た目や操作となり快適に操作できます。
X Window Systemの構成要素
Xサーバー
XサーバーはXクライアントを Graphic Display に実現/表⽰するサービスを⾏うプログラムです。 マウスやキーボードからの入力情報を受け取り、Xクライアントに送信します。
Xクライアント
X クライアントは Xlib で作成されたアプリケーションで、Xサーバから受信した情報を処理し、その結果を画面描画情報としてXサーバに返します。
X Window System独自のクライアントサーバー型
処理を要求する側をクライアント、要求を待ち要求を処理する側をサーバーと言います。
X Window System において、要求を出すのはユーザーのマウスやキーボードによる操作であり、直接的にはパソコン自体ではありません。そしてユーザーが操作した情報はX Window System のXプロトコル によってユーザーが持つパソコンではなく、リモートにあるアプリケーションに渡されます。情報を受け取ったアプリケーションは指示通りにアプリケーションのバックエンドを動作させ、その処理をフロント側に反映させるためにローカルのパソコンに要求します。要求を受け取ったアプリケーションは指示通りにバックエンドを動作させ、その処理結果をユーザーインターフェースに反映させるために、ローカルのマシンに対して要求を出します。
分かりにくいのはX Window Systemの場合、サーバーへの要求をする前にユーザーの処理の内容を一度リモート側に渡しているところです。この動作により、クライアントとサーバーの立場が反対になります。
これはX Window Systemからみた姿であり、これが非常にわかりにくい点でもあります。
X Window Manager
Window Manager はウィンドウの管理やマウスを使用した操作、画面クリックなどのイベントを管理するシステムです。X Window Managerは無くても動作しますが、CUI(Character User Interface)とほとんど同じ見た目になります。ブラウザなどは綺麗にGUIで表示されます。X Window Systemはキー入力や画面表示を担当し、X Window ManagerはXアプリの移動やタイトル表示などを担当しています。
Display Manager
Display ManagerはLinuxシステム起動時にGUIでログイン画面を表示することが出来ます。
ブートシーケンス時のsystemdが再起動した後にDisplay Managerが起動します。
GUIに変更する
CUI環境で動作しているシステムをGUI環境に変更するには、 startx
コマンドを使用してX Window Systemを起動します。 startx
コマンドはXサーバーを起動するコマンドで、実行するとX Window System のブートシーケンスが始まります。
# 起動
startx
# 強制起動
startx -w
ローカルおよびリモートで起動する
自分のディスプレイへのアクセス権をローカルシステム内の別のユーザーやリモートユーザーに与えたい場合は xauth
を用いてXサーバーへの認証情報を制御します。 xauth
はユーザーごとの .Xauthority
ファイルを扱います。これはXサーバーにアクセスするための認証情報を含んでいます。
# .Xauthorityファイルの情報を表示
xauth list
# 認証情報を追加
# xauth add ${hostname}/unix:${display} . ${mcookie}
xauth add si.remoteuser.root/unix:0 . $(mcookie)
# 認証情報を削除
# xauth remove ${hostname}/unix:${display}
xauth remove si.remoteuser.root/unix:0
mcookie
は乱数生成器で、Xサーバーに対する認証情報を生成するために使用します。
リモートマシンからローカルマシンにアクセスするには、リモートマシンのXクライアントの設定を行う必要があります。環境変数 DISPLAY にXサーバーのホスト名、もしくはIPアドレスを登録します。
# DISPLAYを表示する
# デフォルトでは :0.0 となっている
printenv DISPLAY
:0.0
DISPLAY
'の環境変数を設定するには、以下のように書式を変更します。環境変数の設定が終わったら、XクライアントでMozilla Firefoxを起動します。
# DISPLAY=Xサーバー名:ディスプレイ番号.スクリーン番号
# DISPLAYファイルの中身
# DISPLAY=si.remoteuser.root:0.0
printenv DISPLAY
si.remoteuser.root:0.0
# Mozilla Firefoxを起動してリモートからローカルにアクセスします。
/usr/bin/mozilla
こうすることで、ローカルとリモートの両方でX Window Systemを安全に操作することができます。
まとめ
こちらの記事ではX Window Systemについて解説しました。
X Window SystemとはLinuxをGUIで使用するためのシステムで、クライアントサーバー型の関係性が通常とは反対になっています。また統合デスクトップ環境によってGUIの見た目や操作感はある程度統一されています。
記事の内容は理解できましたか?