Respostas:
Primeiro, você precisa garantir que exista um .desktop
arquivo exigido pela especificação XDG. Para programas GUI, é bom que já exista um .desktop
arquivo adequado ; para aplicativos de terminal, geralmente é necessário criar seu próprio arquivo. Confira o diretório /usr/share/applications
para arquivos existentes. Talvez já exista um mutt.desktop
arquivo. Se não houver, crie um.
Em seguida, edite o arquivo ~/.local/share/applications/mimeapps.list
e adicione a seguinte linha
[Default Applications]
x-scheme-handler/mailto=mutt.desktop;
Isso registra mutt com o mailto
manipulador. Você pode confirmar um registro bem-sucedido com
xdg-mime query default 'x-scheme-handler/mailto'
qual deve sair mutt.desktop
. Agora você pode clicar em "mailto" no chromium e um terminal deve aparecer com uma instância mutt. Não há necessidade de reiniciar a sessão da área de trabalho ou o navegador.
Você precisa escrever um script que especifique o terminal no qual deseja mutt
abrir. Em seguida, no Firefox, você pode associar esse script aos links mailto. Por exemplo, se você estiver usando o terminator, poderá criar o seguinte script.
#!/usr/bin/env bash
terminator -x "mutt '$@'"
No meu caso, tenho um terminador suspenso persistente, portanto, quero-o em uma nova guia. Eu também preciso de uma paleta de 256 cores, então eu uso
#!/usr/bin/env bash
terminator --new-tab -x "TERM=xterm-256color; mutt '$@'"
FWIW, este é o meu script completo, que também oculta o terminador (se oculto), usando o atalho Ctrl+ Spacee o traz para a frente.
#!/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
Qual ambiente de área de trabalho você está executando? Você precisa verificar as configurações do manipulador do tipo MIME sobre como definir um manipulador específico para esse tipo de coisa.