読者です 読者をやめる 読者になる 読者になる

もやし日誌

日記のようなもの

Windowsでmikutterを動かしてみる

ruby-gtk2のcocoa移植に見事に失敗しましたが今日はWindowsruby-gtk2です。

という訳でWindowsRubyを入れてgemからgtk2を入れてmikutterを動かしてみました。

とりあえずRubyをインストールする

WindowsではRubyInstallerってやつを使うと超簡単にインストールできます。Windowsは何でもGUIで出来るから楽です。

RubyInstaller for Windows

で、ここで64bit版とかを選んじゃうと後が辛いです。64bit環境でも32bit版を使いましょう。

Windowsのgemでは既にビルドされたバイナリを使うことが出来る(MacとかLinuxだと全部自前でビルドが走ります)のですが、64bitだとそれが出来ずにライブラリとか何も無いスッカラカンWindowsでビルドしようとしてしまいます。

必要なライブラリが見つからずビルドにコケます。まあ当たり前の事ですね。

あっ。ちなみにRubyのインストールの時に環境変数どうする?とかオプションが出ると思いますが全部チェック入れちゃって問題無いです。というよりオプション全部入りにした方が後が楽です。

gemからgtk2を入れる

コマンドプロンプトを開いて

gem install gtk2

です。

これで準備完了です。

mikutterを動かす

f:id:kazuki09:20140223045205p:plain

詳しい説明は省きますが公式サイトから最新版のtarボールを落としてきてExplzhとかで解凍してドキュメントとかどっかテキトーなところにぶち込みます。

そしてmikutter.rbを立ち上げます。先程のRubyのインストールで関連付けをしていればダブルクリックするだけで立ち上がると思います。

って思ったけどMacで動かすよりUIが美しいね。参考までにMacはこんな感じです。

f:id:kazuki09:20140223045610p:plain

X Window Systemを最小構成でインストールしたみたいな感じですね。まぁテーマとか何も適用していないってだけの話ですがWindowsはちゃんとWin32 API風に出来上がってます。

やっぱ固まっちゃうよね?

何でお前うごいてんだよ!!って言いたくなった人多いと思います。普通に入れただけではフリーズします。

公式のWikiにも書いてありますがパッチを当ててやる(厳密には一行コメントアウトするだけだけど)と動くようになります。

MikutterInstallBattleForWindows - mikutter Wiki

インストール先のcore\mui\postbox.rbをちょっと弄ってやります。こいつの141行目をコメントアウトです。

余談: Windowsruby-gtk2にはGTK+がバンドルされている

ちょっと興味があったのでgemのインストールディレクトリを覗いてみたらGTK+のライブラリが全部入ってました。LinuxだとOSに入ってるライブラリを使うんですけどね。

Macとかでも基本的には同じでライブラリを別途入れてruby-gtk2を入れるときにはそのライブラリを参照してビルドされます。

インライン入力出来ない問題を直す

追記:最新版の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って出てきたよなーって訳でこいつを探してやるわけですよ。

f:id:kazuki09:20140223053113p:plain

多分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

あたりに入っていると思われます。 

このファイルを開いてみたら... あらら!!さっきのパスがあるじゃないかー

f:id:kazuki09:20140223053742p:plain

このファイルの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にも置いておきます。

f:id:kazuki09:20140223054721p:plain

こんな風にインライン入力が出来れば成功です。

URL開けなくね? 何かエラー出るよ

設定画面を開いてURLを開くのに使うコマンドを設定します。ここで使うのがstartコマンドです!!

windowsのstartコマンドがヤバいくらいに便利 - 只今記号操作中

start http://www.google.co.jp

ってコマンドプロンプトに打ってみるとわかりますがデフォルトのブラウザでちゃんと開いてくれます。

f:id:kazuki09:20140223060213p:plain

こんな風に設定すればおkです。

(追記)なんか2回目から起動しなくなったぞ

作業ディレクトリを自分のホームディレクトリにすると何故か起動するようです。

ショートカットを作ってるならこんな感じですね。

f:id:kazuki09:20140223153859p:plain

ちなみにrubywというコマンドを使うとエラーとかがずらずら出てくるコマンドプロンプトのウィンドウを表示せずにmikutterを立ち上げることが出来ます。

あとrubywコマンドはWindowsにしかありません。Linuxなら素直にnohupを使ってやりましょう。