Wie kann man weitere Standardeinstellungen untersuchen und Optimierungen unter OS X vornehmen?

13

Ich möchte einige neue Verbesserungen untersuchen, die mit dem Befehl "Defaults Write" in OS X (ML) durchgeführt werden können.

Was kann ich tun, um sie selbst herauszufinden, anstatt online nach bekannten Verbesserungen zu suchen?

Tom S.
quelle

Antworten:

20

Haftungsausschluss: Ich bin der Autor ~/.osxeiner Sammlung von defaults writeEinstellungen . Dies sind die Techniken, mit denen ich Einstellungen finde. Lassen Sie mich wissen, ob es eine bessere / einfachere Methode gibt, die ich hier nicht erwähnt habe!


Für die meisten nicht ausgeblendeten Einstellungen finden Sie auf diese Weise die richtigen Voreinstellungsschlüssel in Terminal.app:

defaults read > a
# Change the setting
defaults read > b
diff a b

Bei versteckten Einstellungen wird es schwieriger. Sie können das Befehlszeilenprogramm stringsfür jede ausführbare Binärdatei verwenden und prüfen, ob der resultierende Text wie ein Voreinstellungsschlüssel aussieht. Z.B:

strings /System/Library/CoreServices/Finder.app/Contents/MacOS/Finder

Hier ist ein weiteres Beispiel, das alle .frameworkDateien durchsucht /System/Library/Frameworks/und die Ausgabe etwas filtert:

strings /System/Library/Frameworks/*.framework/Versions/Current/* /System/Library/Frameworks/*/Frameworks/*/Versions/Current/* 2> /dev/null | grep -E '^[a-zA-Z0-9_.-]{10,80}$' | sort | uniq

Es gibt auch ein Tool namens GDB , mit dem Sie versteckte Einstellungen finden können.

Mathias Bynens
quelle
1
Vielen Dank und ich kann nicht glauben, dass Sie mir antworten! Ich wusste übrigens schon vor langer Zeit von deiner netten Liste bei Github. Vielen vielen Dank! Werde das jetzt versuchen.
Tom S
2
@Lri FWIW, ich habe erst letzte Woche eine saubere Mountain Lion-Installation durchgeführt und defaults read;funktioniert hier einwandfrei .
Mathias Bynens
0

Ein weiterer Zeichenfolgenbefehl:

for f in $(mdfind kMDItemContentType==public.unix-executable -onlyin /System/Library/); do strings $f 2> /dev/null | grep -E '^[[:alnum:]_.-]{10,80}$' | grep ^Apple | sort -u | sed "s/^/${f##*/} /g"; done

sudo opensnoop -n cfprefsdzeigt an, welche Eigenschaftslisten geändert wurden. Mit fseventer können Sie andere Dateisystemänderungen in Echtzeit anzeigen.

Standardmäßig gibt es einen Unterbefehl find:

$ defaults find nsquitalw
Found 1 keys in domain 'Apple Global Domain': {
    NSQuitAlwaysKeepsWindows = 1;
}

Header-Dateien enthalten häufig Definitionen für Voreinstellungsschlüssel:

grep PreferenceKey -r ~/Code/Source/WebKit/ | grep '\.h:'
Lri
quelle
-1

Was ich von Ihrer Frage angenommen habe, ist, dass Sie Optimierungen / Einstellungen einer Anwendung untersuchen möchten. Mit diesem einfachen Befehl können Sie die Einstellungen einer App lesen

defaults read NSGlobalDomain

oder

defaults read com.google.Chrome Um die von Chrome beschreibbaren Einstellungen aus den von Ihnen angeforderten Standard-Schreibbefehlen zu lesen.

Mr.Shan0
quelle