GNOME 3.2 RC.

が出揃ってきそうな気配である。
自分の場合、安定版の GNOME 3.0 がリリースされて以来、ずっと開発版リリースのビルド・インストールを繰り返してきたのであまり新鮮味がないのだけれど、最新のβ版でかなり致命的な問題がいろいろ fix されて、ようやく普通のデスクトップに戻って来れたという安堵感がある。
しかしまぁ、今の安定版の出来はひどかった、ホントに :$文句を言いたくなるのも分からなくはない。例えば:

  • Evolution はメモリリークが酷く、一日ももたず SIGSEGV で落ちる
  • GNOME Shell もこれまたメモリリークが酷く、使っていると応答が遅くなるのが手に取るように分かる。一日に何回 ‘r‘ で再起動したか覚えていない
  • Empathy は安定版なのか開発版なのかわからないくらい動作が不安定だった
  • GDBus (GLib) が起動しないため、dconf のバックエンドを利用できず、デスクトップ設定が有効にならなかった
  • Ubuntu oneiric の upstart では DBus の pid ファイルが削除されないため、デスクトップを再起動すると DBus が起動されず、それを require する全てのサービスが機能しなかった (GDM なんかも含めて)

最後の二つは GLib の開発版の bug だけれども、これが他にもいろいろ (gvfsd が起動しないなどの) 弊害を伴っていたため、一時期はセーフモード (それも compiz !) で乗り切っていたくらいだ。まぁ、普段使うデスクトップを開発版にすること自体が間違いじゃないかとも言えないけれど、別環境を用意する余裕もないし、まず第一はこの酷い安定版から一刻も早く解放されたかったからだけど。
今の開発版 (バージョン 3.1.91) では、上記の問題はほぼ Fix されている。一番うれしいのは Evolution はやっとまともな状態になったこと。
そうそう、リリースノートの原本も準備されているので、次期バージョンのトピックスについてはそちらを参照のこと。
ちょっと気になった機能としては:
【GTK+】GtkFontChooser クラスのフォント・プレビュー
新しく設計し直された。しかしながら、無駄にフォントを大量にインストールしているような環境だと、ダイアログが表示されるまでに死ぬほど時間がかかる:
New-GtkFontChooser-20110921.png
【GTK+】GtkFileChooser クラスの最近開いたファイルの一覧
最近開いたフォルダが優先されて表示されるようになった。これは意外と便利:
New-GtkFileChooser-20110921.png
【GNOME Shell】新しいユーザ・メニュー
ちょっとだけかっこよくなった:
GNOME-Shell-New-UserMenu-20110921.png
【GNOME Online Accounts】オンラインアカウントとアプリを統合する
といっても、今のバージョンで使えるのは Evolution くらい。Google の受信箱が表示されたり、カレンダとマージしたり。
OnlineAccounts-20110921.png
(他にもあったと思うけど、思い出したらまた紹介する予定。)
ということで、以下は追加:
【Nautilus】サイドバーの改良
これは独自の変更なんだけれども、その発端は GNOME 3.0。
GNOME 3.0 になって Nautilus の UI はかなり簡単になったというか違和感があるというか、個人的には使いづらくなって困っている。例えばツールバーに [↑] ボタンがなくなってしまってナビゲーションのアクションが増えてしまう傾向にあったり、サイドバーの「場所」と「ツリー」を切り替えるコンボボックスがなくなってしまて、ユーザ規模とシステム規模の切り替えがスムースにいかなかったり。
で、このあたりを独自に直すとメンテナンスが大変なので、簡単にできそうな Hacking を。それはサイドバーの「場所」モードにあるショートカット・エントリで、デフォルトでは最後尾にある「コンピュータ」と「ネットワーク」の位置と「ブックマークの一覧」の位置を交換するというもの。これは、ブックマークが増えてブックマーク一覧が長くなってしまうと、どんどん「コンピュータ」と「ネットワーク」の位置が下がっていってしまって、ショートカットにならないのに不満がつのって。本当はデフォルトで折りたためたりすれば良いのだけれども。
これが改良する前のサイド・ペインで、ブックマークをいろいろ登録したため、コンピュータのショートカットにアクセスするために毎回スクロールさせないいけなくなった:
nautilus-sidebar-order-old-20110925.png
これが改良した後のサイド・ペイン。「デバイスの一覧」のエントリが増えなければ、なんとかショートカットでジャンプできる:
nautilus-sidebar-order-modified-20110925.png
一応 Nautilus ファイルマネージャは毎回のリリースで進化しており、全てのメディアや場所をシームレスに扱える基本的なファイル操作は全然問題ない。ただユーザ・インタフェースが MacOS-X に似てどんどん簡略化されているのが気に入らない。もともと GUI ありきの OS とは違い、CUI がまだまだ健在な Linux ではそのコマンドライン操作のイメージがそのまま GUI に転写されるようなインタフェースであってもらいたいものだ (例えば cd コマンドで一つ上の親フォルダに一発で移動するとかというイメージ)。パッチはこちら。

