使用する機材
今回使用する機材は以下の通り。
グラフィックチップがアレゲだと X で使えないので注意。

ハードウェア
IBM ThinkPad T23 (SXGA+):S3 SuperSavage IXC/16
IBM ThinkPad X22 (XGA):ATi RADEON Mobirily 8MB
自作 PC/AT 互換機:ATi RADEON 9500Pro (DVI-I + VGA)
OS
FreeBSD 4.10-RELEASE
X-Window のバージョン
XFree86 4.3.0
ThinkPad T23 (SXGA+)
SXGA+ キャプチャ
   ThinkPad X22 (XGA)
XGA キャプチャ

ATi RADEON 9500Pro Dual Display
デュアルディスプレイキャプチャ
Xの設定
xf86cfg で設定を行う。
全部が全部 xf86cfg で行おうとすると大変なので、以下の設定ファイルを使って貰うと良いと思われる。


以下注意点など。

RADEON 系のデュアルヘッドのプライマリに注意
RADEON 系デュアルヘッドを使ったときに一番初めに悩むであろう事が、 この「プライマリの扱い」と思われる。
man radeon(4) を参照していただければ記述されているが、Option "CloneDisplay" の項目にプライマリヘッドとセカンダリヘッドの扱いが記述されているのでそれを抜粋する。
Primary head:
DVI port on DVI+VGA cards
LCD output on laptops
Internal TMDS prot on DVI+DVI cards
Secondary head:
VGA port on DVI+VGA cards
VGA port on laptops
External TMDS port on DVI+DVI cards
このとおり、ディスプレイが 2台繋がっている場合は DIV がプライマリとして扱われるので注意が必要。
ただし、ノート PC などに内蔵されている RADEON 系に関しては、 液晶ディスプレイがプライマリとして扱われるので心配は不要。
DualHead 対応
デュアルヘッドを行う場合はちょっとしたテク (?) が必要となる。
デュアルヘッドは X から見た場合、ディスプレイとグラフィックアダプタが 2つあるように見える。
そのため、XF86Config 内では各設定を 2つ記述しなければならない。
具体的には以下の通りに行う。
### レイアウト設定
Section "ServerLayout"
	# Screen 意外の設定は省略。
	Screen      0  "Screen0" 0 0
	# Screen 0 の右側 (RightOf) に Screen1 を配置する
	Screen      1  "Screen1" RightOf "Screen0"
EndSection

### ディスプレイの設定
Section "Monitor"
	Identifier   "Monitor0"
	VendorName   "SONY"
	ModelName    "CPD-17sf9"
	HorizSync    24.0 - 80.0
	VertRefresh  50.0 - 120.0
EndSection
Section "Monitor"
	Identifier   "Monitor1"
	VendorName   "EIZO"
	ModelName    "F930"
	HorizSync    31.5 - 130.0
	VertRefresh  50.0 - 160.0
EndSection

### グラフィックアダプタの設定
# *1: BusID は両方とも PCI:1:0:0 にする。
#     グラフィックアダプタで認識する BusID は PCI:1:0:0 と PCI:1:0:1 だが、
#     違う番号にしてしまうとクローンヘッドになってしまう。
# プライマリ (DVI-I 側)
Section "Device"
	Identifier  "Card0"
	Driver      "ati"
	VendorName  "ATI Technologies Inc"
	BoardName   "Radeon R300 AD [Radeon 9500 Pro]"
	BusID       "PCI:1:0:0"
	Screen 0
EndSection
# セカンダリ (アナログ側)
Section "Device"
	Identifier  "Card1"
	Driver      "ati"
	VendorName  "ATI Technologies Inc"
	BoardName   "Radeon R300 AD [Radeon 9500 Pro]"
	BusID       "PCI:1:0:0"
	Screen 1
EndSection

### スクリーン設定
Section "Screen"
	Identifier "Screen0"
	Device     "Card0"
	Monitor    "Monitor0"
	DefaultColorDepth 24
	SubSection "Display"
		Depth     24
		Modes     "1280x1024"
	EndSubSection
EndSection
Section "Screen"
	Identifier "Screen1"
	Device     "Card1"
	Monitor    "Monitor1"
	DefaultColorDepth 24
	SubSection "Display"
		Depth     24
		Modes     "1856x1392" "1600x1200"
	EndSubSection
