XFree86 3.3.1 設定概論第1

Last Update (1998/05/19 12:21:00)

ミラーサイト [www.ceres.dti.ne.jp] [yk.rim.or.jp]

[ホームページ] [日記] [読んでいる日記] [秋葉原価格] [FreeBSD] [FreeBSD LINK] [検索] [高速検索]

XF86Setupを使う前に

FreeBSDのインストーラからXF86Setupを使うと、Xサーバーの設定は比較的簡単に行うことができる。 だが、完全に自動ではないので、若干の知識はまだ必要とされる。 ここでは、XF86Setupを実行する前に必要な知識を紹介する。
  1. 環境変数PATHに /usr/X11R6/bin が含まれているか確認する。
    実に基本的な事だが、インストール直後の設定では /usr/X11R6/bin が PATHに含まれていない。 XF86Setupやxf86configなどの設定用コマンドは、たいてい /usr/X11R6/bin に入っているので忘れずにPATHに追加しておこう。
  2. グラフィックアクセラレータに使われているチップの型番の情報を得る。
    まずは自分のマシンのカタログやマニュアルを見てみよう。 通常はグラフィックアクセラレーターにどんなチップを使っているか書いてあるはずである。 私のマシンは、自作 Pentium-133MHz で、ビデオカードは S3社製 ViRGE/DX (86C375) チップを採用している。
  3. ビデオカードに載っているRAMの容量を調査する
    ビデオカードに載っているRAMはどれくらい容量があるのかを調査しておく。 通常は、マニュアルに記載があるはずだ。 私の場合は、4M bytesである。
  4. グラフィックアクセラレーターカードに用いられているRamDACの型番を調査しよう。
    DACはDigital-Analog-Converterの略で、ビデオカードのRAM上にあるデジタル画像データをディスプレイに送る時にアナログ信号に変換するチップである。 RamDACの型番まではカタログに記載されていない場合も多いようなので、以下の方法で調査すると良かもしれない。
    X -probeonly    または
    XF86_VGA16 -probeonly    または
    SuperProbe
          
    この方法で調査すると、通常は表記されていないRamDACの名前などの情報がある程度得られる。
    私の自作マシンのビデオチップは、S3 ViRGE/DX で、このチップは RAMDAC を内蔵している。 よって、ビデオチップに S3 ViRGE/DX を指定した段階でRAMDACも指定したことになるので別途調査は必要無かった。
  5. ディスプレイの許す水平同期信号の最大値と最小値、垂直同期信号の最大値と最小値をディスプレイのマニュアルからメモしておく。
    この値を間違えると、ディスプレイを破壊することもあるようなので、注意が必要だ。
  6. マウスの種類を調査する
    マウスをシリアルポートに接続している場合は、おそらくMSマウスだろう。 PS/2のマウスポートに接続している場合は、PS/2 マウスである。 ノートマシンの場合は、ほとんどが PS/2 マウスのようだ。
  7. ノートマシンの場合
    ノート型マシンの場合は、グラフィックアクセラレーターに利用されているチップが特殊な場合があり、XF86Setupでは設定できないことがある。 (私のThinkpad 230Cs/530CSがそうなのだ...。) こんな場合は、昔ながらのxf86config を利用して設定するという手もある。 また、 FreeBSD ノートパソコン用インストール&設定方法 にリンクしてあるページにいろいろな情報があるので、先に他のページをチェックする方法もある。

FreeBSDページの目次に戻る


XF86Setupを使ってXサーバの設定を行う

それではXF86Setupを使ってみよう。 XF86Setupを使う上で、いくつかの注意事項がある。
  1. XF86Setupを使うには、VGA用16色のXサーバ(XF86_VGA16)がインストールされている必要がある。
    XF86SetupはGUIを前提として、ボタンやスクロールバーを多用して設定を行う。 というわけで、各機種/各グラフィックアクセラレータ用の設定が済むまでは、どのマシンでも標準で持っているVGA 16色のXサーバを使うのだ。
  2. XF86Setupで、マウスの設定を行うまでは、マウスを動かしてはならない。
    マウスにはいくつかの種類があり、それぞれマウスから送られて来るデータの内容が異なる。 マウスの種類を設定する前にマウスを動かすと、マウスの移動に伴うデータの解釈ができないので正常に動作しないのだ。 マウスの設定は、キーボードを使って行おう。
XF86Setupの画面がでたら、最初にキーボードを使ってマウスの設定をしよう。 良く使うキーは以下の通りだ。 TABキーとスペースキーを使って根気良く設定していくのも一つの手である。

キーボードの設定では、私は

Model:                             Japanese 106-key
Layout (language):                 Japanese
Variant (non U.S. Keyboards only): 指定なし

Abailable options:
Group Shift/Lock behavior
  Use default setting

Control Key Position
  Make Capslock an additional Control

としている。

私の持っているビデオカードのチップは S3 ViRGE/DX、チップの型番は 86C375 である。 XF86Setupのカードの種類を選択するところでは、私は S3 86C375 (generic)や S3 ViRGE/DX (generic) ではなくて S3 ViRGE (S3V server) を選択した。
括弧内のgenericやS3V serverという文字列は、インストールするXサーバの種類を表している。

