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 と組み合わせてクリップボードフィルタを作りたかったのだけど、今回は諦めた。
日本語が絡まなければ目的は達成、、うーむ。