• 検索結果がありません。

tmp.dvi

N/A
N/A
Protected

Academic year: 2021

シェア "tmp.dvi"

Copied!
30
0
0

読み込み中.... (全文を見る)

全文

(1)

2.4 詳細な設定

comp.os.linux.hardwarecomp.os.linux.xなどのUSENETのニュースグループに行き、質

問を投稿する。利用しようとしているビデオカードの型番、利用しているLinuxのバージョ

ン、XFree86のバージョンを詳細に記述すること。おそらくすでに同じ問題を誰かが経験し ており、これを解決して情報を共有しようと思っているはずである。

利用するビデオカードがサポートされている、Linux用のX11R6の代替となる実装を利用する。

Xi Graphics社(http://www.xig.com)のAccelerated-X、Metro Link社(http://www.met rolink.com)のMetro-Xなどがある。 いちばん簡単な方法は、新しいビデオカードを購入することである。最近ではコンピュータ 用ハードウェアは非常に安価になっている。現在利用しているビデオカードより驚くほど高 速で、かつXFree86が対応している製品が、X11R6の代替となる実装製品よりも安価に入 手できるはずだ。 ツールでの設定は行わず、2.4詳細な設定」へ進み、設定用のテキストファイルを開いて、ビ デオカードが正しく動作するまでさらに数時間を費やす。

2.4

詳細な設定

どれほどよい環境にあっても、自動設定ツールによる作業は手作業にかなわないこともある。 ほとんどのユーザーは、Linuxを使っていくうちに何度かはEmacsで/etc/XF86Configファイ

ルを開くことになるだろう。現在では/etc/XF86Configファイルをあえて手作業で作成するよう

なことはほとんど考えられないので、本節では、XF86Setupまたはxf86configなどの自動設定

ツールを使って生成したファイルを修正することを前提に、説明を進めていく。

2.4.1

/etc/XF86Config

の各セクションの解説

/etc/XF86Configファイル(/etc/X11/XF86Config、/usr/X11R6/lib/X11/XF86Configの場 合もある)は、プレーンなテキストファイルで、以下に示すような一定の形式を持ったいくつか のセクションに分かれている。

Section "ThisSection’sName"

ConfigEntry [parameters if needed] ConfigEntry [parameters if needed] ...

SubSection "ThisSubsection’sName" ConfigEntry [parameters if needed] ... EndSubSection EndSection すべてのセクションにサブセクションがあるわけではなく、またすべての項目にパラメータが 必要なわけでもない。このファイルの内容を見れば、非常に規則的で読みやすいことに気づくだ ろう。セクションや項目の順番は決められていないが、通常は慣例に従ったものであり、本書で

(2)

第2章  XFree86のインストールと設定

もこの慣例に従った順に解説を行う。行頭に「#」が使われている行はコメントとして扱われ、内

容は無視される。

本項は、XF86Setupまたはxf86configを用いて生成されたXF86Configファイルについて、セ クション単位で設定を確認し、必要に応じて修正を加えることを目的に説明を進める。特定のデ バイスをサポートする場合や、特殊な設定が必要な場合については、それぞれの情報源を確認し てほしい。特定のカードを使用する設定、特定のサーバーを使用する設定については説明を省略 している。[Device]セクションを読む場合は特に、利用するXサーバーのマニュアルページを 参照するほか、XFree86パッケージとしてインストールされている、/usr/X11R6/lib/X11/doc にある特定のチップセットに関する情報を参照しておいてほしい。 ■

Files

セクション 通常、/etc/XF86ConfigファイルのFilesセクションは先頭に記述されており、Xサーバーの 動作に必要となるファイルのパスが指定されている。

XF86Setupまたはxf86configで設定ファイルを作成すると、Filesセクションは以下のような 内容になっているはずである。 Section "Files" RgbPath "/usr/X11R6/lib/X11/rgb" FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/100dpi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/Type1" FontPath "/usr/X11R6/lib/X11/fonts/Speedo" FontPath "/usr/X11R6/lib/X11/fonts/misc" FontPath "/usr/X11R6/lib/X11/fonts/75dp" FontPath "/usr/X11R6/lib/X11/fonts/100dpi" FontPath "/usr/X11R6/lib/X11/fonts/Symbol" EndSection 表2-4に、XF86ConfigファイルのFilesセクションで利用できる設定項目を示す。ここに示 す項目は、いずれも一対の引用符(")で囲まれたパラメータ、またはパラメータのリストを必要 とする。 表2-4 Filesセクションで有効な設定項目 設定項目 パラメータ 内容 FontPath pathname Xサーバーが利用するフォントの検索パスを指定する。パラメータには ディレクトリを指定するか、フォントを提供するフォントサーバーを指定 する。複数の項目を指定する場合にはコンマ(:)で区切る。 ディレクトリの末尾に「:unscaled」を追加すると、このディレクトリにある フォントにはスケーリングを行わないようXFree86が設定される。 サーバーは「packet/host:port」の形式で指定する。paketにはパケットの 種類( 通常はtcp)、hostにはフォントサーバーのホスト名、portは検索 を行うポート番号( 通常は7100)を、それぞれ使用する。

この項目は繰り返しの利用が可能であり、この場合は各項目がフォントパ スとして設定される

(3)

2.4 詳細な設定 設定項目 パラメータ 内容 RGBPath pathname Xサーバーの利用するRGBカラーデータベースのあるファイルを指定す る。通常は変更する必要がない ModulePath pathname Xサーバーが利用するモジュールの検索パスを指定する。パラメータには ディレクトリを指定する。複数の項目を指定する場合にはコンマ(:)で区切 る。この項目は繰り返しの利用が可能であり、この場合は各項目がモジュー ルパスとして設定される Load pathname Xサーバーの起動時にロードされるモジュールの名前。パスがフルパスと して指定されていない場合には、モジュールパスが検索される。利用可能 なモジュールは、/usr/X11R6/lib/modulesディレクトリで確認できる ■

ServerFlags

セクション このセクションはXサーバーの動作を変更するために使用する、フラグやスイッチを設定する。 自動的に生成されたXF86Configファイルの場合は何も記述されていない場合が多いが、このセ クションで利用可能な項目を表2-5に示す。通常はこれらのオプションを追加する必要はほとん どないため、いずれかの項目を明示する必要がある場合を除いては、このセクションは編集しな いほうがよい。 表2-5 ServerFlagsセクションで有効な設定項目 設定項目 内容 NoTrapSignals 特定のエラーが生じた場合に、Xサーバーがこれをトラップするのではなく、コ アダンプを出力するよう設定するフラグ。コンパイルやリンクを行う前にXサー バーのデバッグを行っているような場合を除いては、コアダンプを出力させると いう動作は望ましくはない

DontZap Xサーバーを Ctrl + Alt + Backspaceで終了できないようにするフラグ。マ

ルチユーザー環境では有効な場合もあるが、Xサーバーを緊急的に終了させる方 法として利用できるため、シングルユーザー環境では指定しないほうがよい

DontZoom Ctrl + Alt ++、 Ctrl + Alt +−*2を使ってビデオモードの切り替え

を行えないようにするフラグ。このキーシーケンスを利用するXクライアントを 使用する場合を除いては、特にこのフラグを設定する必要はない AllowNonLocalXvidtune ローカルホスト上で動作していないxvidtuneクライアントから、このホストで 動作しているXサーバーへの接続を許可するフラグ。XF86Configファイルによ る設定が、他のホストに接続されているディスプレイを利用するためのものであ る場合を除いては、特にこのフラグを変更する理由はない DisableVidMode xvidtuneにおいて、ビデオモードの変更を許可する部分を利用不可に設定する フラグ AllowNonLocalModInDev 他のホスト上にあるクライアントによる、ローカルサーバーのキーボードおよび マウスの設定変更を行えないようにするフラグ DisableModInDev Miscエクステンションにおいて、入力デバイスの設定変更に利用できる部分を 利用不可に設定するフラグ *2【編集部注】  テンキー上の+と−。

