Je voulais commencer mutt
dans 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.
Vous devez d'abord vous assurer qu'il existe un .desktop
fichier requis par la spécification XDG. Pour les programmes GUI, il y a de bonnes chances qu'il existe déjà un .desktop
fichier approprié , pour les applications de terminal, vous devez généralement en créer un. Consultez le répertoire /usr/share/applications
des fichiers existants. Il y a peut-être déjà un mutt.desktop
fichier. S'il n'y en a pas, créez-en un.
Modifiez ensuite le fichier ~/.local/share/applications/mimeapps.list
et ajoutez la ligne suivante
[Default Applications]
x-scheme-handler/mailto=mutt.desktop;
Cela enregistre mutt avec le mailto
gestionnaire. 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.
Vous devez écrire un script qui spécifie le terminal dans lequel vous souhaitez mutt
ouvrir. 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
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.