Start

PrefEditDas Einstellungssystem von Mac OS X

Mac OS X verwendet eine ausgefeilte Technik, um Einstellungswerte zu verwalten, die von allen Programmen genutzt wird, die nativ für dieses Betriebssystem entwickelt wurden. Die Programme müssen sich nicht darum kümmern, ihre Voreinstellungen in Dateien abzulegen oder diese zu lesen. Diese Aufgabe wird auf automatische und unbemerkbare Weise komplett von Mac OS X erledigt. Die Programme müssen nicht einmal „wissen“, wie und wo ihre Einstellungen gespeichert werden.

Sobald ein Programm eine Voreinstellung für den Benutzer definieren will, z.B. die Standardposition auf dem Bildschirm, an der der Benutzer das Hauptfenster eines bestimmten Programms geschoben hat, sendet es an Mac OS X lediglich einen Auftrag „Ich bin Programm A. Speichere den Wert B für die Einstellung mit dem Namen C für den Benutzer D“. Das Betriebssystem stellt automatisch sicher, dass es sich zu einem späteren Zeitpunkt, an dem Programm A (gestartet von Benutzer D) wieder nach dieser Einstellung fragt, an den Wert zurückerinnert, egal ob das Programm oder der Computer in der Zwischenzeit abgeschaltet und später neu gestartet wurde.

Das heißt, wenn dieses Programm sein Hauptfenster wieder an die gleiche Stelle positionieren möchte, an der der Benutzer es beim letzten Mal genutzt hatte, fragt das Programm Mac OS X „Ich bin Programm A. Gib mir den bevorzugten Wert für die Einstellung mit dem Namen C von Benutzer D“. Mac OS X liefert dann den vorher gespeicherten Wert (B) an das Programm zurück und das Programm kann ihn benutzen, um das Fenster an die richtige Stelle zu legen. Auf diese Weise hat sich das Programm quasi an die vom Benutzer bevorzugte Einstellung „erinnert“, ohne zu wissen, wie Mac OS X diese Leistung im Hintergrund erbracht hat.

Einstellungsdomänen

Jedes Programm, das auf der grafischen Benutzeroberfläche von Mac OS X läuft, muss eine einzigartige Identifikation tragen. Das Einstellungssubsystem verwendet diese Identifikation dazu, den Zusammenhang herzustellen „diese Liste von Einstellungen gehört zum Programm mit jener Identifikation“. Gemäß Apples Gestaltungsrichtlinien für Software müssen diese Identifikationsnamen aus einer hierarchischen Liste beschreibender Bezeichnungen aufgebaut sein, die von links nach rechts von höherer zu niedriger Ebene geschrieben und durch Punkte getrennt werden. Der erste Teil der Hierarchie muss aus dem Internet-Domänennamen (DNS-Name) des Programmanbieters bestehen, so dass zwei verschiedene Software-Firmen niemals die gleiche Identifikation für ein Programm erzeugen können, selbst wenn sie zufällig ihre Produkte mit gleichen Namen versehen sollten.

Beispiel: Die eindeutige Identifikation für Apples Web-Browser Safari ist com.apple.Safari, denn er wird von einer Firma veröffentlicht, die den Internet-Domänennamen apple.com trägt und Safari ist der beschreibende Name, um dieses Programm innerhalb des Software-Angebots von Apple identifizieren zu können. Beachten Sie, wie com.apple.Safari von höherer zu niedriger Ebene („top down“) geschrieben wird, mit der wichtigsten Komponente am Anfang, während Internet-Domänennamen wie www.apple.com in Rückwärtsreihenfolge geschrieben werden, mit der höchstwertigen Gliederungsangabe zum Schluss.

Beim Arbeiten mit dem Einstellungssubsystem wird die Programmidentifikation zum Namen der Teilmenge der Einstellungswerte für dieses Programm, wobei dieser als Einstellungsdomänenname, oder in diesem Zusammenhang einfach als Domänenname bezeichnet wird. Je nach Typ des Dateisystems, auf dem Mac OS X intern die Teile seiner Einstellungsdatenbank ablegt, können die Namen manchmal mit, manchmal ohne Berücksichtigung der Groß- und Kleinschreibung behandelt werden. Aus diesem Grund sollte grundsätzlich angenommen werden, dass Einstellungsdomänennamen die Groß- und Kleinschreibung unterscheiden, so dass beispielsweise com.apple.Finder und com.apple.finder als unterschiedliche Namen behandelt werden.

Softwareherstellern steht es frei, mehr als eine beschreibende Namenskomponente zu verwenden, um ein bestimmtes Programm oder einen Teilaspekt eines Programms zu identifizieren. Beispiele hierfür sind com.apple.airport.airportutility und com.apple.airport.clientmonitor, die sich auf zwei unterschiedliche Programme beziehen, die beide Teile des Themengebietes „Airport“ sind.

Die Domäne, die sich auf alle Programme bezieht

Mac OS X verwendet eine spezielle Domäne, um Einstellungen zu identifizieren, die auf alle Programme anzuwenden sind, die vom gleichen Benutzer gestartet werden. Beispielsweise sollte die Benutzervoreinstellung für die bevorzugte Papiergröße bei Druckausgaben den gleichen Wert für alle Programme haben. Ein Benutzer könnte zwar unterschiedliche Papiergrößen in unterschiedlichen Programmen einstellen, falls er sich ausdrücklich dazu entscheidet, aber es sollte einen einzigen Standardwert geben, der auf alle Programme anzuwenden ist, bevor sich ein Benutzer zu solch einer Unterscheidung entschlossen hat. Diese Domäne wird globale Domäne genannt. PrefEdit benutzt diese Bezeichnung immer, wenn es sich auf Einstellungen bezieht, die bei allen Programmen zur Anwendung kommen. Mac OS X kann intern auch die reservierten Domänennamen NSGlobalDomain oder kCFPreferencesAnyApplication hierfür verwenden.

Die eingebaute Rückfalldomäne

In ganz bestimmten Fällen kann es nützlich sein, eine Art vorregistrierte Domäne zu haben, also eine Liste von Einstellungen, die wirksam wird, wenn sich der Benutzer überhaupt noch nicht für eine bevorzugte Auswahl entschieden hat. Diese Einstellungen verhalten sich wie Rückfallwerte, die als letzter Ausweg zum Einsatz kommen, wenn keine anderen bevorzugten Einstellungen gefunden wurden. Dies ist besonders auf einem frisch installierten Betriebssystem oder für ein neu installiertes Programm wichtig, das beim ersten Start durch den Benutzer noch keinerlei Voreinstellungen vorfindet. Für diesen speziellen Anwendungsfall verwendet Mac OS X das Konzept einer registrierten Domäne, die direkt in das Betriebssystem oder das jeweilige Programm eingebaut ist. Diese verhält sich wie eine normale Einstellungsdomäne, ist aber nicht änderbar und ist nicht wirklich ein Teil der Einstellungsdatenbank. PrefEdit verwendet den Begriff eingebaute Domäne, um sich hierauf zu beziehen. Mac OS X verwendet intern den reservierten Namen NSRegistrationDomain.

Andere Bereiche zur Gliederung von Einstellungen

Bis jetzt haben wir uns im Wesentlichen auf die Frage konzentriert „zu welchem Programm gehört eine bestimmte Einstellung“. Aber neben dem Programmbegriff gibt es andere Gliederungsbereiche und Unterscheidungskriterien, in denen Einstellungen zur Anwendung kommen oder eben nicht zur Anwendung kommen. Jeder Benutzer eines Computers sollte die Möglichkeit haben, seine eigenen bevorzugten Einstellungen zu verwenden. Wenn Benutzer A einen roten Bildschirmhintergrund mag, sollte er ihn einstellen können, völlig unabhängig von Benutzerin B, die einen blauen Hintergrund bei der Arbeit mit Mac OS X bevorzugt. Das heißt, das Einstellungssystem muss auch eine benutzerbezogene Bereichsgliederung unterstützen können.

In professionellen Netzen sollte dies noch komplexer sein: Wenn Benutzer A beispielsweise Universitätsstudent ist, der in einem großen Campus-Netzwerk arbeitet, sollte seine Einstellung für einen roten Bildschirmhintergrund automatisch auf jedem Mac OS X-Computer im gesamten Netz aktiv werden. Das heißt, egal ob Benutzer A sich an einem Mac in Gebäude P anmeldet oder einen anderen Mac in einem Labor in Gebäude Q benutzt, sollten seine Einstellungen und das Benutzerprofil mit ihm „mitwandern“ (Roaming). Mac OS X kümmert sich auch hierum automatisch, falls das Netz so eingerichtet wurde, zentrale Privatordner für alle Benutzer zu verwenden. Andere Einstellungen allerdings, z.B. die bevorzugte Druckqualität auf einem bestimmten Drucker, sollten computerbezogen sein. Möglicherweise hat ein Computer einen Schwarzweißdrucker, während ein anderes System einen Farbdrucker mit ganz anderen Einstellungsmöglichkeiten verwendet. Diese speziellen Einstellungen sollte nicht zwischen den verschiedenen Computern mitwandern, Mac OS X soll sie jedoch trotzdem pro Computer speichern.

Das heißt, tatsächlich muss zwischen drei verschiedenen Aspekten von Einstellungsdomänen unterschieden werden:

Jedes Mal, wenn Mac OS X eine Einstellung unter einem bestimmten Namen speichert oder ermittelt, berücksichtigt es gleichzeitig, auf welche Domänenschnittmenge aus Programm, Benutzer und Computer sich diese Einstellung bezieht. Diese Entscheidung wird anhand der laufenden Benutzersitzung getroffen. Es kann acht verschiedene Kombinationen der Begriffe geben, wie es im folgenden Bild dargestellt ist.

Schnittmengen der Einstellungsdomänen

Drei unterschiedliche Domänenbegriffe können zu acht Schnittmengen kombiniert werden.
Die grau markierten Bereiche werden im Moment nicht von Mac OS X genutzt.