(4)

第2章  XFree86のインストールと設定 設定項目 内容 AllowMouseOpenFail マウスが動作しない、マウスが初期化できない、マウスが接続されていないなど の状態においてもXサーバーを起動するよう設定するフラグ。ポインティングデ バイスが利用できない状態では、行える処理はほとんどないため、マウスが利用 できない場合はXサーバーを起動させないほうがよい。仮想コンソールが1つし かないマシンでAllowMouseOpenFailとDontZapの両方のフラグを設定した場 合には、マウスが動作しなくなるだけで、ロックアウトする可能性が高くなるこ とに注意してほしい ■

Keyboard

セクション Keyboardセクションでは、キーの押下を扱うプロトコルや、割り込みを行うキーボードのマッ ピングなど、Xサーバーのキーボードハンドリングを設定する。Keyboardセクションで利用可 能な項目を表2-6に示す。 表2-6 Keyboardセクションで有効な設定項目 設定項目 パラメータ 内容

Protocol protocol キーボードプロトコルの名前を、StandardまたはXqueueのいずれかで、 一対の引用符(")で括って指定する。XqueueはSVR3あるいはSVR4シ ステム上で、イベントキュードライバと組み合わせて使用する。Linux

システムの場合はStandardを指定する

AutoRepeat num num このキーワードの後には、スペースで区切った2つの数値が配置される。

最初の数値は、キーを押し続けたときにキーリピートが開始されるまで の時間を、100分の1秒単位で指定する。2番目の数値はキーの繰り返 し速度を指定する。この項目は、このような入力を利用できるキーボー ドのみで有効となる。ATやPS/2などの拡張キーボードのほとんどは この項目が利用できるが、中には利用できないものもある。PC Linux プラットフォーム以外ではこのオプションが無効となることが多い ServerNumLock   Xサーバー内部でキーボードの NumLock を制御するよう設定するフラ グ。テンキー( 数値キー)やNumLock が正しく動作しないアプリケーショ ンがある場合に設定しなければならない場合がある。他の種類のキー ボード管理に影響することがあるため、推奨しない

LeftAlt function 左の Alt に機能を割り当てる。Meta(通常の Alt の動作)、Compose、

ModeShift( 通常の Shift の動作 )、Mode Lock( 通常のCapsLockの動 作)、Scroll Lock、Controlのいずれかの値をパラメータに指定する。左 の Alt のデフォルトのマッピングはMetaとなっている

RightAlt function 右の Alt に機能を割り当てる。パラメータの内容はLeftAltと同じ。

右の Alt のデフォルトのマッピングはMetaとなっている

ScrollLock function ScrollLockに機能を割り当てる。パラメータの内容はLeftAltと同じ。

ScrollLockのデフォルトのマッピングはComposeとなっている

RightCtrl function 右の Ctrl に機能を割り当てる。パラメータの内容はLeftAltと同じ。 右の Ctrl のデフォルトのマッピングはControlとなっている

XLeds num... キーボードのLEDを使用するように作成されたXクライアントで、こ

れを利用できるよう設定する。LEDを、数字の1から3までをパラメー タとして、スペースで区切って列挙して指定する

(5)

第4章  標準のXFree86プログラムとユーティリティ この3つのウィンドウのそれぞれにはシェルプロンプトが表示されていること、そしてほとん どのユーザーが慣れ親しんだUNIXコマンドを受け付けることに気づいただろう。Linuxのテキ ストコンソール上で実行できるほぼすべてのコマンドは、xtermウィンドウ上で実行でき、その 振る舞いもテキストコンソールと変わらない。pineやviなどのテキストベースのアプリケーショ ンや、moreなどのページ出力アプリケーションも同様に利用できる。xtermは、かつてのダム 端末とほぼ同じように利用できるが、1つだけ大きな違いがある。標準のデスクトップにも表示 されているように、複数のxtermウィンドウを同時に表示し、シェルへのアクセスを効率的にで きるという点だ。 また、xtermの振る舞いと、テキストコンソールの表示にはもう1つ重要な違いがある。実際 には、これはxtermに起因するものではなく、Xデスクトップの存在によるものである。その違 いとは、他のXアプリケーションやユーティリティを起動するためにxtermウィンドウを利用で きるという点である。他のXアプリケーションやユーティリティをxtermウィンドウから起動す ると、X用バイナリはxtermウィンドウ内には表示されず、(自然に)自分のウィンドウを新たに 作成し、そのウィンドウ内でプログラムが実行される。たとえば、すでに表示されているxterm ウィンドウにxtermとコマンドを入力すると、xtermウィンドウが新たにもう1つ作成される。 単純に新しいウィンドウが表示されるか、ウィンドウを作成する場所をラバーバンドの輪郭と して表示してユーザーが自由に設定できるかは、利用しているウィンドウマネージャによって異 なる。輪郭が表示された場合は、この輪郭を希望する位置まで移動してマウスボタンをクリック すれば、その場所にウィンドウが「配置」される。新しく表示されたxtermウィンドウは、他の xtermウィンドウと同様に、ダム端末のように機能することがわかるはずだ。 過去数年の間に、xtermに代わるアプリケーションがいくつか開発され、リリースされている。

KDEデスクトップのkvtやkonsole、SunのOpenWindowsのcmdtoolやshelltoolなどのアプ リケーションのように、他のアプリケーションやデスクトップの一部として添付されているもの もある。これらのアプリケーションはすべて、Xセッションにおいてシェルにアクセスできると いう点で、xtermと大なり小なり似通った機能を提供している。xtermの後継として成功してい るアプリケーションもあるが、xterm自体もまだXターミナルエミュレータとして広く使われて いる。

4.1.2

ジョブ管理

経験のあるUNIXシェルユーザーなら、UNIXにおける通常のジョブ管理コマンドに精通して いることだろう。復習用に、表4-1と表4-2にジョブ管理の概要を示す。 X上でxtermユーティリティを利用していると、これらのコマンドやキーボードコマンドが xtermウィンドウ内で普通に利用できることに気づくだろう。また、あるxtermのインスタンス で新しくxtermインスタンスを起動すると、元のxtermウィンドウが利用できなくなることも わかる。これは、子プロセスであるxtermがフォアグラウンドで動作しているためである。新し くxtermウィンドウを作成し、かつ親シェルに動作を継続させるには、次のようにコマンドを入

(6)

4.1  Xでのコマンドライン 表4-1 シェルユーザー用の基本的なジョブ管理コマンド コマンド 内容 jobs 現在のシェルの子ジョブとして動作中のジョブの一覧を表示する fg jobid jobidで指定したジョブをフォアグラウンドに移動する bg jobid jobidで指定したジョブをバックグラウンドに移動する

kill jobid jobidで指定したジョブを終了する

nohup cmd ハングアップシグナル(HUP)を無視して、cmdで指定したコマンドを実行する。親シェル がログアウトした場合でも、コマンドは動作し続ける

表4-2 シェルユーザー用の基本的なジョブ管理用キーボードコマンド

コマンド 内容

Command & コマンド末尾に「&( アンパーサンド)」 を付加して実行することで、そのコマンドがバック グラウンドで並行して動作する Ctrl + Z フォアグラウンドのジョブを一時停止させる。一時停止したジョブは、フォアグラウンド、 バックグラウンドに関わらず、fgやbgで再開可能なほか、終了させることもできる Ctrl + C ほとんどのコマンドを強制終了させる 力する。 xterm & 同様に、開いているxtermをバックグラウンドに移動し、親シェルを解放するには、まず親 シェルを表示しているウィンドウにフォーカスを移動し、続いて Ctrl + Z を押し、bgでその プロセスをバックグラウンドに移動させればよい。 xtermウィンドウではkillコマンドも使用できるが、Xアプリケーションを終了する場合には、

killのX用コマンドであるxkillを利用するとよい。xkillを利用するには、xtermのシェルプロ ンプトで次のようにコマンドを入力する。

xkill

マウスカーソルが、どくろ印に切り替わる。このどくろ印カーソルを、終了したいアプリケー ションウィンドウへ移動し、マウスボタンをクリックすると、そのアプリケーションウィンドウ が終了する。

xtermウィンドウではnohupコマンドも利用できる。実際にnohupコマンドはテキストベー

スのシェルプロンプトよりもX環境のほうが有効なことが多い。X以外の環境でシェルを利用し た場合、nohupコマンドは単にユーザーがログアウトした際にバックグラウンドジョブが終了し なくなるというだけである。つまり、nohupコマンドはユーザーが作業領域を離れる場合にのみ 有効だということになる。しかし、X上では複数のxtermウィンドウを次々と作成し終了( また はログアウト)できるため、nohupコマンドを新たな用途に利用できる。 これを実証するには、まずxtermウィンドウからxclockを起動する。

(7)

第5章  LinuxとXツールキット

一部のAthenaウィジェットの振る舞いは、Xのリソースの設定によって変更できる。たとえば

3つのマウスボタンのどれを使ってもスクロールバーをドラッグできるようにするなど、Athena

のスクロールバーをユーザーが望むスクロールバーのように動作させることがよく行われている。

5.1.2

Gtk

および

Gtk+

Gtk(GIMP Toolkit)は当初、GIMP(GNU Image Manipulation Program)で使用するために

開発されたもので、ANSI Cで記述された、3Dの外観を持った現代的なツールキットである( 図

5-2参照)。いわゆる「ラッパー」を利用して、Gtkやその後継であるGtk+をC++やPythonな

どで利用することもできる。Gtkライブラリは(C言語での限界に近いほど)高度にオブジェクト

指向化されており、GNU GPLに準拠している。

もっとも広く知られているGtkアプリケーションはGIMPである。また、Gtkライブラリを使

用したアプリケーションとして有名なアプリケーションには、Red Hat Linuxで採用されてい

るGNOMEデスクトップがある。Gtkウィジェットに関する一般的な情報を表5-3に、特徴を表

5-4に示す。

図5-2 Gtkアプリケーションの外観は3次元で、Windowsアプリケーションに近い。この図はAbiSource社のAbiWord エディタ。 表5-3 Gtkアプリケーションの一般情報 属性 内容 外観 テーマを利用していな場合は、明らかにWindows 95/98のウィジェットに似ており、ソフト ハイライトも利用されている。テーマを利用した場合には、Gtkアプリケーションの外観は独 自のものとなる

例 GIMP、AbiSource社のAbiWord

リソース 古いGtkアプリケーションはメモリとCPUリソースの消費量が低い。新しいGtk+/Gnomeア プリケーションはメモリとCPUリソースを大量に消費する

(8)

5.1 フリー時代、Linux時代のツールキット 表5-4 Gtkの特徴 項目 内容 カーソル Gtkのカーソルは、ウィジェットにフォーカスがあるときも点滅しない ボタンのような外観 Gtkの設計者は当初、あらゆるウィジェットを、立体的なボタンのような外観にし ていた。通常はユーザーの操作を必要としない、ウィンドウのラベルやタイトルも このようなデザインが採用されていたのである。したがって、Gtkアプリケーショ ンの一部( 特に古いアプリケーション)では、実際のボタンより多くのボタンを持っ ているように見える。Gtkアプリケーションでボタンを何度かクリックしても反応 がない場合には、そのウィジェットはボタンではなく、ユーザーの操作に反応しな いウィジェットであることが多い Gtkアプリケーションを利用しているか否かは、以下に示すように、lddコマンドを用いてGtk ライブラリが利用されているかどうかを確認できる。 $ ldd /usr/X11R6/bin/gimp

libgtk.so.1 => /usr/X11R6/lib/libgtk.so.1 (0x4000a000) libgdk.so.1 => /usr/X11R6/lib/libgdk.so.1 (0x400b2000) libglib.so.1 => /usr/X11R6/lib/libglib.so.1 (0x400d1000) libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x400dd000) libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x400e8000) libm.so.5 => /lib/libm.so.5 (0x40188000) libc.so.5 => /lib/libc.so.5 (0x40191000) 最近ではGtkライブラリが進化し、高度なテーマを利用できるGtk+ライブラリが登場してい る。Gtk+ライブラリはツールキットの外観を大幅に変更することができる。テーマに対応した Gtk+アプリケーションでは、ほぼあらゆる外観を利用できるといえるだろう。 Gtk+のホームページはhttp://www.gtk.org/にある。