generic
ビデオカードのチップの種類に依存の少ないSVGA用Xサーバ(XF86_SVGA)
余談だが、SVGAはSuper VGAの略で、VGA(640x480ドット 16色)を越えるものならなんでもSVGAと呼べてしまうらしい。
S3V
S3 ViRGE, ViRGE/DX, ViRGE/GX, ViRGE/VX 用に特化したXサーバ(XF86_S3V)
ビデオカードのチップに特有の機能をサポートしている可能性が高いため、高性能。
XFree86 3.3.1では、S3VサーバがViRGE/DX対応になったとの情報を事前に得ていたので、S3 ViRGE (S3V)を選択した。 事前情報が無い場合は、XF86Setupから英語のドキュメントを参照するとよい。
日本語で読みたい場合は、若干内容が古いが、X331jdoc.tgz を展開して、/usr/X11R6/lib/X11/doc/japanese以下にある日本語で書かれた README.xxxx というファイルをチェックしよう。

すべての設定質問に答えると、XF86Setup は /etc/XF86Config というファイルにデータを出力する。 以後、Xサーバーは /etc/XF86Config というファイルを見てから起動するので、XF86Setupを使うのが面倒になったら直接 /etc/XF86Config を編集しても良いだろう。

FreeBSD 2.2.5Rを新たにインストールしてXF86Setupで設定を行った場合、設定終了後にstartxなどとしてもXが起動できないという罠があるようだ。
通常、XF86SetupはXサーバファイル本体(私の場合は/usr/X11R6/bin/XF86_S3V)を/usr/X11R6/bin/X へシンボリックリンクしてくれるのだが、今度のXF86Setupはシンボリックリンクしてくれなかった。 以下の作業を行って、Xサーバファイルをシンボリックリンクしよう。

  1. su で root になる。
  2. cd /usr/X11R6/bin としてディレクトリ移動。
  3. ln -s XF86_S3V X として、シンボリックリンクする。
    私の場合はビデオカードにS3 ViRGE/DXを使っているのでXF86_S3Vをリンクしているが、ここは各自が利用しているXサーバファイル名に変更して欲しい。

上のバグを修正するパッチ(XFree86-Developpers-MLに流れたもの)を野村@慶大さんから頂いたので、ここに転載する。

*** XF86Setup/phase5.tcl.org	Sun Jun 22 17:22:26 1997
--- XF86Setup/phase5.tcl	Thu Nov 20 01:00:40 1997
***************
*** 47,54 ****
  	    set lastlink $linkname
  	    set linkname [readlink $linkname]
  	}
!         if { [file type $linkname]=="link" && ![file exists $linkname] } {
                  set lastlink [readlink $linkname]
  	}
  
  	if { $nlinks < 20 } {
--- 47,56 ----
  	    set lastlink $linkname
  	    set linkname [readlink $linkname]
  	}
