このカスタムプロトコルを含むリンクをクリックすると、自分のカスタムURLプロトコルのURLスキーム(またはプロトコル)ハンドラを登録して、そのURLのコマンドを実行したいと思います。このハンドラを追加するにはどうすればよいですか?
ddg://query%20terms
例:新しいDuckDuckGoブラウザ検索と同じようにURLを開きたいです。このプロトコルがすでに存在する場合、ハンドラを書き換えるステップは、新しいハンドラを作成するステップとは大きく変わらないと思います。はい、技術的にはプロトコルではなくURLスキームにすぎません。
答え1
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;
%u
次のようにURL(たとえばddg://query%20terms
)を単一のパラメータとして渡します。デスクトップ入力仕様。
このデスクトップエントリを作成してインストールした後(またはapplications
XDGのローカルまたはシステムディレクトリに配置するなど)、アプリケーションをMIMEタイプとして登録する必要があります(デスクトップエントリ名をとして指定したとします)。~/.local/share/applications/
/usr/share/applications/
ddg-opener.desktop
xdg-mime default ddg-opener.desktop x-scheme-handler/ddg
ハンドラのリファレンス実装ddg-open.sh
:
#!/usr/bin/env 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
答え2
お持ちの場合mimeo
インストールされていて、関連アプリケーションを作成するデスクトップファイルの名前が既にわかっている場合は、次のようにします。
mimeo --add 'x-scheme-handler/ddg' <path or name of desktop file>
たとえば、duckduckgoの場合、デスクトップファイルがある場合は、/usr/share/applications/Duckduckgo.desktop
次のようにします。
mimeo --add 'x-scheme-handler/ddg' Duckduckgo
または
mimeo --add 'x-scheme-handler/ddg' /usr/share/applications/Duckduckgo.desktop