画面に表示されているGrowlの通知をホットキーで消す方法

Growlは通知ソフトとしてかなり優秀なんだけど、問答無用で通知が他のウィンドウよりも前に表示されるから邪魔になることも結構ある。例えば、

  • ブラウザで閲覧しているときにちょうど見ている部分にGrowlの通知が重なって見えなくなる
  • 夏ライオンを起動したときに一気にGrowlの通知が表示されて画面が覆いつくされる

といった具合に。早く通知が消えてほしいときにひとつひとつマウスでクリックして消すのはなかなか面倒。ホットキーとかで一度に消せればいいんだけど、Growlにはそういう機能はないみたい(自社調べ)。Stickyな通知(夏ライオンだと@Replyの場合とか)だとクリックして消すまで画面に残り続けるので結構厄介。


そこで、ちょっと強引だけどGrowlを再起動させれば表示中の通知が消えてくれるので、Growlを再起動して表示中の通知を消すAppleScriptを書いてみた。


hideGrowlNotifications.scpt(ダウンロードはこちら)

tell application "System Events"
    set isRunning to (count of (every process whose name is "GrowlHelperApp")) > 0
end tell

if isRunning then
    tell application "GrowlHelperApp" to quit
    delay 1
    tell application "GrowlHelperApp" to launch
end if

再起動させるだけなのでスクリプトの内容はかなり簡単。ただ終了と起動の間にdelayを入れないとうまくいかないみたい(環境によってはdelayする時間を調節する必要かも)。

ちなみにスクリプトの書き方は以下を参考にした。
GrowlのON/OFFをホットキーでできるようにする - unknownplace.org


これで準備OK。あとは表示中の通知を消したいときにTerminalでスクリプトを実行すればよい。

$ osascript hideGrowlNotifications.scpt

ただ、消したいときにいちいちTerminalから実行するのは面倒なので、QuicksilverのCustomTriggersに登録してキーひとつで呼び出せるようにする。CustomTriggersへの登録方法は以下のページが参考になりそう。
わかばマークのMacの備忘録 : Quicksilver/ Triggers の説明(2)


すごく手抜きな方法だけど、これだけでも随分快適になった。特に夏ライオンを起動してGrowlで画面が覆いつくされた時にキー一発で通知を一掃するのはなかなか快感。


でもわざわざGrowlを再起動しないでもっとスマートに解決できないかなー。誰かいい方法を知っていたら教えて下さい。