Im Normalfall arbeitet Mac OS X mit der Domänenschnittmenge „bestimmtes Programm - aktueller Benutzer - alle Computer“ wenn ein Präferenzwert eingestellt und ansonsten nichts dazu gesagt wird.

Das Paar „alle Benutzer - alle Computer“ würde einen zentralen Ablageort erfordern, an dem Mac OS X Einstellungswerte für alle roamenden Benutzer und alle Computer des Netzwerks speichern könnte. Obwohl Mac OS X im Prinzip darauf vorbereitet ist, dies zu tun, hat Apple im Moment diese Kombination noch nicht implementiert. Das heißt, die Schnittmengen

bleiben in den bis jetzt veröffentlichten Versionen von Mac OS X ungenutzt. Dies könnte sich in zukünftigen Versionen des Betriebssystems ändern.

Der Domänensuchpfad für Einstellungen

Wenn ein Programm an Mac OS X die Anforderung sendet, einen bestimmten Einstellungswert aus der Datenbank zu holen, wird die laufende Benutzersitzung als Grundlage dazu verwendet, zu entscheiden, welche Domänenschnittmengen wirksam werden. Wenn eine bestimmte Einstellung in mehreren Schnittmengen verfügbar ist, sollten Einstellungen mit höherer Priorität solche mit niedriger Priorität überschreiben.

Wenn eine Benutzerin bespielsweise eine persönliche Einstellung für die Druckausgabequalität in einem bestimmten Programm, das auf einem bestimmten Computer läuft, vorgenommen hat, sollte dies Vorrang vor den Druckqualitätseinstellungen der allgemeineren Bereiche haben. Eine Einstellung sollte automatisch eine Einstellung des gleichen Namens überlagern, die für alle Computer und / oder alle Benutzer gesetzt ist. Mac OS X verwendet die folgende Prioritätsliste, um zu entscheiden, welche Einstellungen wirksam werden:

  1. Einstellungen für das aktuelle Programm - spezifisch für den aktuellen Benutzer - spezifisch für den aktuellen Computer
  2. Einstellungen für das aktuelle Programm - spezifisch für den aktuellen Benutzer - alle Computer
  3. Einstellungen für alle Programme - spezifisch für den aktuellen Benutzer - spezifisch für den aktuellen Computer
  4. Einstellungen für alle Programme - spezifisch für den aktuellen Benutzer - alle Computer
  5. Einstellungen für das aktuelle Programm - alle Benutzer - spezifisch für den aktuellen Computer
  6. Einstellungen für das aktuelle Programm - alle Benutzer - alle Computer
  7. Einstellungen für alle Programme - alle Benutzer - spezifisch für den aktuellen Computer
  8. Einstellungen für alle Programme - alle Benutzer - alle Computer
  9. eingebaute Rückfalleinstellungen

Diese Liste wird als Suchpfad für Einstellungswerte verwendet und von oben nach unten abgearbeitet. Der erste Eintrag in der Liste, für den die fragliche Einstellung definiert ist, „gewinnt“ und wird wirksam. Das heißt dieser Eintrag überlagert alle Einträge gleichen Namens, die noch weiter hinten in der Liste auftauchen könnten.

PrefEdit kann diesen komplizierten Suchvorgang optisch darstellen, falls gewünscht. Sie müssen die Prioritätsliste nicht erlernen, PrefEdit zeigt exakt an, welche Einstellungen in den Domänenschnittmengen die Einstellungen in den Schnittmengen mit niedrigerer Priorität überlagern.

Was steckt in einer Einstellung?

Wir haben bisher gelernt, dass Einstellungsdomänen eine Liste benannter Einstellungen enthalten. Aber was bedeutet der Begriff „Einstellung“ in diesem Zusammenhang genau? Eine Einstellung (Voreinstellung, Präferenz) in Mac OS X wird durch drei Teile charakterisiert:

Jede Einstellung muss einen Wert einer der folgenden Datentypen enthalten:

Beachten Sie, dass es erlaubt ist, Dictionaries und Arrays in beliebiger Reihenfolge und unbegrenzter Tiefe ineinander zu verschachteln. Eine Einstellung könnte beispielsweise ein Array von Arrays von Dictionaries von Zeichenketten enthalten, oder ein Dictionary von Arrays von Zahlen. Arrays und Dictionaries dürfen außerdem Elemente verschiedener Typen enthalten, zum Beispiel ein Array mit einer Zahl bei Index 0, einer Zeichenfolge bei Index 1 und einem logischen Wert bei Index 2.

Es bleibt den unterschiedlichen Programm vollständig überlassen, wie sie Eigenschaftsschlüssel, Typen und Werte der Einstellungen interpretieren. Weder Mac OS X, noch PrefEdit können wissen, wie ein Programm eine gegebene Einstellung verwendet. In ausgewählten Fällen kann der Anbieter eines Programms jedoch zusätzliche Hinweise über ein Einstellungsmanifest geben.