Notification Center経由で時報を流す
遅ればせながらMountain Lionに切り替えた。
アプリケーション毎にフルスクリーン表示ができるってことは、作業に集中できそう。そして、三本指で切り替えられるし便利、これは重宝する!と思ったら、メニューバーが非表示で、時間が分からない。時報を音声で外でマシンを使ってる時、大体の時間を知りたいので、時報できるようにしてみた。
やったこと
terminal-notifierのインストール
terminal-notifierはコマンドラインで通知できるruby製クライアント。パッと見た感じかなり重宝しそうなgemですね。
$ [sudo] gem install terminal-notifier
使い方をざっと書くと
$ terminal-notifier -[message|group|list] [VALUE|ID|ID] [options] -message VALUE - 本文 -title VALUE - タイトル -subtitle VALUE - サブタイトル -group ID - 通知グループの指定。IDが同じ通知が重複した場合、一つの通知にまとめる。 -remove ID - 指定したIDの通知をNotification Centerから消す。 -list ID - 指定したIDの通知の内容を詳しくをまとめて表示。
と言う物。べんりですなあ。
スクリプトの準備
launchdから定期的に呼び出すので、下記のようにスクリプトを~/bin/time_signal.shとして作成しておきます。
/usr/local/opt/rbenv/shims/terminal-notifier -group time_signal -remove time_signal -message $(date +%H:%M)になりました -title 時報 > /dev/null
僕はrbenvを使っているので、terminal-notifierのパスが上記のパスになってます。ご自分の環境にあわせて適切に設定してください。
launchdの設定
~/Library/LaunchAgentsの下に、下記の設定ファイルを作りましょう。ファイル名は「[launchctlに登録するID].plist」という形式です。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>ファイル名で指定したlaunchctlに登録するID</string> <key>ProgramArguments</key> <array> <string>絶対パスでtime_signal.shを指定</string> </array> <key>WorkingDirectory</key> <string>/tmp</string> <key>StartCalendarInterval</key> <dict> <key>Minute</key> <integer>0</integer> </dict> <key>StandardOutPath</key> <string>/dev/null</string> <key>StandardErrorPath</key> <string>/dev/null</string> </dict> </plist>
launchctlに登録する
launchctl load [launchctlに登録するID]
これで時報が表示されるようになります。
時報の表示時間を変更したい時
[launchctlに登録するID].plistファイルのStartCalendarIntervalの値を変更し、
launchctl unload [launchctlに登録するID] launchctl load [launchctlに登録するID]
と読み込み直しましょう。