5.1.3

Troll Tech

社の

Qt

Troll Tech社のQtライブラリは、QtをKDE基礎ライブラリとして使用するKDEデスクトッ

プによって普及している。Qtライブラリのバージョン1.xは非商用利用に限ってフリーというラ イセンスで提供されており、ソフトウェアの自由度を第一に考える多くのLinuxユーザーにとっ ては残念なものだった。バージョン2.0以降のQtライブラリはQPLに準拠して配布されている。 このQPLはGPLと同様のフリーソフトウェアライセンスだが、大きな違いがいくつか存在して いる。 Qtライブラリは高度なオブジェクト指向のC++開発プラットフォームである。Qtライブラリ ではテーマを利用できるが、Linuxにおいては、前項で解説したGtkライブラリ、および次項で

解説するMotifライブラリに似た外観を持っている。図5-3にK Desktop Editor(kedit)の画面 を示す。Qtウィジェットに関する一般的な情報を表5-5に、特徴を表5-6に示す。

(9)

第5章  LinuxとXツールキット

図5-3 QtライブラリはKDEに使用されており、GtkやMotifのウィジェットに似た外観を備えている。

表5-5 Qtアプリケーションの一般情報

属性 内容

外観 Linuxにおいては、Windows 95/98のウィジェットやMotifウィジェットに似た外観を備えて いるが、アプリケーションや設定によって異なる。テーマを利用した場合には、Qtアプリケー ションの外観は独自のものとなる 例 KDEアプリケーション、QT Nethack リソース 古いQtアプリケーションが利用するメモリおよびCPUリソースは少ない。新しいQt 2.0お よびKDEのアプリケーションは、大量のメモリおよびCPUリソースを消費する 表5-6 Qtの特徴 項目 内容 リフレッシュ KDEで使われているQtウィジェットは、再描画が遅いようである。ダイアログボックス が描画される間に、各ウィジェットが数回ほど再描画を行うのがその理由の一つである。 このため、ダイアログが表示されるときは、点滅したり、作成過程が見える状態となるこ ともある 外観 KDEデスクトップにおいては、QtアプリケーションはGtkアプリケーションやMotifア プリケーションと似た外観を持つこととなる。Qtアプリケーションではカーソルが点滅す るという点で、Gtkアプリケーションと区別できる。QtアプリケーションとMotifアプリ ケーションの違いは、アプリケーションのウィジェットが描画される様子で違いを見分け ることができる。Motifウィジェットのほうがより高速に描画される Linuxにおいてlddコマンドを使って調べると、QtライブラリはKDEライブラリと一緒に表 示されることが多い。

(10)

5.1 フリー時代、Linux時代のツールキット

$ ldd /opt/kde/bin/kedit

libkfile.so.1 => /opt/kde/lib/libkfile.so.1 (0x4000a000) libkfm.so.1 => /opt/kde/lib/libkfm.so.1 (0x40045000) libkdeui.so.1 => /opt/kde/lib/libkdeui.so.1 (0x40050000) libkdecore.so.1 => /opt/kde/lib/libkdecore.so.1 (0x400ed000) libqt.so.1 => /usr/lib/libqt.so.1 (0x4014c000)

libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x402a5000) libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x402b0000) libg++.so.27 => /usr/lib/libg++.so.27 (0x40350000) libstdc++.so.27 => /usr/lib/libstdc++.so.27 (0x40388000) libm.so.5 => /lib/libm.so.5 (0x403ba000)

libc.so.5 => /lib/libc.so.5 (0x403c3000)

Qtのホームページはhttp://www.troll.no/qt/にある。

5.1.4

XForms

XFormsライブラリはGtkやQtより前に登場したライブラリである。XFormsが登場した当 初、一部のLinuxユーザーは、Athenaウィジェットよりも魅力的なウィジェットを備え、Motifラ

イブラリのインターフェイスよりもプログラミングしやすいツールキットとして、XFormsに飛

びついた。だが、配布形態がバイナリのみだったため、XFormsライブラリを避けるLinuxユー

ザーもいた。

XFormsライブラリの存在を際立たせた2つのアプリケーションが、LyXエディタとXFMail

メールユーザーエージェントである。LyXエディタはMatthias Ettrichによるもので、氏は現在

KDEプロジェクトに従事している。XFmailはGennady Sorokopudによるものである。ここ最

近では他のツールキット( 特にGtkとQt)がLinuxのプログラミングコミュニティで優勢だが、

(11)

XFree86 for Linux Chapter 6

6

起動時のデフォルト

これまでの章では、Xサーバーについて詳しく解説してきた。Xサーバーの持つ機能は明確で あり、Xサーバーの設定ファイルであるXF86Configファイルに関してもドキュメントは豊富に そろっている。標準のXFree86デスクトップやアプリケーションについても、適度な長さでの解 説を試みた。 しかし、ユーザーがコンソールプロンプトでstartxとタイプしてから、標準のデスクトップが ロードされるまでには、ある重要な過程がある。startxコマンドを入力してからXサーバーが起 動するまでに、システムはどのようにしてtwmウィンドウマネージャとxtermウィンドウを起 動すると決めるのだろうか?  また、標準のデスクトップにおいて、どのようにログインウィン ドウがXセッションのプロセスを制御すると決めるのだろうか? 明らかに、なんらかの一定のルールにしたがって、起動するウィンドウマネージャやプロセス が決定され、どのプロセスを制御プロセスにするかが決められている。実際に、通常のXFree86 がインストールされていれば、Xセッションランタイムの開始時に、他のデフォルト処理も実行 される。

6.1

全体的な標準設定

ほとんどのXFree86の標準設定、およびXFree86用のクライアントやプロセスのプロパティ の多くは、XFree86ツリーのlib/X11/以下のサブディレクトリに収められている。これらのディ レクトリにあるファイルに、Xセッションを起動するプロセスを含め、ほとんどのX用プログラ ムやプロセスの振る舞いに関する、全体的な標準設定が収められている。

6.1.1

標準の

xinit

の振る舞い

標準のxinitrcスクリプトは/usr/X11R6/lib/X11/xinit/xinitrcに保存されている。これは、コ ンソールからstartxコマンドを入力した時点で実行されるスクリプトで、ユーザーのホームディ レクトリに.xinitrcファイルがないと、代わりにこのスクリプトが利用される。 XFree86 3.3.4に標準で添付されている、グローバルなxinitrcファイルをリスト6-1に示す。 なお、行番号は説明のために追加したものであり、実際のファイルに行番号は付いていないこと に注意してほしい。

(12)

第6章  起動時のデフォルト

リスト6-1 /usr/X11R6/lib/X11/xinit/xinitrcスクリプト 1 #!/bin/sh

2 # $Xconsortium: xinitrc.cpp,v 1.4 91/08/22 11:41:34 rws Exp $ 3 4 userresources=$HOME/.Xresources 5 usermodmap=$HOME/.Xmodmap 6 sysresources=/usr/X11R6/lib/X11/xinit/.Xresources 7 sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap 8

9 # merge in default and keymaps 10 11 if [ -f $sysresources ]; then 12 xrdb -merge $sysresources 13 fi 14 15 if [ -f $sysmodmap ]; then 16 xmodmap $sysmodmap 17 fi 18 19 if [ -f $userresources ]; then 20 xrdb -merge $userresources 21 fi 22 23 if [ -f $usermodmap ]; then 24 xmodmap $usermodmap 25 fi 26

27 # start some nice programs 28

29 twm &

30 xclock -geometry 50x50 1+1 & 31 xterm -geometry 80x50+494+51& 32 xterm -geometry 80x20+494 0 &

33 exec xterm -geometry 80x66+0+0 -name login

1∼2行目はコメント行で、1行目は/bin/shを使って実行されるシェルスクリプトであること、 2行目はオリジナルファイルの作成者と日付が示されている。日付は1991年8月22日となって いることからわかるように、グローバルのxinitrcファイルは長年にわたって変更されていない。 標準のxinitrcファイルから呼び出されるファイルは少なくとも8年以上前のものである。つま り、この標準設定では、最新のコンピュータに比べるとCPU処理能力やメモリ容量の劣ってい る昔のコンピュータでも、最近のコンピュータでも、まったく同じ内容で動作するということに なる。 4∼7行目では、標準の振る舞いを設定する2組のファイルを指定している。4∼5行目はユー ザーの指定するウィジェットリソースとキーボードマッピングファイルである。これらを利用す るには、各ファイルがユーザーのホームディレクトリに置かれていなければならないことに注意 してほしい。6∼7行目は、まったく同じ処理──ウィジェットリソースとキーボードマッピング の指定──を繰り返しているのだが、ここでは各ユーザーの独自の設定とは関係なく、すべての

(13)

第7章  XFree86のサーバー設定 ■

xev

を用いたキーの検出 あるキーがどの番号を送信しているかを調べるには、xevコマンドを利用すればよい。xevコ マンドを実行すると、デスクトップ上にウィンドウが作成され、キー入力やボタンクリック、マ ウスの移動などのXのイベントを検出し、これらの情報が標準出力に出力される。xevを起動す るには、単にコマンドラインから名前を入力すればよい。 xev 標準でxevがインストールされないディストリビューションもあるだろう。xevがX開発関連 のパッケージとして収められていることもあるので、そのような場合には事前にインストールし ておく。xevを起動すると、図7-1に示すように、ボックスが描かれたウィンドウが表示される。 図7-1 xevでは、ボックスが描かれたウィンドウが作成され、起動に使用したxtermに大量の情報が出力される。 何もしなくても、すでに不思議な動作を見る準備は整っている。マウスを動かしたり、キーボー ド上のキーを押したり、マウスボタンをクリックしたりしてみるとよい。それぞれのアクション を実行すると、xevを起動したxtermウィンドウに大量の情報が出力されていることに注意して ほしい。この情報は、Xクライアントを開発しているときに、自己診断を行う目的で利用するこ とが多いのだが、ここで行うキーボードの設定に関しては、キーを押したときに出力される情報 に注目すればよい。xevウィンドウにフォーカスが移っていることを確認し、正しく動作してい ないキーを押すと、次に示すような出力が得られるはずである。

(14)

7.1 キーボード、マウス、ディスプレイの設定

KeyPress event, serial 21, synthetic NO, window 0x3800001,

root 0x26, subw 0x0, time 2146521803, (172, 11), root:(194,32), state 0x0, keycode 23 (keysym 0xff09, Tab), same_screen YES, XLookupString gives 1 characters: " "

KeyRelease event, serial 21, synthetic NO, window 0x3800001,

root 0x26, subw 0x0, time 2146521907, (172, 11), root:(194,32), state 0x0, keycode 23 (keysym 0xff09, Tab), same_screen YES, XLookupString gives 1 characters: " "

