fi
export TMPDIR
TMPDIR=$(mktemp -dp "$TMPDIR" mutt.XXXXXXXXXX)
-cleanup() { cd / && rm -rf "$TMPDIR"; }
+
+cleanup() {
+ cd /
+ echo Cleaning up $TMPDIR… >> $TMPDIR/output.stderr
+ notify_output
+ rm -rf "$TMPDIR"
+ trap - 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+}
trap cleanup 1 2 3 4 5 6 7 8 10 11 12 13 14 15
cd "$TMPDIR"
fi
}
+notify_output() {
+ if [ -s "$TMPDIR/output.stdout" ] || [ -s "$TMPDIR/output.stderr" ]; then
+ notify $TMPDIR/output.stdout $TMPDIR/output.stderr \
+ "Output from mutt/$SELF on $BASENAME"
+ fi
+}
+
guess_extension() {
python -c "import mimetypes; print(mimetypes.guess_extension('$1'))"
}
fi
}
-notify_output() {
- if [ -s "$TMPDIR/output.stdout" ] || [ -s "$TMPDIR/output.stderr" ]; then
- notify $TMPDIR/output.stdout $TMPDIR/output.stderr \
- "Output from mutt/$SELF on $BASENAME"
- fi
-}
-
case "$SELF" in
(bgrun)
# make a copy of the file, then launch a shell process in the background
FILE="$(get_file "${1:-}")"
(
launch_viewer "$MIMETYPE" "$FILE"
- notify_output
sleep 1
cleanup
) &
# the previous three lines:
## cat > "$FIFO" &
launch_viewer "$MIMETYPE" "${FIFO}"
- notify_output
wait
cleanup
;;
+ (bgrun-delay)
+ # hack to stay around for a fixed period of time after the viewer process
+ # returns control to the caller, so that we can clean up. This is for
+ # cases when the FIFO method doesn't work, because e.g. Firefox randomly
+ # chooses it needs to read HTML files twice.
+ FILE="$(get_file "${1:-}")"
+ (launch_viewer "$MIMETYPE" "${FILE}") &
+ (
+ sleep 1m
+ echo Cleaning up $TMPDIR… > $TMPDIR/output.stderr
+ cleanup
+ ) &
+ trap - 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+ ;;
esac