[mac]Alfred Remoteを使ってiPhoneからスリープ解除してみる
手持ちのiPhoneやiPadからAlfredが操作できるようになる Alfred Remoteがリリースされていました。
iPhone経由でアプリケーションを起動したりシャットダウンやスリープが可能になるので便利なのですが、それだけではなく任意のスクリプトを実行させることが可能です。
AlfredRemote経由でスリープはできるのですが、スリープ解除ができなかったのでAppleScriptを書いてできるか試してみました。
結論としては、一応できました。
- キーチェーンにスリープ解除時のパスワードを登録する
そのままAppleScriptにパスワードを書くのは避けたかったのでキーチェーンに追加することにしました。
「キーチェーン」=>「ファイル」=>「新規パスワード項目」で新しくパスワードを登録します。
今回は登録名を「wake_up」としました。
- securityコマンドを使ってみる
securityコマンドを使うとキーチェーンデータの取得ができるとのことなので先ほど登録したwake_upのパスワードを表示してみます。
security find-generic-password -gwl wake_up => 登録したパスワードが表示される
最初にダイアログが表示されますが、「常に許可」を選択すると次からダイアログがでなくなります。
ファイルに直接パスワードを書くよりはましですが、キーチェーン経由での取得もセキュアではないですね。。。
- AlfredRemoteにAppleScriptを登録
AlfredRemoteのコマンド追加画面で「+」をクリック後「Run NSAppleScript」を選択します。
以下のAppleScriptを入力。
on alfred_script()
tell application "System Events"
do shell script "caffeinate -u -t 1"
delay 0.5
keystroke do shell script "security find-generic-password -wgl wake_up"
key code 76
end tell
end alfred_script
今回初めて使ったのですがcaffeinateコマンドを使うとスリープを抑制することができるそうです。
で、「caffeinate -u -t 1」を実行するとmacをwake up状態にできるとのこと。
最初はcaffeinateコマンドなしでキー入力のみにしていたのですが、これを実行しないとスリープ後に画面が表示されないので追加しました。
これで、AlfredRemote側にスクリプトアイコンが追加されます。
- スリープ解除を試してみる
macをスリープ状態にして、iPhoneから作ったスクリプトアイコンをクリックするとパスワードが自動入力されてログインできました。
ちょっと便利になりました。
また何か思いついたら試してみようと思います。
追記
さらに調べていたら、同様のWorkflowを作成されている方がいらっしゃいました。
Remote Key「Unlock Mac with Alfred Remote」 - Share your Workflows - Alfred App Community Forum
おしゃれアイコンだったのでこちらをカスタマイズして使わせていただくことにしました。
さらに追記
こちらスリープ直後は設定したスクリプトでうまくスリープ解除できたのですが、しばらく経ってから試すとAlfred Remote Serverとの接続が切れてしまいうまく動作しませんでした。
一度mac側のキーやトラックパッドを触れば、Alfred Remote Serverも復帰するので問題はないのですが、できればiPhoneのタップだけで完結させたかったです。