
mutt
當我單擊mailto:
網頁中的某個標籤時,我想在終端機中啟動。那可能嗎?目前 Firefox 啟動了,我真的不喜歡它;加載速度慢並且沒有必要。
答案1
首先,您需要確保存在.desktop
XDG 規範所需的文件。對於 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'