2023-01-01 13:47:12 -05:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
logfile=$1
|
|
|
|
|
2023-01-02 19:34:35 -05:00
|
|
|
declare -a MSGBUF
|
|
|
|
STATE=off
|
|
|
|
MSGTIME=
|
|
|
|
|
|
|
|
printbuf() {
|
|
|
|
JOINED=$( echo "${MSGBUF[@]}" | sed 's/,$//' )
|
|
|
|
printf "%s\n%s\n" "--- ${MSGTIME} ---" "${JOINED}"
|
|
|
|
}
|
|
|
|
|
|
|
|
procmsg() {
|
|
|
|
if [[ "${1}" =~ member=Notify$ ]]; then
|
|
|
|
STATE=on
|
|
|
|
MSGTIME=$(date '+%Y-%m-%d %H:%M:%S')
|
|
|
|
MSGBUF=()
|
|
|
|
elif [[ "${1}" =~ member=NotificationClosed$ ]]; then
|
|
|
|
STATE=off
|
|
|
|
printbuf
|
|
|
|
else
|
|
|
|
if [[ "${STATE}" == "on" ]]; then
|
|
|
|
if [[ "${1}" =~ ^string ]]; then
|
|
|
|
case "${1}" in
|
|
|
|
"string \"\"") ;;
|
|
|
|
"string \"urgency\"") ;;
|
|
|
|
"string \"sender-pid\"") ;;
|
|
|
|
*)
|
|
|
|
MSGBUF+=$( echo -n "${1}," )
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
dbus-monitor "interface='org.freedesktop.Notifications'" | \
|
|
|
|
while read -r line; do
|
|
|
|
procmsg "$line" >> "$logfile"
|
|
|
|
done
|