Fix sxmo_notificationmonitor.sh to ensure script running doesnt overlap; (kill)

master
Miles Alan 4 years ago
parent 4f118bb767
commit 7559984430
  1. 36
      scripts/core/sxmo_notificationmonitor.sh
  2. 2
      scripts/core/sxmo_notificationwrite.sh

@ -1,6 +1,12 @@
#!/usr/bin/env sh #!/usr/bin/env sh
trap gracefulexit INT TERM
NOTIFDIR="$XDG_CONFIG_HOME"/sxmo/notifications NOTIFDIR="$XDG_CONFIG_HOME"/sxmo/notifications
gracefulexit() {
echo "Gracefully exiting $0"
kill -9 0
}
notificationhook() { notificationhook() {
if [ -x "$XDG_CONFIG_HOME"/sxmo/hooks/notification ]; then if [ -x "$XDG_CONFIG_HOME"/sxmo/hooks/notification ]; then
"$XDG_CONFIG_HOME"/sxmo/hooks/notification "$XDG_CONFIG_HOME"/sxmo/hooks/notification
@ -42,24 +48,24 @@ recreateexistingnotifs() {
monitorforaddordelnotifs() { monitorforaddordelnotifs() {
while true; do while true; do
INOTIFYOUTPUT="$( inotifywait -e create,moved_to,delete,delete_self,moved_from "$NOTIFDIR"/ | (
inotifywait -e create,moved_to,delete,delete_self,moved_from "$NOTIFDIR"/ INOTIFYOUTPUT="$(cat)"
)" INOTIFYEVENTTYPE="$(echo "$INOTIFYOUTPUT" | cut -d" " -f2)"
INOTIFYEVENTTYPE="$(echo "$INOTIFYOUTPUT" | cut -d" " -f2)" case "$INOTIFYEVENTTYPE" in
"CREATE"|"MOVED_TO")
case "$INOTIFYEVENTTYPE" in NOTIFFILE="$NOTIFDIR/$(echo "$INOTIFYOUTPUT" | cut -d" " -f3)"
"CREATE"|"MOVED_TO") handlenewnotiffile "$NOTIFFILE"
NOTIFFILE="$NOTIFDIR/$(echo "$INOTIFYOUTPUT" | cut -d" " -f3)" ;;
handlenewnotiffile "$NOTIFFILE" "DELETE"|"DELETE_SELF"|"MOVED_FROM")
;; # E.g. if no more notifications unset LED
"DELETE"|"DELETE_SELF"|"MOVED_FROM") find "$NOTIFDIR"/ -type f -mindepth 1 | read -r || sxmo_setpineled green 0
# E.g. if no more notifications unset LED ;;
find "$NOTIFDIR"/ -type f -mindepth 1 | read -r || sxmo_setpineled green 0 esac
;; ) & wait
esac
done done
} }
pgrep -f "$(command -v sxmo_notificationmonitor.sh)" | grep -Ev "^${$}$" | xargs kill
sxmo_setpineled green 0 sxmo_setpineled green 0
recreateexistingnotifs recreateexistingnotifs
monitorforaddordelnotifs monitorforaddordelnotifs

@ -17,7 +17,7 @@ writenotification() {
if [ "$NOTIFFILEPATHTOWRITE" = "random" ]; then if [ "$NOTIFFILEPATHTOWRITE" = "random" ]; then
NOTIFFILEPATHTOWRITE="$NOTIFDIR/$(tr -dc 'a-zA-Z0-9' < /dev/urandom | head -c 10)" NOTIFFILEPATHTOWRITE="$NOTIFDIR/$(tr -dc 'a-zA-Z0-9' < /dev/urandom | head -c 10)"
fi fi
rm -f "$NOTIFFILEPATHTOWRITE" touch "$NOTIFFILEPATHTOWRITE"
printf %b "$ACTION\n$WATCHFILE\n$NOTIFMSG\n" > "$NOTIFFILEPATHTOWRITE" printf %b "$ACTION\n$WATCHFILE\n$NOTIFMSG\n" > "$NOTIFFILEPATHTOWRITE"
} }

Loading…
Cancel
Save