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 のビルドを再開する。
次回はパッチとビルド方法について解説する予定。

Building my GNOME 3.0.

前に紹介した GNOME 3.0 の Live CD もベータ版にあわせて順調にリリースを重ねているようで、そろそろ My Desktop も新しくしてみようとパッケージのビルドを開始してみた。
まずはベースとなるシステムを今までの Ubuntu の Maverick から Natty に上げてみる:


aihana@mikeforce3:~>lsb_release -a
LSB Version:	core-2.0-amd64:core-2.0-noarch:core-3.0-amd64:core-3.0-noarch:core-3.1-amd64:core-3.1-noarch:core-3.2-amd64:core-3.2-noarch:core-4.0-amd64:core-4.0-noarch:cxx-3.0-amd64:cxx-3.0-noarch:cxx-3.1-amd64:cxx-3.1-noarch:cxx-3.2-amd64:cxx-3.2-noarch:cxx-4.0-amd64:cxx-4.0-noarch:desktop-3.1-amd64:desktop-3.1-noarch:desktop-3.2-amd64:desktop-3.2-noarch:desktop-4.0-amd64:desktop-4.0-noarch:graphics-2.0-amd64:graphics-2.0-noarch:graphics-3.0-amd64:graphics-3.0-noarch:graphics-3.1-amd64:graphics-3.1-noarch:graphics-3.2-amd64:graphics-3.2-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-3.2-amd64:printing-3.2-noarch:printing-4.0-amd64:printing-4.0-noarch:qt4-3.1-amd64:qt4-3.1-noarch
Distributor ID:	Ubuntu
Description:	Ubuntu Natty (development branch)
Release:	11.04
Codename:	natty
aihana@mikeforce3:~>

ただし、一度に全てのパッケージをあげようとすると今の GNOME 2 環境がぼろぼろになるので、以前痛い目にあった経験を生かしつつ影響の少ない範囲で。まずは libc、toolchain、xorg 系のライブラリ、システムライブラリ、ユーティリティ なんて順で上げていく。今回は binutils が曲者だったなぁ :|
で Ubuntu は次の Natty から GNOME 3.0 ではなく独自の Unity UI を採用するため、肝心な GNOME 3 系のパッケージはほとんど揃っていない状況。なので Debian の experimental パッケージを参考に依存関係に従い要所々で Build-Depends なパッケージをアップグレードしながらビルドしていく。今のところ gnome-keyring-3 までは完了。ちなみに、日本語メッセージ・カタログの更新はパッケージのインストールが完了した後に片付ける予定。
そんなもので、ここで紹介できるアプリはまだまだ少ないのだが GTK+ 3 付属の testgtk や新しくなった GNOME Control Center などでも。
GTK+ 3.0 はもちろん GTK+ 2.0 と一緒にインストールしておける (まぁこれは GTK+ 1.2 系から 2.0 系にアップグレードした時と同じ条件だけれど)。細かい変更点はリリースノートや Migrating from GTK+ 2.x to GTK+ 3 なんかを参照すれば特徴や規模とかはわかるはず。アプリの移植なんかもあるので、後者は近いうちに抄訳する予定 :)
GTK+ に付属する testgtk:
building-gnome3-gtk3-testgtk-20110306.png
目立ってウィジェットの追加などはないので 2.0 系とほとんど変わらない。表示している色とか文字とかは従来の rc ファイルから css 形式に変更になっている。そのため GtkStyle クラスべったりな、特に 2.0 系の初期からこのスタイル周りの変更を適用していない古いアプリなんかは大変だな :Oこの辺の概念や 2.0 系の頃の GC のプロパティとの違いとか。
さらに 2.0 系後半で Deprecated な烙印を押された API がことごとく無くなっているのも追い打ちになっていたりして。
building-gnome3-gtk3-testlabel-20110306.png
GLib や Pango といったバックエンド系ライブラリは 2.0 系を踏襲しているのであまり変化なし。
building-gnome3-gtk3-testappchooserbutton-20110306.png
とはいえ、新しいウィジエットが全く無いわけでもなく。Combo と GtkChooser 系を組み合わせた感じで、コンボのメニューから [その他のアプリケーション…] を選択するとダイアログが出てくるし:
building-gnome3-gtk3-testappchooserbuttondialog-20110306.png
これも新ウィジェットかな。こちらはGNOME コントロール・センターでも多用されているスイッチ風のウィジェット:
building-gnome3-gtk3-testswitch-20110306.png
こちらは新しいコントロール・センターのシェル。ますますどこぞの OS のものと似てきたな:
building-gnome3-gtk3-gcc-20110306-01.png
シングル・ウィンドウなスタイルで、シェルにあるアイコンをクリックすると中身だけ切り替わる:
building-gnome3-gtk3-gcc-20110306-02.png
これは時刻と日付を変更する設定。左上にある [All Settings] ボタンで元のシェル画面に戻る。
building-gnome3-gtk3-gcc-20110306-03.png
ネットワークの設定は NetworkManager を使っているのだけれど、今は Build-Depends なバージョンが合わず無効にしている。
最後は gnome-disk-utility。これがビルドの順番で一番最初に GTK+3 化ドしたアプリ:
building-gnome3-gtk3-gdu-20110306.png
ちなみに上のアプリのテーマはデフォルトです。既に gnome-themes 系のアプリもインストールしたので、おそらくセッションを入り直せばもう少しはマシな見映えになるはず。

Nautilus Renames Extension 2.0 RC2 was out.

前のリリースからだいぶ時間がたった上に、今だに Release Candidate だけれども。
コマンドラインでの使用には問題は無かったけど、GConf を利用した Nautilus からの起動に Bug があったため修正しておいた。おまけに、Bug は1個ではなく2個あったもので、直してリリースしようと思ったらとりやめてまた修正といった次第。
下記のリンク、またはプロジェクトの Trac から入手できます。
See Also nautilus-renames-1.9.95.tar.bz2: Release Candidate2
See Also 開発リポジトリ
今週末には新バージョン出せるかも ;)

GNOME Shell on Live CD.

再来月は4月7日のリリースに向けて開発やテストが進んでいる GNOME 3.0 だけれど、このあいだテスト用に Suse ベースの Live CD が公開されたということで試してみた。
この Live CD は GNOME 3.0 のテストというよりは、どちらかというと GNOME Shell のベータ版のお披露目っぽい構成だった。そんなものなのでここでも同じ Live CD で USB イメージを使った GNOME Shell のプレビューが紹介されている。ちなみに、GNOME 2.30/2.32 のパッケージなんかが混ざっていたし。そういえば GNOME コントロールセンターは 3.0 ベータ版だったが、MacOS の設定ダイアログそのものだったな:

tux@linux:~/Desktop> rpm -qa | grep gnome | sort -n
NetworkManager-gnome-0.8-5.1.i586
bundle-lang-gnome-en-11.3-8.1.noarch
gnome-applets-2.30.0-2.4.i586
gnome-bluetooth-2.91.2-77.6.i586
gnome-bluetooth-lang-2.91.2-77.6.noarch
gnome-control-center-2.91.6-152.1.i586
gnome-control-center-lang-2.91.6-152.1.noarch
gnome-icon-theme-2.91.6-53.1.noarch
gnome-icon-theme-symbolic-2.91.6-12.1.noarch
gnome-keyring-2.91.4git.1296187376-144.1.i586
gnome-keyring-pam-2.91.4git.1296187376-144.1.i586
gnome-main-menu-0.9.14-4.3.1.i586
gnome-media-2.32.0-62.4.i586
gnome-media-lang-2.32.0-62.4.noarch
(中略)
gnome-screensaver-2.91.3-80.2.i586
gnome-screensaver-lang-2.91.3-80.2.noarch
gnome-session-2.91.4-106.11.i586
gnome-session-core-2.91.4-106.11.i586
gnome-session-lang-2.91.4-106.11.noarch
gnome-settings-daemon-2.91.8git.1294822610-113.2.i586
gnome-settings-daemon-polkit-datetime-2.91.8git.1294822610-113.2.i586
gnome-shell-2.91.5git.1295302904-65.7.i586
gnome-shell-lang-2.91.5git.1295302904-65.7.noarch
gnome-terminal-2.30.1-2.5.i586
gnome-themes-2.30.1-1.3.noarch
gnome-vfs2-2.24.3-2.11.i586
(中略)

