Inhaltsverzeichnis

Preferences & User Defaults System

Preferences

Die Preferences Files (auch Property List1) → plist) sind bei Mac OS Konfigurationsdateien. Sie liegen im binär-Format oder als Textdateien (XML) vor. Sie sind in etwa mit der Microsoft Registry vergleichbar, wobei die Preferences Files bei Weitem nicht die Komplexität einer Windows Registry erreichen. Im Prinzip lassen sich die Preferences grundsätzlich mal in User Preferences und System bzw Application Preferences einteilen. Die meisten Anwendungen lassen benutzerdefinierte Einstellungen zu; in Mac OS wird dies in Anwendungen idR über das Menü Preferences bzw. Einstellungen erledigt bzw bei Systemkonfigurationen, wie zB die Netzwerkkonfiguration oder die Ländereinstellungen, über die Systemeinstellungen bzw. das Preferences Pane. Diese Einstellungen sind, bis auf wenige Ausnahmen (zB Netzwerk Einstellungen → Dynamic Store2)), permanent und werden beim Start der Anwendung bzw. beim Systemstart ausgewertet. Durch die Trennung der User-Preferences und System-Preferences ist es möglich, jedem Anwender seine eigenen Einstellungen zu ermöglichen. Ähnlich wie bei Microsoft die Registry Rootkeys HKEY_CURRENT_USER und HKEY_LOCAL_MACHINE.

Die Preferences Files werden im Filesystem idR für den Benutzer in seinem Homedirectory ~/Library/Preferences bzw. für das System in /Library/Preferences abgelegt und (sollten) haben ein Prefix, welcher den Hersteller der Anwendung identifiziert wie zB bei Apple com.apple, sowie den Namen der Anwendung oder möglicherweise auch nur eine Systemfunktion im Namen. Als Suffix wird .plist verwendet → VendorPrefix.AppFunction.plist (zB com.apple.TextEdit.plist). Es finden sich aber auch noch Dateien in den Preferences Verzeichnissen, welche sich nicht nach dieser Nameskonvention richten. Oft sind das irgendwelche älteren Formate aus veralteten Anwendungen oder Third-Party Anwendungen haben ihre eigene Philosophie, was ihre Konfigurationsdateien betrifft.

Eine besondere Rolle spielt die .GlobalPreferences.plist. Man findet sie sowohl im ~/Library/Preferences/ Verzeichnis wie auch im /Library/Preferences Verzeichnis. Sie representiert die Domain NSGlobalDomain. In ihr werden alle Einstellungen abgespeichert, die nicht einer bestimmten Anwendung zugeordnet werden. Da kommt zB das Aussehen des »Öffnen« oder »Speichern Unter« Dialogs in Frage oder auch diverse Farbeinstellungen wie zB die Highlight Color. Kurz gesagt, wenn eine plist einer Anwendung eine bestimmte Eigenschaft nicht beinhaltet, diese aber in der .GlobalPreferences.plist definiert ist, wird diese verwendet.

Es ist auch möglich, dass Anwendungen ihre Preferences weder in ~/Library/Preferences noch in /Library/Preferences ablegen sondern zB im Programmverzeichnis selbst. Quark Express bietet zB diese Möglichkeit an, was in Verbindung mit einem Lizenserver (QLA) uns in die Lage versetzt ein Image einer kompletten Installation inklusive benutzerdefinierter Einstellungen zu erstellen und am nächsten Mac wieder zu installieren. Dieser Wanderzirkus der Konfigurationsdateien hat aber auch den Nachteil, dass man sich nicht auf einen Ablageort verlassen kann. Auch vermisse ich ein Tool oder Shell-Kommando, welches mir zu einer Applikation die zugehörige Konfigurationsdatei ausgibt.

Die Preferences Files spielen beim Troubleshooting eine wesentliche Rolle. Bei fehlerhaften Anwendungen hat man zB die Möglichkeit, die dazugehörige(n) Preferences zu löschen (oder erstmal nur umzubenennen in zB *.plist.old), dadurch werden diese beim Start der Anwendung bzw. beim Systemstart neu, mit Standardeinstellungen, erzeugt. Neben diesem pragmatischen Lösungsansatz kann man auch hergehen und die Preferences der Anwendung zu analysieren aber im Prinzip ist man mit diesem Lösungsansatz eigentlich gut bedient und reicht in den meisten Fällen auch aus.

