Xの概要

Xの特徴

X Window System は OS と一体のものではありません.OSからみた場合は,数あ るプログラムのひとつに過ぎません.

X Window System はクライアント・サーバモデルを採用しています.画面を描画 しているのがサーバです.キーボードやマウスによる入力もサーバが処理します. クライアントはサーバに対して「ウィンドウを描け」とか「画面のサイズを教え ろ」など,命令を出しているのです.一見一台しかマシンがなくても,サーバと クライアントプログラムに分かれています.

サーバとクライアントの間では通信のための決まりがあって,それをプロトコル といいます.Xプロトコルに則っていれば,サーバとクライアントは別のマシン でも構いません.実際,Windows 上で動くXサーバにSolarisマシンのプログラム を表示することもできます.

Xプログラミングというのは,Xクライアントプログラムを書くということにな ります.クライアントはサーバに対して要求を送り,逆にサーバからの返答,エ ラー,イベント通知を受け取ります.

イベントというのはキー入力,マウスの移動,ウィンドウ状態の変化など,サー バ上で発生するアクションのことをいいます.サーバはこれらのアクションが発 生するとクライアントに通知します.

ウインドウシステムに置けるプログラミングは,基本的にはイベント駆動型のプ ログラムになります.初期設定をしてウインドウを開いた後は,ループの中でイ ベントの通知を待ち,通知されたイベントに応じた処理を行います.

Windows プログラミングでもこのことは同様です.Xではサーバからイベントが 通知されますが,WindowsではOSからメッセージというものが通知されます. ループの中でメッセージを待ち,そのメッセージに応じた処理を行います.

X Lib

X LibはXクライアントを作成するのに最低限必要なAPIを集めたライブラリです. そのため,Windows のAPIと比較すると,Windowsでは簡単に記述できることが, Xでは大量のコードを書かないといけない場合があります.たとえば,X Libでメ ニューバーを実現するのはかなりの作業です.

WindowsのAPIと同じレベルになるにはGTKやQtなどの上位ツールキットを使用す る必要があります.もちろん,これらのツールキットもX Libを用いて記述され ています.

X Libは低レベルな分だけ痒いところにも手が届く,というか,柔軟な記述 が可能です.

さて,Xプログラミングにおいては他にも面倒くさいことがあります. X Lib はUNIX文化の中で成長してきました.今でこそフルカラーのディスプレイ が当り前ですが,以前は大変高価なものでした.Windowsと違い,Xのプログラム はどこのディスプレイに表示されるかが決まっていません.色数が少ないかもし れないし,もしかしたら,モノクロディスプレイかもしれないのです.

このような時どうするか?サーバは自分のできる範囲で言われたとおりの仕事し かしてくれません.モノクロディスプレイしか持たないサーバに対して「カラー で表示しろ」と命令しても「できません」としか返してくれません.もし,あら ゆるサーバで実行可能なプログラムを作ろうとしたら,プログラマがあらかじめ そのような場合を想定してモノクロディスプレイでの処理も記述しておかなくて はならないのです.

そういうわけで,Xにおける色の使用,さらにフォントや日本語表示に関しては 注意する必要があります.

Back to TOP