カスタムURLプロトコルハンドラの作成

カスタムURLプロトコルハンドラの作成

このカスタムプロトコルを含むリンクをクリックすると、自分のカスタム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)を単一のパラメータとして渡します。デスクトップ入力仕様

このデスクトップエントリを作成してインストールした後(またはapplicationsXDGのローカルまたはシステムディレクトリに配置するなど)、アプリケーションを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

関連情報