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

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

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

Responder1

Primeiro você precisa garantir que haja um .desktoparquivo exigido pela especificação XDG. Para programas GUI, há uma boa chance de já existir um .desktoparquivo adequado; para aplicativos de terminal, geralmente você precisa criar o seu próprio. Verifique 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'

que deve gerar mutt.desktop. Agora você pode clicar em “mailto” no cromo e um terminal deve aparecer com uma instância do vira-lata. Não há necessidade nem de reiniciar a sessão da área de trabalho ou o navegador.

Responder2

Você precisa escrever um script que especifique o terminal no qual deseja muttabrir. Então, no Firefox, você pode associar esse script aos links mailto. Por exemplo, se você estiver usando o terminador, poderá criar o script a seguir.

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

No meu caso, tenho um terminador suspenso persistente, então quero-o em uma nova aba. Também preciso de uma paleta de 256 cores, então uso

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

FWIW, este é o meu script completo, que também exibe 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

Responder3

Qual ambiente de área de trabalho você está executando? Você precisa verificar as configurações do manipulador de tipo MIME sobre como definir um manipulador específico para esse tipo de coisa.

Responder4

Você pode usar xdg-mime para registrar um aplicativo padrão. Nesse caso você executa em um terminal:

xdg-mime default mutt.desktop 'x-scheme-handler/mailto'

E você pode verificar se funcionou executando:

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

informação relacionada