我想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;
这将向处理程序注册 mutt mailto
。您可以使用以下命令确认注册成功
xdg-mime query default 'x-scheme-handler/mailto'
输出结果应为mutt.desktop
。现在您可以单击 chromium 中的“mailto”,然后会弹出一个带有 mutt 实例的终端。甚至无需重新启动桌面会话或浏览器。
答案2
您需要编写一个脚本来指定要mutt
在其中打开的终端。然后,在 Firefox 中,您可以将此脚本与 mailto 链接关联。例如,如果您使用 terminator,则可以创建以下脚本。
#!/usr/bin/env bash
terminator -x "mutt '$@'"
在我的例子中,我有一个持久的下拉终止符,所以我想在新选项卡中使用它。我还需要一个 256 色调色板,所以我使用
#!/usr/bin/env bash
terminator --new-tab -x "TERM=xterm-256color; mutt '$@'"
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'