Gaim 2.0.0cvs translation updating.

Gaim 2.0.0cvs のメッセージを更新中。まだまだ完了していないけれど、ここに置いてあるので試してみたい方はどうぞ。誤訳/誤植などの報告はメールかコメントまでどうぞ:

aihana@mikeforce2:/tmp/gaim-HEAD/po>intltool-update ja
.................................................................
.................................................................
.................................................................
................................................ 完了.
2272 個の翻訳メッセージ, 141 個の翻訳があいまいです, 44 個の未訳のメッセージ.

gaim200cvs-20051225.png

Avahi now requires POSIX capability.

gnome-vfs-2.13.3 から、Avahi Zeroconf は >= 0.6 を要求されるようになった。以前試した時はデーモンが起動しなかったし、最新版では Howl 互換の機能が追加されたようなので、v0.6.1 をビルド・インストールすることにした。
が、またしてもデーモンが起動しない。仕方ないので、gdb 上で起動しながらデバッグしてみると、libdaemon で fork(2) した後にタイムアウト (20sec) していた。glibc の中の select(2) なんかも stepping してみたけど、まぁこちらは問題ない。次に子プロセスであるデーモン本体を stepping していくとタイムアウト後に avahi_caps_reduce() (main.c:1129) で返り値が FALSE となってデーモン処理を中断している:

1126         if (config.drop_root) {
1127 #ifdef ENABLE_CHROOT
1128             if (config.use_chroot)
1129                 if (avahi_caps_reduce() < 0)
1130                     goto finish;
1131 #endif

この関数 (caps.c:52) の中で cap_set_proc(3) を呼び出したところで、これまた返り値が FALSE となり、ちゃんと syslog にログを出力していた:

52     if (cap_set_proc(caps) < 0) {
53          avahi_log_error("cap_set_proc() failed: %s", strerror(errno));
54          ret = -1;
55      }

で、ログはこんな感じ:

avahi-daemon[16979]: cap_set_proc() failed: Operation not permitted

見当がつかないので検索してみると、ちゃんと先人が残してくれたメモがあるじゃないですか。Kernel の Security Option で CONFIG_SECURITY_CAPABILITIES=[y|m] しないとダメらしい。ふm…:|
今の K26 では有効にしていないので、2.6.14ベースを再構築して対応することにした。
せっかくなんで、いつもの Nitro パッチと Nvidia ドライバを最新版にして、avahi-daemon を起動してみると:

avahi-daemon[2622]: Found user 'avahi' (UID XX) and group 'avahi' (GID XX).
avahi-daemon[2622]: Successfully dropped root privileges.
avahi-daemon[2622]: avahi-daemon 0.6.1 starting up.
avahi-daemon[2622]: Successfully called chroot().
avahi-daemon[2622]: Successfully dropped remaining capabilities.
avahi-daemon[2622]: Failed to read service directory.
avahi-daemon[2622]: New relevant interface vmnet1.IPv4 for mDNS.
avahi-daemon[2622]: Joining mDNS multicast group on interface vmnet1.IPv4 with address 192.168.122.1.
avahi-daemon[2622]: New relevant interface vmnet8.IPv4 for mDNS.
avahi-daemon[2622]: Joining mDNS multicast group on interface vmnet8.IPv4 with address 192.168.31.1.
avahi-daemon[2622]: New relevant interface eth0.IPv4 for mDNS.
avahi-daemon[2622]: Joining mDNS multicast group on interface eth0.IPv4 with address 192.168.0.3.
avahi-daemon[2622]: Network interface enumeration completed.
avahi-daemon[2622]: Registering new address record for 192.168.122.1 on vmnet1.
avahi-daemon[2622]: Registering new address record for 192.168.31.1 on vmnet8.
avahi-daemon[2622]: Registering new address record for 192.168.0.3 on eth0.
avahi-daemon[2622]: Registering HINFO record with values 'I686'/'LINUX'.
avahi-daemon: S98avahi-daemon startup succeeded
avahi-daemon[2622]: Server startup complete. Host name is mikeforce2.local. Local service cookie is XXXXXXXX.

という感じで見事起動に成功。
v0.6 から外にあるドメインも参照できるようになったので、以前よりましていろいろなサービスを検出できるようになった:
avahi-discovery-20051218.png
See Also Secure Programming for Linux and Unix HOWTO: 日本語版 (JFdocs から)

Make a pseudo-bold with emboldening.

ホント、X でフォントの調整に凝ってしまうと大変なことになるなぁ…:(
GTK+-2.7/2.8 以降、擬似的な太字を表示できなくなったので仕方なく太字(ぽい)フォントで置き換えていた:

<match target="pattern" >
<test compare="more" name="weight" >
<const>medium</const>
</test >
<edit mode="assign" name="family" >
<string>DejaVu Sans</string>
</edit>
</match>

その時はてっきり Fontconfig をアップグレードしたからだと思っていた。ここで凝りすぎてしまうと、全てのフォント (約350種) を一通り表示して妥当なものを選ぶのに大変な労力と時間を必要とする。なにせインストールした Freetype のバージョン毎に同じフォントでもその表示が微妙に違う。開発者に言わせれば、確かに日本語フォント自体にもバグがあるのだけれど、そこでフォント自身を変更するほど Super Freak じゃない。とはいえ、希に古いバージョンの方が、自分にとっては綺麗に描画される場合もあるわけで、そこが悩ましい。フォントの調整も GNOME 経由でまとめてできるものもあれば、Mozilla/Firefox のように Xft 経由で直接レンダリングするケースもあり、面倒なんで結局ほったらかしにしていた。
で、次期 X11R6.9/X11R7.0 で採用される予定の freetype-2.1.9/Fontconfig-2.3.2/Xft-2.1.7 だと、日本語フォントで擬似的な太字がサポートされているとのことで、せっかくだから一気に最新版にグレードアップしてみた。Freetype-2.1.10/Fontconfig-2.3.92/libXft-2.1.7 の順にビルド・インストールして、適当なアプリ gnome-about でその具合を確認してみた。が、全く効果が無く bold で表示されるべき部分はmedium のままだ:
freetype-embolden-no-effect.png
画像を縮小しているので見た感じは太字っぽく表示されているように見えるが…
そんなこんなで、はまってしまい解決するのに三日もかかってしまった :$。GTK+/Pango をリビルドしたり、全てのライブラリをデバッグしたのだけれど、結局のところこれらには問題はなかった。解決のきっかけは fontconfig-2.3.92/README ファイルの一文:

Change the rule for artificial emboldening in fonts.conf.in.  This
enables the support for artificial emboldening included in cairo
(patch by Zhe Su).

確かに Cairo 経由で描画するようになってから太字が表示できなくなったっけ。というわけで、cairo-1.0.2 上で grep すると確かにそれらしいコードがでてきた:

aihana@mikeforce2:/opt/cairo-1.0.2>grep embolden *
src/cairo-ft-font.c:1419:       FcBool embolden;
src/cairo-ft-font.c:1422:                             FC_EMBOLDEN, 0, &embolden) != FcResultMatch)
src/cairo-ft-font.c:1423:           embolden = FcFalse;
src/cairo-ft-font.c:1425:       if (embolden)
src/cairo-ft-font.c:2201:         * embolden glyhps if required