!         catch {
! 	    if { [file type $linkname]=="link" && ![file exists $linkname] } {
                  set lastlink [readlink $linkname]
+ 	    }
  	}
  
  	if { $nlinks < 20 } {
このパッチの利用方法は
  1. su で root になる。
  2. cd /usr/X11R6/lib/X11
  3. patch -p < 上のパッチ
となる。

FreeBSDページの目次に戻る


全角/半角キーをESCキーにするには

XF86Setupの設定のままだと、全角/半角キーが ESC キーとして使えない。 そこで /usr/X11R6/lib/X11/xkb/symbols/jp というファイルを編集する。
  1. su で root になる。
  2. cd /usr/X11R6/lib/X11/xkb/symbols としてディレクトリを移動。
  3. chmod +uw jp として書き換え可能にする。
  4. 下記の差分を jp.diff として保存する。
    *** jp.orig	Sun Oct  5 00:00:00 1997
    --- jp	Sun Oct  5 00:00:00 1997
    ***************
    *** 6,12 ****
          key <ESC>  { [ Escape		]	};
      
          // Alphanumeric section
    !     key <HZTG> { [ Zenkaku_Hankaku,Kanji]				};
          key <AE01> { [ 1, exclam 		], [ kana_NU		]	};
          key <AE02> { [ 2, quotedbl		], [ kana_FU		]	};
          key <AE03> { [ 3, numbersign	], [ kana_A, kana_a	]	};
    --- 6,12 ----
          key <ESC>  { [ Escape		]	};
      
          // Alphanumeric section
    !     key <HZTG> { [ Escape		]				};
          key <AE01> { [ 1, exclam 		], [ kana_NU		]	};
          key <AE02> { [ 2, quotedbl		], [ kana_FU		]	};
          key <AE03> { [ 3, numbersign	], [ kana_A, kana_a	]	};
    
  5. patch < jp.diff として差分をあてる。
  6. chmod -w jp として、ファイルの書き換えを禁止しておく。
  7. リブートする。
以上の操作で全角/半角キーがESCキーになる。

FreeBSDページの目次に戻る


xloadを実行するとエラーがでるときには

xloadを実行すると、
exec: xload: not found
と表示されて、xloadが実行できない。 これは、XFree86 3.3.1 contrib に含まれている xload が、XFree86 3.3.1の配布バイナリに含まれていないために起こる。 (XFree86 3.2の時はファイルのグループIDがkmemになっていなくて実行できないとか、いろいろと不幸続きなxloadである。)

FreeBSD 2.2.5Rのports (/usr/ports/x11/XFree86-contrib )に、XFree86のcontribをコンパイルするportが用意されているので、以下のような操作でエラーが出なくなるだろう。

  1. suでrootになる。
  2. ここでダイアルアップ接続などを行い、ftp可能な状態にする。
  3. cd /usr/ports/x11/XFree86-contrib としてディレクトリ移動。
  4. make fetch として、X331-contrib.tar.gz をftpでゲット。
  5. ここでダイアルアップ接続を終了。
  6. make ; make install してコンパイル、インストールを行う。

1998.02.14現在のftpサイト上に置いてあるXFree86 3.3.1のcontribのバイナリには、xloadなどのバイナリが含まれているらしい。 上の方法が面倒なら、ftpサイトへXFree86 3.3.1 FreeBSD版 contrib バイナリを拾ってきて展開するという方法もある。

FreeBSDページの目次に戻る


.xinitrcについて

~/.xinitrcは、コンソールから startx または xinit とタイプして X Window System を起動する際に実行されるファイルだ。 このファイルでは、X Window System が起動する際に実行しておきたいプログラムを記述しておく。 このファイルはシェルスクリプトになっている。

例として、私の dot.xinitrc 1KB を示す。 このファイルは 640x480 ドットの表示領域を持つ Note PC と、1280x1024 ドットの表示領域を持つデスクトップマシンで共有できるように工夫してある。
画面の情報を表示するxdpyinfoコマンドの出力を加工して、現在の画面サイズを調べて変数sizeにSIZE1280x1024という値を設定している。 後半部分で if 〜 fi を用いて、解像度別に実行するプログラムの記述を行っている。 下に示すリソースファイルとセットで使うようになっているので、リソースファイルについても見て欲しい。

FreeBSDページの目次に戻る


リソースファイルについて

X Window Systemでは、アプリケーションソフト毎の設定などをリソースファイルと呼ばれるファイルで指定することが多い。 リソースファイルはWindows 3.1で言うところの /windows/win.ini 、Windows95で言うところのレジストリみたいなものだ。 リソースファイルとして、~/.Xdefaultsか~/.Xresourcesのどちらかが利用されている。 実際には~/.xinitrcファイル中で、xrdb -merge の引数に指定されているファイルがリソースファイルとして読み込まれており、私の所では ~/.Xresourcesが読み込まれている。

余談だが、なぜ~/.Xdefaultsと~/.Xresourcesの二つのファイル名があるのかというと、遥か昔のXでは~/.Xdefaultsというファイル名を使っていたらしい。 当時は各種設定をデータベースに読み込むxrdbというコマンドは無く、Xアプリケーションを一つ起動するたびに ~/.Xdefaults を読み込んでいたらしい。 後の時代のX(X11R4?)では、各種設定をリソースとしてメモリ上のデータベースに入れて管理しようということになり、Xの起動時に~/.xinitrc 内部で xrdb コマンドを使って ~/.Xresources というファイルをあらかじめ読み込んでおくことになったようだ。 現在のX11R6.3でも過去との互換性を継承しているので、xrdbコマンドを一度も使わなかった場合、アプリケーションを起動するたびに ~/.Xdefaults が読み込まれるらしい。

xrdbコマンドを使ってリソースファイルをデータベースで管理している場合は、Xを実行中に~/.Xresourcesを書き換えてもデータベースは変更されないので注意が必要だ。 この場合は、Xを一度終了するか、xrdb -merge ~/.Xresources としてリソースファイルを再度読み込ませる必要がある。

リソースファイル内部は普通のテキストファイルで、一般には

アプリケーション名.部品名.変数名:   値
と記述する。 リソースの設定ファイル中では、ワイルドカード'*'が利用できるので、
アプリケーション名*変数名:   値
*変数名:   値
などという書き方もできる。
また、リソースの設定ファイル中では大文字、小文字を区別されるので、設定ファイルを書く場合は要注意だ。
例えば、ktermというアプリケーションの設定は以下のようになる。
KTerm*scrollBar:        true
KTerm*saveLines:	400
KTerm*international:    True
KTerm*inputMethod:      kinput2
KTerm*preeditType:      OverTheSpot
アプリケーション名の先頭は大文字にする約束になっているらしい。

またまた余談だが、'kterm*scrollBar: true'と指定しても、ktermとして起動したktermにはスクロールバーが付く。 しかし、kterm -name loginとして起動したktermにはスクロールバーはつかない。 -nameオプションでktermのアプリケーション名がloginに変わったので、kterm*scrollBarという指定に合わなくなったのだ。 KTerm*scrollBar: true という指定は、実はktermのアプリケーションクラス名'KTerm'を使った指定なのだ。

アプリケーションクラス名は、Xアプリケーションプログラムのソースファイル中で指定している文字列で、普通はアプリケーション名の先頭を大文字にしたものだ。 ただし、XTermのようにXから始まる名前のアプリケーションは2文字目まで大文字にするという約束らしい。 KTermはなぜか先頭2文字が大文字になっているが、たぶんXTermにあわせたのだろう(^^;)。

ktermはアプリケーションクラス名KTermに属している。 -nameオプションでアプリケーション名をloginに変更されても、ktermはアプリケーションクラスKTermに所属しているので、KTerm*scrollBarという設定に従う。 その結果として、スクロールバーが表示されるというわけなのだ。

リソースファイル中でコメント行を入れたい場合は、行の先頭に ``!''(アポストロフィ) を入れて書くようだ。 (このあたりのことは、man X とすると表示される。)

! This line is comment line

リソースの指定では、通常1行に一つの設定を書く。 一つの変数名に対して複数の内容を書く場合には、``,''(コンマ)で区切って書くようだ。

Emacs*FontSet-12: -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1, -mnkaname-fixed-medium-r-normal--12-110-75-75-c-60-jisx0201.1976-0, -mnkaname-fixed-medium-r-normal--12-110-75-75-c-120-jisx0208.1983-0
ただ、上のような指定だと横に長くなりすぎるので、行の最後に``\''(バックスラッシュ)を使うことで次の行に同じ設定行を続けて書く事ができる。
Emacs*FontSet-12:\
 -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1,\
 -mnkaname-fixed-medium-r-normal--12-110-75-75-c-60-jisx0201.1976-0,\
 -mnkaname-fixed-medium-r-normal--12-110-75-75-c-120-jisx0208.1983-0

例として、私のリソースファイル dot.Xresources 2KB を示す。 このファイルは 640x480 ドットの表示領域を持つ Note PC と、1280x1024 ドットの表示領域を持つデスクトップマシンで共有できるように工夫してある。
xrdb で読み込まれる際に、画面のサイズがWIDTHとHEIGHTに定義されていることを利用して、#if ... #endif でデスクトップマシン用とノートマシン用の設定を分離している。

xrdbはリソースファイルを読み込む前に、C言語のプリプロセッサを起動するので #if ... #else ... #endif などのプリプロセッサ命令が利用できるのだ。 余談だが、自動的に定義されているマクロは xrdb -symbols とすると表示される。

上で示した .xinitrc ファイルとセットで使うようになっているので、 .xinitrcについて も参照して欲しい。

またまた余談だが、Athenaを使ったプログラムとMotifを使ったプログラムでは、リソースの変数名が異なる。 たとえば、xtermはAtenaを使ったプログラムなので、フォントの指定はXTerm*fontで行う。 一方、netscapeはMotifを使ったプログラムなので、フォントの指定はNetscape*fontListで行う必要がある。

Xアプリケーションプログラムでは、ボタンなどのウィンドウアイテムすべてに部品名がつけられている。 とあるアプリケーションプログラムのボタンに表示されている「OK」を「Yes」に変更したい場合は、そのボタンの部品名をドキュメントやソースファイルから捜し出しておく。 部品名が okButton だった場合は、リソースファイルに下記のように指定すれば、ボタン表示が変わるはずだ。

アプリケーション名*okButton.label: Yes (Athenaをつかったプログラムの場合)
アプリケーション名*okButton.labelString: Yes (Motifをつかったプログラムの場合)
このように、プログラムをコンパイルせずにボタンの「OK」という表示を「Yes」に変更できるようになっているのだ。
どんな部品名が利用可能かはドキュメントに記述してある事が多いので、カスタマイズしたい場合はドキュメントをチェックしよう。
Motifを使ったプログラムの変数名について真面目に調査したい場合は、「OSF/Motif Programmer's Reference」を入手必要があるらしい。

Xアプリケーションが読み込むリソースファイルの位置は、以下の優先順位で決まるらしい。

  1. 環境変数 XENVIRONMENT または ~/.Xdefaults-hostname
  2. ~/.Xdefaults
  3. 環境変数 XUSERFILESEARCHPATH または環境変数 XAPPRESDIR または環境変数 HOME
    XAPPRESDIRはX11R3用の環境変数なので、現在は利用しない方が望ましい模様。
  4. 環境変数 XFILESEARCHPATH または /usr/X11R6/lib/X11/app-defaults/ 以下のディレクトリ
ただし、xrdbを使っている場合はどうなるのか本に書いてなかったので不明である。(^^;)

また、環境変数 XUSERFILESEARCHPATHと、環境変数 XFILESEARCHPATH 内部では使用時に展開される特殊変数がある。 以下にいくつか抜粋しておく。

%C
カラーかモノクロかによって、-color, -mono に展開される。
X11R5で追加された。
%L
ロケール。
日本語、日本国内のEUCコードなら ja_JP.EUC に展開される。
%l
ロケール中の言語
日本語なら ja に展開される。
%N
アプリケーションクラス名
XTermやKTerm, Netscapeなどに展開される。
%T
アプリケーションタイプ名
通常はapp-defaults

また、X11R5の頃の環境変数XUSERFILESEARCHPATHは、デフォルトで

XUSERFILESEARCHPATH=base/%L/%N%C:  \
                    base/%l/%N%C:  \
                    base/%N%C:  \
                    base/%L/%N:  \
                    base/%l/%N:  \
                    base/%N:  \
と指定されていたようだ。 上のbaseは、環境変数XAPPRESDIR、XAPPRESDIRが設定されていなければユーザのホームディレクトリになる。 そんなわけで、XAPPRESDIRを指定していない場合、日本語用(ja_JP.EUC)のNetscape用リソースを自分のホームディレクトリ以下に記述するなら、 ~/ja_JP.EUC/Netscape-color というファイルを作成してリソースデータを書き込むことになりそうだ。

また、X11R5の頃の環境変数XFILESEARCHPATHは、デフォルトで

XFILESEARCHPATH=/usr/lib/X11/%L/%T/%N%C:  \
                /usr/lib/X11/%l/%T/%N%C:  \
                /usr/lib/X11/%T/%N%C:  \
                /usr/lib/X11/%L/%T/%N  \
                /usr/lib/X11/%l/%T/%N  \
                /usr/lib/X11/%T/%N
と指定されていたらしい。
現在のFreeBSD用XFree86 3.3.1には/usr/X11R6/lib/X11/app-defaults/XTerm-color などというファイルがあるが、これは、デフォルトの XFILESEARCHPATH 中の /usr/X11R6/lib/X11/%T/%N%C を展開したものに相当するのだろう。
余談だが、X11R5のXFILESEARCHPATHのデフォルト設定を見ると、全ユーザー共通の日本語リソースを置くなら /usr/X11R6/lib/X11/ja_JP.EUC/app-defaults/XTerm-color か、 /usr/X11R6/lib/X11/ja/app-defaults/XTerm-color 内部になりそうだ。

リソースファイル内部でなんらかのエラーが起こっている場合は、検出するのが非常に難しい。 そこで、リソースファイル内部に

*StringConversionWarnings: on
と指定すると、エラー発生時にメッセージが出力されるようになるようだ。

editresというリソースを編集するソフトもあるようなので、興味がある人は起動してみると良い。 なんでも、editresプロトコルに対応しているソフトなら、ソフトを起動中にリソースの値を書き換えることができるらしい。

FreeBSDページの目次に戻る


X Window System 上でコンソール出力を得る

コンソール画面をX上で表示する方法を解説する。 ここで言う「コンソール画面」とは、重要なエラーメッセージや、警告メッセージを出力する先の画面のことだと思って欲しい。 何も設定しないで X Window System を起動して使っていると、かなり重要なエラーメッセージや警告メッセージが X Window System を終了した後のコンソール画面に出ていることがある。 このままでは多少危険なので、コンソール画面に出力される内容をktermに出力するようにしてみよう。

Xを実行中にコンソール出力を得るようにする設定には、2つの方法がある。

  1. /etc/ttysを編集する方法
    su でスーパーユーザーになってから /etc/ttys を編集する。 consoleとttyv0という単語から始まる行
    console	none				unknown	off secure
    ttyv0	"/usr/libexec/getty Pc"		cons25	on  secure
          
    があるので、以下のように変更しよう。
    console	"/usr/libexec/getty Pc"		cons25	on secure
    ttyv0	"/usr/libexec/getty Pc"		cons25	off secure
          
    onとoffで、そのコンソールを使うか、使わないかを指定している。 この変更で、consoleを使ってttyv0を使わないように指定しているわけだ。 ここで一度リブートする。 うまく設定ができていれば、リブート後、ログインプロンプトの表示が(ttyv0)から(console)に変わる。 また、ls -l /dev/console とすると、コンソールのオーナーがログインしたユーザーになっている。

  2. /etc/fbtabを作成する方法
    1. su で root になる。
    2. /etc/fbtab ファイルを作成して
      /dev/ttyv0      0600    /dev/console
      	    
      という内容を記述する。
    3. リブートする
    とconsoleの持ち主が、ttyv0にloginした人に変わる。
一つ目の方法の方が、コンソールに出力されるエラーメッセージの種類が増えるようだ。 うるさくない方が良い場合は、二つ目の方法を取ると良いだろう。

次に、コンソール出力を受け取ってウィンドウに表示するプログラムを指定する。 毎回手動で指定するのも面倒なので、X Window System を起動するときに自動的に実行するプログラムを指定しているファイルに書き込むと良い。 私の場合は、ウィンドウマネージャーを頻繁に取り替える習性があるので(^^;)~/.xinitrcに指定している。 コンソール出力を受け取るプログラムには色々あるようだが、以下の二つが有名だ。

  1. kterm に -C オプションをつけて起動する。
    -Cオプションは、ktermに対して「コンソールへの出力を受け取れ」という指定である。 複数のktermを起動するように設定している場合には、どれか一つのktermに-Cをつけておけば良い。
  2. xconsoleを使う方法
    そのものずばり、xconsoleというプログラムがあるので、xconsoleを実行する。
以上の設定で、X上でもコンソール出力が見えるようになる。

FreeBSDページの目次に戻る


X Window System + Communicator for FreeBSD で日本語フォームボタンを表示するには

普通にインストールしている状態でも、muleやktermでは日本語フォントが利用できる。 しかし、Netscape Communicator 4.03b8 (FreeBSD)版で日本語フォームボタンを表示するには、以下の修正を行う必要がある。
  1. su で rootになる。
  2. cd /usr/X11R6/lib/X11/locale/ja としてディレクトリ移動。
  3. chmod +w XLC_LOCALE として、ファイルを書き込み可能にする。
  4. 下記の差分を XLC_LOCALE.diff として保存
    *** XLC_LOCALE.orig     Sat Oct  4 00:00:00 1997
    --- XLC_LOCALE  Sat Oct  4 00:00:00 1997
    ***************
    *** 35,40 ****
    --- 35,41 ----
            }
            font    {
                    primary         JISX0201.1976-0:GR
    +               substitute      JISX0201.1976-0:GR
                    vertical_rotate all
            }
      }
    
  5. patch < XLC_LOCALE.diff として、変更を加える。
  6. chmod -w としてファイルを書き込み禁止にする。