EndSection
好みの解像度で起動させる
xf86cfg で設定しただけの状態では好みの解像度で起動出来ない。
そこで、XF86Config 内にこの設定を付け加えることにする。
Section "Screen"
    Identifier "Screen0"
    Device "Card0"
    Monitor "Monitor0"
    DefaultColorDepth 24
    SubSection "Display"
        Depth   16
        Modes   "1400x1050" "1280x1024" "1024x768" "800x600" "640x480"
    EndSubSection
    SubSection "Display"
        Depth   24
        Modes   "1400x1050" "1280x1024" "1024x768" "800x600" "640x480"
    EndSubSection
EndSection
DefaultColorDepth でデフォルト色数を指定し、SubSection "Display" 内の Modes でデフォルトの解像度を設定する。
デフォルトの解像度は Modes の先頭に記述した解像度がデフォルトとなり、その後ろに連続して記述されている解像度に関しては、CTRL+ALT+[+-] (ノートの場合はコレに加えて Fn) で解像度の切り替えが可能。
ただし、ThinkPad T23 と X22 では Fn を押しても解像度の切り替えは出来なかった。
トラックポイントのセンターボタンを使う
トラックポイントのセンターボタンは、そのままで使うと 3ボタンマウスと同じ仕様になる。
しかし Windows ではホイールと同じように使えるので、ただの 3ボタンマウスでは不便きわまりない。
そこでこのセンターボタンを Windows のソレと同じように使えるように設定する。
Section "InputDevice"
    Identifier "TrackPoint"
    Driver "mouse"
    Option "Device" "/dev/psm0"
    Option "Protocol" "PS/2"
    Option "Emulate3Buttons" "yes"
    Option "ZAxisMapping" "4 5"
    Option "EmulateWheel" "true"
    Option "EmulateWheelButton" "2"
    Option "EmulateInertia" "50"
EndSection
ただし、この設定を行うと中ボタン押しの動作がホイールエミュに奪われるので、3ボタンエミュの設定を行わなければならない。
ホイール動作を使いたいか中ボタン動作を使いたいかの二者択一なので個人で判断する事。

設定ついでに moused で提供される /dev/mouse を使用しないようにしておく。
また、この例では "Identifier" 名を変更しているので気を付けること。
中ボタンの設定内容に関しては以下を参照。

Emulate3Buttons
左右のボタンを同時に押すことで中ボタンとして機能させる。
ZAxisMapping
ホイールの上下動作をどのボタンに割り当てるかの指定。
4 は上方向で 5は下方向。
EmulateWheel
中ボタン押し+マウス移動でホイールの回転と同機能をもたせる。
EmulateWheelButton
-
EmulateInertia
-
USB ホイールマウスを同時に使う
まず、USB マウスを使うために usbd を起動し、moused を停止しておく。
/etc/rc.conf には以下の設定を追加。
usbd_enable="YES"
moused_enable="NO"
moused の停止をする理由として、moused は usbd が制御してくれるので余計なデーモンを起動しないため。

次にホイールの動作を設定する。
Section "InputDevice"
    Identifier "USBMouse"
    Driver "mouse"
    Option "Protocol" "Auto"
    Option "Device" "/dev/mouse"
    Option "Buttons" "5"
    Option "ZAxisMapping" "4 5"
EndSection
Protocol
USB マウスを使用する場合は必ず Auto にする事。
Device
/dev/mouse は moused が提供するデバイス。
Buttons
3ボタン以上のマウスを使うときは必ず指定すること。
あとは以下のようにマウスデバイスを使う設定を行う。
Section "ServerLayout"
    Identifier "XFree86 Configured"
    Screen 0 "Screen0" 0 0
    InputDevice "Keyboard0" "CoreKeyboard"
    InputDevice "TrackPoint" "CorePointer"
    InputDevice "USBMouse" "AlwaysCore"
EndSection
InputDevice
Section "InputDevice" の Identifier で指定したデバイス名を指定する。
その際、オプションとして CorePointer と AlwaysCore とがあるが、これは以下のような違いがある。

  • CorePointer:デフォルトとして使用するポインティングデバイス。
  • AlwaysCore:拡張デバイスを同時に利用するときのオプション。
液晶の電源 OFF 型スクリーンセイバーを使用しないようにする
一定時間が経過すると、デフォルトでは液晶の電源を切ってしまう。
その設定を無効にする場合は以下の設定を追加する。
Section "ServerFlags"
    Option "BlankTime" "0"
