zsh 時間のかかるコマンド実行が終了したら通知センターに通知する

コマンド実行に5秒以上かかったときだけ通知センターにコマンドの終了を通知するようにします。

image

Required

terminal-notifier をインストール

brew install terminal-notifier

Source

.zshrc の preexecprecmd に以下を追記

function preexec () {
   _prev_cmd_start_time=$SECONDS
   _cmd_is_running=true
}

function precmd() {
  if $_cmd_is_running ; then
    _prev_cmd_exec_time=$((SECONDS - _prev_cmd_start_time))
    if ((_prev_cmd_exec_time > 5)); then
      terminal-notifier -message "Command execution finished"
    fi
  fi
  _cmd_is_running=false
}

terminal-notifier-activate オプションにアプリの Bundle ID を渡すと通知をクリックした時にアプリをアクティブにできるので下記のようにしておくと便利。

terminal-notifier -message "Command execution finished" -activate com.apple.Terminal #iTerm2 の場合は com.googlecode.iterm2