Відповіді:
Ось що я використовую:
.mailcap:
application/*; mkdir -p /tmp/mutt \; cp %s /tmp/mutt \; xdg-open /tmp/mutt/$(basename %s) &
.mutt / muttrc:
folder-hook . `rm -f /tmp/mutt/*`
Кожен раз, коли робиться спроба відкрити вкладення, він копіюється у виділений тимчасовий каталог і відкривається копія.
Кожен раз, коли ви починаєте mutt
, будь-які затяжні копії очищаються.
Ви можете або не знадобиться &
в кінці, залежно від використовуваної команди. (Деякі версії xdg-open
блокуються, а інші - ні.)
Потрібно говорити, що ви можете використовувати це з будь-якою командою. xdg-open
- просто зручний обробник на одній зупинці.
&
після xdg-open. Ні в якому разі не завадить мати його там, правда?
mailcap
з xdg-open
? і скопіюйте цю відповідь. Я впевнений, що з цим питанням є люди.
text/html; t=$(mktemp /tmp/XXXXXXXXXX) \; cp %s "$t" \; /bin/sh -c "firefox $t \; rm $t \;" &
shutdown-hook
замість нього Neomutt ; це просто спорожнює tmp dir, коли mutt вимикається.
Ви можете використовувати команду обгортки, яка:
mutt
пускати це.Щось на зразок:
#! /bin/sh -
TMPDIR=$(
mutt -D 2> /dev/null |
awk -F\" '
$1 == "tmpdir=" {
gsub("~", ENVIRON["HOME"], $2)
print $2
exit
}'
)
[ -n "$TMPDIR" ] || exit
export TMPDIR
nargs=$#
nfiles=0
for i do
case $i in
("$TMPDIR"/?*)
new_file=$(mktemp -ut "XXXXX${i##*/}") &&
mv -- "$i" "$new_file" &&
nfiles=$(($nfiles + 1)) &&
set -- "$new_file" "$@" "$new_file" &&
continue
esac
set -- "$@" "$i"
done
run_command() (
shift "$(($nargs + $nfiles))"
exec "$@"
)
(
run_command "$@"
while [ "$nfiles" -gt 0 ]; do
set -- "$@" "$1"
shift
nfiles=$(($nfiles - 1))
done
shift "$((2*$nargs))"
rm -f -- "$@"
) &
І поставте щось на кшталт:
image/*; muttv eog %s;
Де muttv
цей сценарій вище.
Вищезгадане не припускає, де в списку аргументів відображаються назви ( файли) файлів чи символи, які вони містять ... Ось чому ми спочатку запитуємо, mutt
що це tmpdir
таке (тому ми використовуємо це, щоб визначити, до яких файлів належить вид ).
У більшості випадків це буде надмірно, але, як зазначає Жилл, може не працювати, якщо tmpdir вказаний відносно папки вашої поштової скриньки.
Більш простим буде:
#! /bin/sh -
nargs=$#
eval "file=\${$nargs}"
newfile=$(dirname -- "$file")/new-$(basename -- "$file")
while [ "$nargs" -gt 1 ]; do
set -- "$@" "$1"
shift
nargs=$(($nargs - 1))
done
shift
mv -- "$file" "$newfile" || exit
(
"$@" "$newfile"
rm -f -- "$newfile"
) &
Замініть mv
на, cp
якщо ви не хочете торкатися оригіналу, наданого файлом mutt
.
.muttrc
тому, що tmpdir="=tmp"
. Чому б не схопити каталог з імені файлу?
new-$original
see
в командному рядку. Я не очікую, що він видалить файл, навіть якщо він є /tmp
!) Рішення: зробіть міцне посилання.