EndSection
TrueType フォントを使う
Windows などで使われる TrueType フォントは X でも使うことが出来る。
試しに使ってみたい人は、まず Windows の FONTS ディレクトリにある MSGOTHIC.ttc を /usr/X11R6/lib/X11/fonts/TTF/ にコピーする。
ディレクトリがない場合は作成しておく。

次に、そのディレクトリに fonts.dir と fonts.scale を作成するが、既に fonts.dir と fonts.scale が有る場合は、念のためにそれをバックアップしておく。
fonts.(scale|dir) を壊すとフォントが扱えないので、今回は別のディレクトリで MSGOTHIC.ttc のフォントリストを作成した後、そのリストを両ファイルに追加する方向で行う。

まず、先ほどコピーしたフォントとは別の適当なディレクトリに MSGOTHIC.ttc をコピーする。
例) ~/tmp/
このディレクトリ内で mkttfdir を実行すれば fonts.dir が作成されるので、その内容を既存の fonts.scale と fonts.dir に張り付ける。
fonts.scale は TrueType フォント用の fonts.dir であり、内容的には同じ物である。
なお、mkttfdir が無い場合は、perlftlib-1.2.tgz のパッケージをインストールする事。

あとは XF86Config の Section "Files" の FontPath に /usr/X11R6/lib/X11/fonts/TTF/ を追加しておく。

このファイルに記述される行は XLFD(X Logical Font Description:論理フォント名) と呼ばれる書式で記述されている。
フォーマットに関する情報はこちらを参照するか、もしくはぐぐる先生に「XLFD X ( 書式 OR 構成 )」と聞いてみることをお勧めする

なお、Windows のフォントを使うのは厳密に言えばライセンス違反になるので、ここではテストだけにとどめておこう。
実際に使いたい方は市販のフォントを購入すること。
ウィンドウマネージャの導入と設定
X の設定が終わったら、自分の好きなウィンドウマネージャをインストールする。
今回は長年 (?) 使っている AfterStep の他に、ものは試しで GNOME もインストールしてみた。

AfterStep
設定ファイル


恐らくそのままでは使えないので、そのまま置き換えるのではなく参考にすること。
以下注意点など。

xv で壁紙を指定したとき、時々灰色の画面に上書きされてしまうときの対処法
.steprc 内でルートを灰色に塗り潰す指定があるのでそこをコメントアウトする。
電池残量などを知りたい
asapm をインストールする。
インストールした後は .steprc に以下の設定を追加する。
*Wharf asapm nil Swallow "asapm" asapm &
メモリ残量などを知りたい
asmem をインストールする。
インストールした後は .steprc に以下の設定を追加する。
*Wharf asmem nil MaxSwallow "asmem" asmem -iconic -withdrawn -fg "#00ffff" -memory "#cc0099" &
素っ気ない xload をどうにかしたい
ascpu をインストールする。
インストールした後は .steprc に以下の設定を追加する。
*Wharf ascpu nil MaxSwallow "ascpu" ascpu &
GNOME
設定ファイル

  • サンプル無し

今回はパッケージ名 "gnome2-2.6.0" をインストールした。

インストール方法
いつも通り pkg_add でインストールする。
もし上手く入らないようであれば pkg_add -r でインストールを行う手段もあるが、無理矢理入れるので自己責任で。
gdm の自動実行
/usr/X11R6/etc/rc.d/gdm.sh が有るかを確認し、あれば /etc/rc.conf に以下の 1行を追加する。
gdm_enable="YES"
無ければ /usr/local/etc/rc.d/gdm.sh を作り、/usr/X11R6/sbin/gdm が起動するように記述する。
自動実行スクリプトについて
gdm でログインする場合は、起動スクリプト (.xsession、.Xclients、.gnomerc) に気をつけなければならない。
GNOME は GNOME-2.3 までは .gnomerc を読み込むようになっていたが、GNOME-2.4 からはこれを無視するようになった
このため、もし .gnomerc を使う必要があるのであれば、.gnomerc を .Xclients にして実行権限を付与し、 gdm (GNOME ログインウィンドウ) で「デフォルトのシステム・セッション」を選択するしか手段はない。
メニューへの追加方法
ファイルマネージャで Applications:/// にアクセスするとメニューディレクトリに移動できる。
このディレクトリ内に "ランチャの作成" でアプリケーションへのショートカットを作成して GNOME を再起動すればよいわけだが、なぜか Applications:/// ディレクトリ内でランチャが作成できない。
この場合、一旦デスクトップ上にランチャを作成し、そのランチャを Applications:/// ディレクトリにコピーする方法で回避。
GNOME の日本語表示
gdm を使うのであれば、GNOME デスクトップマネージャの言語を「日本語」にするだけで日本語表示になる。
Firefoxの導入・設定と日本語化
インストール
FreeBSD 用のバイナリパッケージがないので手動でソースから作成しなければならないが、FreeBSD には ports という偉大な仕組みがある。
というわけで、FreeBSD 配付 ftp サイトから ports.tar.gz を取ってきて /usr/ に展開し、/usr/ports/www/firefox/ ディレクトリ内で make と make install を行う。 なお、足りないパッケージがあれば ports が勝手にファイルをダウンロード・インストールを行うので、make も root で行うこと。

