Volevo iniziare mutt
nel terminale quando faccio clic su un mailto:
tag in una pagina Web. È possibile? Attualmente viene avviato Firefox, cosa che non preferisco; è un caricamento lento e non necessario.
Volevo iniziare mutt
nel terminale quando faccio clic su un mailto:
tag in una pagina Web. È possibile? Attualmente viene avviato Firefox, cosa che non preferisco; è un caricamento lento e non necessario.
Risposte:
Per prima cosa devi assicurarti che ci sia un .desktop
file richiesto dalla specifica XDG. Per i programmi con GUI è probabile che esista già un .desktop
file adatto , per le applicazioni terminali di solito è necessario crearne uno proprio. Controlla la directory /usr/share/applications
per i file esistenti. Forse c'è già un mutt.desktop
file. Se non c'è, creane uno.
Quindi modificare il file ~/.local/share/applications/mimeapps.list
e aggiungere la seguente riga
[Default Applications]
x-scheme-handler/mailto=mutt.desktop;
Questo registra mutt con il mailto
gestore. È possibile confermare una registrazione corretta con
xdg-mime query default 'x-scheme-handler/mailto'
che dovrebbe produrre mutt.desktop
. Ora puoi fare clic su "mailto" in cromo e dovrebbe comparire un terminale con un'istanza di mutt. Non è necessario nemmeno riavviare la sessione desktop o il browser.
È necessario scrivere uno script che specifica il terminale in cui si desidera mutt
aprire. Quindi, in Firefox, è possibile associare questo script ai collegamenti mailto. Ad esempio, se si utilizza Terminator, è possibile creare il seguente script.
#!/usr/bin/env bash
terminator -x "mutt '$@'"
Nel mio caso, ho un terminatore a discesa persistente, quindi lo voglio in una nuova scheda. Ho anche bisogno di una tavolozza di 256 colori, quindi uso
#!/usr/bin/env bash
terminator --new-tab -x "TERM=xterm-256color; mutt '$@'"
FWIW questo è il mio script completo, che rivela anche il terminatore (se nascosto), usando la scorciatoia Ctrl+ Space, e lo porta in primo piano.
#!/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
Quale ambiente desktop stai eseguendo? È necessario verificare le impostazioni del gestore del tipo MIME su come impostare un gestore specifico per questo tipo di cose.