GNOME Do を migemo 対応にしてみた

GNOME Do というランチャーみたいなものがあります。

GNOME 上のただのランチャーであれば、標準の Alt+F2 でも悪くないのですが、 GNOME Do は Plugin によって Emacs の Anything のように拡張できると言うところがポイントです。最近開発が止まり気味ですが、端で見ている限りは、十分枯れていて、もうやることが無くなってきたと言う風に見えます。

大変便利なのですが、とても残念なことに検索に日本語が(ほとんど)使えません。また、日本語が使えない上に L10N な日本語アプリ名で検索しようとするため、ほとんどのアプリが GNOME Do から起動できません。自分は、どうしても GNOME Do から起動したいものは、 /usr/share/applications/ の中に入っているショートカットファイルをいちいち書き換えて使っていました。

アルファベットに最適化されたヒューリスティックなスコアリングアルゴリズムを使っており、さらにキー入力イベントで処理しているため、以前コードを調べたときには日本語化は無理かと思っていました。一応多言語対応として簡単な InputMethod の対応は入っているのですが、ほとんどの環境でうまく動かなかったり、動いたとしても変換の手間があるため、GNOME Do の素早く選んで実行するという良さが生かすことができません。

最近、CMigemoがC#から使えると知っていろいろ実験してみたところ、 Linux 上の Mono でも使えることが分かりました。ということで、強引に GNOME Do に組み込んでみました。結果、激しく便利になりました。

アプリケーションだけでなくあらゆるプラグインmigemo で検索可能になるため、設定、コンタクトリストや各種ファイル、PDFや楽曲名など、素早く絞り込んで開くことが出来ます。これで一気に生活が楽になりました。今まで Emacs の Anything でやっていたことが GNOME Do で出来るようになったため、早くも anything-books.el の地位が危うくなりました。

@kaoriya さんありがとうございます!!! あと、こういうことが簡単にできる Mono すごい!!!


以下、その作業のメモです。興味がある方は at your own risk でどうぞ。

migemo 対応作業メモ

Ubuntu 10.10 amd64 上での作業です。 11.04 でも人間パッチで同様に出来ると思います。

CMigemoのコンパイル、インストール

2011/06/23 追記:不正な正規表現で落ちるバグがありましたので修正しました。kazuさんご連絡ありがとうございます。)

下のサイトから、最新版ソースをダウンロードする。

$ unzip cmigemo-default-src-20110227.zip
$ cd cmigemo-default-src/
$ chmod u+x configure
$ ./configure
$ vi src/wordbuf.c
→ ヘッダーに #include <limits.h> を加える
$ make gcc
$ vi dict/dict.mk
→ gcc の項目で、 euc-jp に加えて utf-8 を追加
$ make gcc-dict
$ sudo make gcc-install

この中の tools/Migemo.cs を後で使うのでまだ消さない。

GNOME Do の修正、インストール

修正内容は https://gist.github.com/1021707 にまとめてあります。(2011/06/23 パッチ内容修正)

$ cp (さっきの cmigemo のディレクトリ)/tools/Migemo.cs .
$ wget https://raw.github.com/gist/1021707/0a8739105314a4d9f14d5956f01e4c90d4c40e77/gnome-do_0.8.3.1+dfsg-2ubuntu1-migemo.patch
$ sudo apt-get build-dep gnome-do
$ apt-get source gnome-do
$ ORGDIR=gnome-do-0.8.3.1+dfsg
$ cp Migemo.cs $ORGDIR/Do.Platform/src/Do.Platform/Migemo.cs  #2011/06/23 訂正
$ cd $ORGDIR
$ patch -u -p1 < ../gnome-do_0.8.3.1+dfsg-2ubuntu1-migemo.patch
$ dpkg-buildpackage -rfakeroot -uc -b
$ cd ..
$ sudo dpkg -i gnome-do_0.8.3.1+dfsg-2ubuntu1_amd64.deb

多分、これでコンパイルが通ってインストールできると思います。

ポイントは、 cmigemo の最新版を使って、さらに辞書を UTF-8 にすることです。

PPA とかにすると良いのかもしれませんが、ライセンス的に Migemo.cs をどうしていいのかよく分からなかったので、要望があれば考えようと思っています。