Die Launch Services-Datenbank von OS X verfolgt die Dokumentbindungen auf verschiedene Arten - im Allgemeinen versucht sie, eine Anwendung zu vergleichen, selbst wenn Sie sie verschoben haben.
Sie können lsregister -dump
(lsregister
ist /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister
) ausführen, um zu sehen, was die Launch Services-Datenbank über eine Bindung sagt. Zum Beispiel, wenn ich Textdateien binden mit TextWrangler zu öffnen, ich sehe:
handler id: 3124
content type: public.plain-text
options:
all roles: com.barebones.textwrangler (0x3ea30180)
public.plain-text
ist ein Uniform Type Identifier (die Karten auf eine oder mehr Dateierweiterungen, MIME-Typen, usw. und kann Subtypen haben), die Ebene Text und com.barebones.textwrangler
ist die Bundle-ID von TextWrangler.
Mir ist kein Linux-Standard bekannt, der so robust ist, um Dokumente zu binden - um so etwas wie den Mac zu machen, müsste zuerst eine Standardmethode zum Identifizieren von Anwendungen unabhängig von ihrer Position oder ihrem Namen existieren Java-Paket-ähnliche/Reverse-DNS-Methode auf dem Mac), dann eine Registrierung für Typ-Zuordnungen und Bindungen, gefolgt von genügend Desktop-Umgebungen, um nützlich zu sein, und eine Möglichkeit zur Registrierung von Anwendungen, wie sie installiert sind.
Sie benötigen nicht unbedingt separate Dateien, wie Info.plist
in Mac-Anwendungspaketen, um diese Informationen zu speichern; Selbst unter Mac OS X können Sie Informationen in einen Binary-Bereich einbetten, den Launch Services sehr gut indiziert (beachten Sie, dass es sich nicht um ein separates "fork" oder erweitertes Attribut handelt, sondern Debug-Informationen in eine ausführbare Datei eingebettet werden). So könnte vielleicht eine Ableitung der .desktop
Dateien eingebettet werden. Auf der anderen Seite benötigen Sie eine Möglichkeit, Inhalte zu erkennen.Idealerweise können Sie sogar Content-Sniffing wie den file(1)
-Befehl ausführen, um einen Dokumenttyp zu identifizieren. klassisches Mac OS tat dies mit der Translation Manager (die Registrierung von Konvertern von einem Format zu einem anderen, sowie Sniffer erlaubt).
UTIs und der Translation-Manager behandeln (d) Zwischenablage und ziehen & Drop-Inhalt sowie Dateien auf der Festplatte; Die Vereinheitlichung dieser Formatdarstellungen ist ziemlich nützlich, wenn Sie gerade dabei sind.