
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, lo cual realmente no me gusta; Es una carga lenta e innecesaria.
Respuesta1
Primero debe asegurarse de que haya un .desktop
archivo requerido por la especificación XDG. Para los programas GUI es muy probable que ya exista un .desktop
archivo adecuado; para las aplicaciones de terminal normalmente hay que crear uno propio. Consulte el directorio /usr/share/applications
para ver los archivos existentes. Quizás ya exista un mutt.desktop
archivo. Si no lo 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 al perro callejero con el mailto
manejador. Puede confirmar un registro exitoso con
xdg-mime query default 'x-scheme-handler/mailto'
que debería dar salida mutt.desktop
. Ahora puede hacer clic en "mailto" en Chrome y debería aparecer una terminal con una instancia de mutt. Ni siquiera es necesario reiniciar la sesión de escritorio o el navegador.
Respuesta2
Debe escribir una secuencia de comandos que especifique la terminal en la que desea mutt
abrir. Luego, en Firefox, puede asociar esta secuencia de comandos con enlaces de correo. Por ejemplo, si está utilizando Terminator, 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 pestaña nueva. 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
Respuesta3
¿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.
Respuesta4
Puede utilizar xdg-mime para registrar una aplicación predeterminada. En ese caso ejecutas en una terminal:
xdg-mime default mutt.desktop 'x-scheme-handler/mailto'
Y puedes comprobar si funcionó ejecutando:
xdg-mime query default 'x-scheme-handler/mailto'