以上の操作を行った後、WWWブラウザ / サーバ紹介ページにある communicator 4.03b8 for FreeBSD の設定を行うと良い。

余談だが、上記のXLC_LOCALEのバグは、X11R6.3の有名なバグらしい。

FreeBSDページの目次に戻る


フォント名について

X上で利用可能なフォント名の一覧は、コマンドラインからxlsfontsとすると表示される。 しかし、「MS明朝」などと比較するとえらく長いフォント名(正式には論理フォント名と呼ぶ)がずらずらと表示されるので、ちょっと近寄りがたい雰囲気がある。 ここでは、長いフォント名の意味を簡単に解説する。
「-adobe-helvetica-medium-r-normal--12-120-75-75-p-67-iso8859-1」を例にして解説しよう。
論理フォント名は、下記の要素を'-'(マイナス)でつないで作られている。
Foundry
フォントの作成者
例では、adobeが作ったフォントという意味になる。
FamilyName
フォントのファミリー名
例では、helveticaというフォントのファミリー名という意味だ。 他にはcourierやtimesなど、よく聞くファミリー名もある。
WeightName
フォントの重さ(太さ)
例ではmediumだから、中肉といったところ。 他に、regular(普通), bold(太字)があるようだ。
Slant
フォントの傾き
r:Roman(ローマン体), i:Italic(イタリック体), o:Oblique(斜体)という意味になる。 例では Roman体のフォントという意味だ。
SetWidthName
フォントの単位あたりの幅
normal(普通), condensed(縮めた), narrow(狭い) などがある。
AddStyleName
フォントのスタイルに関する付加情報
XFree86に付属しているフォントデータでは、付加情報が書かれているものはないようだ。
PixelSize
文字の大きさのピクセル値
文字データは何ピクセルでできているかという情報らしい。 例では 12ピクセルで作成された文字ということになる。
ちなみに、このサイズが0の場合はスケーラブルフォントを意味する。
PointSize
文字の大きさのポイント数を10倍した値
ここでのポイント数は、後述するResolution(解像度)で表示した時のポイント数だ。 例では、12.0ポイントの文字ということになる。
スケーラブルフォントの場合、ここの値は0になる。
ResolutionX
ResolutionY
フォントが仮定する表示デバイスの水平・垂直方向の解像度(単位はピクセル/インチ)
75や100が多いようだ。 余談だが、dpi(ドット per インチ)と同じ単位。 プリンタなどでは 600dpi 以上は当り前だが、ディスプレイの解像度はそんなに高くないのだ。
Spacing
フォントのスペーシング
p:可変幅, m:固定幅, c:固定幅 がある。 mとcの違いはよくわからない...。
AvarageWidth
全文字の幅の平均
スケーラブルフォントの場合は0になる。
CharRegistry
フォントを登録した組織または標準名
よくみかけるものを以下に示す。
iso8859
ラテン文字セット。 西欧諸国の文字セットが入っている。
jisx0201.1976
ローマ字体とカタカナが入っている文字セット。 日本版のASCII文字セット(ASCIIとほぼ同じだが、バックスラッシュが円記号に、チルダがアッパーラインになっている)と、カタカナ文字セットが入っている。
jisx0208.1983
通称、新JIS文字セットが含まれている。 JIS第1水準漢字セットとJIS第2水準漢字セットの両方が含まれている。
jisx0212.1990
JIS補助漢字セットが含まれている。 XFree86 のフォントファイルには見当たらないようだ。
CharEncoding
文字セットのエンコーディング
エンコーディングの種類を記述するところらしい。
XFree86 に付属しているフォントの場合、0, 1, 8, dectech, fontspecific, irv という種類があるようだ。
フォント名で遊ぶ場合に重宝するコマンドとして、xlsfontsの他にxfontsel というコマンドがある。 上に示したフォントの分類をGUIを指定して、画面に表示して遊べるのだ。 一度試してみると良いだろう。

