Desktop notification when long running commands complete
As far as I understood you want a wrapper. And you want to use a command through it so that it will give you desired notification if running time of your command is more than 15 sec. So here is it.
wrapper(){
start=$(date +%s)
"$@"
[ $(($(date +%s) - start)) -le 15 ] || notify-send "Notification" "Long\
running command \"$(echo $@)\" took $(($(date +%s) - start)) seconds to finish"
}
Copy this function in your ~/.bashrc
and source ~/.bashrc
as,
. ~/.bashrc
Useage
wrapper <your_command>
If it takes more than 15 sec you will get the desktop-notification describing the command and its time of execution.
Example
wrapper sudo apt-get update
In ~/.bashrc
there is an alias alert
defined as:
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
which can be used to notify the completion of command execution.
Usage:
$ the_command; alert
e.g.
$ sudo apt-get update; alert
You may customize the alias as per your need and desire.
You want https://launchpad.net/undistract-me (installable from the Ubuntu archives with sudo apt-get install undistract-me
) which does precisely what you're asking for, including working automatically (that is, without having to remember to add something extra to potentially long-running commands).