zshでエラーや時間のかかる処理後に通知センターで通知するようにする
※現在最新版のMavericksだとterminal-notifierが動かないかも・・・
最近やっと山ライオンを使い始めました。
TDDのときにprove+Guard+通知センターで捗る感じにしてましたが、そういえば昔はGrowl使ってたなと。
zshでエラーの時にGrowlで通知するようにする - 僕の車輪の再発明
で、今はこれだとエラーが出てしまっている状態でしたのでサクッと通知センターに変更しました。
ここを見て変更しただけです。
install
通知センターをターミナルで使うためのコマンドをhomebrewでインストールします。
brew install terminal-notifier
使い方
terminal-notifier -message Javaだいすき
エラー時に通知
.zshrcに以下を追加
PROMPT='`exitStatus=$?;if [ ! $exitStatus -eq 0 ];then which terminal-notifier > /dev/null 2>&1 && terminal-notifier -message error! -m "see result" ;fi;`🍺 %{%(?.$fg_bold[green].$fg_bold[red])%}%h %{$fg[cyan]%}%2~ %{$fg_bold[blue]%}$(git_prompt_info) %{$reset_color%}» '
と言っても僕オリジナルな感じなのでこんな感じのターミナルになってしまします。
例によってoh-my-zshが入っている前提です。
長い処理の後に通知
carton installとかコンパイルとかでめっちゃ時間かかるときに便利です。
# 一定時間以上かかる処理の場合は終了時に通知してくれる local COMMAND="" local COMMAND_TIME="" precmd() { if [ "$COMMAND_TIME" -ne "0" ] ; then local d=`date +%s` d=`expr $d - $COMMAND_TIME` if [ "$d" -ge "30" ] ; then COMMAND="$COMMAND " which terminal-notifier > /dev/null 2>&1 && terminal-notifier -message "${${(s: :)COMMAND}[1]}" -m "$COMMAND"; fi fi COMMAND="0" COMMAND_TIME="0" } preexec () { COMMAND="${1}" if [ "`perl -e 'print($ARGV[0]=~/ssh|^vi/)' $COMMAND`" -ne 1 ] ; then COMMAND_TIME=`date +%s` fi }
ものすごい前に設定していたのですが、ネタ元なにかなぁと思ったら見つけました。
その他
なんかzshとiterm2を組み合わせる方法もあるみたいですが、これだけでも簡単ですね。
まとめ
超便利!!!