キーを押した後にカーソルを動かすと、すぐにキー入力に関する情報がスクロールアウトして しまうので注意してほしい。ここでの目的で重要なのは、3行目に記述されているキーコードで ある。この例では、キーコードは23となっている。この番号をメモして、xevウィンドウを終了 し、次に進んでほしい。 ■

keysymdef.h

でのシンボルの検索 変更したいキーのキーコードがわかったら、次はそのキーに割り当てるXのキーボードファン クションを調べる必要がある。Xのキーボードファンクションの一覧は、メインのXFree86の ディレクトリツリーの、include/X11/keysymdef.hに記述されている。 このファイルには、「XK_」で始まり、16進数が記述された名前の一覧がずらりと並んでいる。 最初は名前が暗号のように見えるかもしれないが、すぐに何を指すのかがわかるようになる。た とえば、XK_Returnは Enter のシンボルであり、XK_Backspace Backspace のシンボルであり、

XK_Page_UpとXK_Page_Downはそれぞれ PageUp PageDown のシンボルである。一覧を検索 し、目的のキーに割り当てたいシンボルを見つけておく。

xmodmap

による変更

割り当てを変更するキーのキーコードを調べ、そのキーに割り当てたいキーシンボルを調べた

ら、次の書式でxmodmapコマンドを実行する。

xmodmap -e ’keycode n = Sym’

nはキーコードの番号、Symはキーに割り当てたいキーコードから先頭の「XK_」を削除した文

字列を、それぞれ入力する。たとえば、PCマシンの場合は、 Tab はキーコード23を出力する。

Tab のXにおける機能は、XK_Tabに割り当てられている。もし Tab の設定がおかしい場合

には、以下のコマンドを用いて、XのXK_Tabシンボルの割り当てを修正する。

xmodmap -e ’keycode 23 = Tab’

現在、変更されることの多いデフォルトのXFree86のキーボードマッピングは、 Backspace

(15)

第7章  XFree86のサーバー設定

Backspace 22Delete107のキーコードが割り当てられている。XFree86では、これらのキー が押されたときに一般的なユーザーが期待する動作として、include/X11/keysymdef.hファイル にXK_BackspaceとXK_Deleteが定義されている。したがって、この2つのキーの動作を修正 するコマンドは次のようになる。

xmodmap -e ’keycode 22 = Backspace’ xmodmap -e ’keycode 107 = Delete’

このキーコードは、PCプラットフォームにのみ有効である点に注意してほしい。他のプラット フォームや、標準的でないキーボードを使っている場合には、xevを使って正しいキーコードを 調べてから、Backspace Deleteの動作を修正してほしい。

xmodmap

の他の使い方 キーボードの設定を変更するとき、xmodmapを上記以外の方法で用いることもできる。いちば んよく利用される書式はaddとremoveであり、それぞれモディファイアマップへのキーシンボ ルの追加と削除を行う。「モディファイア」はキーボードの状態を示し、シフト状態(通常は Shift が押された場合にこの状態となる)などがこれに相当する。モディファイア「マップ」とは、キー ボードをモディファイア状態に切り替えるキーの一覧である。Xユーザーが主に利用する一般的 なモディファイアの一覧を表7-1に示す。 表7-1 もっとも一般的なモディファイア状態 モディファイア 内容 shift キーがシフトされている状態。文字は大文字で入力され、数字は記号に切り替わる lock 一部のキーがシフト状態のままになる。文字は大文字で入力される状態が継続する。一 般に CapsLock が使用される control キー入力の振る舞いが変更される。通常はアプリケーションのキーボードショートカッ トに利用される mod1 キー入力の振る舞いが変更される。通常はアプリケーションのキーボードショートカッ トに利用される。一般に Alt が使用される

addおよびremoveの書式を用いると、xmodmapコマンドを使ってモディファイア状態を作 り出すキーシンボルの一覧へキーシンボルを追加できる。たとえば、ユーザーが以下のコマンド を入力したとする。

xmodmap -e ’add shift = Tab’

このコマンドを実行すると、その時点でXK_Tabシンボルに割り当てられていたキーを押す

か、押したままの状態にすることで、キーボードがシフト状態となる。すなわち、 Tab ( 通常

はXK_Tabシンボルが割り当てられている)を押すと、通常は Shift を押したときに予想する動

作が生じることになる。もちろんこの変更を取り消すこともできる。 xmodmap -e ’remove shift = Tab’

(16)

7.1 キーボード、マウス、ディスプレイの設定

現在のモディファイアマッピングの一覧は、xmodmapをオプションなしでコマンドラインか

ら入力すれば取得できる。標準的なPCにおいてキーボード操作を便利にする方法として上級者

がよく行うものに、 Ctrl と CapsLock の入れ替えがある。 xmodmap -e ’add lock = Control_L’

xmodmap -e ’remove lock = Caps_Lock’ xmodmap -e ’add control = Caps_Lock’ xmodmap -e ’remove control = Control_L’

xmodmapをオプションなしで起動すると、Caps_Lockシンボルがcontrolに、Control_Lシ

ンボルがlockのモディファイアマップに割り当てられた、更新されたマップが表示される。 ■

xmodmap

による変更の常時適用 xmodmapをコマンドラインから入力した場合は、その変更は現在のXセッションのみに有効 である。ユーザーがログアウトしたり、Xサーバーを終了させると、更新したマッピングは無効 となってしまう。これに対処するには、変更内容をファイルから読み込むというxmodmapの機 能を利用すればよい。このファイルの内容は、各行に上述したものと同じ書式を記述したものと なる。この書式は${HOME}/.Xmodmapファイルとして保存されており、標準設定を始め、ほと んどのxinitrcスクリプトでは、Xの起動時に.Xmodmapファイルを読み込むよう設定されてい る。たとえば、リスト7-1に示す.Xmodmapファイルは、これまでに示した変更をすべて実行す

るためのものである。 Backspace Delete の動作を修正し、CapsLock Ctrl を入れ替えるという 内容だ。

リスト7-1 ${HOME}/.Xmodmapファイルの例 keycode 22 = Backspace

keycode 107 = Delete add lock = Control_L remove lock = Caps_Lock add control = Caps_Lock remove control = Control_L

xmodmapに使用する書式はどのファイルに保存しておいてもかまわない。変更を適用するに は、書式を記述したファイルの名前だけをxmodmapの引数として指定すればよい。

7.1.2

キーボードマッピング:大幅な変更

Xのキーボードレイアウトを大幅に変えたい場合には、XF86Configファイルの設定を変更す ることで、Xを起動する前にキーボードマッピングの変更ができる。XF86Configファイルの詳細 は「第2章XFree86のインストールと設定」を参照してほしい。XF86Configファイルでは、次 に示す行からキーボードの設定を行っている。 Section "Keyboard"

(17)

