Window Maker と PPxP


Window Makerを0.20.2に、PPxPを0.98112325にそれぞれバージョンアップしてみた。Window Makerの方は一応、追っかけしてるのと、いろいろバグ・フィックスがあったようだし、WPrefs.appも使ってみたかったし。PPxPの方も追っかけしてるのと、あとxppxpmが待望のWindow Maker対応したのとで、これもmustだ。

どちらもすでに以前のバージョンのパッケージがあるものなので、単にソースを持ってきて、細かなところを擦り合わせてパッケージを作り直すだけでおおむねよかった、ハズなんだが、やっぱり気になる点がいくつか…

まずWindow Makerなんだけど、実はもうリリースされてから一ヶ月以上も経ってるから、実はあまり新しくないんだよなぁ。まぁ最新版といえば最新版なんだけど。パッケージそのものは何度も作ったんだけど、0.20.2を普通にmakeしても、メニューからアプリケーションが起動できないという謎があって、そのためにずっと出さないでいたのだ。原因は後述するけど…

オレってばWindow Maker使いとしてはとっても遅れてるヤツで、つい最近の0.20.1まで、ずっとdockitを使ってアプリをdockしてたんだ。ターミナルを開くrxvtとか、tcl/tkなものとか、その手のアイコンを持たないアプリをWindow Makerでdockするには、かつてはdockitというtclのscriptが主な方法として提供されていたんだけど、最近のWindow Makerはそうじゃなくなっていたのだ。それも久しく前から(笑)

自前のアイコンを持たないアプリでも、一旦起動してタイトル・バーの「属性…」から「高度な設定」の「Emulate Application Icon」にチェックを入れると、スカッとアイコンができて、dockできるようになるんじゃん。ったく、誰か早く言ってくれたらいいのに(笑)

Window Maker 0.20.2のパッケージ、それも日本語の使えるものが高橋さんのページでずっと前から提供されているし、情報もずっとここより豊富なので、もうオレのページからはWindow Makerは引込めようかとも思っていたんだけど、高橋さんのパッケージだとなぜか/usr/local以下にインストールされるようになっているのと、あとwm-oldmenu2newというshell scriptに問題が…

WPrefsというものがWindow Makerに附属するようになり、まぁ簡単に言うとWindowMakerの各種設定をするツールなんだけど、これってすげぇカッコイイし便利な反面、従来のメニューがそのままでは使えないのだ。書式が変更になってしまって、互換性がなくてね。

従来は(というか、WPrefsを使わない場合は)、~/GNUstep/Library/WindowMakerの下に、menu.jaというファイルがあり、これが実質的にメニューを記述したテキスト ファイルだった。で、そのファイル名を~/GNUstep/Default/WMRootMenuにそのまま"~/GNUstep/Library/WindowMaker"なんて書いて使っていたと思う。

それがWPrefsを使う前提だと、メニューを~/GNUstep/Default/WMRootMenuに直接記述するようだ。でもって、初めてWPrefsを使う場合は、~/GNUstep/Library/WindowMaker/plmenuが新しい書式のファイルなのでそれをWMRootMenuと置き換えて使うか、従来使っていたメニューファイルをwm-oldmenu2newでコンバートしなさい、などと書いてあるのだ。

ふ〜ん、コンバータが付いてるのか、親切〜、などと感心しつつ

wm-old2menu menu.ja

などとしてみるも、エラーになって全然コンバートされぬわ(笑)

wm-oldmenu2newって単なるshell scriptなんだけど、実行するとcommand notfoundとかのエラーが絶対に出そうもないところで出るのだ。エディタで開いてみても、特に怪しいところはないし、だいたいそんなもんリリースしねぇよなぁ、オレの環境のせいか… と不思議に思っていたところ、フと気づくと、改行コードがCRLFなんだよね。DOS上で書いたのかなぁ?

もしや?と思って改行コードをunixらしくLFのみにして再度実行すると、またもエラーが(泣)

だけど今度のエラーはそんな得体の知れないものではなくて、gcc -Eでうまくcppが起動できないよ、などというものだったので、面倒くさいからその部分を/lib/cppと直接cppを起動するように書き換えてしまった。今度はバッチリ、ちゃんとコンバートできたぜ。

さて、メニューもいつも見なれた自分のものになったし、WPrefs.appもカッコイイし、で機嫌よくパッケージを作り、インストールしてメニューからrxvtを起動してみる。

だがダメだった…

一瞬アイコンが変わり、なにやら起動しようとはしているらしいのだが、肝心な窓が開かないのだ。ログにもなにも残ってない。なんで…?

いろいろやってみるも原因はわからず現象は変わらずで、途方に暮れて0.20.1のソースと見比べてみることにしたよ。いろいろやる前にとっととソースを読めばいいんだけど、安定版として正式にリリースされているソースに、こんなハッキリした不都合があるワケがないから、きっとオレの環境の問題なんだと思っていたから後回しにしてしまったのだ。