gdk-pixbuf Ref. translation.

Pango の翻訳が完了したので、やっと GTK+バージョン 2.14 系の翻訳を開始する。
で、まずは gdk-pixbuf から。このバージョンではまだ GDK 同様に GTK+ と一緒に配布されており、API はほとんど変化なし。GLib で GIO をサポートしたためそれに関連する API の実装が変更されていたり、I/Oストリームを使った API が追加されたくらい。
なので、そんなに時間はかからないと思うが。
しかし、新しい GNOME の開発者サイト、ずいぶんと閲覧しづらくなったな;(。バージョン別にリファレンスマニュアルがリンクされていないので、最新版ではないツールキットなんかを使って開発している連中から文句でないのだろうかと心配してみたり。
See Also gdk-pixbuf リファレンスマニュアル: v2.14.7 版の API リファレンス
See Also SVN リポジトリ: gdk-pixbuf リファレンスマニュアルの SVN リポジトリ (英文併記)
See Also 誤植/誤訳の報告はメールの他にこちらにて。

Pango Ref. translation is up.

と言っても、なんだかんだ一年もかかってしまった :O
それも最新版はかなり先に行ってしまったようだけど、他のライブラリ・バージョンとのリリースセットの関係からこればかりは仕方がない。時間はかかったけれど完訳と言うことで。
それに最新版と見比べてもセクションはそれほど変化は無いようだし。
ちなみにリリースセットの開始は GLib バージョン 2.18 の 2008年10月だから3年も経っていたのか。で、次は最近サイトがリニューアルした GTK+ (正確にはさらに細分化されて gdk-pixbuf、GDK、GTK+ の順だけど) のバージョン 2.14.x だ。
そんなわけで、このバージョンの API で何が新しくなったかはよく覚えていないけど参考にでもして下さい。
See Also Pango リファレンスマニュアル: v1.22.4 版の API リファレンス
See Also SVN リポジトリ: Pango リファレンスマニュアルの SVN リポジトリ (英文併記)
See Also 誤植/誤訳の報告はメールの他にこちらにて。

Nautilus Renames Extension 3.0 RC1 was shipped.

バージョン 2.0 をすっ飛ばしてのリリースだけれども良しとしよう。たいして大きな機能追加もバグ修正もなく、単に gtk-2.0 から gtk-3.0 に変えただけのリリースだし :X (GtkComboBoxTex クラスのコンパイルエラーを直したくらい)。
nautilus-renames30rc1-20110607.png
See Also nautilus-renames-2.9.0.tar.bz2: Release Candidate1
See Also 開発リポジトリ
See Also ホームページ
こちらも覚えていれば 3.0 として近日中にリリースする予定 :P

ATOK 3X for GTK+ 3.0.

Canna から乗り換えて以来、ATOK for Linux 一本でやってきたのだが、GTK+ 3.0 でビルド中の GNOME 3.0 アプリでは日本語入力はできないだろうなぁという不安がふとよぎったので、まずは確認してみる。良くも悪くも慣れ親しんだ ATOK で日本語が入力できなければ GNOME 3.0 デスクトップ作業はかなりキツイかなぁと。
ここでは、既にビルドした testgtk にある GtkEntry クラスのテスト・ウィジットを使ってみた:
atokx-gtk3-20110306-01.png
予想通り正しく入力はできないが、X経由で入力しているので変換前のコンテキストは表示されているようだ。とはいえ、キーボードからは「にほんごの」と入力したのだがこれでは全く使い物にならない。
GtkEntry ウィジェットの上で右クリックしてコンテキスト・メニューを表示してみる:
atokx-gtk3-20110306-02.png
この [入力メソッド(M)] のメニュー項目に、該当する入力メソッド (IIIM) がないのは、GTK+ 3.0 の入力メソッド・モジュール (Input Method Modules) に ATOK X3 で利用できるクライアント・ライブラリ、通称 iiimgcf が登録されていないからだ。当たり前だが。
GTK+ 3.0 では 2.0 と同様にいくつかの immodules (XIM とかタイ語の独自系フレームワークなど) がデフォルトで用意されているが、ATOK 用は Justsystem の製品に含まれていた im-iiim.so なるモジュールをインストールしておく必要がある。今使っている GTK+ 2.0 だと:

aihana@mikeforce3:~>cat /etc/gtk-2.0/gtk.immodules
# GTK+ Input Method Modules file
# Automatically generated file, do not edit
# Created by /usr/bin/gtk-query-immodules-2.0 from gtk+-2.22.1
#
"/usr/lib/gtk-2.0/2.10.0/immodules/im-ipa.so"
"ipa" "IPA" "gtk20" "/usr/share/locale" ""
(省略)
"/usr/lib/gtk-2.0/immodules/im-iiim.so"
"iiim" "Internet/Intranet Input Method" "iiimgcf" "/usr/share/locale" ""

ちなみに ATOK を使った日本語入力要求の流れはこんな感じかな。変換や確定、表示といった結果はこの逆ということで。

GTK アプリ → (X経由) → GTK IMConext → im-iiim.so クライアント → libiiim*.so ライブラリ → (IIIM プロトコル) →  iiimd デーモン → 日本語辞書

ということは、GTK+ 3.0 用の im-iiim.so クライアントを用意すれば 2.0 同様に日本語入力できるわけで、それも 2.0 と 3.0 の両クライアントからそれぞれ利用できるということになる。
というわけで、製品版を購入すると IIIMF のソースアーカイブと Justsystem が独自に作成したパッチがいくつかついてくるので、これを GTK+ 3.0 とリビルドしてみる。サーバ側の iiimd デーモンや libiiim*.so ライブラリは既にシステムにインストール済のものを利用したりリンクするので、今回は iiimgcf を GTK+ 2.0 から 3.0 へ移植するといった感じ。
結果からいうと、移植してリビルドすると見事日本語入力できるようになった 8)
移植の際は Migrating from GTK+ 2.x to GTK+ 3 と testgtk.c を参考にした。前のブログでも書いておいたけど、GtkStyle クラスは全く利用できないため書き換えが必要だった。Justsystem が提供している iiimgcf は GTK+ 2.0 の初期バージョンからまったく更新されておらず、この GtkStyle を使ったコードが多くて手こずったが。あと、ステータスバーとかは GDK を使っているが、こちらは GTK+ 3.0 になって deprecated になったものが多く、Cairo を使うことが推奨されているため、いくつか書き直した (例えば gdk_draw_rectangle() なんか)。コードの書き換えは、前述の testgtk のソースコードが大変役に立った。バージョン 2.0 と 3.0 の testgtk.c を比較すると書き換え時の違いがよく分かる。どこぞの掲示板とかで GTK+ プログラミングを教えて!とか書き込まれているのをみると、まずは testgtk.c を読め!とでも返事した方がイイな :X
とはいえ、最初は iiimgcf の GTK+ 3.0 を誰かビルドしているかなぁと思い、最新の IIIMF のソースコードを探してみたけど、配布元と思われる OpenI18n という団体にもアクセスできないし、ウェブにもころがっていなかったので、仕方なく移植したといった次第。まぁ、Justsystem はこの団体が公開しているソースコードを利用して売っているだけなので、コードが古いのはある程度仕方がないか。
実行時の注意点としては、ビルドした im-iiim.so を GTK+ 3.0 の所定の場所にインストールして、gtk-query-immodules-3.0 した結果を、GTK+ 2.0 のように /etc/gtk-3.0/gtk.immodules というファイルではなく、このドキュメントGTK_IM_MODULE_FILE の説明に従って、/usr/lib/gtk-3.0/3.0.0/immodules.cache といったファイルに保存すること:

