[matterhorn] add notifications

This commit is contained in:
Bruno Carlin 2020-07-04 00:06:54 +02:00
parent d083cc1e94
commit d671725397
2 changed files with 70 additions and 1 deletions

View file

@ -150,7 +150,7 @@ tokencmd: secret-tool lookup matterhorn token
# an example Linux notification script. See docs/notification-scripts.md # an example Linux notification script. See docs/notification-scripts.md
# for details on the notification script API. # for details on the notification script API.
# #
# activityNotifyCommand = /path/to/notify activityNotifyCommand = ~/.config/matterhorn/notify.sh
# Background activity display: Matterhorn communicates with the # Background activity display: Matterhorn communicates with the
# Mattermost server using asynchronous background thread processing. # Mattermost server using asynchronous background thread processing.

View file

@ -0,0 +1,69 @@
#!/usr/bin/env bash
# Positional parameters passed to this script by Matterhorn:
mentioned="${1?}"
sender="${2?}"
message="${3?}"
# Script options
# notify_URGENCIES
#
# The first word is the urgency for items where you are not mentioned.
# The second word is the urgency for items where you are mentioned.
# Use "none" to not be notified; otherwise use "low", "normal", or
# "critical".
notify_URGENCIES="normal critical"
# The desktop notification category
notify_CATEGORY="im.received"
# Notification header
notify_HEAD="Message from $sender"
# Notification APP
notify_APPNAME="Matterhorn"
# Escape backslashes in the message
message="${message//\\/\\\\}"
# Escape double quotes in the message
message="${message//\"/\\\"}"
# Notification body
notify_BODY="$message"
getUrgencyHelper() {
if [ "$mentioned" == "1" ]
then
echo "$1"
else
if [ "$mentioned" == "2" ]
then
echo "$2"
else
echo "Error: mentioned value '$mentioned' unexpected" > /dev/stderr
exit 1
fi
fi
}
getUrgency() {
# We are using arguments as a poor man's bash array for portability
# shellcheck disable=SC2086
getUrgencyHelper $notify_URGENCIES
}
urgency=$(getUrgency)
if [ -n "$urgency" ]
then
test "$urgency" = "none" ||
notify-send --urgency "$urgency" \
--category "$notify_CATEGORY" \
--app-name "$notify_APPNAME" \
-- "$notify_HEAD" "$notify_BODY"
mpv "/usr/share/sounds/freedesktop/stereo/message.oga" >/dev/null 2>&1 &
mpv "/usr/share/sounds/freedesktop/stereo/message-new-instant.oga" >/dev/null 2>&1 &
fi