Note: Es ist dabei wichtig zu wissen, dass man nach dem Löschen der Preferences die benutzerdefinierten Einstellungen der betroffenen Anwendung neu setzen muss.

Für die Analyse und Bearbeitung stehen einige Boardmittel, sowohl in der GUI (→ Finder) wie auch im CLI (→ Terminal) zur Verfügung. Für die GUI kommt der Property List Editor in Frage, welcher sich in den Developer Tools auf der Mac OS Installations CD befindet. Diese werden bei einer Standardinstallation nicht mit installiert. Des Weiteren kommen zB die CLI Tools plutil3) und defaults4), auf welches der folgende Abschnitt näher eingeht, in Frage. Eine besondere Rolle spielen die Preferences Files in /Library/Preferences/SystemConfiguration. Sie repräsentieren den Dynamic- bzw. Persistant Store, in welchem die Netzwerkeinstellungen gespeichert werden.

User Defaults System

Das Mac OSX User Defaults System ist eine Schnittstelle zur Verwaltung von Voreinstellungen. Die Voreinstellungen sind in Domains organisiert, die nach dem umgekehrten DNS Namens Schema bezeichnet werden. So sind die Domains der Apple Programme und Systemdienste durchweg nach dem Muster com.apple.xyz benannt, wobei xyz normalerweise für den Programm- oder Dienstnamen wie com.apple.mail oder com.apple.finder steht. In manchen Fällen ist dieser Bereich noch in Unterdomains wie zB com.apple.menuextra.clock oder com.apple.menuextra.textinput gegliedert. Wichtig ist hierbei nur, dass der Name systemweit eindeutig ist. Einige Einstellungen werden von mehreren Programmen oder Diensten gelesen; die Auswahlfarbe, die Spracheinstellungen oder die zuletzt benutzten Ordner in Öffnen- und Sichern Dialogen sind ein Beispiel dafür. Diese Voreinstellungen werden in einer eigenen Domain mit dem Namen NSGlobalDomain gespeichert.

IdR werden die Voreinstellungen der einzelnen Programme in deren Menüpunkt Einstellungen vorgenommen und dadurch in die plist-Datei geschrieben. Es gibt aber etliche Ausnahmen, wie zB Systemdienste, die gar keine Benutzerschnittstelle besitzen, oder schlicht und ergreifend fehlende Einstellmöglichkeiten im betreffenden Einstelldialog von diversen Anwendungen. Mit dem Programm defaults können auch diese Voreinstellungen gelesen, geändert oder gelöscht werden. Es ist ratsam, das betreffende Programm (wenn möglich) zu schliessen, wenn man mit defaults in deren Preferences Dateien etwas ändert.

Die Syntax lautet folgendermaßen: defaults Modus Domain [Schlüssel | .plist]

Die Modis:

$ defaults domains | tr ',' '\n' | nl 
     1	 DVD Ripper for Mac
     2	 Icns2Rsrc
     3	 MacSOUP
     4	 Wondershare DVD Ripper
     5	 Wondershare Video Converter
     6	 ca.mactracker.mactracker
     7	 ca.mactracker.mactracker3
     8	 ch.sudo.cyberduck
     9	 com.Geezerbuttz.mtr
    10	 com.adobe.ARM
    11	 com.adobe.Acrobat.Pro

         ~~~ snip ~~~

   174	 org.mozilla.crashreporter
   175	 org.mozilla.firefox
   176	 org.mozilla.thunderbird
   177	 org.sil.Ukelele
   178	 org.smfr.mtnw
   179	 org.videolan.vlc
   180	 org.videolan.vlc.LSSharedFileList
   181	 org.x.X11
   182	 pbs
   183	 widget-com.apple.widget.calendar
   184	 widget-com.apple.widget.weather
   185	 widget-com.apple.widget.worldclock

pronto 2010/05/25 20:12

Eine weitere Möglichkeit das (oder die) Preferences File(s) zu ermittel, welche für einen bestimmten Zweck verwendet werden, ist das Tool fseventer7), es eignet sich hervorragend um Dateisystem Aktivitäten zu visualisieren. Mit den passenden Filtern versehen, entsteht recht schnell ein Überblick was da wo gerade passiert. Im Falle der Preferences Files liegt es nahe den Filter auf .plist zu setzen:

Wenn man die Aufzeichnung startet und im PrefPane Ton die Änderung vornimmt, wird sehr schnell ersichtlich, welche plist-Datei in die Sache verwickelt ist.

pronto 2010/07/22 12:18