Windowsでmikutterを動かしてみる
ruby-gtk2のcocoa移植に見事に失敗しましたが今日はWindowsでruby-gtk2です。
という訳でWindowsにRubyを入れてgemからgtk2を入れてmikutterを動かしてみました。
とりあえずRubyをインストールする
WindowsではRubyInstallerってやつを使うと超簡単にインストールできます。Windowsは何でもGUIで出来るから楽です。
で、ここで64bit版とかを選んじゃうと後が辛いです。64bit環境でも32bit版を使いましょう。
Windowsのgemでは既にビルドされたバイナリを使うことが出来る(MacとかLinuxだと全部自前でビルドが走ります)のですが、64bitだとそれが出来ずにライブラリとか何も無いスッカラカンのWindowsでビルドしようとしてしまいます。
必要なライブラリが見つからずビルドにコケます。まあ当たり前の事ですね。
あっ。ちなみにRubyのインストールの時に環境変数どうする?とかオプションが出ると思いますが全部チェック入れちゃって問題無いです。というよりオプション全部入りにした方が後が楽です。
gemからgtk2を入れる
コマンドプロンプトを開いて
gem install gtk2
です。
これで準備完了です。
mikutterを動かす
詳しい説明は省きますが公式サイトから最新版のtarボールを落としてきてExplzhとかで解凍してドキュメントとかどっかテキトーなところにぶち込みます。
そしてmikutter.rbを立ち上げます。先程のRubyのインストールで関連付けをしていればダブルクリックするだけで立ち上がると思います。
って思ったけどMacで動かすよりUIが美しいね。参考までにMacはこんな感じです。
X Window Systemを最小構成でインストールしたみたいな感じですね。まぁテーマとか何も適用していないってだけの話ですがWindowsはちゃんとWin32 API風に出来上がってます。
やっぱ固まっちゃうよね?
何でお前うごいてんだよ!!って言いたくなった人多いと思います。普通に入れただけではフリーズします。
公式のWikiにも書いてありますがパッチを当ててやる(厳密には一行コメントアウトするだけだけど)と動くようになります。
MikutterInstallBattleForWindows - mikutter Wiki
インストール先のcore\mui\postbox.rbをちょっと弄ってやります。こいつの141行目をコメントアウトです。
余談: Windows版ruby-gtk2にはGTK+がバンドルされている
ちょっと興味があったのでgemのインストールディレクトリを覗いてみたらGTK+のライブラリが全部入ってました。LinuxだとOSに入ってるライブラリを使うんですけどね。
Macとかでも基本的には同じでライブラリを別途入れてruby-gtk2を入れるときにはそのライブラリを参照してビルドされます。
インライン入力出来ない問題を直す
そういえば、gtk2 gem 2.2.0では http://t.co/5JsVID0FIK に書かれているみたいなWindowsでのIME絡みの問題が直っているはずです。
— す (@ktou) 2014, 3月 9
追記:最新版の2.2.0でこの問題は修正されました。
一応今回の本題です。多分どこググっても出てきません。(書いてあるのはうちだけだよ的なアレです)
インライン入力出来ないな...なんかおかしいなーって思ったら大量のエラーが出力されてるじゃないですか...(どんなエラーだったか忘れたけど)
im-ime.dllが無いよー的なエラーが出ていたらそれです。
そもそもこのdllがどういう役割を担ってるかというとお目当てのインライン入力を可能にするっていう感じです。
imime - An immodule for GTK+2 using Windows IME
よーくエラーメッセージを見ると訳の分からないパスが表示されてると思います。これはビルドした人の環境のやつがそのまま使われちゃってるからですね。
ここでruby-gtk2のCocoa移植の時のノウハウが役に立つわけですよ!!
Mac OS XのCocoa版GTK+で日本語入力を行うためのgtkimmodule(GtkIMCocoa)の開発 - ククログ(2013-03-14)
あれ...?これ役に立つかも... やってみよう。
このページの中でimmodules.cacheって出てきたよなーって訳でこいつを探してやるわけですよ。
多分Rubyのインストール先に検索かければ一発で出てくると思います。
ちなみにこの環境と同じようにRubyをCドライブに入れていれば
C:\Ruby200\lib\ruby\gems\2.0.0\gems\gtk2-2.1.0-x86-mingw32\vendor\local\lib\gtk-2.0\2.10.0
あたりに入っていると思われます。
このファイルを開いてみたら... あらら!!さっきのパスがあるじゃないかー
このファイルの13行目にあるパスをこれに置き換えてあげます。
C:/Ruby200/lib/ruby/gems/2.0.0/gems/gtk2-2.1.0-x86-mingw32/vendor/local/lib/gtk-2.0/2.10.0/immodules/im-ime.dll
一応gistにも置いておきます。
こんな風にインライン入力が出来れば成功です。
URL開けなくね? 何かエラー出るよ
設定画面を開いてURLを開くのに使うコマンドを設定します。ここで使うのがstartコマンドです!!
windowsのstartコマンドがヤバいくらいに便利 - 只今記号操作中
start http://www.google.co.jp
ってコマンドプロンプトに打ってみるとわかりますがデフォルトのブラウザでちゃんと開いてくれます。
こんな風に設定すればおkです。
(追記)なんか2回目から起動しなくなったぞ
作業ディレクトリを自分のホームディレクトリにすると何故か起動するようです。
ショートカットを作ってるならこんな感じですね。
ちなみにrubywというコマンドを使うとエラーとかがずらずら出てくるコマンドプロンプトのウィンドウを表示せずにmikutterを立ち上げることが出来ます。