2004年1月12日月曜日

Debian GNU/Linux, WindowMaker をよりよく使うためのユーザ設定

WindowMakerを使いこなしたい

WindowMaker(以下wmakerと略すかも)はXウィンドウマネージャの一種である。 ここではwmakerの「見た目」を追求していく上でのポイントを述べるだけにする。 筆者がdebパッケージ生活をしているためwmakerのインストールからの話が書けないだけであることをお詫びしておく。
筆者の使用しているのはversion0.80、その前は0.6X系であったと思われる。

日本語を使うためにしたこと
~/GNUstep/Defaultディレクトリ内にwmakerの設定のためのファイル群がある。

WMGLOBAL, WMRootMenu, WMState, WMWindowAttributes, WindowMaker

これらがあると思う。

WMGLOBAL

WMGLOBALの中身は

{
  MultiByteText = YES;
  SystemFont = "-*-helvetica-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-*-medium-r-no
rmal-*-%d-*,-misc-fixed-medium-r-normal-*-%d-*-jisx0208.1983-*";
  BoldSystemFont = "-*-helvetica-bold-r-normal-*-%d-*-*-*-*-*-*-*,-*-*-medium-r-
normal-*-%d-*,-misc-fixed-medium-r-normal-*-%d-*-jisx0208.1983-*";
}

のようになっている。 MultiByteTextをYESにすることにより日本語のような2バイト文字をタイトルバーやメニューに使用するのが許可されるのだ。
なおSystemFontやBoldSystemFontはいまいちよく分からない。 だが、これらのフォントが「アイコンやドックの設定ウィンドウ内のフォント」「WPrefsの表示に使われるフォント」「ポップアップバルーン内のフォント」として使われている。 WPrefsでは大きめ(16ポイントくらい)の日本語フォントを使うと設定ウィンドウ内の日本語文が切れてしまい(文字の表示領域をはみ出してしまうみたい?)悲しいことになるのでご注意を。

※WprefsはwmakerのためのGUI設定ソフト

WMRootMenu

次にWMRootMenuの中身はだいたいこうである

"/home/my_login_name/GNUstep/Library/WindowMaker/menu.ja"

menu.jaは日本向けのルートメニューの初期設定ファイルである。 筆者の環境では/etc/X11/WindowMakerなどに各国のユーザー向けのメニュー設定ファイルが詰まっている。 これを~/GNUstep/Library/WindowMaker/menu.jaとしてコピーした。 ただこの方法だと、手元にコピーしたmenu.jaをエディタで編集することによってルートメニューに新たな項目などを加えていく方法をとらざるをえない。 WPrefsによりGUIからメニューを編集するという方法もあるが筆者は試したことはない。

menu.jaの例はこちら。 筆者の普段使っているものをほぼそのまま載せた。 何かの参考になれば幸いである。

WMWindowAttributes

次はWMWindowAttributesだが、これはwmakerが自動で編集する類のものであるらしい。 これの手動編集を勧める輩は世の中にそう多くはないようで、筆者もこれに倣うことにしたい。 どのアプリケーションにどのアイコンを設定するか、タイトルバーなどをつけないアプリケーションはどれかなどの情報が記録されている。 例えばkinput2+canna使用時にモジラのウィンドウの下部分にくっつく[ あ ]ウィンドウ(名前を知らない)などは

  "mozilla-im-status.MozillaImStatus" = {
    NoResizebar = Yes;
    NoCloseButton = Yes;
    NoTitlebar = Yes;
    NoMiniaturizeButton = Yes;
    Unfocusable = Yes;
  };

のように記述されていた。
ちなみにその昔Netscape4.7を使っていた頃、 日本語入力をしようとC-oを押すと [ あ ]ウィンドウ(名前を知らない)とNetscape自身との フォーカスの取り合いが起こり入力が非常にしづらくなる、 という現象があったため/usr/share/WindowMaker/Defaults/WMWindowAttributesというファイルに以下のように書き足した(外側のカッコ{}の中にはいれてあげるわけだが・・)記憶がある。

Kinput2 = { 
  NoTitlebar = Yes; 
  NoResizebar = Yes; 
  NotClosable = Yes; 
  NotMiniaturizable = Yes; 
  KeepOnTop = Yes; 
  Omnipresent = Yes; 
  SkipWindowList = Yes; 
  NoHideOthers = Yes; 
  NoKeyBindings = Yes; 
  NoMouseBindings = Yes; 
  KeepInsideScreen = Yes; 
  NoAppIcon = Yes; 
  Unfocusable = Yes; 
  DontSaveSession = Yes; 
};

なにやら~/GNUstep/Default/WMWindowAttributesにも書き込む必要がある場合もあるらしい・・・。 ただ、これを記述してもフォーカスを取り合ってしまう場合があるらしい。
なんともはや・・・

WindowMaker