FreeBSDページの目次に戻る


フォントサーバ(xfs)を使う

X Window System にはフォントサーバというプログラムがある。 このプログラムは名前の通り、フォントのデータを展開し、保持しておくという機能がある。 通常利用しているXサーバにも同様の機能はあるのだが、フォントサーバを利用すると以下の特典がある。 ここでは、FreeBSD 2.2.2R + XFree86 3.3.1 + XF86_S3V で、xfs(X Font Server)を使ってみた。
インストール方法は下記の通り。
  1. suでルートになる。
  2. XFree86 3.3.1の配布に含まれている X331fsrv.tgz を入手する。
    FreeBSDの配布CD-ROM内部にあるはずだ。
  3. tar xvzf X331fsrv.tgz -C /usr/X11R6 としてフォントサーバの実行ファイルを展開する。
設定方法は次のようになる。
  1. /usr/X11R6/lib/X11/fs/config ファイルの設定を確認する。
    xfsのデフォルトの設定ファイルは/usr/X11R6/lib/X11/fs/configなので、このファイルが正しく記述されているかどうか確認しよう。 このファイルの記述方法は man xfs とすると表示される。
    設定ファイルをチェックするポイントだが、設定ファイル内部のcatalogueの行で、フォントのディレクトリの指定が正しいかどうかを確認する。 まだインストールしていないフォントのディレクトリが catalogue の内部に記述されていたら、そのディレクトリの記述を削除しよう。 デフォルトのconfigファイルは、XFree86 3.3.1の全てのフォントがインストールされていることを前提にして書かれている。

    参考までに、私の /usr/X11R6/lib/X11/fs/configファイルを引用しておく。

    # font server configuration file
    # $XConsortium: config.cpp,v 1.7 91/08/22 11:39:59 rws Exp $
    
    clone-self = on
    use-syslog = off
    catalogue = /usr/X11R6/lib/X11/fonts/misc/,/usr/X11R6/lib/X11/fonts/Speedo/,/usr/X11R6/lib/X11/fonts/Type1/,/usr/X11R6/lib/X11/fonts/75dpi/,/usr/X11R6/lib/X11/fonts/100dpi/
    error-file = /usr/X11R6/lib/X11/fs/fs-errors
    # in decipoints
    default-point-size = 120
    default-resolutions = 75,75,100,100
    # font deferglyphs
    deferglyphs = all
          
    標準的な設定ファイルと異なっている部分は、最後の deferglyphs = all という設定だ。(man xfsすると説明が出ている。) この設定をすることによって、一度にフォントを展開しなくなる。 日本語フォントのように1種類のフォントで数千文字もフォントデータがある場合、フォントの展開に結構時間がかかってしまう。 速度の遅いマシン(486SX-33MHzとか...)ではなかなかフォント展開が終了しないので、使用するフォントだけ部分的に展開するためのオプションだ。
    deferglyphs機能を使うには、フォントを要求する側のXサーバにも -deferglyphs all というオプションを追加してXサーバを起動する。(詳細は man Xserverとすると参照できる。)
    私は毎回コマンドラインからXを起動しているので、以下のようなaliasを定義して、x11とタイプしている。
    # bash用alias定義
    alias x11='startx -- -deferglyphs all'
          
  2. /usr/X11R6/etc/rc.d/xfs.shというファイルを作成して、
    #!/bin/sh
    if [ -x /usr/X11R6/bin/xfs ] ; then
    	/usr/X11R6/bin/xfs &
    	echo -n ' xfs'
    fi
          
    などと記述して、chmod +x /usr/X11R6/etc/rc.d/xfs.sh として実行可能属性を付けておく。 こうすれば、次にリブートした時に自動的にX Font Server が起動されるようになる。
  3. .bash_profile などに FONTSERVER=localhost:7100 ; export FONTSERVER と記述する。
  4. .xinitrc などに xset +fp tcp/localhost:7100 などと記述して、フォントパスの先頭にフォントサーバーを追加する。
  5. Xを起動する。
