Quería comenzar mutt
en la terminal cuando hago clic en alguna mailto:
etiqueta en una página web. ¿Es eso posible? Actualmente se inicia Firefox, que realmente no estoy a favor; Es de carga lenta e innecesaria.
Primero debe asegurarse de que haya un .desktop
archivo requerido por la especificación XDG. Para los programas GUI, existe la posibilidad de que ya exista un .desktop
archivo adecuado , para las aplicaciones de terminal, por lo general, debe crear el suyo propio. Consulte el directorio /usr/share/applications
de archivos existentes. Tal vez ya hay un mutt.desktop
archivo. Si no hay, cree uno.
Luego edite el archivo ~/.local/share/applications/mimeapps.list
y agregue la siguiente línea
[Default Applications]
x-scheme-handler/mailto=mutt.desktop;
Esto registra mutt con el mailto
controlador. Puede confirmar un registro exitoso con
xdg-mime query default 'x-scheme-handler/mailto'
cuál debería salir mutt.desktop
. Ahora puede hacer clic en "mailto" en cromo y un terminal debería aparecer con una instancia de mutt. Ni siquiera es necesario reiniciar la sesión de escritorio o el navegador.
Debe escribir un script que especifique el terminal en el que desea mutt
abrir. Luego, en Firefox, puede asociar este script con enlaces mailto. Por ejemplo, si está utilizando un terminador, puede crear el siguiente script.
#!/usr/bin/env bash
terminator -x "mutt '$@'"
En mi caso, tengo un terminador desplegable persistente, así que lo quiero en una nueva pestaña. También necesito una paleta de 256 colores, así que uso
#!/usr/bin/env bash
terminator --new-tab -x "TERM=xterm-256color; mutt '$@'"
FWIW este es mi script completo, que también muestra el terminador (si está oculto), usando el acceso directo Ctrl+ Space, y lo trae al 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
¿Qué entorno de escritorio estás ejecutando? Debe verificar la configuración del controlador de tipo MIME sobre cómo configurar un controlador específico para este tipo de cosas.