If you’ve used OS X applications for any length of time, you’re probably familiar with tooltips—those little floating yellow tags of explanatory text that appear when your mouse hovers over a button or other onscreen item for about a second (seen in the screenshot below). In iPhoto, for instance, hover your mouse over the Slideshow button in the toolbar, and a second later, the oh-so-helpful tooltip “Create a new slideshow” pops into view. Now, not all tooltips are this meaningless, though I find that many are annoyingly obvious, like this example. Even if you find the tooltips helpful, you might find the pop-up nature of the tips themselves distracting, popping into existence as you’re just sitting there thinking, not realizing you’ve left your mouse over an onscreen control of some sort.
Well, fear not, for you don’t have to live with tooltips if you don’t want to. Or, if you wished they appeared more quickly, you can make that change, too. The secret? Terminal, of course, where you can write certain preferences that aren’t accessible via the GUI. In this case, we’re going to modify the
NSInitialToolTipDelay property. As you might guess, this property controls the amount of time that must pass between hovering your mouse over a control and the appearance of the tooltip. By default, this value is set to 1,000 milliseconds (one second) for all applications.
There are two ways you can change this value—globally, for all applications, or on an application-by-application basis. Making the change globally is easiest, so I’ll cover that first.
If you despise tooltips, and never want to see them again accidentally, the easiest thing to do is set the initial delay to a large value, such as 10 seconds. Unless you leave your mouse hovering over a control for a really long time, you’ll never see a tooltip again. To do this globally, just copy and paste this command into Terminal, then press Return:
defaults write -g NSInitialToolTipDelay -int 10000
From now on, tooltips won’t appear until you’ve hovered for 10 seconds over a given onscreen control for every application (the
-g bit means “global change”). Still not long enough? Try
100000 instead, or 100 seconds. These changes will apply to any program launched after you make the change; open applications will change the next time they’re quit and relaunched.
Want them to appear quicker, rather than slower? Try a smaller number, like
300 (three-tenths of a second). For instantaneous tooltips, try using
Per application change
If tooltips bother you in only one application—iPhoto, for instance—you can change their behavior in just that program. To do so, enter this command in Terminal, then press Return:
defaults write com.apple.iPhoto NSInitialToolTipDelay -int 10000
From now on, just iPhoto will have the 10 second delay. The key to the above command is the
com.apple.iPhoto piece, which is the file you’re modifying with the command. But how do you figure out what the right name might be for a given application? It’s actually just the name of the application’s preference file, less the
.plist portion of the name. One way to find the right name is to scan your user’s Library -> Preferences folder. On my machine, though, I have hundreds of files in that folder, and not every program has an obviously-named preferences file, so manually scanning can be somewhat tedious. Sure, you could use Spotlight, but you may still find too many matches (from other folders) to quickly identify the preferences file.
Finding domains names
Once again, Terminal to the rescue. Note that this bit is not required for this hint in any way; it just makes finding things somewhat easier. In Terminal, type this command, as an example:
defaults domains | perl -pe 's/, /n/g' | grep iMovie
Now that’s a long complex looking command, but it’s actually simpler than it appears—because it’s actually three commands working in concert with each other—the output from one is sent to the next via the pipe symbol (
| ). Here’s what each individual command does:
defaults domains: On its own, this outputs a single long line (comma-separated) showing every program that the
defaultssystem is aware of. Since it’s one line, though, you can’t do much with it just yet—the
grepsearch tool, for instance, returns lines that contain a match to the search term, so it would return the entire chunk of text again when it found a match!
perl -pe ‘s/, /n/g’: Working with the list of output from the previous command, we’re going to use the
perltext processing system to do an on-the-fly modification of that output. The
-peoptions tell perl to output each line of text that it reads (
-p), and to accept the one-line program that follows the
e. The one-line program can be found between the single quotes, and translated to English, it would read like this: search for every instance of comma-space and replace it with a line break character. The
/gat the end means to repeat the replacement after finding and replacing the first match.
grep iMovie: This is the application we’re trying to find; replace
iMoviewith whatever application it is whose defaults name you’re trying to find.
$ defaults domains | perl -pe 's/, /n/g' | grep iMovie com.apple.iMovie
So for this example,
com.apple.iMovie is what you’d use in your
defaults write command.
The return of the tooltips
If, at any point, you decide you want your tooltips to return to their stock behavior, just delete the change you made with one of these two commands:
defaults delete -g NSInitialToolTipDelay defaults delete com.apple.iPhoto NSInitialToolTipDelay
Of course, you’ll need to replace
com.apple.iPhoto with the domains name for the application you’re resetting. Note that any application-specific settings you have made will override the global setting. So if you have modified an individual application’s setting, you’ll have to delete that setting, and not just the global setting, to get back to the stock behavior.