사용자 정의 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: )을 단일 매개변수로 전달 합니다 .데스크탑 입력 사양.

이 데스크탑 항목을 생성하고 설치한 후(예: 또는 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

관련 정보