Saya menggunakan baris ini untuk gambar di mailcap:
image/*; eog %s &;
tetapi mutt segera menghapus file temp dan eog tidak dapat memuatnya.
Ketika saya menghapus &mutt, menunggu eog ditutup sampai lolos dari baris perintah.
Saya menggunakan baris ini untuk gambar di mailcap:
image/*; eog %s &;
tetapi mutt segera menghapus file temp dan eog tidak dapat memuatnya.
Ketika saya menghapus &mutt, menunggu eog ditutup sampai lolos dari baris perintah.
Jawaban:
Inilah yang saya gunakan:
.mailcap:
application/*; mkdir -p /tmp/mutt \; cp %s /tmp/mutt \; xdg-open /tmp/mutt/$(basename %s) &
.mutt / muttrc:
folder-hook . `rm -f /tmp/mutt/*`
Setiap kali upaya untuk membuka lampiran dilakukan, itu disalin dalam direktori temp khusus dan salinan dibuka.
Setiap kali Anda mulai mutt, semua salinan yang tersisa dibersihkan.
Anda mungkin atau mungkin tidak memerlukannya &di akhir, tergantung pada perintah yang Anda gunakan. (Beberapa versi xdg-openmemblokir, sementara yang lain tidak.)
Tidak perlu dikatakan, Anda dapat menggunakan ini dengan perintah apa pun. xdg-openhanya penangan satu atap yang nyaman.
&xdg-open. Tidak ada salahnya untuk memilikinya di sana, kan?
mailcapdengan xdg-open? dan salin jawaban itu. Saya yakin ada beberapa orang dengan pertanyaan itu.
text/html; t=$(mktemp /tmp/XXXXXXXXXX) \; cp %s "$t" \; /bin/sh -c "firefox $t \; rm $t \;" &
shutdown-hooksaja; ini hanya mengosongkan dir tmp ketika mutt dimatikan.
Anda bisa menggunakan perintah wrapper yang:
muttmelakukannya.Sesuatu seperti:
#! /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 -- "$@"
) &
Dan letakkan sesuatu seperti:
image/*; muttv eog %s;
Di mana muttvskrip di atas.
Di atas tidak membuat asumsi di mana nama file muncul (s) dalam daftar argumen atau karakter apa yang dikandungnya ... Itulah sebabnya kami pertama kali bertanya muttapa tmpdiritu (jadi kami menggunakannya untuk menentukan apa file untuk lihat ).
Dalam kebanyakan kasus, itu akan berlebihan, dan seperti yang ditunjukkan Gilles mungkin tidak berfungsi jika tmpdir ditentukan sebagai relatif terhadap folder kotak surat Anda.
Yang lebih sederhana adalah:
#! /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"
) &
Ganti mvdengan cpjika Anda tidak ingin menyentuh file asli yang disediakan oleh mutt.
.muttrckarena saya tmpdir="=tmp". Mengapa tidak mengambil direktori dari nama file?
new-$original
seebaris perintah, saya tidak berharap untuk menghapus file, bahkan jika itu ada di /tmp!) Solusi: buat tautan keras.