そういえば、Su Zhe 氏って昔の同僚だな。
早速、cairo をリビルドしてインストールすると、問題なく疑似 bold で表示された:
freetype-embolden-effected.png
これはこれで良いのだけれど、やっぱりフォントの調整をしなくてはならないし、今まで見慣れていたフォントが違って見えるのは困ったもんだな。

Gaim 2.0.0cvs works well but…

ちょっと目に付いた記事から、久しぶりに CVS 版をビルド・インストールしてみた。安定版の v1.5.0 がリリースされてから丸4ヶ月ほど経過しているので、ja.po の翻訳率が心配だ。
こちらも機能てんこ盛り。D-BUS (gaim-send で Gaim と通信可能) やら TrueSpeech/Speex やら iLBC コーデック (RFC3951) やら映像やらなにやら。 ./configure –help の出力が長いこと。それでも linphone 関連をアップデートしただけで、あっさりビルドできた。仲間が全員オフラインなので寂しい Screenshots だなぁ。
メイン・ウィンドウ:
以前のバージョンまでインタフェース的にバラバラだったものが統合された感じ。2.0版の方が直感的で良い。仲間リストの下にある二つの ComboBox で離席状態からオフラインまでコントロールできる。
gaim-2.0.0cvs-20051211.png
設定ダイアログ:
Notebook スタイルに変更された。個人的には以前のバージョンの方が良かったのだけれど。
gaim-2.0.0cvs-prefs-20051211.png
プラグイン・ダイアログ:
プラグインは別ダイアログに。プラグイン毎の設定は別にボタンが用意されダイアログ上で設定する。ホント、あっさり。
gaim-2.0.0cvs-plugins-20051211.png
会話ウィンドウ:
会話する相手が居ないので何だけれど、なんと会話ウィンドウに大きな変化が!!
スクロールがアニメーション表示される。なんとも芸が細かい。それだけ。
gaim-2.0.0cvs-conversation-20051211.png
情報ダイアログ:
今のところ変化なし。コンパイル時のオプションはこんな感じ。
gaim-2.0.0cvs-about-20051211.png
もうちょっと使ってみないと分からないけれども、デフォルトのサウンドは MSN に似たような音だ。そうそう、なんか設定したらそのまま SIGSEGV したけど、気になった問題はそれくらいか。
で、肝心のメッセージ翻訳だけれど…

