Start

Das Einstellungssystem von macOS

macOS 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 macOS 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. eine Fensterposition auf dem Bildschirm, an die der Benutzer das Hauptfenster eines bestimmten Programms geschoben hat, sendet es an macOS 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, sendet das Programm an macOS die Anfrage „Ich bin Programm A. Gib mir den bevorzugten Wert für die Einstellung mit dem Namen C von Benutzer D“. macOS 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 macOS diese Leistung im Hintergrund erbracht hat.

Einstellungsdomänen

Jedes Programm, das auf der grafischen Benutzeroberfläche von macOS läuft, muss eine eindeutige, d.h. 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 gleich benennen 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 Menge der Einstellungswerte für dieses Programm, wobei der Name als Einstellungsdomänenname, oder in diesem Zusammenhang einfach als Domänenname bezeichnet wird. Je nach Typ des Dateisystems, auf dem macOS 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

macOS 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 spezielle Domäne hat den Namen NSGlobalDomain.

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. Jeder Benutzer eines Computers sollte die Möglichkeit haben, seine eigenen bevorzugten Einstellungen zu verwenden. Wenn Benutzer A einen roten Bildschirmhintergrund mag, sollte er diesen einstellen können, völlig unabhängig von Benutzerin B, die einen blauen Hintergrund bei der Arbeit mit macOS 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 macOS-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). macOS 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, macOS soll sie jedoch trotzdem pro Computer speichern.

Das heißt, in der Praxis muss zwischen drei verschiedenen Aspekten von Einstellungsdomänen unterschieden werden:

Jedes Mal, wenn macOS 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 Bild unten dargestellt ist.

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

Im Normalfall arbeitet macOS 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 macOS Einstellungswerte für alle roamenden Benutzer und alle Computer des Netzwerks speichern könnte. Obwohl macOS 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 macOS ungenutzt.

Der Domänensuchpfad für Einstellungen

Wenn ein Programm an macOS 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 beispielsweise 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. macOS 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 auswerten und darstellen, falls gewünscht. Sie müssen also die Prioritätsliste nicht nachvollziehen, sondern bekommen automatisch angezeigt, welche Einstellungen für ein bestimmtes Programm, das Sie aufrufen, wirksam sind.

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 macOS 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 ganzen Zahl bei Index 0, einer Zeichenkette bei Index 1 und einem Wahrheitswert bei Index 2.

Es bleibt den einzelnen Programmen vollständig überlassen, wie sie Eigenschaftsschlüssel, Typen und Werte der Einstellungen interpretieren. Weder macOS, noch PrefEdit können wissen, wie ein Programm eine gegebene Einstellung verwendet. Der Anbieter eines Programms kann jedoch zusätzliche Hinweise über ein Einstellungsmanifest geben, falls er dies möchte.