Comment puis-je définir mutt comme client de messagerie par défaut lorsque je clique sur un «mailto» dans une page Web?

10

Je voulais commencer muttdans le terminal lorsque je clique sur une mailto:balise dans une page Web. Est-ce possible? Actuellement, Firefox démarre, ce que je ne préfère vraiment pas; c'est un chargement lent et inutile.

Marguerite
la source

Réponses:

11

Vous devez d'abord vous assurer qu'il existe un .desktopfichier requis par la spécification XDG. Pour les programmes GUI, il y a de bonnes chances qu'il existe déjà un .desktopfichier approprié , pour les applications de terminal, vous devez généralement en créer un. Consultez le répertoire /usr/share/applicationsdes fichiers existants. Il y a peut-être déjà un mutt.desktopfichier. S'il n'y en a pas, créez-en un.

Modifiez ensuite le fichier ~/.local/share/applications/mimeapps.listet ajoutez la ligne suivante

[Default Applications]
x-scheme-handler/mailto=mutt.desktop;

Cela enregistre mutt avec le mailtogestionnaire. Vous pouvez confirmer une inscription réussie avec

xdg-mime query default 'x-scheme-handler/mailto'

qui devrait sortir mutt.desktop. Vous pouvez maintenant cliquer sur «mailto» en chrome et un terminal devrait apparaître avec une instance mutt. Pas même besoin de redémarrer la session de bureau ou le navigateur.

Marco
la source
1

Vous devez écrire un script qui spécifie le terminal dans lequel vous souhaitez muttouvrir. Ensuite, dans Firefox, vous pouvez associer ce script à des liens mailto. Par exemple, si vous utilisez Terminator, vous pouvez créer le script suivant.

#!/usr/bin/env bash
terminator -x "mutt '$@'"

Dans mon cas, j'ai un terminateur de liste déroulante persistant, je le veux donc dans un nouvel onglet. J'ai également besoin d'une palette de 256 couleurs, donc j'utilise

#!/usr/bin/env bash
terminator --new-tab -x "TERM=xterm-256color; mutt '$@'"

FWIW c'est mon script complet, qui dévoile également le terminateur (s'il est masqué), en utilisant le raccourci Ctrl+ Space, et l'amène au premier plan.

#!/usr/bin/env bash

terminator --new-tab -x "TERM=xterm-256color; mutt '$@'"

# If necessary, unhide and focus terminator window.
windowlist=$(xprop -root | sed -rn 's/_NET_CLIENT_LIST_STACKING\(WINDOW\): window id # (.*)/\1/p' | tr -d ',')
terminator_visible=false
for i in $windowlist; do
  [[ $(xprop -id $i | grep WM_CLASS\(STRING\)) == 'WM_CLASS(STRING) = "terminator", "Terminator"' ]] && terminator_visible=true && term_id=$i
done

if [[ $terminator_visible == false ]]; then # it's hidden
  xdotool key --clearmodifiers ctrl+space
elif [[ $(xprop -id $(xdotool getactivewindow) | grep WM_CLASS\(STRING\)) != 'WM_CLASS(STRING) = "terminator", "Terminator"' ]]; then # it's visible, but not active
  xdotool windowactivate $term_id 2> /dev/null # Gives error; not sure why. XGetWindowProperty[_NET_WM_DESKTOP] failed (code=1)
fi
Sparhawk
la source
-1

Quel environnement de bureau utilisez-vous? Vous devez vérifier les paramètres de son gestionnaire de type MIME sur la façon de définir un gestionnaire spécifique pour ce genre de choses.


la source
OpenBox, je ne sais tout simplement pas comment obtenir le mimetype, ce n'est pas un fichier, je ne peux pas simplement exécuter 'mimetype / path / to / file' pour l'identifier
daisy