我想为我自己的自定义 URL 协议注册一个 URL 方案(或协议)处理程序,以便单击具有此自定义协议的链接将在该 URL 上执行命令。我需要采取哪些步骤来添加这个处理程序?
示例:我想ddg://query%20terms
在新的 DuckDuckGo 浏览器搜索中打开 URL 。如果此协议已经存在,我假设覆盖处理程序的步骤与创建新处理程序的步骤没有太大区别。是的,从技术上讲,这只是一个 URL 方案,而不是一个协议。
pal*_*wim 26
要向 XDG 注册新的 URL 方案处理程序,首先创建一个指定x-scheme-handler/...
MIME 类型的桌面条目:
[Desktop Entry]
Type=Application
Name=DDG Scheme Handler
Exec=open-ddg.sh %u
StartupNotify=false
MimeType=x-scheme-handler/ddg;
Run Code Online (Sandbox Code Playgroud)
请注意,根据桌面条目规范,%u
将 URL(例如ddg://query%20terms
)作为单个参数传递。
创建此桌面条目并安装后(即,将其放在applications
XDG的本地或系统目录中,例如~/.local/share/applications/
或/usr/share/applications/
),然后您必须使用 MIME 类型注册应用程序(假设您已将桌面条目命名为ddg-opener.desktop
):
xdg-mime default ddg-opener.desktop x-scheme-handler/ddg
Run Code Online (Sandbox Code Playgroud)
ddg-open.sh
处理程序的参考实现:
#!/bin/bash
# bash and not just sh because we are using some bash-specific syntax
if [[ "$1" == "ddg:"* ]]; then
ref=${1#ddg://}
#ref=$(python -c "import sys, urllib as ul; print ul.unquote_plus(sys.argv[1])" "$ref") # If you want decoding
xdg-open "https://duckduckgo.com/?q=$ref"
else
xdg-open "$1" # Just open with the default handler
fi
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13177 次 |
最近记录: |