さようならAlfread
Macユーザーには必須のランチャーalfred。spotlightでは出来ない機能の一つとして、「screensaver」でスクリーンセーバー状態に入って、「sleep」でマシンがスリープするSystem機能がある。ショートカットとか覚えるのは苦手なので、コマンドで実行できるのが重宝していた。
これがspotlightで実現できたら、もうAlfread外してspotlightでいいような気がしてきたので、spotlightからsleepできるようにした。
コマンドラインからスリープできるようにする
~/bin/sleepコマンドを作成。
$ emacs ~/bin/sleep
#!/usr/bin/osascript
tell application "Finder" to sleep
これで、コマンドラインでsleepとうてばマシンをスリープできるようになる。
sleepという名前は/bin/sleepとかぶるから、気になる人はmac_sleepとか適当な名前にしておいたほうがいいのかも。ぼくはspotlightからsleepと入れたいから、痛い目にあうまではこのままにしておくつもりだけど。
ターミナルの設定
sleepから復帰した時 [Process completed] のウインドウが残ってウザい人は、下記の設定で自動的に閉じるように設定。
設定 → Profiles → Shell → When the shell exits: を「Don’t close the window」から「Close if the shell exited cleanly」に変える
spotlightから呼び出す
ここまでの処理が出来上がっていれば、普通にspotlightにsleepと打てばsleepコマンドでスリープさせることができるはず。
おまけ
同様にしてshutdownとかscreensaverとかも実現できます。
shutdown
#!/bin/sh
osascript -e 'tell application "Finder" to shut down'
screensaver
#!/usr/bin/osascript
tell application "System Events" to start current screen saver
desktop
#!/bin/sh
/Applications/Mission\ Control.app/Contents/MacOS/Mission\ Control 1
昔あったような全部のウインドウを最小化する(あとで戻すのがめんどくさい)あれではなくて、OS標準のMissionControlの機能。一時的に全てのウインドウが隠れてデスクトップが見えるようになり、画面端をクリックすれば全てのウィンドウが元の位置に戻ります。