Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I would like to explore some new tweaks which can be done by the "defaults write" command in OS X(ML).

What can I do to find them out myself rather than hunting online for known tweaks?

share|improve this question

Disclaimer: I’m the author of ~/.osx, a collection of defaults write settings. These are the techniques that I use to find settings. Let me know if there is a better/easier method I didn’t mention here!

For most non-hidden settings, this is how you can find the correct preference keys in

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

For hidden settings, it gets trickier. You can use the command-line strings utility on any binary executable and see if any of the resulting text looks like a preference key. E.g.:

strings /System/Library/CoreServices/

Here’s another example that will look through all .framework files in /System/Library/Frameworks/ and filter the output somewhat:

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

There’s also a tool called GDB which can be used to find hidden preferences.

share|improve this answer
Thank you very much and I can't believe that you are replying me! I knew about your nice list at github long time ago btw. Thank you very very much! Will try this now. – Tom S Jul 31 '12 at 11:16
@Lri FWIW, I’ve done a clean Mountain Lion install just last week and defaults read; works fine here. – Mathias Bynens Jul 31 '12 at 18:34

Another strings command:

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 cfprefsd shows what property lists are modified. You can use fseventer to display other file system changes in real time.

defaults has a find subcommand:

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

Header files often contain definitions for preference keys:

grep PreferenceKey -r ~/Code/Source/WebKit/ | grep '\.h:'
share|improve this answer

What i assumed from your question is you want to explore tweaks/settings of an application. You can read preferences of an app with this trivial command

defaults read NSGlobalDomain


defaults read to read chrome writeable preferences from defaults write command which you asked for.

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .