OSXのLaunchServicesデータベースは、いくつかの方法でドキュメントバインディングを追跡します。通常、アプリケーションを移動した場合でも、アプリケーションとの一致を試みるのが最善です。
lsregister -dump
(lsregister
is )を実行/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister
して、LaunchServicesデータベースがバインディングについて何を示しているかを確認できます。たとえば、テキストファイルをバインドしてTextWranglerで開くと、次のように表示されます。
handler id: 3124
content type: public.plain-text
options:
all roles: com.barebones.textwrangler (0x3ea30180)
public.plain-text
プレーンテキストを表すUniformTypeIdentifier(1つ以上のファイル拡張子、MIMEタイプなどにマップされ、サブタイプを持つ場合があります)でありcom.barebones.textwrangler
、TextWranglerのバンドルIDです。
ドキュメントバインディングに関してこれほど堅牢なLinux標準を私は知りません。Macのようなことを行うには、まず、アプリケーションの場所や名前に関係なく、アプリケーションを識別するための標準的な方法が必要になります(Javaパッケージのようなものなど)。 / reverse-MacのDNSメソッド)、次にタイプマッピングとバインディングのレジストリ。その後に十分なデスクトップ環境が続き、アプリケーションがインストールされたときにアプリケーションを登録する方法があります。
Info.plist
この情報を保存するために、Macアプリケーションバンドルのように必ずしも個別のファイルは必要ありません。Mac OS Xでも、Launch Servicesが適切にインデックスを付けるバイナリセクションに情報を埋め込むことができます(これは個別の「フォーク」または拡張属性ではないことに注意してください。デバッグ情報を実行可能ファイルに埋め込むようなものです)。したがって、おそらく.desktop
ファイルの派生物を埋め込むことができます。一方、コンテンツを認識する方法が必要になります。file(1)
理想的には、ドキュメントタイプを識別するコマンドのように、コンテンツをスニッフィングすることさえできます。従来のMacOSは、Translation Managerを使用してこれを実行しました(これにより、ある形式から別の形式へのコンバーター、およびスニファーの登録が可能になりました)。
UTIとTranslationManagerは、(d)クリップボードを処理し、コンテンツとディスク上のファイルをドラッグアンドドロップします。これらのフォーマット表現を統合することは、作業中に非常に役立ちます。