私は今朝、アプリケーションをカスタムプロトコル、つまり emacsclientおよびorg-protocol に関連付けようとして苦労してきました。
私はウェブブラウザのブックマークレットからこのプロトコルを呼び出しており、次のような動作をします:
クロムでは、
「Launch Application」ダイアログが表示され、xdg-open org-protocol:// ...を呼び出します。これにより、新しいクロムフレームが起動されます。
Firefoxでは、
network.protocol-handler.app.org-protocolを空の文字列またはemacsclientパスに設定しようとしましたが、どうしても次のエラーメッセージが表示されます。
「プロトコル(org-protocol)がプログラムに関連付けられていないため、Firefoxはこのアドレスを開く方法を知りません。」外部アプリケーションの選択ダイアログも表示されません。
私はデスクトップ環境を使用していないので、これをxdgで厳密に機能させる必要がありますが、共有MIME情報の仕様などを読んでも、動作する構成を理解することはできません。
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]
セクションの下に追加します。
@ grawity はほぼ正しいですが、彼は2つの詳細を見落としました。
.desktop
ファイルをインストールした後、Sudo update-desktop-database
を手動で実行する必要がある場合があります。 (これは、.desktop
を使用してxdg-desktop-menu install emacsclient.desktop
ファイルをインストールした場合に実行されます)
私のFirefoxに「このプロトコルを処理するために何をすべきか」を表示させるには、それが必要でした。エラーページを表示するだけでなく、ダイアログ。
この質問が行われた時点で、xdg-open
にバグがあり、「汎用」(非KDE、非GNOME、非Xfceなど)でURLを$BROWSER
に盲目的に引き渡してしまいました。 。)デスクトップとそれが正確に生成する @ julien が経験していた動作。
Xdg-openの最新バージョンで修正する必要がありますが、デスクトップが何らかの理由で最新バージョンを使用していない場合は、 version of xdg-open を使用して/usr/local/bin
にドロップします問題を解く。
少なくともFedora 13およびDebianベースのさまざまなディストリビューションxdg-openでは、file://スキームのないすべてのURLがブラウザで開かれませんサポートされているデスクトップ環境で実行します。使用するブラウザーを検出する方法は、ディストリビューションによって異なります。
xdg-openは単なるシェルスクリプトなので、ニーズに合わせて簡単に変更できます。