7.2 フォントとカラー リスト7-2 lib/X11/fonts/Type1/fonts.scaleファイルの内容 16 UTRG____.pfa -adobe-utopia-medium-r-normal--0-0-0-0-p-0-iso8859-1 UTI_____.pfa -adobe-utopia-medium-i-normal--0-0-0-0-p-0-iso8859-1 UTB_____.pfa -adobe-utopia-bold-r-normal--0-0-0-0-p-0-iso8859-1 UTBI____.pfa -adobe-utopia-bold-i-normal--0-0-0-0-p-0-iso8859-1 cour.pfa -adobe-courier-medium-r-normal--0-0-0-0-m-0-iso8859-1 couri.pfa -adobe-courier-medium-i-normal--0-0-0-0-m-0-iso8859-1 courb.pfa -adobe-courier-bold-r-normal--0-0-0-0-m-0-iso8859-1 courbi.pfa -adobe-courier-bold-i-normal--0-0-0-0-m-0-iso8859-1 c0648bt_.pfb -bitstream-charter-medium-r-normal--0-0-0-0-p-0-iso8859-1 c0649bt_.pfb -bitstream-charter-medium-i-normal--0-0-0-0-p-0-iso8859-1 c0632bt_.pfb -bitstream-charter-bold-r-normal--0-0-0-0-p-0-iso8859-1 c0633bt_.pfb -bitstream-charter-bold-i-normal--0-0-0-0-p-0-iso8859-1 c0419bt_.pfb -bitstream-courier-medium-r-normal--0-0-0-0-m-0-iso8859-1 c0582bt_.pfb -bitstream-courier-medium-i-normal--0-0-0-0-m-0-iso8859-1 c0583bt_.pfb -bitstream-courier-bold-r-normal--0-0-0-0-m-0-iso8859-1 c0611bt_.pfb -bitstream-courier-bold-i-normal--0-0-0-0-m-0-iso8859-1 ファイルの1行目は検出されたフォントファイルの数で、残りの行はtype1instプログラムが 検出したフォントのファイル名と、XLFDが記述されている。fonts.scaleファイルが問題なく作 成されたら、mkfontdirコマンドを実行し、fonts.dirファイルを作成する。 mkfontdir このコマンドはエラーが出ることなく終了するはずである。この処理が完了すると、フォント ディレクトリの準備が整い、新しいフォントを利用できる状態となる。 ■

xset

によるフォントのテスト xsetコマンドについては本書前半で解説を行っているが、一部の機能については本章で解説を 行うため、解説をあえて省略した。その機能とは、ランタイムのフォント管理に関連するものであ る。xsetコマンドでは、Xのフォントパスをその場で変更できる。つまり、xsetコマンドによっ て、インストールしたフォントをすぐに利用可能な状態にできるのである。 フォントを利用可能な状態にするには、以下のコマンドを実行する。 xset fp+ fontpath fontpathには、フォントをインストールしたディレクトリを指定する。したがって、∗.pfa、 ∗.pfb、fonts.scale、fonts.dirの各ファイルが/usr/X11R6/lib/X11/fonts/myfonts/ディレクトリ に格納されている場合には、以下のようにコマンドを実行する。

xset fp+ /usr/X11R6/lib/X11/fonts/myfonts/

このコマンドを実行すると、xsetコマンドが指定したディレクトリにあるfonts.dirファイルを

(18)

第7章  XFree86のサーバー設定 ある利用可能なフォントは、xlsfontsコマンドによって表示されるアクティブなフォント一覧に 追加される。 xlsfonts xsetコマンドのフォント関連の機能を表7-7に示す。 表7-7 xsetコマンドのフォント関連の機能 コマンドライン 設定の変更内容

xset fp+ path pathで指定したパスを、Xフォントパスの最後に追加し、そこで検出されたフォントを 利用可能なフォントの一覧に追加する

xset +fp path pathで指定したパスを、Xフォントパスの先頭に追加し、そこで検出されたフォントを 利用可能なフォントの一覧に追加する

xset fp-path pathで指定したパスと関連するフォントすべてを、Xフォントパスと利用可能なフォン トの一覧から削除する

xset fp rehash Xフォントパスに含まれているディレクトリおよびサーバーを再スキャンし、利用可能

なフォントの一覧を再構築する

xset fp=list 完全なXフォントパスを、listで指定された、コンマ区切りのディレクトリおよびサー バーの一覧に設定する xset fp default Xフォントパスを、起動時のパスおよびリストの一覧に戻し、復帰したパスを使って利 用可能なフォントの一覧を再構築する フォントパスには、Xのフォントをネットワーク経由で提供するフォントサーバーを指定する こともできる。XFree86のフォントサーバーの詳細については、「 第15章 ネットワーク上での 利用」を参照してほしい。 フォントパスに新しいディレクトリを追加したら、xfontselやxfdなどを使い、XLFDを指定 して、インストールしたばかりのフォントを表示させることができる。xfontselおよびxfdの詳細 については、「第4章 標準的なXFree86のプログラムおよびユーティリティ」を参照してほしい。 ■

XF86Config

への新しいフォントの追加 インストールしたフォントに満足したら、最後に新しいフォントをX環境に追加する必要があ る。Xサーバーに、これらのフォントが常に存在していることを示す必要があるためである。xset コマンドで行ったフォントパスの編集は、コマンドを実行したXセッション内でのみ有効である。 この後で、設定を常に利用できる状態にしなければ、変更内容はすべて失われてしまう。変更を 永続的にするには、フォントファイルを格納しているディレクトリをXF86Configファイルに追 加する。

viやemacsなどのエディタを使い、Filesセクションにある既存のFontPath行に続けて、新

しく追加したフォントを格納しているディレクトリを記述したFontPath行を追加する。

FontPath "/usr/X11R6/lib/X11/fonts/myfonts/"

(19)

第8章  XFree86のアプリケーション設定

イルの文字列を短縮するために使われているが、複数のウィジェットに変更を適用するために利 用されることもある。たとえば、先ほどのサンプルファイルについて、大きく内容を変更せずに ワイルドカード文字を利用すると、次のようになる。

*xterm*title: Reversed text xterm *xterm*foreground: white *xterm*background: black *xterm*font: -*-courier-bold-r-normal-*-14-*-*-*-*-*-* editresウィンドウの上部にあるボタンをクリックすると、リソース文字列にアスタリスクが使 われる場合があることに気づいたかもしれない。editresで1つのプロパティだけを変更する場合 には必要ではないが、ワイルドカード文字列が使えるため、そのように表示される。 基本フォーマットに従って記述されたファイルはすべて、Xリソースの設定に利用できる。し かし、すべてのファイルが使われるわけではなく、少なくとも自動的に利用できるとは限らない。 ■

xrdb

コマンド xrdbコマンドは、Xリソース設定ファイルを、実行中のXリソースデータベースに統合する コマンドである。ファイルに記述されているリソースがデータベースに統合されると、そのセッ ションが終了するまではその変更が維持される。そのファイルで設定が変更されているアプリケー ションやウィジェットに関するインスタンスは、現在のXセッション中のみ変更が適用される。 たとえば、xtermに対して行った変更を、現在のXFree86セッションが終了するまでずっと適用 するためには、次のようにxrdbコマンドを利用する。

xrdb -merge new_xterm

ファイルがマージされたら、現在起動しているxtermウィンドウから、新しいxtermウィン ドウを起動してみる。 xterm & 新しいxtermセッションが開始されると、先ほどのサンプルセッションで行った変更が、新し いxtermウィンドウにも適用されていることに注目してほしい。Xセッションが終了するまでは、 この変更は有効である。xrdbコマンドは、表8-1に示す追加引数を指定できる。 表8-1 xrdbで利用できるコマンドラインの引数 引数 内容 -n リソースデータベースの変更を標準出力に出力するだけで、実際にリソースデータベー スの変更は行わない -quiet 項目の重複に関する警告を表示しない -cpp program 利用する代替プリプロセッサプログラムの名前を指定する。通常は、cppによって、リ ソースファイルに記述されているC言語スタイルの命令を扱えるが、-I、-D、-U引数 をサポートしていれば、これ以外を利用できる -nocpp プリプロセッサを一切使用せずにファイルを実行する

(20)

8.1 Xリソースデータベース 引数 内容 -query 現在のプロパティセットを表示する -load 定義済みのリソースプロパティのセットではなく、新しいファイルをロードし、完全に 置き換える -merge 定義済みのリソースプロパティのセットに加えて、新しいファイルをロードし、これを 再定義するのではなく、その環境に統合する -edit filename その環境に対して行われた変更をリソースファイルへ統合する。ファイル内に記述され ているリソース行に一致する行が置き換えられる。editres形式を使ったアップデートを リソースファイルに保存する唯一の方法である