該当するファイルはそのままな名前のrootmenu.cというファイルで、execCommand()という関数がそれだ。実際に見比べてみて、0.20.2ではちょっと修正されているのがわかった。

0.20.1では、

execl("/bin/sh", "/bin/sh", "-c", cmdline, NULL);

という形で、/bin/shを決め打ちで使ってメニューのコマンドを実行していたのが、0.20.2では簡単に書くと

shell = getenv("SHELL");
execl(shell, shell, "-c", cmdline, NULL);

などと、環境変数SHELLを参照して実際に使うshellを決めていたのだ。オレの場合は/bin/bashだ。で、すっごく不思議なんだけど、確かにexport SHELL=/bin/shなどとしてからWindow Makerを起動すると、確かにメニューからの起動もバシバシ動くんだよね。なんでbashだとダメなんだろう…?? /bin/sh なんてbashのsymbolic linkに過ぎないのに。

かといって、マジでSHELL=/bin/shなんてやっちゃうと、ターミナルを開いても~/.bashrcを読んでくれないので悲し過ぎる… と、いうことわ。早い話が~/.bashrcを読まない場合は大丈夫ってことだから、~/.bashrcの中になにかWindow Makerに取って都合の悪い記述があるってことか。

というわけで、調べましたよ。1行1行ね。するとどうも

stty cs8 -istrip -parenb

というのがイカンらしい。この行をコメントにすると、SHELL=/bin/bashでもイケるでわないか。しかし、このstty文って、Run Run Linuxかなんかに書いてあった、bashで8bit characterを通す呪文だったはず。どういうワケだかオレの.bashrcにデフォとして存在していたが、いつの時代の呪文なんだいったい… JE 0.9.8とか、とにかく恐ろしく古いのは確かだ。 消して様子を見たけど、こんなのなくたって、bashで漢字ファイル名とかもスカスカ扱えるぢゃないか。バカなオレ。

すっかり具合良く動くようになったものを、例によってパッケージ置き場に置いておいた。けど、Window Makerは高橋さんを始め、パッケージにしている方が大勢いるし、本格的にI18nが進めば日本語化パッチだのなんだのが不要になり(Window Makerは今でも不要だけどね)USのどこかのサイトに転がっているパッケージをただ入れても黙って動く気もする。だもんで、ある日突然パッケージ置き場から姿を消すかも。カモカモ。

それと、今回はアイコン集だけ別パッケージにしてみた。アイコンなんて同じファイル名のものがたくさんありそうで、パッケージなんかにしちゃうとconflictの嵐で面倒そうだけど、まぁそういうときはrpm --nodepsでブチ込めばいいか、どうせアイコンだしなぁ、なんて考えてね。やっぱrpmにしとくと、ノートPCに全部インストールし直し、なんてときの可搬性がすごくいいしねぇ。

で、このアイコン集は実はAfterStepの頃から愛用しているヤツで、千葉大の吉永さんのページから頂いてきたものをベースにしている。吉永さんのページはWindow Makerの情報も満載なので、ぜひ一度見に行くといいと思う。

さて、PPxPも0.98112325にバージョンアップしたんだけど、これもパッケージ化自体は全然問題なくサクッとできた。userlinkも0.98aに一応したけれど、オレ的にはまだkernel 2.1系を使っていないので、それ向けと言われているuserlink-0.98aの真価はわからぬ。が、userlink-0.98の代替としてkernel 2.0.36でちゃんと動いているから問題はなさそうだ。

だが、オレ本来の目的でもあった、待望のWindow Maker対応xppxpmが、なぜか最初にmakeしたときはWindow Maker 0.20.2ではうまく動かなかったんだよね。

xppxpm -wmaker

として実行すると、プロセスとしては生きていて動いているものの、Xの画面上のどこにもそのアイコンなどが表示されない。つまり「見えないxppxpm」になってしまっていたのだ。

これも散々調べてみて、xxgdbで追いかけてみたりもしたんだが原因はわからず。仕方なくWindow Maker 0.20.1を使っていたんだけど、何度か別の用件でWindow Maker 0.20.2をrebuildしているうちに、いつの間にか動くようになっていた。かなり恥かしい状態ではある。謎のままとわ…

さらに恥かしいミスで、plastコマンドをパッケージに含めるのをずっと忘れていたことに気付いた。ぱぱんだ王国ぴ〜えんver0.2のページで

PPxP付属のplastコマンドにパスが通っている事を確認しとけよコラ

などと書いてあるのを見て、plastぉ?なにそれ?などと思いつつよく見ると、おぉ、たしかにmakeはされとる。しかしインストールはされず、という状態だったのだった。わははは。すまん。今パッケージ置き場に置いてあるヤツにはちゃんとplastも入っているから大丈夫だ。


メール 戻る