shtools/znotif/znotif
2020-04-14 11:33:28 +02:00

79 lines
1.5 KiB
Bash
Executable file

#!/bin/bash
_arg_t=2
fname=$(basename "$0")
usage () {
echo "$fname [options] [command]
Sends notification when the given command finished executing
Options:
-h Show this message then exit
-t <sec> Time the notification stays. By default 2
-T <title> Notification title
-m <string> Displays this message when finished. Variable resolution on
> Default message is '<command> finished'"
}
warning () {
if [ ! -n "$_opt_w" ] ; then
printf "\033[0;33m$1\033[0m\n" >&2
fi
}
error () {
printf "\033[1;31m$1\033[0m\n" >&2
}
_args=""
# $1 = message , $2 = time , $3 = title
notify () {
if which kdialog >/dev/null
then
kdialog --passivepopup "$1" $2 --title "$3"
elif which notify-send >/dev/null
then
notify-send -t $2 "$3" "$1"
else echo "No supported notification" >&2 && return 1
fi
}
# read options
while getopts ":hm:T:t:" opt;
do
case $opt in
h)
usage
exit 0
;;
m)
if [ ! -n "$OPTARG" ]
then
error "m needs an argument"
exit
fi
message=$OPTARG
_opt_m=y
;;
T) title="$OPTARG" ;;
t) _arg_t="$OPTARG" ;;
\?)
echo "Uknown option: $OPTARG"
usage
exit 1
;;
esac
done
shift $((OPTIND-1))
if [ $# -gt 0 ]
then
[ ! -n "$_opt_m" ] && message="'$*' finished"
[ -z "$title" ] && title=$*
$@
else
[ ! -n "$_opt_m" ] && message="Ping"
[ -z "$title" ] && title="Ping"
fi
notify "$message" $_arg_t "$title"