-backup suffix -editで指定したfilenameに、suffixとして示した場所に記述した文字列を拡張子と して追加したファイル名(filename.suffixの形式となる)を、バックアップファイルと して作成する 上記以外にもxrdbで利用できる引数はいくつかある。詳細については、xrdbのマニュアル ページを参照してほしい。 ■

.Xdefaults

ファイル editresを使い、Xリソースデータベースによる設定に対応しているアプリケーションに対し、 設定を変更して適用する方法は説明した。また、これらの変更内容をファイルに保存し、Xセッ ションが終了するまでの間に、その変更を新しいインスタンスに対しても適用する方法も説明し た。だが、新しいXセッションにおいても変更を適用する方法、つまり、Xセッションの起動時 に、変更を適用するためのファイルをXにロードする方法はまだ解説していない。 幸いなことに、この目的を達成する標準的なファイル名がある。$HOME/.Xdefaultsファイル (「.」で始まっているため、通常は非表示)は、Xの起動時に、ほとんどのxinitrcスクリプト(標準 のxinitrcを含む)によって読み込まれ、リソースデータベースに統合される。リソースの変更を 永続的にしたい場合には、その内容を$HOME/.Xdefaultsファイルの末尾に追加すればよい。こ れにより、新しいXセッションが起動し、アプリケーションが起動する前に、その内容がリソー スデータベースに統合される。 同様の処理は、各ユーザー個人のxinitスクリプトでxrdbコマンドを実行して行うこともできる。

たとえば、$HOME/.Xdefaultsファイルにxtermへの設定変更を記述するのではなく、.Xdefaults

ファイルはそのままにしておいて、Xセッションの起動時にxtermへの変更を有効にしたい場合 には、$HOME/.xinitrcファイルに以下の行を追加すればよい。 if [ -e ~/new_xterm ]; then xrdb -merge ~/new_xterm fi 決して美しい解決方法ではないが、目的は達成できる。 また、editresで行った変更を直接.Xdefaultsに保存したくなるかもしれないが、そのような行 為はやめるべきである。乱雑で巨大になり、.Xdefaultsファイル内容を追えなくなる可能性があ

(21)

第8章  XFree86のアプリケーション設定

る。.Xdefaultsファイルに変更内容を直接記述するのではなく、まずは変更内容を別のファイル に保存し、それが気に入るかどうかを試すとよい。変更内容が確定し、新しいファイルをリソー

スデータベースに統合した時点で、xrdbコマンドを使って.Xdefaultsファイルに保存するとよい

だろう。

xrdb -edit ~/.Xdefaults -backup .bak

■ アプリケーションの標準ファイル

リソースの変更を保存する場所として利用できる場所はほかにもあり、editresと.Xdefaults

ファイルを用いる方法と比べて簡単に利用できる。

XFree86のメインディレクトリにある、lib/X11/app-defaultsディレクトリには、アプリケー ションのインスタンスにちなんだ名前のファイルが収められており、その名前のアプリケーショ

ンの標準設定が記述されている。アプリケーション起動時には、Xはアプリケーションの名前が

一致するファイルがapp-defaultsディレクトリにあるかどうかを確認する。もし名前の一致す

るファイルがあれば、アプリケーションを起動する前に、そのファイルの内容がリソースデータ ベースに統合される。たとえば、/usr/X11R6/lib/X11/app-defaults/XTermには、xtermアプ

リケーションの標準の外観や振る舞いの設定がすべて含まれている。標準的なXプログラムの多

くについてこのようなファイルが用意されているほか、他のプログラムの場合も、インストール 時にapp-defaultsディレクトリに独自の設定ファイルを保存するものが多い。古いバージョンの

Netscape Navigatorがその例である。

このディレクトリに含まれているファイルの所有者はrootとなっていることが多いので、変更

を行うにはrootとしてログオンする必要がある。だが、app-defaultsディレクトリにあるこれら のファイルを変更するのは極力避けるべきである。通常は、/usr/X11R6/lib/X11/app-defaults/ ディレクトリにあるこれらのファイルを変更して、システム全体でアプリケーションの動作を変 えてしまうよりは、ホームディレクトリにある.Xdefaultsファイルを変更して、各ログインアカ ウントごとに設定を変更するほうが望ましい。アプリケーションを起動するたびにXがこのファ イルをロードしてリソースデータベースへの統合を行うため、app-defaultsディレクトリのファ イルを変更した場合は、以降のアプリケーション起動時からすぐに反映されることに注意してほ しい。 しかし、これらのファイルが便利に利用できる場合もある。これらのファイルには、そのファイルが 対象とするアプリケーションのリソース設定に関して、非常に重要かつ多くの例が記載されている。 editresによる変更は、どのリソースやプロパティを変更すればよいか、またその値をどのように設定 すべきかという推測を行う作業の比率が多くなり、非常に苦労する作業になりかねない。変更を行う プロパティの例があれば、その作業はずっと楽なものになる。/uxr/X11R6/lib/X11/app-defaults/ ディレクトリにそのようなファイルが格納されていることも多い。 一部のインスタンスにおいては、カラー関連の設定を含んだプロパティは、後ろに「-color」と いう名前の付いたファイルで設定されていることがある。たとえば、/usr/X11R6/lib/X11/app

(22)

-8.2 一般的なリソースおよびコマンドラインの引数

defaults/XFontSel-colorファイルは、xfontselコマンドのカラーに関する設定が記述されてお

り、同じディレクトリにあるXFontSelファイルにはxfontselコマンドの他のすべてのプロパティ

が格納されている。

また、app-defaultsディレクトリにファイルがない場合でも、必要に応じて自分でapp-defaults

ファイルを作成できる。この場合、editresを使って対象となるアプリケーションのルートウィ ジェットの名前を確認し、その名前のファイルとしてapp-defaultsディレクトリに作成すればよ い。大文字と小文字は区別されることに注意してほしい。editresのリソースボックスウィンドウ の、上から2行目のボタンの名前を利用すればよい。

8.2

一般的なリソースおよびコマンドラインの引数

Xリソースに対応したアプリケーションのXリソースの管理は非常に複雑なテーマであり、実 際に利用するうえで必要以上に深く追求するほどの時間をとれる人はあまりいないだろう。幸い にも、Xの先を見越した設計、およびXウィジェットのオブジェクト指向という性質によって、 このような作業を多少は簡単にすることができる。

8.2.1

中心となる

Xt

のリソース

一般的によく変更される基本プロパティは、ほとんどのアプリケーション、Xツールキット、 Athenaウィジェットの間で統一されたものであり、簡単な方法で利用できる。これらを表8-2に 示す。ワイルドカード文字を使って、そのアプリケーションのウィジェットツリー全体にプロパ ティ変更を適用できるようにしていることに注意してほしい。また、すべてのウィジェットに適 用するようにワイルドカードを利用する代わりに、特定のウィジェットに対して同じリソースを 使用することもできる。 表8-2 中心となるXtのリソースの一般例 リソースの使い方 内容

app∗borderColor: col すべてのウィジェットの境界線の色を、XカラーデータベースまたはRGB色空 間形式の文字列(col)で示された色に変更する

app∗borderWidth: n すべてのウィジェットの境界線をnピクセルに変更する

app∗background: col すべてのウィジェットの背景色をcolで示された色に変更する。「Background」 と表記されることもある

app∗foreground: col すべてのウィジェットの前景色をcolで示された色に変更する。「Foreground」 と表記されることもある app∗font: XLFD すべてのウィジェットのフォントを、XLFDで示されで示されたフォントに変更す る app.height: n アプリケーションウィンドウのデフォルトの高さをnピクセルにする。特定のウィ ジェットの高さを指定する場合にも利用できる app.width: n アプリケーションウィンドウのデフォルトの幅をnピクセルにする。特定のウィ ジェットの幅を指定する場合にも利用できる

