Window Makerをカスタマイズする

Window MakerはX-Windowの数あるウィンドウマネージャの1つです。GUIの系統としては 昔にあったNext Stepをモデルとしています。僕が学生時の頃は主にSunを使って いたのですが,研究室にあったNext Stepのワークステーションを見て,そのGUIの 素晴らしさに驚いたものです。そのころは残念ながらX-Windowには,Next Stepの GUIを超えるものがなかったと思います。Window Makerは現在も発展中で,いずれ Next Stepを超えるウィンドウマネージャになってくれることでしょう。

このWindow Makerで何を設定するのかですが,Window Makerはありがたいことに 初めから国際化に対応しています。ですから簡単にメニューに日本語を表示することが 出来るのですが,普通に設定するとアルファベット部分が固定ピッチになってしまい あまりきれいじゃありません。

これは,フォントとしてhelveticaの14ピクセルフォントを使用している状態です。 フォントがhelveticaだと,文字セットがISO8859-1になってしまうので,当然日本語 を持ってはいません。でも,僕はアルファベットを表すのはhelveticaがきれいだと 思っているので,日本語メニューでもhelveticaフォントみたいにアルファベットを 表示したいと思いました。
こっちは日本語で表示した同じ内容を表すメニューです。下3つのメニューアイテム が英語のままですが,上のメニューと比較してみると,アルファベットはやっぱり 上のメニューの方が格好良く見えます。こっちのメニューはフォントとしてfixedの 文字セットはjis0208.1983-0,サイズは14ピクセルです。

日本語はうまく表示できるけど,どうもアルファベットが気に入りません。そこで 僕の好みのフォントがないのであれば作ってしまいましょう。といっても一から 全てのフォントを作成するのではなく,すでにあるフォントをくっつけてしまおう というものです。X-Windowはフォントを検索するのに,各フォントディレクトリに あるfonts.dirというファイルを参照します。このファイルを用いれば,日本語はfixed, 英語はhelveticaを使用したフォントを作成することが可能です。

ついでに新しいフォントのために,ディレクトリも用意してあげましょう。これは X-Windowが持っているフォントディレクトリと区別して管理しやすくする ためです。新しいフォントを置きたいディレクトリは別にどこでもかまいません。 僕の場合は/usr/X11R6/lib/X11/fontsの下に,combinationというディレクトリを 作成しました。このディレクトリに2つのフォントファイル,helvR10.pcf.gzと k14.pcf.gzをコピーまたはリンクします。これら2つのファイルにしたのは,どちらも ピクセルサイズが14だったからです。helvR10.pcf.gzは100dpiディレクトリから, k14.pcf.gzファイルはmiscディレクトリにあるはずです。

これら2つのファイルをcombinationディレクトリにコピーしたら,fonts.dirファイル を記述します。今回は用いるフォントが2つですので,以下のようになります。

2
k14.pcf.gz -combo-HelvFixed-medium-r-normal--14-130-75-75-c-140-jisx0208.1983-0
helvR10.pcf.gz -combo-HelvFixed-medium-r-normal--14-100-100-100-p-76-iso8859-1

最初の「2」は,これから指定するフォントの数になります。次の2行は最初に実際 のフォントの名前を書き,次にそのフォントの正式名称になります。今回のように 2つのファイルをくっつけてしまう場合に重要になるのが,1つ目の`combo'の部分と 2つ目にある`HelvFixed'の部分です。本来1つ目のパラメータはフォントを提供 した会社や組織の名前を書くべきなのですが,この部分をフィルタとしてフォント を検索する場合があるので,今回は別の名前をつけることにしました。2つ目の パラメータがフォント名を表します。helveticaとfixedフォントを使用している のでHelvFixedとしています。皆さんがこの

これで,combinationディレクトリには2つのフォントファイルとfonts.dirファイル があるはずです。では,このフォントを使えるようにしましょう。X-Windowの 再起動なしに使用できるようにするにはxsetコマンドを使用します。コマンド ラインから

% xset fp+ /usr/X11R6/lib/X11/fonts/combination
% xset fp+ rehash

と入力してください。これで,combinationフォントが使えるように なりました。

あとはこのフォントをWindow Makerのメニューで使用できるように するだけなのですが,もしwmakerconfというWindow Makerの設定ツール を持っている人はそれを使えば,簡単に設定できます。


この画面から,「メニュータイトル」および「メニューテキスト」のフォント を設定してやればいいのです。それぞれのフォントの部分を

-combo-helvfixed-medium-r-normal-*-14-*-*-*-*-*-jisx0208.1983-0

としてやれば,O.K.です。

もしwmakerconfを持っていない場合は,ホームディレクトリから GNUstep/Defaultsディレクトリに移動して,`WindowMaker'というファイル をエディタで開いてください。このファイルの最後は`}'で閉じられて いると思いますが,この`}'の直前にフォントの設定を記述してやります。 具体的には

  :
  :
  HighlightColor = "#553fee";
  MenuTextFont = "-combo-helvfixed-medium-r-normal-*-14-*-*-*-*-*-jisx0208.1983-0
  MenuTitleFont = "-combo-helvfixed-medium-r-normal-*-14-*-*-*-*-*-jisx0208.1983-0
}

のように黄色文字で書かれた部分を追加します。

フォントhelvfixedを用いた時のメニューです。日本語はそのままで, アルファベット部分がhelveticaフォントになっています。これでやっと 僕の好みになってくれました。

Window Makerのメニューの設定はこれでいいのですが,最後にやり残した ことがあります。新しく作ったフォントをX-Windowの起動の度にxsetコマンド で指定するのは面倒ですから,X-Windowの初期ファイルに書いてしまいましょう。 あなたがスーパーユーザになる権限を持っているのでしたら,/etc/X11 ディレクトリにあるXF86Configファイルを編集します。このファイルの最初の 方に

Section "Files"
    :
    :
    FontPath     "/usr/X11R6/lib/X11/fonts/misc/"
    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/"
End Section

という部分がありますので,ここに今回つくったフォントを指定します。

Section "Files"
    :
    :
    FontPath     "/usr/X11R6/lib/X11/fonts/misc/"
    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/combination/"
End Section

僕はX-WindowのサーバとしてAccelerated-Xを使用しているのですが, この場合は,/etc/Xaccel.iniファイルに

[FONTPATH]
    :
    :
    "/usr/X11R6/lib/X11/fonts/misc/",
    "/usr/X11R6/lib/X11/fonts/75dpi/",
    "/usr/X11R6/lib/X11/fonts/100dpi/",
    "/usr/X11R6/lib/X11/fonts/Type1/",
    "/usr/X11R6/lib/X11/fonts/Speedo/",
     "/usr/X11R6/lib/X11/fonts/combination/";

を追加します。細かいことですが,Xaccel.iniファイルの場合,フォントの 指定で最後の行のみセミコロン`;'を用い,それ以外の行はコンマ`,'ですので 間違えないようにしてください。

もしあなたがスーパーユーザの権限を持っていない場合は,各ユーザの ホームディレクトリにあるX-Windowの設定ファイル(これはシステムに よって違うと思いますが)にxsetコマンドを記述してやります。僕の場合は .xinitrcが設定ファイルになるのですが,そのファイル中に

xset fp+ /usr/X11R6/lib/X11/fonts/combination
xset fp rehash

と書いておけば,ユーザがX-Windowを起動するごとに,このフォントへの パスが追加されます。

Witten by N.Takahashi