aihana@mikeforce2:/tmp/gaim-HEAD/po>intltool-update ja
.................................................................
.................................................................
.................................................................
................................................ 完了.
1827 個の翻訳メッセージ, 457 個の翻訳があいまいです, 143 個の未訳のメッセージ.

:} :0 :$ ;(
さてと見なかったことにして寝るか。

Say bonjour from G14.

明日は G13.3 Tarballs Due Date。来年の3月リリースまで残り4ヶ月ほど。
いくつか Newbie なアプリが Proposed されているけれど、従来のアプリもいろいろ改良されているようだ。例えば、シンプルで汎用的なメッセージ・バスの実装に D-BUS を採用したりとか、Zeroconf の仕様を導入するとか。Zeroconf の実装は結構前からあるようで、Bonjour もその一つ。GNOME でも G10 の頃から Howl とか Rendezvous (Apple mDNSResponder) とかを利用したアプリがあったっけ。後者はそのまま Bonjour と名前を変えてしまいアカウント登録しないとソースを入手できなくなったけども。
G13 (G14) では、freedesk.orgAvahi を D-BUS 経由で利用する実装が進められている模様:
gnome-vfs: 今のところ Howl と Avahi は排他で指定できる。モジュールは libdns-sd.so (ftp/WebDAV/SSH)。
Rhythmbox: DAAP を使って楽曲を共有する際に mDNS (Multicast DNS) 関連で利用する。
rb-daap-share-20051211.png
Rythmbox は v0.9.2 から機能てんこ盛りで、不安定さも少なくなりかなりお薦め。このアプリこそ Proposed module 入りして欲しいものだ。
gnome-games: G12までは Howl を使ってネットワーク対戦用のサーバを立てていたのが、Avahi も選択できるようになった。Nibbles なんかで利用できるようだけれどサーバを認識してくれないな。
gnibble-20051211.png
Avahi はコマンドラインも提供しているので、mDNS サービスを looking up すると:

aihana@mikeforce2:~>avahi-discover
A new main_window has been created
Browsing domain 'local' on -1.0 ...
Browsing for services of type '_http._tcp' in domain 'local' on 4.2 ...
Browsing for services of type '_daap._tcp' in domain 'local' on 4.2 ...
Browsing for services of type '_http._tcp' in domain 'local' on 3.2 ...
Browsing for services of type '_daap._tcp' in domain 'local' on 3.2 ...
Browsing for services of type '_http._tcp' in domain 'local' on 2.2 ...
Browsing for services of type '_daap._tcp' in domain 'local' on 2.2 ...
Found service 'test' of type '_http._tcp' in domain 'local' on 4.2.
Found service 'Takeshi AIHANA's Music' of type '_daap._tcp' in domain 'local' on 4.2.
Found service 'test' of type '_http._tcp' in domain 'local' on 3.2.
Found service 'Takeshi AIHANA's Music' of type '_daap._tcp' in domain 'local' on 3.2.
Found service 'test' of type '_http._tcp' in domain 'local' on 2.2.
Found service 'Takeshi AIHANA's Music' of type '_daap._tcp' in domain 'local' on 2.2.
Browsing for services of type '_workstation._tcp' in domain 'local' on 2.2 ...
Browsing for services of type '_workstation._tcp' in domain 'local' on 4.2 ...
Browsing for services of type '_workstation._tcp' in domain 'local' on 3.2 ...
Found service 'mikeforce2 [00:0e:a6:60:48:e3]' of type '_workstation._tcp' in domain 'local' on 2.2.
Found service 'mikeforce2 [00:50:56:c0:00:01]' of type '_workstation._tcp' in domain 'local' on 3.2.
Found service 'mikeforce2 [00:50:56:c0:00:08]' of type '_workstation._tcp' in domain 'local' on 4.2.

こんな感じで取得して GTK+ のリストで表示される(リストなので検索もダイレクトに実行できる!):
avahi-discover-20051211.png
Avahi は言語バインディングが豊富 (PythonやMono、Qtなど) だから事実上の標準かな。v0.6.0 はデーモンが正常に起動してくれなかったけど最新版はどうかな。