#!/bin/sh set -eu usage() { cat <<-'EOF' boop [-m MESSAGE] [-n] -- COMMAND... boop -h EOF } help() { cat <<-'EOF' Options: -m MESSAGE text message of the desktop notification (default: COMMAND) -n don't play any sound -h, --help show this message COMMAND the commands to be executed Examples: Play the positive sound, using the command as message: $ boop echo 123 Fail with the underlying 127 return code with the message "ERROR": $ boop -m ERROR ech 123 EOF } for flag in "$@"; do case "$flag" in --) break ;; --help) usage help exit ;; *) ;; esac done SOUND=-s while getopts 'm:nh' flag; do case "$flag" in m) MESSAGE="$OPTARG" ;; n) SOUND= ;; h) usage help exit ;; *) usage >&2 exit 2 ;; esac done shift $((OPTIND - 1)) set +e "$@" STATUS=$? set -e if [ "$STATUS" = 0 ]; then N=0 else N=1 fi CMD="$*" msg -"$N" -b $SOUND -D "${MESSAGE:-$CMD}" exit "$STATUS"