diff options
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/msg | 31 |
1 files changed, 24 insertions, 7 deletions
@@ -4,7 +4,7 @@ set -eu usage() { cat <<-'EOF' Usage: - msg [-X|-s|-S|-m|-D|-b] [MESSAGE] + msg [-0|-1] [-X|-s|-S|-m|-D|-b] [MESSAGE] msg -h EOF } @@ -14,20 +14,22 @@ help() { Options: -X send MESSAGE using the `xmpp` command - -s play $XDG_DATA_HOME/msg/medium.ogg sound + -s play $XDG_DATA_HOME/msg/{good,bad}.ogg sound -S say MESSAGE using `speak` -m send email with MESSAGE as subject and empty body -D send desktop MESSAGE via `notify-send` -b print terminal bell + -0 an OK message + -1 an error message -h, --help show this message MESSAGE the text to be sent by the relevant channel Examples: - Ring a terminal bell and play a sound: + Ring a terminal bell and play a sound, representing an error: - $ msg -sb + $ msg -1sb Send an email and an XMPP message: @@ -51,9 +53,14 @@ for flag in "$@"; do done sound() { - play "$XDG_DATA_HOME"/msg/medium.ogg 2>/dev/null + if [ "$OK" = true ]; then + play "$XDG_DATA_HOME"/msg/good.ogg 2>/dev/null + else + play "$XDG_DATA_HOME"/msg/bad.ogg 2>/dev/null + fi } +OK=true XMPP=false SOUND=false SPEAK=false @@ -62,8 +69,14 @@ DESKTOP=false BELL=false ACTION_DONE=false SHOW_USAGE=false -while getopts 'XsSmDbh' flag; do +while getopts '01XsSmDbh' flag; do case "$flag" in + 0) + OK=true + ;; + 1) + OK=false + ;; X) XMPP=true ACTION_DONE=true @@ -136,7 +149,11 @@ if [ "$MAIL" = true ]; then fi if [ "$DESKTOP" = true ]; then assert_arg "$MESSAGE" '-D MESSAGE' - notify-send "$MESSAGE" & + if [ "$OK" = true ]; then + notify-send -t 5000 "$MESSAGE" & + else + notify-send -t 5000 -u critical "$MESSAGE" & + fi fi if [ "$BELL" = true ]; then printf '\a' & |