うまく設定できていれば、fslsfonts などのコマンドが利用できるはずだ。 fsinfoコマンド(Font Server Information)は、/usr/sbinに同名のコマンド(File System Information)があったりするので、絶対パス指定で/usr/X11R6/bin/fsinfoと起動しないと使えない。

フォントサーバを使ってみた印象だが、ktermのメニュー出力時や Communicator の起動時など、フォント展開中にXのマウスカーソルが「固まる」現象が回避できるようになった。
topで見ていると3MBytes〜7MBytesくらいのメモリを食べるようなので、メモリの少ないマシンだと余計に苦しくなるかもしれない。

FreeBSDページの目次に戻る


X Window System 使用テクニックのあれこれ

X Window System のちょっと便利な技を紹介する。
便利なキーバインド (twm)
ウィンドウマネージャとしてtwmを使っている場合にちょっと便利なキーバインドを紹介する。 Metaキーはこの場合、左のAltキーを指す。
Ctrl+Meta+BackSpace	Xの強制終了
Ctrl+Meta+F1〜F3	コンソール画面1〜3へ切替え
↑この状態でAlt+F4	Xに戻る

Ctrl+Meta+(テンキーの)+ 解像度切替え
Ctrl+Meta+(テンキーの)- 解像度切替え
      
便利なキーバインド (fvwm95-2)
ウィンドウマネージャーとしてfvwm95を利用している時のちょっと便利なキーバインドを紹介する。
Ctrl+Meta+BackSpace	Xの強制終了
Ctrl+Meta+F1〜F3	コンソール画面1〜3へ切替え
↑この状態でAlt+F4	Xに戻る

