X -probeonly または
XF86_VGA16 -probeonly または
SuperProbe
この方法で調査すると、通常は表記されていないRamDACの名前などの情報がある程度得られる。
キーボードの設定では、私は
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 ViRGE (S3V server)ではなくS3 ViRGE/DX (generic)を選択した。
括弧内のgenericやS3V serverという文字列は、インストールするXサーバの種類を表している。
すべての設定質問に答えると、XF86Setup は /etc/XF86Config というファイルにデータを出力する。 以後、Xサーバーは /etc/XF86Config というファイルを見てから起動するので、XF86Setupを使うのが面倒になったら直接 /etc/XF86Config を編集しても良いだろう。
*** 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 ] };
例として、私の dot.xinitrc 1KB を示す。
このファイルは 640x480 ドットの表示領域を持つ Note PC と、800x600 ドットのNote PC、1280x1024 ドットの表示領域を持つデスクトップマシンで共有できるように工夫してある。
画面の情報を表示するxdpyinfoコマンドの出力を加工して、現在の画面サイズを調べて変数sizeにSIZE1280x1024という値を設定している。
後半部分で if 〜 fi を用いて、解像度別に実行するプログラムの記述を行っている。
下に示すリソースファイルとセットで使うようになっているので、リソースファイルについても見て欲しい。
余談だが、なぜ~/.Xdefaultsと~/.Xresourcesの二つのファイル名があるのかというと、遥か昔のXでは~/.Xdefaultsというファイル名を使っていたらしい。 当時は各種設定をデータベースに読み込むxrdbというコマンドは無く、Xアプリケーションを一つ起動するたびに ~/.Xdefaults を読み込んでいたらしい。 後の時代のX(X11R4?)では、各種設定をリソースとしてメモリ上のデータベースに入れて管理しようということになり、Xの起動時に~/.xinitrc 内部で xrdb コマンドを使って ~/.Xresources というファイルをあらかじめ読み込んでおくことになったようだ。 現在のX11R6.3でも過去との互換性を継承しているので、xrdbコマンドを一度も使わなかった場合、アプリケーションを起動するたびに ~/.Xdefaults が読み込まれるらしい。
リソースファイル内部は普通のテキストファイルで、一般には
アプリケーション名.部品名.変数名: 値と記述する。 リソースの設定ファイル中では、ワイルドカード'*'が利用できるので、
アプリケーション名*変数名: 値 *変数名: 値などという書き方もできる。
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アプリケーションが読み込むリソースファイルの位置は、以下の優先順位で決まるらしい。
また、環境変数 XUSERFILESEARCHPATHと、環境変数 XFILESEARCHPATH 内部では使用時に展開される特殊変数がある。 以下にいくつか抜粋しておく。
また、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
と指定されていたらしい。
リソースファイル内部でなんらかのエラーが起こっている場合は、検出するのが非常に難しい。 そこで、リソースファイル内部に
*StringConversionWarnings: onと指定すると、エラー発生時にメッセージが出力されるようになるようだ。
editresというリソースを編集するソフトもあるようなので、興味がある人は起動してみると良い。 なんでも、editresプロトコルに対応しているソフトなら、ソフトを起動中にリソースの値を書き換えることができるらしい。
Xを実行中にコンソール出力を得るようにする設定には、2つの方法がある。
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 とすると、コンソールのオーナーがログインしたユーザーになっている。
/dev/ttyv0 0600 /dev/consoleという内容を記述する。
とconsoleの持ち主が、ttyv0にloginした人に変わる。
出力されるエラーメッセージの種類は、/etc/syslog.confにて指定されている。
私の場合は、全部のメッセージをコンソールに出すようにしている。
一つ目の方法の方が、コンソールに出力されるエラーメッセージの種類が増えるようだ。 うるさくない方が良い場合は、二つ目の方法を取ると良いだろう。
次に、コンソール出力を受け取ってウィンドウに表示するプログラムを指定する。 毎回手動で指定するのも面倒なので、X Window System を起動するときに自動的に実行するプログラムを指定しているファイルに書き込むと良い。 私の場合は、ウィンドウマネージャーを頻繁に取り替える習性があるので(^^;)~/.xinitrcに指定している。 コンソール出力を受け取るプログラムには色々あるようだが、以下の二つが有名だ。
XFree86-3.3.2では、/usr/X11R6/lib/X11/locale/ja/XLC_LOCALEファイルは正しく設定されているので、XFree86-3.3.1のように手動で設定ファイルを修正する必要は無くなった。
FreeBSDページの目次に戻る参考までに、私の /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 = 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とか...)ではなかなかフォント展開が終了しないので、使用するフォントだけ部分的に展開するためのオプションだ。
# bash用alias定義
alias x11='startx -- -deferglyphs all'
#!/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 が起動されるようになる。
フォントサーバを使ってみた印象だが、ktermのメニュー出力時や Communicator の起動時など、フォント展開中にXのマウスカーソルが「固まる」現象が回避できるようになった。
topで見ていると3MBytes〜7MBytesくらいのメモリを食べるようなので、メモリの少ないマシンだと余計に苦しくなるかもしれない。
Ctrl+Meta+BackSpace Xの強制終了
Ctrl+Meta+F1〜F3 コンソール画面1〜3へ切替え
↑この状態でAlt+F4 Xに戻る
Ctrl+Meta+(テンキーの)+ 解像度切替え
Ctrl+Meta+(テンキーの)- 解像度切替え
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 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に利用するフォントを設定する。 からの設定を行う。
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のデフォルトフォントである。
続いて、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の場合と同じである。
xset s onxset s on というコマンドで、スクリーンせーバーをオンにしている。 xsetには、他にも色々な機能があるのでman xsetして調査するか、単にxsetと入力して簡単なヘルプを見て色々と遊んでみるとよいだろう。