通知センターを一時的にオフにする非通知タイマー

通知センターはいろいろなことを伝えてくれて便利なのだけど、目の前に集中して作業しておくべきことが山ほどあるのに、頻発する通知の魅力に負けて余計なことばかりしてしまうことって、よくある。結局、肝心の作業がなかなか捗らない...。(そうです、意志の弱い自分が悪いのです)
そんな時は、通知センターをOFFにしてしまう。(メニューバー右端の通知センターのアイコンをoption-クリック)そうすれば、次の日まで通知センターは黙っていてくれる。でも、OFFにしておくのは1、2時間くらいがいい。そのままうっかり次の日までOFFにしてしまうと、貴重なチャンスを逃してしまう気もして、心配になる。(iPhoneもあるから、杞憂かもしれないけど)
というわけで、通知センターを一時的にOFFにしておくタイマーを、お決まりのAppleScriptで作ってみた!

参考ページ

なるほど、plistの設定で通知センターをON OFFできるのである。この仕組みを使わせて頂くのだ!

AppleScript


property countDownMinutes : 60
global restMinutes

on run
set restMinutes to countDownMinutes
notificationcenter_off() input() end run

on reopen
input() end reopen

on idle
set restMinutes to restMinutes - 1
if restMinutes < 0 then quit
return 60
end idle

on quit
notificationcenter_on() activate
display dialog "通知センター ON" buttons "OK" default button 1 giving up after 3
tell application "System Events" to keystroke tab using {command down} --素早く終了させるため
continue quit
end quit

on input() activate
"非通知にしておく時間(分)を入力してください。"
set res to display dialog result default answer restMinutes giving up after 15
if res's gave up then return
set countDownMinutes to res's text returned as number
set restMinutes to countDownMinutes
end input

on notificationcenter_off() do shell script "
f=$HOME/Library/Preferences/ByHost/com.apple.notificationcenterui.*.plist;
defaults write $f doNotDisturb -boolean true;
defaults write $f doNotDisturbDate -date \"`date +'%Y-%m-%d %I:%M:%S +0000'`\";
killall NotificationCenter;"
end notificationcenter_off

on notificationcenter_on() do shell script "
f=$HOME/Library/Preferences/ByHost/com.apple.notificationcenterui.*.plist;
defaults write $f doNotDisturb -boolean false;
defaults delete $f doNotDisturbDate;
killall NotificationCenter;"
end notificationcenter_on

インストール

  • 上記コードを以下の形式で保存しておく。
    • ファイルフォーマット:アプリケーション
    • 「ハンドラの実行後に終了しない」チェックあり

f:id:zariganitosh:20130207151445p:image:w450

使い方

  • 非通知タイマー.appを起動したら、タイマーの時間を分単位で入力する。
  • 非通知タイマー.appを実行中は、通知センターがOFFになる。
  • タイマーで設定した時間が経過すると、自動的に終了し、通知センターはONに復帰する。
  • 途中で非通知センター.appを終了しても、通知センターはONに復帰する。
  • Dockの非通知センター.appアイコンをクリックで、タイマーの時間を再設定できる。

f:id:zariganitosh:20130207151446p:image:w368

  • 再設定の時に表示される時間は、タイマーの残り時間。