
mutt
Ich wollte im Terminal starten , wenn ich auf ein mailto:
Tag auf einer Webseite klicke. Ist das möglich? Derzeit wird Firefox gestartet, was ich wirklich nicht bevorzuge; es lädt langsam und ist unnötig.
Antwort1
Zuerst müssen Sie sicherstellen, dass eine .desktop
Datei vorhanden ist, die von der XDG-Spezifikation benötigt wird. Bei GUI-Programmen ist die Wahrscheinlichkeit groß, dass bereits eine geeignete .desktop
Datei vorhanden ist, für Terminalanwendungen müssen Sie normalerweise eine eigene Datei erstellen. Überprüfen Sie das Verzeichnis /usr/share/applications
auf vorhandene Dateien. Möglicherweise ist bereits eine mutt.desktop
Datei vorhanden. Wenn nicht, erstellen Sie eine.
Bearbeiten Sie dann die Datei ~/.local/share/applications/mimeapps.list
und fügen Sie die folgende Zeile hinzu
[Default Applications]
x-scheme-handler/mailto=mutt.desktop;
Damit wird mutt beim mailto
Handler registriert. Eine erfolgreiche Registrierung können Sie mit
xdg-mime query default 'x-scheme-handler/mailto'
Das sollte die Ausgabe sein mutt.desktop
. Jetzt können Sie in Chromium auf „mailto“ klicken und ein Terminal mit einer Mutt-Instanz sollte erscheinen. Sie müssen nicht einmal die Desktop-Sitzung oder den Browser neu starten.
Antwort2
Sie müssen ein Skript schreiben, das das Terminal angibt, in dem Sie es mutt
öffnen möchten. Anschließend können Sie dieses Skript in Firefox mit Mailto-Links verknüpfen. Wenn Sie beispielsweise Terminator verwenden, können Sie das folgende Skript erstellen.
#!/usr/bin/env bash
terminator -x "mutt '$@'"
In meinem Fall habe ich einen persistenten Dropdown-Terminator, also möchte ich ihn in einem neuen Tab. Ich brauche auch eine 256-Farben-Palette, also verwende ich
#!/usr/bin/env bash
terminator --new-tab -x "TERM=xterm-256color; mutt '$@'"
Dies ist mein vollständiges Skript, das mit der Tastenkombination Ctrl+ auch den Terminator (sofern ausgeblendet) einblendet Spaceund in den Vordergrund bringt.
#!/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
Antwort3
Welche Desktop-Umgebung verwenden Sie? Sie müssen die Einstellungen des MIME-Typ-Handlers überprüfen, um herauszufinden, wie Sie für diese Art von Dingen einen bestimmten Handler festlegen.
Antwort4
Sie können xdg-mime verwenden, um eine Standardanwendung zu registrieren. In diesem Fall führen Sie Folgendes auf einem Terminal aus:
xdg-mime default mutt.desktop 'x-scheme-handler/mailto'
Und Sie können überprüfen, ob es funktioniert hat, indem Sie Folgendes ausführen:
xdg-mime query default 'x-scheme-handler/mailto'