當我點擊網頁中的「mailto」時,如何將 mutt 設定為預設郵件用戶端?

當我點擊網頁中的「mailto」時,如何將 mutt 設定為預設郵件用戶端?

mutt當我單擊mailto:網頁中的某個標籤時,我想在終端機中啟動。那可能嗎?目前 Firefox 啟動了,我真的不喜歡它;加載速度慢並且沒有必要。

答案1

首先,您需要確保存在.desktopXDG 規範所需的文件。對於 GUI 程序,很有可能已經有一個合適的.desktop文件,對於終端應用程序,通常您必須建立自己的文件。檢查/usr/share/applications現有檔案的目錄。也許已經有一個mutt.desktop文件了。如果沒有,請建立一個。

然後編輯文件~/.local/share/applications/mimeapps.list並添加以下行

[Default Applications]
x-scheme-handler/mailto=mutt.desktop;

這會向mailto處理程序註冊 mutt。您可以透過以下方式確認註冊成功

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

應該輸出mutt.desktop.現在,您可以在 chromium 中點擊“mailto”,然後會彈出一個終端,其中包含 mutt 實例。甚至不需要重新啟動桌面會話或瀏覽器。

答案2

您需要編寫一個腳本來指定要mutt開啟的終端機。例如,如果您使用 terminator,則可以建立以下腳本。

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

就我而言,我有一個持久的下拉終止符,因此我希望它位於新選項卡中。我還需要一個 256 調色板,所以我使用

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

FWIW這是我的完整腳本,它還使用快捷鍵Ctrl+取消隱藏終止符(如果隱藏) Space,並將其帶到前面。

#!/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

答案3

您執行的是哪個桌面環境?您需要檢查它的 MIME 類型處理程序的設置,以了解如何為此類事情設置特定的處理程序。

答案4

您可以使用 xdg-mime 註冊預設應用程式。在這種情況下,您在終端機上運行:

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

您可以透過運行來檢查它是否有效:

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

相關內容