Ruby/AppleEvent ブリッジの覚え書き
AppleScript っぽい事を ruby で、な環境を一通り調べてみた。
rb-applescript
今はこれが現役、Ruby だけでなく python, Objective-C のバインディングがある。
ところが困った事に、クリップボードにアクセスしようとすると osax が 64bit ruby で動かないようだ。
dynamically retrieve scripting addition terminology within a 64-bit process
と言われる。
RubyOSA
既に開発中止らしい。けど中身はそれほど悪くない。個人的には好き。
- GEM 版はコンパイルエラーでインストールに失敗する
- port 版は rdoc-osa コマンドが古いのでお勧め出来ない
ではどうするかというと、github にある Snow Leopard 対応版を使う。
gem install pbosetti-rubyosa
で、、クリップボードにアクセスする方法を探しまわったが見つからずに断念。
クリップボードが扱えない件
さくさく ruby でスクリプティングなら rb-appscript でも RubyOSA でも役割は果たせる。
問題はクリップボードですよ。
ペースト操作だけなら AppleScript の
tell application "System Events" to keystroke "v" using command down
これを
sys = OSA.app 'System Events' sys.keystroke 'v', OSA::SystemEvents::EMDS::COMMAND_DOWN
と同等の事が出来るが、クリップボードに書き戻す手段が無い。
pbcopy/pbpaste を試したがコマンド経由だとマルチバイト文字が扱えない。
マルチバイトを有効にした terminal app を activate して実行する方法があるものの、スマートでない&ウィンドウが一枚立ち上がったりするので諦めた。
ruby-cocoa だと上手く行くが、こちらは力量不足で NSString オブジェクトと ruby の String を相互変換する方法が分からなかった。
という事でクリップボードは諦めて osax のアップデート待ち中。
ソースコードから自分でコンパイルすれば良いような気もする。
QuickSilver と組み合わせてクリップボードフィルタを作りたかったのだけど、今回は諦めた。
日本語が絡まなければ目的は達成、、うーむ。