Skip to content

Instantly share code, notes, and snippets.

@aehlke
Forked from jamesmacaulay/gist:860763
Created May 26, 2011 08:53
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save aehlke/992798 to your computer and use it in GitHub Desktop.
Save aehlke/992798 to your computer and use it in GitHub Desktop.
zsh hooks to growl completion of long-running commands
# long-running command growler
# hooks for zsh, built on bash version at http://hints.macworld.com/article.php?story=20071009124425468
preexec_functions+='save_preexec_time'
save_preexec_time() {
export PREEXEC_CMD="$(history $HISTCMD | sed 's/ *[0-9]* *//')"
export PREEXEC_TIME=$(date +'%s')
}
precmd_functions+='growl_about_long_running_commands'
growl_about_long_running_commands() {
exitstatus=$?
if [ $exitstatus -eq 0 ]; then
img="$HOME/.zsh/images/pass.png"
else
img="$HOME/.zsh/images/fail.png"
fi
stop=$(date +'%s')
start=${PREEXEC_TIME:-$stop}
let elapsed=$stop-$start
max=${PREEXEC_MAX:-10}
if [ $elapsed -gt $max ]; then
growlnotify --image="$img" -n "LongRunningCommandGrowler" -m "exited with status $exitstatus after $elapsed secs" ${PREEXEC_CMD:-Some command}
fi
PREEXEC_TIME=
PREEXEC_CMD=
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment