web-dev-qa-db-ja.com

カスタムプロトコルをxdgに登録するにはどうすればよいですか?

私は今朝、アプリケーションをカスタムプロトコル、つまり emacsclientおよびorg-protocol に関連付けようとして苦労してきました。

私はウェブブラウザのブックマークレットからこのプロトコルを呼び出しており、次のような動作をします:

クロムでは、
「Launch Application」ダイアログが表示され、xdg-open org-protocol:// ...を呼び出します。これにより、新しいクロムフレームが起動されます。

Firefoxでは、
network.protocol-handler.app.org-protocolを空の文字列またはemacsclientパスに設定しようとしましたが、どうしても次のエラーメッセージが表示されます。
「プロトコル(org-protocol)がプログラムに関連付けられていないため、Firefoxはこのアドレスを開く方法を知りません。」外部アプリケーションの選択ダイアログも表示されません。

私はデスクトップ環境を使用していないので、これをxdgで厳密に機能させる必要がありますが、共有MIME情報の仕様などを読んでも、動作する構成を理解することはできません。

22
julien

XDGメソッド:emacsclient.desktop ファイルを作成しますx-scheme-handler/org-protocol MIMEタイプを処理します。

[Desktop Entry]
Name=Emacs Client
Exec=emacsclient %u
Icon=emacs-icon
Type=Application
Terminal=false
MimeType=x-scheme-handler/org-protocol;

(上記のMimeType=行に注意してください。これはorg-protocol: URI用です。)

~/.local/share/applicationsまたは/usr/local/share/applicationsにファイルを置きます。

~/.local/share/applications/mimeapps.listファイルを開いて、次のような行を追加する必要がある場合があります。

x-scheme-handler/org-protocol=emacsclient.desktop

[Default Applications]セクションの下に追加します。

18
user1686

@ grawity はほぼ正しいですが、彼は2つの詳細を見落としました。

  1. .desktopファイルをインストールした後、Sudo update-desktop-databaseを手動で実行する必要がある場合があります。 (これは、.desktopを使用してxdg-desktop-menu install emacsclient.desktopファイルをインストールした場合に実行されます)

    私のFirefoxに「このプロトコルを処理するために何をすべきか」を表示させるには、それが必要でした。エラーページを表示するだけでなく、ダイアログ。

  2. この質問が行われた時点で、xdg-openにバグがあり、「汎用」(非KDE、非GNOME、非Xfceなど)でURLを$BROWSERに盲目的に引き渡してしまいました。 。)デスクトップとそれが正確に生成する @ julien が経験していた動作。

    Xdg-openの最新バージョンで修正する必要がありますが、デスクトップが何らかの理由で最新バージョンを使用していない場合は、 version of xdg-open を使用して/usr/local/binにドロップします問題を解く。

11
ssokolow

少なくともFedora 13およびDebianベースのさまざまなディストリビューションxdg-openでは、file://スキームのないすべてのURLがブラウザで開かれませんサポートされているデスクトップ環境で実行します。使用するブラウザーを検出する方法は、ディストリビューションによって異なります。

xdg-openは単なるシェルスクリプトなので、ニーズに合わせて簡単に変更できます。

0
Florian Diesch