X-Git-Url: https://git.madduck.net/etc/mutt.git/blobdiff_plain/8937bb7554dbcfad9face59b9d9b5c4368fcff6e..7013dfe93a05082153f79eca6c9e5c05b54d9d50:/.mutt/bgrun diff --git a/.mutt/bgrun b/.mutt/bgrun deleted file mode 100755 index d4278b2..0000000 --- a/.mutt/bgrun +++ /dev/null @@ -1,104 +0,0 @@ -#!/bin/sh - -SELF="${0##*/}" - -if [ -z "$TMPDIR" ]; then - TMPDIR=/tmp -elif [ -d "${TMPDIR}/volatile" ]; then - TMPDIR="${TMPDIR}/volatile" -fi -export TMPDIR -TMPDIR=$(mktemp -dp "$TMPDIR" mutt.XXXXXXXXXX) -cleanup() { cd / && notify_output && rm -rf "$TMPDIR"; } -trap cleanup 1 2 3 4 5 6 7 8 10 11 12 13 14 15 - -cd "$TMPDIR" - -notify() { - if [ -x "$(command -v awesome-client)" ]; then - awesome-client <<-_eof - local naughty = require("naughty") - naughty.notify({ preset = naughty.config.presets.low, - title = "$3", - text = [[stdout: - $(sed -e 's,\",\\\",g' "$1") - stderr: - $(sed -e 's,\",\\\",g' "$2")]] - }) - _eof - 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'))" -} - -launch_viewer() { - run-mailcap --action=view "$1":"$2" > output.stdout 2> output.stderr -} - -MIMETYPE="$1"; shift - -get_file() { - local t - if [ -z "$1" ]; then - t=$(tempfile -d . -p mutt -s $(guess_extension "$MIMETYPE")) - cat > "$t" - echo "$t" - else - t="$(echo ${1##*/} | sed -re 's![^[:alnum:],.@%^+=_-]!_!gi')" - cp "$1" "$t" - echo "$t" - fi -} - -case "$SELF" in - (bgrun) - # make a copy of the file, then launch a shell process in the background - # to divert to run-mailcap, after which the temporary directory gets - # cleaned up. - FILE="$(get_file "${1:-}")" - ( - launch_viewer "$MIMETYPE" "$FILE" - sleep 1 - cleanup - ) & - trap - 1 2 3 4 5 6 7 8 10 11 12 13 14 15 - ;; - (bgrun-fifo) - # hack to stay around until the viewer has read the file: make a fifo and - # wait for the cat process to finish writing to it, which means that it - # must have been consumed on the other end. - FILE="$(get_file "${1:-}")" - FIFO="${FILE%/*}/fifo-${FILE##*/}" - mkfifo "$FIFO" - cat "$FILE" > "$FIFO" & - # For some reason, we do have to write a tempfile and cannot seem to - # redirect stdin directly to the fifo, i.e. this does not work instead of - # the previous three lines: - ## cat > "$FIFO" & - launch_viewer "$MIMETYPE" "${FIFO}" - 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 - ) & - ;; -esac