- 
      
- 
        Save ihashacks/4576452 to your computer and use it in GitHub Desktop. 
| # commands to ignore | |
| cmdignore=(htop tmux top vim) | |
| # end and compare timer, notify-send if needed | |
| function notifyosd-precmd() { | |
| retval=$? | |
| if [[ ${cmdignore[(r)$cmd_basename]} == $cmd_basename ]]; then | |
| return | |
| else | |
| if [ ! -z "$cmd" ]; then | |
| cmd_end=`date +%s` | |
| ((cmd_time=$cmd_end - $cmd_start)) | |
| fi | |
| if [ $retval -gt 0 ]; then | |
| cmdstat="with warning" | |
| sndstat="/usr/share/sounds/gnome/default/alerts/sonar.ogg" | |
| else | |
| cmdstat="successfully" | |
| sndstat="/usr/share/sounds/gnome/default/alerts/glass.ogg" | |
| fi | |
| if [ ! -z "$cmd" -a $cmd_time -gt 10 ]; then | |
| if [ ! -z $SSH_TTY ] ; then | |
| notify-send -i utilities-terminal -u low "$cmd_basename on `hostname` completed $cmdstat" "\"$cmd\" took $cmd_time seconds"; play -q $sndstat | |
| else | |
| notify-send -i utilities-terminal -u low "$cmd_basename completed $cmdstat" "\"$cmd\" took $cmd_time seconds"; play -q $sndstat | |
| fi | |
| fi | |
| unset cmd | |
| fi | |
| } | |
| # make sure this plays nicely with any existing precmd | |
| precmd_functions+=( notifyosd-precmd ) | |
| # get command name and start the timer | |
| function notifyosd-preexec() { | |
| cmd=$1 | |
| cmd_basename=${${cmd:s/sudo //}[(ws: :)1]} | |
| cmd_start=`date +%s` | |
| } | |
| # make sure this plays nicely with any existing preexec | |
| preexec_functions+=( notifyosd-preexec ) | 
i added
unset cmdon line 9 after "notify-send" to prevent getting notification whenever i press enter after a long command...
To use this, clone it:
git clone https://gist.github.com/4576452.gitThen copy the file somewhere:
cp 4576452/notifyosd.zsh ~/.zshSource it in your .zshrc:
[ -e $HOME/.zsh/notifyosd.zsh ] && . $HOME/.zsh/notifyosd.zshI've made a small addition, which displays a notification only if the current active windows isn't terminal.
https://gist.github.com/shockone/5255331
Without the line 13 notification is displayed multiple times. Any ideas why?
kdialog --title "$cmd_basename completed" --passivepopup ""$cmd" took $cmd_time seconds"
to use at KDE without notify-tools installed.
PS Thanks a lot!
pataluc: Thank you for pointing that out! The "unset cmd" should actually be on line 10 though. I have fixed it.
Now if you run this thing in an "ssh -X" session you'll have the hostname included in the notification!
Command completion status now in notification title!
I forgot to mention that if you have sox installed then this will play a sound for 
This thing has moved: https://github.com/ihashacks/notifyosd.zsh
How to implement this on zsh?