aihana@mikeforce3:~>ls -al /usr/lib/gtk-3.0/3.0.0/immodules/
合計 480
drwxr-xr-x 2 root root   4096 2011-03-06 21:46 ./
drwxr-xr-x 5 root root   4096 2011-02-27 16:11 ../
-rw-r--r-- 1 root root  19488 2011-02-27 16:08 im-am-et.so
-rw-r--r-- 1 root root   6256 2011-02-27 16:08 im-cedilla.so
-rw-r--r-- 1 root root   7800 2011-02-27 16:08 im-cyrillic-translit.so
-rw-r--r-- 1 root root 309004 2011-03-06 21:46 im-iiim.so
-rw-r--r-- 1 root root   8224 2011-02-27 16:08 im-inuktitut.so
-rw-r--r-- 1 root root   6904 2011-02-27 16:08 im-ipa.so
-rw-r--r-- 1 root root  14576 2011-02-27 16:08 im-multipress.so
-rw-r--r-- 1 root root  14408 2011-02-27 16:08 im-thai.so
-rw-r--r-- 1 root root  19472 2011-02-27 16:08 im-ti-er.so
-rw-r--r-- 1 root root  19472 2011-02-27 16:08 im-ti-et.so
-rw-r--r-- 1 root root   8120 2011-02-27 16:08 im-viqr.so
-rw-r--r-- 1 root root  31512 2011-02-27 16:08 im-xim.so
aihana@mikeforce3:~>sudo bash -c 'gtk-query-immodules-3.0 > /usr/lib/gtk-3.0/3.0.0/immodules.cache'
aihana@mikeforce3:~>ls -al /usr/lib/gtk-3.0/3.0.0/immodules.cache
-rw-r--r-- 1 root root 1838 2011-03-06 21:46 /usr/lib/gtk-3.0/3.0.0/immodules.cache
aihana@mikeforce3:~>cat  /usr/lib/gtk-3.0/3.0.0/immodules.cache
# GTK+ Input Method Modules file
# Automatically generated file, do not edit
# Created by gtk-query-immodules-3.0 from gtk+-3.0.1
#
(省略)
#
"/usr/lib/gtk-3.0/3.0.0/immodules/im-iiim.so"
"iiim" "Internet/Intranet Input Method" "iiimgcf" "/usr/share/locale" "*"
(省略)

こんな感じで先ほどの testgtk から日本語を入力してみる。まずは[入力メソッド(M)]のメニュー項目には IIIM が表示されていることを確認:
atokx-gtk3-20110306-03.png
GtkEntry に実際に「にほんご」を入力して変換することもできた:
atokx-gtk3-20110306-04.png
ということで、GTK+ 3.0 でも今までと同じように日本語入力ができるようになったので、GNOME 3.0 のビルドを再開する。
次回はパッチとビルド方法について解説する予定。