Comment dire à mutt de ne pas attendre le retour d'un programme d'attachement?
9
J'utilise cette ligne pour les images dans mon mailcap:
image/*; eog %s &;
mais mutt supprime immédiatement le fichier temporaire et eog ne peut pas le charger.
Quand &j'enlève le mutt attend que eog soit fermé jusqu'à ce qu'il s'échappe de la ligne de commande.
Chaque fois qu'une tentative d'ouverture d'une pièce jointe est effectuée, elle est copiée dans un répertoire temporaire dédié et la copie est ouverte.
Chaque fois que vous démarrez mutt, toutes les copies persistantes sont nettoyées.
Vous pouvez ou non avoir besoin de la &à la fin, selon la commande que vous avez utilisée. (Certaines versions de xdg-openbloquent, tandis que d'autres ne le sont pas.)
Inutile de dire que vous pouvez l'utiliser avec n'importe quelle commande. xdg-openest juste un gestionnaire à guichet unique pratique.
C'est un moyen génial de remplacer mailcap! Merci!
Profpatsch
J'avais besoin de l' &après xdg-open. Ça ne peut pas faire de mal de l'avoir là de toute façon, non?
Profpatsch
Peut-être pourriez-vous poser une question: comment remplacer mailcappar xdg-open? et copiez cette réponse. Je suis sûr que certaines personnes se posent cette question.
Profpatsch
2
Cela ne serait-il pas problématique si plusieurs applications ouvertes par mutt changeaient de dossiers, effaceraient n'importe quoi dans votre dossier / tmp / mutt /. Étant donné que xdg-open peut ou non bloquer, j'utilise simplement l'application (firefox) text/html; t=$(mktemp /tmp/XXXXXXXXXX) \; cp %s "$t" \; /bin/sh -c "firefox $t \; rm $t \;" &
Derek Schrock
Je sais que c'est une vieille question, mais je viens de la trouver maintenant parce que je maîtrise la mise en place de Mutt. Ma solution a été d'utiliser à la shutdown-hookplace Neomutt ; cela vide simplement le répertoire tmp lorsque mutt est arrêté.
Thriveth
3
Vous pouvez utiliser une commande wrapper qui:
renomme le fichier
exécute la visionneuse en arrière-plan
nettoie lorsque le spectateur est revenu au lieu de le laisser muttfaire.
Le fait ci - dessus aucune hypothèse sur l' endroit où le nom du fichier (s) semble (s) dans la liste des arguments ou quel personnage ils contiennent ... Ce qui est pourquoi nous demandons d' abord muttce que son tmpdirest (nous utilisons donc que , pour déterminer quels sont les fichiers à vue ).
Dans la plupart des cas, ce serait exagéré cependant, et comme le souligne Gilles peut ne pas fonctionner si tmpdir est spécifié par rapport à votre dossier de boîtes aux lettres.
Mon Dieu, tu viens d'écrire ça à partir de zéro? Il m'a fallu 15 minutes pour comprendre ce que vous faites et même maintenant, je ne sais pas exactement comment certaines pièces fonctionnent.
Profpatsch
Échoue avec mon .muttrcparce que tmpdir="=tmp". Pourquoi ne pas récupérer le répertoire du nom de fichier?
Gilles 'SO- arrête d'être méchant'
@Gilles, bon point sur le "+", "=" ... Le but était d'obtenir tmpdir de mutt afin que nous sachions lequel des arguments est le nom du fichier. Le tout est un peu exagéré, de toute façon, car dans 99% des cas, le nom de fichier ne se produira qu'une seule fois et sera le dernier argument, et nous pouvons simplement le renommernew-$original
Stéphane Chazelas
Un autre point est que ce script d'entrée n'est pas toujours appelé au nom de mutt, il pourrait être appelé dans des circonstances où le fichier n'est pas un fichier temporaire et ne doit pas être supprimé. (J'appelle souvent seesur la ligne de commande, je ne m'attends pas à ce qu'il supprime le fichier, même s'il est dedans /tmp!) Solution: faites un lien dur.
Gilles 'SO- arrête d'être méchant'
@Gilles, j'ai pensé au hardlink, mais pour mutt, cela ne fonctionne pas, car après avoir exécuté la commande, mutt tronque le fichier avant de le dissocier. (ouvrir avec O_TRUNC et fermer, je l'ai vérifié).
&
après xdg-open. Ça ne peut pas faire de mal de l'avoir là de toute façon, non?mailcap
parxdg-open
? et copiez cette réponse. Je suis sûr que certaines personnes se posent cette question.text/html; t=$(mktemp /tmp/XXXXXXXXXX) \; cp %s "$t" \; /bin/sh -c "firefox $t \; rm $t \;" &
shutdown-hook
place Neomutt ; cela vide simplement le répertoire tmp lorsque mutt est arrêté.Vous pouvez utiliser une commande wrapper qui:
mutt
faire.Quelque chose comme:
Et mettez quelque chose comme:
Où
muttv
est ce script ci-dessus.Le fait ci - dessus aucune hypothèse sur l' endroit où le nom du fichier (s) semble (s) dans la liste des arguments ou quel personnage ils contiennent ... Ce qui est pourquoi nous demandons d' abord
mutt
ce que sontmpdir
est (nous utilisons donc que , pour déterminer quels sont les fichiers à vue ).Dans la plupart des cas, ce serait exagéré cependant, et comme le souligne Gilles peut ne pas fonctionner si tmpdir est spécifié par rapport à votre dossier de boîtes aux lettres.
Un plus simple serait:
Remplacez
mv
parcp
si vous ne souhaitez pas toucher le fichier d'origine fourni parmutt
.la source
.muttrc
parce quetmpdir="=tmp"
. Pourquoi ne pas récupérer le répertoire du nom de fichier?new-$original
see
sur la ligne de commande, je ne m'attends pas à ce qu'il supprime le fichier, même s'il est dedans/tmp
!) Solution: faites un lien dur.