読者です 読者をやめる 読者になる 読者になる

心魅 - cocoromi -

半角スペース時々全角

処理時間が一定以上かかったらGrowlで通知するzshrc

なんかよくわからないけど、ネットからコマンドコピペしてきたら微妙に時間かかるっぽい!

ちょっとニコ動でもみてよっかな

2時間後

ッハ!





あるあるあるあるあるあるあるある




そんな時に処理が終わったらGrowlで教えてくれたら良くね?

ってわけでそんなことを実現する設定。

require

Growlのインストールとgrowlnotifyコマンドのインストール
growlnotifyはGrowlのdmgをマウントしてExtras/growlnotifyの下にあるinstall.shを実行すれば入る。

precmdとpreexec

普通にコマンドラインオプションがあったのでその辺修正しました。

preexecでコマンドラインの文字列とタイムスタンプを保持して、precmdで差分をとって処理する
下の例だと30秒以上かかると終わった時にGrowlが発動する。

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 "
             growlnotify -t "${${(s: :)COMMAND}[1]}" -m "$COMMAND"
        fi
    fi
    COMMAND="0"
    COMMAND_TIME="0"
}
preexec () {
    COMMAND="${1}"
    COMMAND_TIME=`date +%s`
}

おまけ

precmdに以下の行を入れると、ちょっとファンキーになるよ!超々おすすめ!

echo -ne "\a"

まとめ

時間のかかる処理が始まったらコーヒーブレイク