焼いた CD-R を macbook に挿入して mac EFI から起動するとインストーラの画面が立ち上がるが:

HDD等にインストールするわけではなく loop バックで CD をマウントし、RADMDISK でホームを利用できるように構築してくれるので特に問題はない。まず Kernel を展開して
gnome3pre-20110206-02.png
使用する言語やキーボード配列やタイムゾーンなんかを設定していくと:
gnome3pre-20110206-03.png
マシンによっては結構時間がかかるが、GNOME デスクトップならぬ GNOME Shell が表示される:
gnome3pre-20110213-001.png
使い方はこちらのサイトにメモられているので参考する。簡単には、通常のデスクトップ・モードと、利用できるアプリケーションの起動やウィンドウの選択などを行うアクティビティ・モードを、いくつかの方法または一部は自動で切り替えながら作業できる環境と考えると分かりやすい。このモードの切り替えは、左上のアクティビティボタンとかいくつかのホットコーナー、ショートカットキーがある。
実際に使ってみる前に、まずは NetworkManager 経由で WLAN に接続しておく。
それから、この Suse 版は [F4] キーにデスクトップのスクリーンショットが割り当てられているものの、肝心の gnome-screenshot コマンドがインストールされていないので、別途入手して scp でパスが通っている場所に転送しておく。
ということで、以下スクリーンショットをいくつか。
左上隅の Activities ボタンをクリックするか、[Alt]+[F1] キーを押下するか、あるいはマウスカーソルをホットコーナー (デフォルトだと左上隅やデスクトップの下側) に移動すると、次のようなアクティビティモードになる。真ん中に現れる汎用ランチャや左側にある気に入りのランチャからアプリを起動したり、下にあるブックマークをクリックしてインターネットにつなげてみたり、右上にある検索ボックスからアプリやブックマークを素早く見つけたりする:
gnome3pre-20110213-002.png
真ん中にある汎用のランチャにあるアイコンをドラッグし、左側のお気に入りにドロップさせて追加することも可能。削除したい時は、アイコンの上で右クリックすると表示されるコンテキスト・メニューから指定する:
gnome3pre-20110213-003.png
上部のパネルにあるカレンダをクリックして開いたところ:
gnome3pre-20110213-004.png
アクセシビリティのメニューを開いたところ:
gnome3pre-20110213-005.png
電源管理のメニューを開いたところ:
gnome3pre-20110213-006.png
ユーザ名のボタンを押すと、各種設定やディスクトップの終了させることができる:
gnome3pre-20110213-007.png
今起動中のアプリやウィンドウがある時に [Alt]+[F1] キーを押下すると Exposé させることができる:
gnome3pre-20110213-008.png
[Alt]+[F2] キーを押下すると、コマンド入力ダイアログが開くので、コマンドライン名を指定してアプリを起動できる (この Live CD には gedit は入っていない模様);
gnome3pre-20110213-009.png
アクティビティ・モードの右側にある [+][-] のボタンを使ってデスクトップを追加したり削除することができる。デスクトップの真ん中下にあるのがデスクトップ切り替えビューアで、[Ctrl]+[Alt]+[→] キー [Ctrl]+[Alt]+[←] キーでデスクトップを移動できる:
gnome3pre-20110213-010.png
お気に入りのランチャにあるアイコンを右クリックすると、状況に応じて項目が変わるコンテキスト・メニューが表示される:
gnome3pre-20110213-011.png
あと、ちょっときついけど [Ctrl]+[Shift]+[Alt]+R キーを押下すると、右下にスクリーン・レコーダの赤い丸が表示されて、デスクトップ上の動きを動画として保存することができる。次はその例:

 


そんなこんなで GNOME の新し機能だけれども、こんな報告もあったりして、実用的になるまでまだ少し時間がかかるかもしれないが。
See Also Easy Breezy Beautiful GNOME Shell (in Japanese).: GNOME Shell に関する昔のブログ