(23)

第9章  XFree86の環境設定

AddButtonStyle 1 Vector 4 50x80@1 20x20@1 80x20@1 50x80@0 AddButtonStyle 2 Pixmap button-2.xpm

最初の3行では、フォーカスのないウィンドウには、背景色として赤から青へのグラデーショ ンを使用することを指定している。フォーカスがない場合には、ウィンドウは平面的に描画され る。ウィンドウにフォーカスがある場合には、focused.xpmというpixmap画像が背景画像とし て、タイトルバーの画面左上を起点として表示される。タイトルバーがクリックまたはドラッグ されている場合には、赤のソリッドカラーで表示される。 4行目では、ウィンドウ境界線の内側のベベルを表示しないこと、角のハンドルを表示しない ことを指定している。 最後の3行では、すべてのボタンが現在のタイトルバースタイルからスタイル初期値を引き継 ぐことを指定している。続いて、ボタン1( いちばん左のボタン)がベクトルで記述された新しい パターンに、ボタン2( いちばん右のボタン)が新しいpixmap画像に、それぞれ置き換えられて いる。

9.3.13

fvwm 2

のデカールとウィンドウスタイル

fvwm 2に搭載されているスタイル処理関数は非常に強力で柔軟性が高いが、さらに強力な 関数がまだ控えている。fvwm 2では、これまでに解説してきたスタイル関数に加えて、ウィン ドウ単位で適用できるスタイル集である「 デカール」を作成できる。デカールを作成するには、 AddToDecor関数を次の形式で使用する。 AddToDecor decorname

+ StyleFunction [btn] [state] [style] [-- [!]flag ...] + StyleFunction [btn] [state] [style] [-- [!]flag ...] ...

デカールも他の関数と同様、いつでも動的に追加でき、ファイル内に空行があった時点で定義 を終了する。これまでのスタイルを使ったデカールの例を次に示す。

AddToDecor StdDecor

+ TitleStyle Inactive HGradient Red Blue -- Flat

+ TitleStyle ActiveUp TiledPixmap focused.xpm -- Top Left + TitleStyle ActiveDown Solid Red

+ BorderStyle All -- NoInset HiddenHandles + ButtonStyle All -- UseTitleStyle

+ AddButtonStyle 1 Vector 4 50x80@1 20x20@1 80x20@1 50x80@0 + AddButtonStyle 2 Pixmap button-2.xpm

StdDecorというデカールを定義した後は、ウィンドウスタイルを使って、このデカールを特

定のウィンドウに割り当てることができる。fvwm 2ではStyleキーワードは関数として扱われ

ているが、個々のウィンドウに対して基本的なStyleキーワードを利用できる。fvwm 1のStyle

キーワードで利用できるオプションはすべてfvwm 2でもサポートされている。表9-19に示し

(24)

9.3 fvwmウィンドウマネージャ

表9-19 fvwm 2で新たに追加された、ウィンドウスタイルのオプションの一部

スタイル 内容

UseStyle style Style関数で定義されている別のスタイルを元に、スタイルを定義する

UseDecor decor この名前で示されるスタイルにおいて、decorで指定したデカールを装飾に利

用する

MiniIcon file fileで指定したアイコンファイルを、ウィンドウのミニアイコンとして利用

する。ミニアイコンは、ウィンドウのタイトルバーボタンなどに描画できる IconBox geometry このウィンドウの最小化アイコンを、指定されたアイコンボックスに収めるよ う指定する。fvwm 1のIconBoxキーワードに似ているが、スタイルが適用さ れるウィンドウのみに適用される点で異なる。geometryには、「100x100-1-1」 といったXt/Athenaスタイルのジオメトリ文字列を指定する IconGrid x y 指定したアイコンボックスに、幅xピクセル、高さyピクセルの不可視グリッ ドを作成する。アイコンを空のグリッドセルのみに配置しようとする

IconFill pos1 pos2 アイコンのアイコンボックス内への配置順序を指定する。引数となるposは、

一方の値はtopまたはbottomに、もう一方のposの値はleftまたはrightと なる。たとえば、pos1をleft、pos2をbottomとした場合、アイコンボックス 内では、左から右、下から上に向かってアイコンが配置される MWMBorder/FvwmBorder ウィンドウの境界線を、MWMスタイル、またはfvwmスタイルで記述する SmartPlacement ウィンドウをインテリジェントに配置する DumpPlacement ウィンドウをインテリジェントに配置しない RandomPlacement ウィンドウをランダムに配置する ActivePlacement ウィンドウの配置をユーザーが指定するようにする DecorateTransient ポップアップダイアログウィンドウを装飾する NakedTransient ポップアップダイアログウィンドウを装飾しない SkipMapping ウィンドウが現在表示されているデスクトップ領域以外の場所に表示できるよ うにする ShowMapping ウィンドウを常にそのまま表示する ClickToFocus ユーザーのクリックによって、ウィンドウがフォーカスを得る SloppyFocus マウスポインタがウィンドウ上にある場合に、そのウィンドウがフォーカスを 得る。マウスポインタがルートウィンドウ上へ移動した場合には、フォーカス はそのまま残る MouseFocus マウスポインタがウィンドウ上にある場合に、そのウィンドウがフォーカスを 得る。マウスポインタがウィンドウから外れた場合には、すぐにフォーカスが 失われる ここに示した以外の、新しいスタイルオプションについては、fvwm 2のマニュアルページを 参照してほしい。また、UseStyle、UseDecorのオプションがあることに注意してほしい。この 2つのスタイルオプションを使えば、すべてのウィンドウに対してフォーカス、カラー、フォン トスタイル、装飾、ボタンスタイルを、ウィンドウ単位で割り当てることが可能になる。次の例 で説明しよう。

Style "UtlStyle" ClickToFocus, Color white/black, WindowListSkip Style "AppStyle" SloppyFocus, Color white/blue, Icon "app.xpm" Style "xclock" UseStyle "UtlStyle" NoTitle

Style "xterm" UseStyle "AppStyle" UseDecor "StdDecor"

表 4 - 2 シェルユーザー用の基本的なジョブ管理用キーボードコマンド
図 5 - 2 Gtk アプリケーションの外観は 3 次元で、 Windows アプリケーションに近い。この図は AbiSource 社の AbiWord エディタ。 表 5 - 3 Gtk アプリケーションの一般情報 属性 内容 外観 テーマを利用していな場合は、明らかに Windows 95/98 のウィジェットに似ており、ソフト ハイライトも利用されている。テーマを利用した場合には、 Gtk アプリケーションの外観は独 自のものとなる
図 5 - 3 Qt ライブラリは KDE に使用されており、 Gtk や Motif のウィジェットに似た外観を備えている。
図 5 - 4 XForms アプリケーションは独特な外観を持つ。
+3

参照

関連したドキュメント

このたび牡蠣養殖業者の皆様がどのような想いで活動し、海の環境に関するや、アイディ

船舶の航行に伴う生物の越境移動による海洋環境への影響を抑制するための国際的規則に関して

全体構想において、施設整備については、良好

○事業者 今回のアセスの図書の中で、現況並みに風環境を抑えるということを目標に、ま ずは、 この 80 番の青山の、国道 246 号沿いの風環境を

№3 の 3 か所において、№3 において現況において環境基準を上回っている場所でございま した。ですので、№3 においては騒音レベルの増加が、昼間で

第12条第3項 事業者は、その産業廃棄物の運搬又は処分を他 人に委託する場合には、その運搬については・ ・ ・

小・中学校における環境教育を通して、子供 たちに省エネなど環境に配慮した行動の実践 をさせることにより、CO 2

小学校における環境教育の中で、子供たちに家庭 における省エネなど環境に配慮した行動の実践を させることにより、CO 2