依存するバイナリパッケージが多すぎるようなので、「ports に頼らないでインストールする」などということは考えない方がよい
Mozilla Japan で独自ビルドを行う際のドキュメントが整備されているので、それを参照して必要なバイナリパッケージを用意すると極普通に独自ビルドが行えるようなので、もし ports も無しに自力でビルドを行ってみたい人は挑戦してみると良い。
当方も挑戦してみたが、一度環境を整えてしまえば比較的容易にビルドが行えるようだ。
野良火狐を飼育する 〜 Firefox のビルド 〜」にその時の資料をまとめているので参考されたし。
日本語化
インストールが終わればとりあえず起動してみる。
そのままでは英語で表示されているので英語が苦手な人には大変なので、これを日本語化することにする。
といっても大変というわけではなく、既に日本語化用プラグインが提供されているのでこれをインストールする。

日本語化プラグインは mozilla ローカライズセンターに置いてあるので、そこからダウンロードする。
ダウンロードするファイルは「Mozilla Firefox 1.0 日本語版 Win/Linux 用 XPI パッケージ (rev.0.7.7)」なので、これをダウンロードして Firefox に食わせれば OK。
ファイル→ファイルを開く で ja-JP.xpi を開く。
あとは Firefox を起動させ直せば完了だが、まだそのままでは日本語表示に置き換わらない。

これは FAQ にも記載されていることだが、Locale-Switcher Extension で言語の切り替えを行うか手動で user.js もしくは prefs.js に日本語で動作するよう設定を書き込まなければならない。

Locale-Switcher Extension を使う。
ここからプラグインをダウンロードしてインストールする。
インストールしたら Firefox を再起動し、Tools → Languages で使用言語を切り替える。
(user|prefs).js に書き加える
次の 1行を追加する。
user_pref("general.useragent.locale", "ja-JP");
フォントの変更
とりあえず日本語化は終わったものの、そのままでは英文字が幅広すぎたり明朝体フォントですっきりしない。
ここでは自分で好きなフォントに設定をしてみる事にする。
今回は Windows に入っていた MS (P) ゴシックとモナーフォントを使用してみた。

TrueType フォントを使う場合 - MS Gothic/MS PGothic
フォントのインストールは「TrueType フォントを使う」で設定したのでその後を説明する。
以下の設定を .xinitrc に追記することで GDK は Xft を使用するようになり、TrueType フォントを使用することが可能になる。
export GDK_USE_XFT=1
なお、TrueType フォントのアンチエイリアスを使用したくない場合は、ホームディレクトリの .fonts.conf に以下のような設定を書き込む。
<match target="font">
    <edit name="embeddedbitmap" mode="assign">
    <bool>true</bool>
    </edit>

    <edit name="antialias" mode="assign">
    <bool>false</bool>
    </edit>
</match>
フォントファミリー単位での指定も可能で、その場合は以下のように行う。
<match target="font">
    <test name="pixelsize" compare="less_eq">
    /* 100pixels 以下のフォントに対して処理を行うようにする。 */
    <double>100</double>
    </test>

    <test name="family" compare="eq">
    <string>MS Gothic</string>
    <string>MS PGothic</string>
    <string>MS UI Gothic</string>
    </test>

    <edit name="embeddedbitmap" mode="assign">
    <bool>true</bool>
    </edit>

    <edit name="antialias" mode="assign">
    <bool>false</bool>
    </edit>
