独自のカスタムURLプロトコルのURLスキーム(またはプロトコル)ハンドラーを登録したいので、このカスタムプロトコルのリンクをクリックすると、そのURLでコマンドが実行されます。このハンドラーを追加するには、どの手順を実行する必要がありますか?
例:ddg://query%20terms
などのURLを新しいDuckDuckGoブラウザー検索で開きたい。このプロトコルがすでに存在する場合、ハンドラーをオーバーライドする手順は、新しいプロトコルを作成する手順とほとんど変わらないと思います。はい、技術的には、これは単なるURLスキームであり、プロトコルではありません。
新しいURLスキームハンドラーをXDGに登録するには、最初にx-scheme-handler/...
MIMEタイプを指定するデスクトップエントリを作成します。
[Desktop Entry]
Type=Application
Name=DDG Scheme Handler
Exec=open-ddg.sh %u
StartupNotify=false
MimeType=x-scheme-handler/ddg;
Desktop Entry Specification に従って、%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
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