Alt+TAB                 Windows95ライクなフォーカスウィンドウ切替え
Ctrl+→                 仮想デスクトップ画面切替え
Ctrl+←                 仮想デスクトップ画面切替え
Ctrl+↑                 仮想デスクトップ画面切替え
Ctrl+↓                 仮想デスクトップ画面切替え
Alt+→                  仮想デスクトップ画面スクロール
Alt+←                  仮想デスクトップ画面スクロール
Alt+↑                  仮想デスクトップ画面スクロール
Alt+↓                  仮想デスクトップ画面スクロール
      

FreeBSDページの目次に戻る


小さいフォントを使うには

ノートマシンなどで、640x480ドットの画面しか無い場合は、小さいフォントを利用したい場合がある。 以下では、muleで要町フォント(12ドットフォント)を使う方法を示す。

FreeBSD 2.2.2Rのpackages/japanese/jp-k12font-1.0.tgzには、要町フォントをインストールするパッケージが用意されている。 また、FreeBSD 2.2.5Rのpackagesには、ja-elisa8-1.0.tgz (エリサフォント)、ja-k12font-1.0 (要町フォント)のパッケージが用意されている。

パッケージを使って要町フォントをインストールした場合は、 ~/.Xresourcesに利用するフォントを設定する。 からの設定を行う。

  1. 要町フォントを取得する。
    以下からftpできるだろう。
    ftp://ftp.kuis.kyoto-u.ac.jp/X11/contrib/fonts/kaname_k12_bdf.tar.gz 196KB
    ftp://ftp.kuis.kyoto-u.ac.jp/X11/contrib/fonts/
    要町フォントのアーカイブと、アーカイブのあるディレクトリ
  2. 要町フォントのインストール。
    1. tar xvzf kaname_k12_bdf.tar.gz として、アーカイブを展開。
    2. bdftopcf -o knmzn12x.pcf knmzn12x.bdf として、pcf形式に変換
    3. bdftopcf -o knmhn12x.pcf knmhn12x.bdf として、pcf形式に変換
    4. su で rootになる
    5. cp knmzn12x.pcf knmhn12x.pcf /usr/X11R6/lib/X11/fonts/misc として、フォントディレクトリにコピー
    6. cd /usr/X11R6/lib/X11/fonts/misc として、フォントディレクトリに移動
    7. mkfontdir として、フォント一覧ファイル(fonts.dir)を作成。
    8. xset fp rehash として、フォントパスを再読み込みさせる。
      もし、この操作が面倒なら、一度X window systemを再起動させても良い。
  3. ~/.Xresourcesに利用するフォントを設定する。
    1. ~/.Xresourcesに、下記の記述を追加する。
      Emacs*FontSetList: 12,24
      Emacs*FontSet-12: -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1,\
                        -mnkaname-fixed-medium-r-normal--12-110-75-75-c-60-jisx0201.1976-0,\
      		  -mnkaname-fixed-medium-r-normal--12-110-75-75-c-120-jisx0208.1983-0
      Emacs*FontSet-24: -*-fixed-medium-r-*--24-*-iso8859-1
      	    
      ちなみに、-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1というフォントは、/usr/X11R6/lib/X11/fonts/misc/fonts.aliasでfixedという別名がついているもので、xtermのデフォルトフォントである。
    2. xrdb -merge ~/.Xresources として、リソースファイルの記述をリソースデータベースに反映させる。
      この操作が面倒なら、一度X Window System を終了させても良い。
    以上の設定が終了した後に mule/emacs を起動すると妙に小さなフォントで表示されるはずである。

    続いて、ktermで要町フォント(jp-k12font)を利用する方法を示す。
    ~/.Xresourcesに下記の記述を追加する。

    KTerm*VT100*fontList: -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1,\
                          -mnkaname-fixed-medium-r-normal--12-110-75-75-c-60-jisx0201.1976-0,\
                          -mnkaname-fixed-medium-r-normal--12-110-75-75-c-120-jisx0208.1983-0
          
    設定後の操作は、muleの場合と同じである。

FreeBSDページの目次に戻る


スクリーンセーバーを自動で利用できるようにするには

XFree86-3.1.2とは異なり、XFree86-3.2からデフォルトではX window system上でスクリーンセーバーが作動しなくなった。 以下のような行を、~/.xinitrcに追加すると、スクリーンセーバーを自動的に利用可能になる。
xset s on
xset s on というコマンドで、スクリーンせーバーをオンにしている。 xsetには、他にも色々な機能があるのでman xsetして調査するか、単にxsetと入力して簡単なヘルプを見て色々と遊んでみるとよいだろう。

FreeBSDページの目次に戻る


Copyright(c) 1996,97,98,99,2000,01,02,03,04 George(小濱 純). All rights reserved.
私の作成したページへのリンクはご自由にどうぞ。
このページに間違いや要望などがありましたら george@yk.rim.or.jp まで御連絡ください。

[ホームページ] [日記] [読んでいる日記] [秋葉原価格] [FreeBSD] [FreeBSD LINK] [検索] [高速検索]

home: <george@yk.rim.or.jp> or <george@ceres.dti.ne.jp>
(I am using SPAM filter, so please phone me when you wrote mail to me.)