そしてWindowMakerというファイル。 これがタイトルバーにどの色を使うかどのフォントを使うか、背景はどうするか・・・などの「見ため」関する記述が連なっている。 何か「テーマ」を適用したあとはこのファイルが即座に書き換えられるらしく、 ダウンロードしてきたテーマを適用してみたが付属の背景が気に入らなかったといった場合にはこのファイルを編集するだけで背景だけを変えたりできるので(テーマの作者さんには悪いけれども)何かと便利だ。 テーマのデータファイル自体に影響はないのでおすすめかと・・・(何

日本語フォントを一括設定するwsetfontコマンド

ちまたでダウンロードできるテーマはたいていASCII文字に対する設定しかなされていない。 ただ、そう感じるのは日本人が2バイトのひらがなや漢字を普段つかうからであって、ASCII文字しか使用しない某国の連中にとってはそんな設定は不必要でありむしろ邪魔なのだ(ろう)。 よってダウンロードしてきたテーマを適用した途端タイトルバー、メニュー、アイコン、クリップetcのフォントが変わってしまうことがしばしばある。 日本語フォントの設定はないため、日本語フォントは解読不能なコードとなって表示されたりしてしまう。 (wmakerのversion0.80くらいともなると、日本語フォントを何とか表示しようとがんばってくれる、ビットマップフォントをモトにしているので、あまりきれいな文字にはならなくて悲しいのだが・・)
あらかじめ『タイトルバーはこのフォント、メニューのタイトルはこのフォント・・・』という感じで決めておき、テーマを変更した際などに文字が化けたときそれを呼び出すことができる。 筆者の場合~/GNUstep/Defaults/WMGLOBALと、/usr/share/WindowMaker/Defaults/WindowMakerという二つのファイルにフォント設定を書いた。
~/GNUstep/Defaults/WMGLOBALは上記にある通りである。 SystemFontBoldSystemFontはここで指定されているわけだ。

/usr/share/WindowMaker/Defaults/WindowMakerの中の一部を

WindowTitleFont =
"-*-helvetica-bold-r-normal-*-12-*-*-*-*-*-iso8859-1,-*-fixed-medium-r-normal-*-
14-*-*-*-*-*-jisx0208.1983-*";
MenuTitleFont =
"-*-helvetica-bold-r-normal-*-12-*-*-*-*-*-iso8859-1,-*-fixed-medium-r-normal-*-
14-*-*-*-*-*-jisx0208.1983-*";
MenuTextFont =
"-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-iso8859-1,-*-fixed-medium-r-normal-
*-14-*-*-*-*-*-jisx0208.1983-*";
IconTitleFont =
"-*-helvetica-medium-r-normal-*-8-*-*-*-*-*-iso8859-1,-*-fixed-medium-r-normal-*
-10-*-*-*-*-*-jisx0208.1983-*";
ClipTitleFont =
"-*-helvetica-bold-r-normal-*-10-*-*-*-*-*-iso8859-1,-*-fixed-medium-r-normal-*-
10-*-*-*-*-*-jisx0208.1983-*";
DisplayFont =
 "-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-iso8859-1,-*-fixed-medium-r-normal
-*-14-*-*-*-*-*-jisx0208.1983-*";

のように書きかえた(らしい)。←ずいぶんと昔のコトなので忘れ気味・・・
大抵名前を見れば分かると思うが

  • WindowTitleFont ではウィンドウのタイトルバーで使うフォントを指定、
  • MenuTitleFont ではメニューのタイトル部分で使うフォントを指定、
  • MenuTextFont ではメニューの各項目内で使うフォントを指定、
  • IconTitleFont ではアイコン(ウィンドウを最小化したときに表示される)上で使うフォントを指定、
  • ClipTitleFont ではクリップ(ダブルクリックするとランチャー?が出たり消えたりする、デフォルトでは画像ファイルをドロップすると背景に設定してくれたかな・・・、)上で使うフォントを指定、
  • DisplayFont ウィンドウの現在位置(+200, +621とか)などを表示するとき(ウィンドウを移動させるときなどに見られる)に使うフォントを指定する。
  • あとついでにLargeDisplayFontというのもあり、これはどうやらワークスペースの移動の際に今いるワークスペース名をテレビのテロップのように一時的に表示させる際に使用するフォントの指定だと思われる。
    たぶんこれも指定しないとテロップが化ける可能性があるので要設定だろう。

フォントは " で囲んだ中に , でASCII文字用のフォント名と日本語文字用のフォント名を区切って書くようだ。 前のバージョン(0.6系?)ではワイルドカードを書かずにフォント名に多用されるハイフンを続けて書くと、どうもうまくフォントをロードしてくれなかったような気がする。 皆様ご注意を・・・。

かくのごとくファイルを編集したら

$ wsetfont japanese

と打つことにより、設定したフォントが適用されるようになる。

じつは筆者は『テーマのデータファイル(styleというファイル)の中で全てのフォントを指定』しているため、wsetfont を全然使用していない・・・。 だからLargeDisplayFontを指定しなくても涼しい顔をしているわけだが・・・。