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-open
memblokir, sementara yang lain tidak.)
Tidak perlu dikatakan, Anda dapat menggunakan ini dengan perintah apa pun. xdg-open
hanya penangan satu atap yang nyaman.
&
xdg-open. Tidak ada salahnya untuk memilikinya di sana, kan?
mailcap
dengan 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-hook
saja; ini hanya mengosongkan dir tmp ketika mutt dimatikan.
Anda bisa menggunakan perintah wrapper yang:
mutt
melakukannya.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 muttv
skrip 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 mutt
apa tmpdir
itu (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 mv
dengan cp
jika Anda tidak ingin menyentuh file asli yang disediakan oleh mutt
.
.muttrc
karena saya tmpdir="=tmp"
. Mengapa tidak mengambil direktori dari nama file?
new-$original
see
baris perintah, saya tidak berharap untuk menghapus file, bahkan jika itu ada di /tmp
!) Solusi: buat tautan keras.