HammerspoonでLuaのコードを実行するAppleScriptです。
Hammerspoonは、ちょっと長々とした説明が必要なツールです。Mac用の自動化ツールの一種で、キー入力やメニュー操作というGUI Scriptingの範囲の自動化が行えるものです。
特徴的なのは、プログラミング言語Luaで設定および動作内容を記述できるようになっていることで、Luaの言語仕様が小さいため、「ああ、こういうふうに書くのか」と眺めているだけで書けることでしょう。
そして、このHammerspoon内蔵のライブラリのAPIにはAppleScriptを呼び出すものがあり、とりあえずワンライナーのScriptの呼び出しはうまく行きました(hs.applescript)。
Script名を指定して実行するAPI(hs.osascript.applescriptFromFile)についてはまだ動かせていません。
→ できました。API名の記述を間違っていたようです
そして、オマケ機能でHammerspoon側にもAppleScript用語辞書が付いており、
設定ファイル「init.lua」に「hs.allowAppleScript(true)」と記述しておくと、Hammerspoon.appでAppleScriptからLuaのプログラム実行を行えるようになります。
AppleScript名:HammerspoonでLuaを実行.scpt |
tell application "Hammerspoon" –Hammerspoon上でLua Codeを実行するためには、init.lua側で –hs.allowAppleScript(true) –を書いておく必要があります execute lua code "hs.alert.show(’display Result’)" –> "877B1BFD-07B6-4009-8B89-CC0487E2680C" end tell |
実行すると、Hammerspoon側のダイアログ、
が表示されます。
GUI Scriptingの範囲でしかアプリケーション操作ができないのでは、ほとんど意味がないと感じるものです(AppleScriptを直接起動できて制約の少ないランチャーが他にいろいろあるので)が、どうもキーボード操作だけですべての操作を行いたい一部のユーザーにはそこそこの支持を受けているようです。
本記事は、「AppleScript最新リファレンス v2.8対応」の調査の中で出てきたものを掲載してみたものです。AppleScriptランタイム環境のうちの1つとして挙動を調べてみましたが、単なるosascriptかと思いきや、「Hammerspoon」という名前を返してくる、かなり癖の強い環境でした。
最近、OS側のセキュリティ機能が強化され、さまざまな「制約」がデフォルト状態で設けられています。これまでと同様に自由にアプリケーションやOS機能のコントロールを行うためには、どのAppleScriptランタイムを用いてAppleScriptを実行し、そしてランタイム環境ごとにどのような機能差が存在しているかを知る必要があります。
「AppleScript最新リファレンス v2.8対応」は、それらの差を明確化して掲載し、Aという環境で動くからBという環境でも問題なく動くと思った。でも実際には動かなかった! このOSは壊れている! というよく聞く「勘違い」への処方箋として活用していただけることでしょう。