Tutorial: Preferences Files: The Complete Story (Part III)
Ted Landau
Last month, in Parts I and II of this tutorial series, we began our exploration of the world of preference (.plist) files. I explained what .plist files are, what they do, and where on your drive you can find them. Finally, I described how to open and view the contents of these files. With this installment, we detail with the answers to the critical why question about .plist files:
PART III: Why bother to view or edit .plist files?
Q. As covered last month, the most common use of .plist files is to store changes that a user makes via the Preferences dialogs of applications. Other changes to .plist files typically occur automatically, such as when you resize or move a window, with no need to access the file directly. Given this: why would I ever want or need to view a .plist file?
A. The answer is that there are preferences settings of interest that can only be accessed by opening the relevant .plist file. As examples:
- Go beyond the limits. Example: In the Dock System Preferences pane, there is a Magnification slider that goes from Min to Max. However, it is possible to enlarge the magnification beyond the Max in this slider. To do so, however, you need to edit the com.apple.Dock.plist file.
- Expand your options. Example: When you select to connect to a server, you are typically given the option to login as a Guest. Apple has provided a way to disable this guest access, if you wish. It is done via a property listed in a .plist file. There is no user interface to this property; you have to do it from the .plist file itself.
- Access "hidden" options. Example: Check the application (Finder) menu of the Finder. Unlike almost every other application, it has no Quit command. This makes sense, as you would rarely want to quit the Finder. But there are few occasions, mainly related to troubleshooting, where quitting the Finder is helpful. However (ta da!), there is a hidden .plist setting, in the com.apple.finder.plist file, that allows you to add a true Quit command. Once again, adding this setting requires direct access to the relevant .plist file.
Note: You cannot truly quit the Finder via a Force Quit. If you try, the Finder indeed quits, but then immediately relaunches. If you want the Finder to stay quit, you are out of luck with a Force Quit.
Q. Hidden items? Can you explain more clearly what you mean by this?
A. Sure. What I mean is that, even if you opened the relevant .plist file, you would not find the property listed. It is entirely missing, unless and until you add it.
Q. Wait a minute. If the property is missing altogether, and not documented anywhere, how do I learn that it exists?
A. Yup. That's the question that everyone gets around to asking sooner or later. The answer is that the developer of the software, of course, knows about these properties and he can communicate their existence in various ways:
- It might turn up in relatively obscure documentation, such as an Apple Developer tech note. For example, buried in this Apple Technical Note are the details of how to use a .plist file modification to enable Dashboard's developer mode (a subject we will explore more in a future segment of this series).
- Otherwise, the developer may post the information in his personal Weblog or tell it to someone else who similarly posts it on the Web.
Whatever the route, the tip eventually winds up getting circulated among mainstream Macintosh Web sites and magazines, such as here at MacFixIt. And that is how most people eventually learn about it.
Q. That seems so hit-or-miss. Are you sure there isn't some place, such as somewhere inside an application's package, where I could be sure to find a list of all possible .plist settings for that application?
A. Sadly, no. The cold truth is there is no sure way to find out about hidden settings.
You may occasionally get useful results by applying the Unix strings command to an application's code. Skipping over the details, this command lists all readable text contained within the selected code. This might reveal the name of a hidden .plist property. But there are no guarantees. Personally, I almost never have success with this method.
Q. So why do developers do this? What's the point of keeping these things hidden?
A. The precise point varies. But the general rule is that these settings are intended only for a limited audience (such as developers or advanced users), and so they are hidden to prevent the rest of us from messing with them.
Q. If a hidden property is not included in the .plist file, how does the application know what its value should be?
A. Even hidden properties have a built-in default value. For example, an option to enable a hidden developer mode would typically be set by default to "no." This means that, even if the .plist property is not present, the application "knows" to have developer mode turned off by default. So there is no harm done by not listing these hidden properties. It's only if you want to change a value from its default setting that you need to know about the hidden property.
By the way, some properties that appear to be hidden are really not. Or at least not in the sense that I am talking about here. Let me explain. If you check the Dock System Preferences pane, for example, you will see a number of settings. However, if you open the com.apple.dock.plist file, you may not find a property that corresponds to each of these settings. In this (and other similar cases), the property is typically missing because it does not appear in the .plist file until the setting is changed from its default value. Because changing the setting can easily be done from a Preferences dialog or pane, I don't consider this a true hidden setting.
To see what I mean about these not-really-hidden settings, try this:
- Go to ~/Library/Preferences and locate com.apple.dock.plist. Rename it ~com.apple.dock.plist.
- Go to the Dock System Preferences pane and make a change. For example, from the "Minimize using" pop-up menu, select Scale Effect instead of Genie Effect. If you now look in the ~/Library/Preferences folder, you'll see that a new file named com.apple.dock.plist has been created.
- Open this new file in Property List Editor (see last month's article if you need help in doing this). You'll see that there is only one property listed (mineffect), the one that you just changed, and its value should be "scale." The point is that this property was not added to the .plist file until you changed its value from the default (genie) setting!
- Compare this to the original (just renamed) .plist file. For example, in my case, there are several dozen values listed in the original file. Most of these first appeared as I made modifications to the Dock settings or the Dock itself. Because I had never previously changed the "Minimize using" setting, there is no mineffect property in this list.
- Close both .plist files.
- OK. Now delete the newly created com.apple.dock.plist file and give back the original name to the renamed file. This gets you back to where you were before our little demonstration began and makes sure that you don't lose any of your previously created Dock setting modifications.


Figure 1. (a) The Dock System Preferences pane and (b) a newly created "default" com.apple.dock.plist file, after modifying the "Minimize using" property.
Note: If you are feeling a bit more adventuresome, try this:
- Before doing Step 6 above, launch Activity Monitor. Locate the Dock process and click the Quit Process button in the Toolbar. The Dock should quit and immediately relaunch. However, the Dock will now likely look quite different. This is because its settings are based on the newly created .plist file, not the original one.
- Now re-open the newly created active com.apple.dock.plist file. You will find that several new properties have been added. This represents the full set of (normally visible, not hidden) default settings. They get added to the .plist file when the Dock is launched for the first time (or, as in our case, when the Dock is launched and detects that the default properties are missing from its .plist file). Most applications store a set of default .plist property values. If you delete an application's .plist file, these defaults are used to automatically create a new .plist file with all the application's default settings intact.
- Close the .plist file. Follow Step 6 above. Then Force Quit the Dock again. All your old settings should now return.
Q. You said that Apple provides no way to modify these hidden settings, except by directly editing the .plist file itself. What about shareware and freeware utilities? Do they help?
A. Most certainly. As the Mac community discovers various hidden .plist settings, there are a host of utilities that get updated to add the new settings to their list of features. Two of my favorites are TinkerTool and Cocktail.
For example, you can add a Quit menu item to the Finder (as discussed above) by simply enabling a checkbox in either of these utilities.

Figure 2. TinkerTool's option to add a Quit menu item to the Finder.
But let's be clear. All these utilities are doing here are making the exact same .plist changes as you could do yourself. They just simplify the process by doing the change for you.
The advantage of using Property List Editor (PLE), instead of these utilities, is that you can make any change you want, not just what these utilities choose to provide. And you can do it all with one free utility, instead of several shareware programs.
Still, there is no denying that these utilities are often more convenient that using PLE. Personally, I use both. Which I prefer depends on exactly what I am trying to do, and sometimes just what mood I am in.
Q. OK. Enough of the "why" questions. Before ending this segment of the tutorial series, how about giving the specifics on using PLE to make at least one of the changes you covered here today?
A. Be glad to. And by the way, in future installments of this series, I will provide the full instructions on how to make all of the .plist changes covered in this article. For now, as one example, I'll show how to add a Quit menu item to the Finder:
- Open com.apple.finder.plist in PLE.
- Click the disclosure triangle to the left of the word Root. This reveals all of the properties in the file.
- Click the New Child button.
- Replace the text that reads "New Item" in the first column with "QuitMenuItem."
[Note: If you already have an item with this name, you will get a warning message asking whether or not you want to replace the existing item. I am assuming that you do not have this item already.] - In the Class column, select Boolean from the pop-up menu.
- In the Value column, a pop-up menu should appear with Yes and No as the two choices. It should have Yes selected by default. Leave it that way.
- Select Save from the File menu to save your changes. You can now quit PLE.
- Holding down the Option key, select the menu for the Finder icon in the Dock. One of the choices should be Relaunch. Select it. You need to do this for the change to the .plist file to take effect.
- Now go to the Finder menu. There should be a Quit Finder item at the bottom of the menu.

Figure 3. The "QuitMenuItem" property, as view in Property List Editor.

Figure 4. The Quit Finder item in the Finder's Finder menu.
To see what happens if you use this command, select it and watch the Finder quit. You can reopen the Finder simply by clicking the Finder icon in the Dock. To remove the command, simply select the QuitMenuItem property in PLE and click the Delete button (alternatively, you can change its Value to No); once again, save the com.apple.finder.plist file and relaunch the Finder.
Whew! Last month, I promised that this installment would cover how to interpret .plist files and edit their content. Well, we did get into this a bit with this example. But it is hardly the full story. It turns out, answering the why questions here took much more space than I anticipated. So, the full story on interpreting and editing .plist files will have to wait until next month's installment. See you then.
Like what you've found in this tutorial? Get more troubleshooting guidance (updated daily) by subscribing to MacFixIt Pro.
Resources

Monty
things not in the normal GUI, you must realize that you're being a test-pilot
for the app.
Consider the case of a new facility that isn't quite debugged in time for the
app to ship. An easy way to avoid trouble is to simply yank the setting from
the Preferences UI, easily done with Interface Builder. When the feature is
working properly, the UI is added back and the feature is advertised.
In the interim, enabling the feature could be quite dangerous! There's no way
of knowing why there's no UI to enable the (still broken) feature, so
you're completely on your own if you enable it.
And we wonder why there are problems when people apply updates!
editing plists? I've already waited one month for this tutorial. How about two
weeks?
How does one do this (as I'm on a network with several neighbors in my condo):
"Expand your options. Example: When you select to connect to a server, you are typically given the option to login as a Guest. Apple has provided a way to disable this guest access, if you wish. It is done via a property listed in a .plist file. There is no user interface to this property; you have to do it from the .plist file itself."
Thank you!
There are many preference options (keys) that you can adjust for many
applications (domains). I am not too sure what application you would need to
change to change this preference but if you are curious and don't want to
wait for the next tutorial on this subject to come out then you should check
out the man page for the 'defaults' command in Terminal. Type:
man defaults
and it will show you everything you need to know about how to read, write,
and delete all preferences for all applications. Remember that the syntax for
specifying an application (domain) is com.somecompany.someapplication
ie the domain name for the Dock application is com.apple.Dock since apple
is the company that makes the application Dock. Once you figure out, which
application it is that you want to change the prefernece to, then you can use
the command (as shown in the man page):
defaults read com.apple.someapplication
this will show you all preferences that can be changed to that certain
application.
sorry for all the run-on sentences :) hope this helps --
How can I create a new .plist file e.g. to do the following terminal command equivalent at startup:
sudo update_prebinding -root - force
?
shanghai apartment
The Mines of Moria, the first expansion for Lord of the Rings Online which is currently in beta, offers many chances for adventurers to explore and 3Zoom is committed to providing best gaming service for MMORPG players. Pre-order Lord of the Rings: <a href="http://3zoom.com/uslotro-Arkenstone/cheap-cdkey-6-2069.html">Mines of Moria CD-key (US)</a> for only $39.99, Lord of the Rings: <a href="http://3zoom.com/eulotro-Belegaer/cheap-cdkey-7-2080.html">Mines of Moria CD-key (EU)</a> for only $49.99 at 3Zoom! <br />
Before join in the game, come to 3Zoom and pre-order <strong><a href="http://3zoom.com/cheap-game-card.html">here</a></strong>.</p>
<p> </p>
[url=http://www.bhgflaw.com.tw/]shally[/url]
<A href="http://www.langdfnshanghai.com">shanghai apartment</A>