Terminate the tooltips

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.

Global change

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 1.

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 defaults system is aware of. Since it’s one line, though, you can’t do much with it just yet—the grep search 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 perl text processing system to do an on-the-fly modification of that output. The -pe options 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 /g at 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 iMovie with whatever application it is whose defaults name you’re trying to find.
Put it all together, and it looks like this:

	$ 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.

Subscribe to the Best of Macworld Newsletter

Comments