</match>
TrueType フォントを使わない場合 - モナーフォント
パッケージからインストールする。→ ja-monafonts-2.90,2.tgz
パッケージのリストを見てみると TrueType フォントもあるみたいだが、今回は TrueType ではない方を使用する。

以下の設定を .xinitrc に追記することで GDK は Xlib を使用するようになる。
export GDK_USE_XFT=0
あとは Firefox のフォント設定で「日本語」のフォントを「mona-gothic-*」に設定する。
他の言語のフォントも同フォントに指定すると、言語が違う地域でのフォント表示も統一できる。

メニューのフォントを変更する場合は以下の設定を userChrome.css に記述する。
menu, menuitem, window {
     font-size: 12px !important;
     font-family: MS PGothic !important;
}

:root, label, description {
     font-family: MS PGothic !important;
     font-size: 12px;
}
日本語入力
このままでは kinput2 経由で日本語入力が出来ないので、.xinitrc に以下の設定を追加する。
export XMODIFIERS='@im=kinput2'
Thunderbirdの導入・設定と日本語化
基本的には、Firefox のフォント設定まで完了しているとそれと同様の作業になる。
日本語化プラグインも同じところでダウンロードが可能。
日本語変換のインストールと設定
今回は「うんぬ (Wnn) より導入は簡単だがちょっとおばかなのが難点」と言われている「かんな (canna)」をインストールしてみた。
ちなみに ATOK X for Linux は FreeBSD にインストールできるので、 その模様を「ATOKX をインストールする 〜 阿波徳島の名産品 〜」まとめてみた。

インストール
簡単にパッケージからインストールしよう。
インストールするパッケージは以下の通り。
ただし依存するパッケージも多々あるのでこれ以外のパッケージファイルも使わなければならないが、どうせ ftp インストールするから関係ない。

ja-Canna-3.7p1_1.tgz
ja-kinput2-canna-3.1_2
インストールが完了したら /usr/local/etc/rc.d/canna.sh に対して実行権を与えておき、/etc/rc.conf にある canna_enable を YES にしておく。
設定
これもまた設定するところがたくさんある。

.canna
ATOK 風キーバインドにしている。
.xinitrc
X を起動する際の起動前バッチのようなもの。
.Xmodmap
キーボードのキーマップ変更用設定ファイル。
CTRL と CapsLock を入れ替え、漢字変換の起動キーを「前候補/変換」に割り当て。
.Xresource
ウィンドウマネージャのリソース設定。
日本語変換の起動リソースもココで設定する。
xdmの設定
/usr/local/etc/rc.d/xdm.sh を作成。

デフォルトの xdm ログイン画面は濃すぎるので、/usr/X11R6/lib/X11/xdm/Xresources を以下の設定ファイルのように書き換えている。
ログインウィンドウの位置は壁紙を張ったときに丁度良い所に位置させるよう調整。
Xresources
XINERAMA について
サンプルの XF86Config.RADEON9500ProDH では以下のような設定:
Section "ServerFlags"
     Option    "BlankTime" "0"
     Option    "Xinerama" "true"
EndSection
を行っているが、これは XINERAMA といい、2つ以上のディスプレイ (X root) を 1つのディスプレイ (X root) として扱えるモードである。
XF86Config.RADEON9500ProDH では True になっているが、False にすると各々の X root は独立した物になる。
以下にどのような扱いになるのかをキャプチャしているので参考にして欲しい。

Xinerama: True
この状態では X root が 1つとして扱われるので、画像のようにアプリケーションウィンドウは各々の X root を往来でき、跨ぐことも可能となる。
赤い線は 各ディスプレイ (X root) の区切りを示すが、アプリケーションウィンドウが境界線を跨いでいるところに注目。
この状態でアプリケーションウィンドウを最大化すると、幅は X root 全体の幅になるが、高さは一番低い高さの X root に統一される。
Xinerama: True
Xinerama: False
この状態では X root は各々が独立した物として扱われるため、アプリケーションウィンドウは各 X root 間で往来は出来ず、また跨ぐことも出来ない。
赤い線は 各ディスプレイ (X root) の区切りを示すが、左ディスプレイ右側にある kterm が境界線を跨がず途中で切れていることに注目。
この状態でアプリケーションウィンドウを最大化すると、各々の X root 内で最大化される。
Xinerama: False