#!/bin/sh set -eu if [ $# != 1 ]; then echo >&2 E: Need exactly one argument. return 1 fi TSK="$1" DATA="$(task _get "$TSK".data)" DATATYPE="${DATA%%:*}" DATAPAYL="${DATA#*:}" case "$DATATYPE" in ('') echo >&2 I: No link data available for this task. exec task "$TSK" ;; (msgid) if command -v neomutt >/dev/null && command -v notmuch >/dev/null; then exec neomutt -f "notmuch://$HOME/mail/?query=thread:{mid:$DATAPAYL}" else exec mutt -f =store -e "push '~(=i\"$DATAPAYL\")=i\"$DATAPAYL\"'" fi ;; (url) exec sensible-browser "$DATAPAYL" ;; (file) if eval test -f "$DATAPAYL"; then case "$(file --mime-type "$DATAPAYL")" in (*": text/"*) eval exec sensible-editor "$DATAPAYL";; (*) eval exec run-mailcap --action=view "$DATAPAYL";; esac fi ;; (*) eval exec run-mailcap --action=view "$DATAPAYL" ;; esac