Macで大量の通知パネルを一括で閉じるショートカットキーを設定する

概要

見逃したくない通知を通知パネルの設定にしていると、いちいちクリックして閉じるのが面倒...
一括で閉じれるショートカットキーを設定する方法を探したのですが、すっきりした解決は見つからず、少し力技ですが実装できたので記録を残しておきます。

環境

macOS 10.12.6

Snap

Snap

Snap

  • Indragie Karunaratne
  • 仕事効率化
  • 無料

おおまかなステップ

  1. AppleScriptで一括で通知を閉じる処理をアプリ化
  2. 作ったアプリに"Accessibility"の許可を与える
  3. snapを使ってアプリをショートカットキーに割り当てて実行

AppleScriptで一括で通知を閉じる処理をアプリ化

スクリプトエディタを実行

おそらくデフォルトで入ってるはず f:id:swat9013:20171101004634p:plain

AppleScriptで処理を書く

通知を一括で閉じる処理は下記記事で紹介されていたので、そのまま使わせて頂きます。

www.genuinecuriosity.com

my closeNotif()
on closeNotif()
    
    tell application "System Events"
        tell process "Notification Center"
            set theWindows to every window
            repeat with i from 1 to number of items in theWindows
                set this_item to item i of theWindows
                try
                    click button 1 of this_item
                on error
                    
                    my closeNotif()
                end try
            end repeat
        end tell
    end tell
    
end closeNotif

ファイルフォーマットを「アプリケーション」で保存

f:id:swat9013:20171101005201p:plain

作ったアプリに"Accessibility"の許可を与える

f:id:swat9013:20171101011328p:plain

Snapを使ってアプリをショートカットキーに割り当てる

Snapのmanualから先程つくったアプリを追加します。 f:id:swat9013:20171101012150p:plain

あとはショートカットからアプリを呼び出せばOK

まとめ

以上の設定で少し力技ですが、通知パネルを一括で閉じるショートカットキーを設定することができました。
何かしら他の方にもすぐ使っていただけるような形式で実装できればよかったのですが、力及ばず...
Snapは普段から使っているアプリなのでそれを活かす形で実装してみました
困っている方の参考になれば幸いです

以下調査の中でのトライ&エラー

参考にさせていただいた記事などでapple scriptをautometorを使って、サービスとして実装する方法が紹介されていました。
今回の処理は"Accessibility"の許可を実行するアプリに与えないといけないのですが、ショートカットを割り当ててChromeを開いているときなどに実行すると、現在アクティブになっているアプリのサービスとして実行されるため、Chromeにも"Accessibility"の許可を与えないと動かないという挙動になってしまいました
すべてのアプリに"Accessibility"の許可を与えるわけにもいかずこの方法は断念...
こうするとできるよというのがあれば教えていただけるとうれしいです!