Como posso definir o mutt como o cliente de email padrão quando clico em um 'mailto' em uma página da web?


10

Eu queria começar muttno terminal quando clicar em alguma mailto:tag em uma página da web. Isso é possível? Atualmente o Firefox inicia, o que eu realmente não sou a favor; é carregamento lento e desnecessário.

Respostas:


11

Primeiro, você precisa garantir que exista um .desktoparquivo exigido pela especificação XDG. Para programas GUI, é bom que já exista um .desktoparquivo adequado ; para aplicativos de terminal, geralmente é necessário criar seu próprio arquivo. Confira o diretório /usr/share/applicationspara arquivos existentes. Talvez já exista um mutt.desktoparquivo. Se não houver, crie um.

Em seguida, edite o arquivo ~/.local/share/applications/mimeapps.liste adicione a seguinte linha

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

Isso registra mutt com o mailtomanipulador. 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.


1

Você precisa escrever um script que especifique o terminal no qual deseja muttabrir. 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

-1

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.


OpenBox, eu só não sei como obter o tipo MIME, não é um arquivo, eu não posso simplesmente executar 'mimetype / path / to / file' para identificá-lo
daisy
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.