GNOME Do を migemo 対応にしてみた
GNOME Do というランチャーみたいなものがあります。
GNOME 上のただのランチャーであれば、標準の Alt+F2 でも悪くないのですが、 GNOME Do は Plugin によって Emacs の Anything のように拡張できると言うところがポイントです。最近開発が止まり気味ですが、端で見ている限りは、十分枯れていて、もうやることが無くなってきたと言う風に見えます。
大変便利なのですが、とても残念なことに検索に日本語が(ほとんど)使えません。また、日本語が使えない上に L10N な日本語アプリ名で検索しようとするため、ほとんどのアプリが GNOME Do から起動できません。自分は、どうしても GNOME Do から起動したいものは、 /usr/share/applications/ の中に入っているショートカットファイルをいちいち書き換えて使っていました。
アルファベットに最適化されたヒューリスティックなスコアリングアルゴリズムを使っており、さらにキー入力イベントで処理しているため、以前コードを調べたときには日本語化は無理かと思っていました。一応多言語対応として簡単な InputMethod の対応は入っているのですが、ほとんどの環境でうまく動かなかったり、動いたとしても変換の手間があるため、GNOME Do の素早く選んで実行するという良さが生かすことができません。
- 参考
- Alcor の Abbreviation Scoring (@steps to phantasien)
最近、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さんご連絡ありがとうございます。)
下のサイトから、最新版ソースをダウンロードする。
- C/Migemo — KaoriYa
- 今回使ったバージョン: cmigemo-default-src-20110227.zip
$ 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 をどうしていいのかよく分からなかったので、要望があれば考えようと思っています。