Submit Hint Search The Forums LinksStatsPollsHeadlinesRSS
14,000 hints and counting!

10.5: Revert Help Viewer to 10.4-like behavior System 10.5
For anyone out there who gets frustrated by the Leopard Help application being a background app (no Dock icon), and one that can't be hidden behind other windows, I have a solution for you. In other words, this hint will revert the Help application to the Tiger (and earlier) behavior. This hint requires the Apple Developer Tools (Xcode), and a hex editor such as HexEdit or similar. Read on for a smorgasbord of Interface Builder, Property Lists and hex editing!

You will also require root access. Login via the login window, or login via the Terminal and launch your executables with sudo. [robg says: please back up Help Viewer before trying this hint -- see my note below for a quick way to do so!]

Part 1: Disable background behaviour
  1. Open /System » Library » CoreServices » Help Viewer.app » [Control-click and pick Show Package Contents from the pop-up menu] » Contents » Resources » English.lproj » HelpWindow.nib with Interface Builder. Click once on HelpWindow in the main window, then show the Inspector (Tools » Inspector) if it's not visible. Go to the Attributes tab of the Inspector, and turn off the Utility and Non Activating checkboxes. Save the file.
  2. Open /System » Library » CoreServices » Help Viewer.app » [Control-click and pick Show Package Contents from the pop-up menu] » Contents » Info.plist with Property List Editor, TextEdit, or any other plist editor of your choice. Change the value for LSUIElement to 0 as a string. Save.
  3. Launch Help Viewer to see if the changes have worked for this part -- you should see a Dock icon for Help Viewer when you launch it.
Part 2: Executable window hacking
  1. Open /System » Library » CoreServices » Help Viewer.app » [Control-click and pick Show Package Contents from the pop-up menu] » Contents » MacOS » Help Viewer with HexEdit or any other hex editor of your choice.
  2. Between hex addresses 00009148 and 00009151, replace this line...
    73 65 74 4C 65 76 65 6C 3A
    ...with this line...
    69 73 56 69 73 69 62 6C 65
    This replaces the string setLevel: with isVisible. Save the file.
  3. Launch Help Viewer again and test the window behavior to see if these changes have worked -- the window should now move to the background when another app is clicked.
You are finished! Yay. Go and get yourself a beer because you deserve it. IMPORTANT NOTE: Now that you have made these changes, the Help Viewer will no longer automatically come to the front when you launch it from the Help menu.

[robg adds: I strongly recommend creating a backup of the Help Viewer program before trying this hint -- just drag it to the Desktop, and you'll make a copy of it. Actually, if you make two backups, this hint is much simpler to implement. After you drag Help Viewer to your Desktop, rename it to Help Viewer Original (or similar), then drag another copy of the one in CoreServices to your Desktop. Do all of the above editing on this copy, and you won't need root privileges. When done, drop the modified copy back into CoreServices, authenticate when asked, and run Repair Permissions (to set the proper ownership and privileges). I found this hint works as described, and the Help Viewer window on my machine is no longer locked in the foreground, and there's a Help Viewer icon in the Dock when it's running. (If you don't want the Dock icon, just skip the LSUIElement step.)

Note, however, that this will break the digital signature (see this hint) on the Help Viewer application...though I'm not sure what issues that might cause, given that Help Viewer doesn't access your Keychain, for example. If you know of other downsides, please post in the comments; I haven't seen any oddness in my testing. Note, too, that any updates to Help Viewer will probably reset your changes, and break this hint. If that happens, you'll want to use HexEdit's search feature to find the hex string, and not rely on the listed hex address, as it may have changed with the update.]
    •    
  • Currently 3.57 / 5
  You rated: 3 / 5 (7 votes cast)
 
[12,906 views]  

10.5: Revert Help Viewer to 10.4-like behavior | 7 comments | Create New Account
Click here to return to the '10.5: Revert Help Viewer to 10.4-like behavior' hint
The following comments are owned by whoever posted them. This site is not responsible for what they say.
10.5: Revert Help Viewer to 10.4-like behavior
Authored by: eddy_k on Feb 14, '08 08:54:47AM

Using a French system, I had to replace the modified file HelpWindow.nib from English.lproj into French.lproj because this one could not be opened.
Hint work but Command-Q shortcut doesn't work anymore, and, as Robg says, help window doen't come immediately in front of other windows.



[ Reply to This | # ]
10.5: Revert Help Viewer to 10.4-like behavior
Authored by: kyngchaos on Feb 14, '08 08:55:04AM

Cool. Though it's a bummer that hacking the binary is required. Luckily the "isVisible" string is exactly the same length as "setLevel:".

I tried figuring this out as soon as Leopard came out, but only got as far as the window settings in Interface Builder.

One correction/addition: it's a universal binary, so there are two occurrences of setLevel to replace, one for each architecture. I think the first one is Intel, so if you're on a PPC Mac you need to at least replace the second one, if not both.

Some other things I noticed:

  • Apple-Q does not work to quit Help Viewer, even though it has the shortcut listed in the menu. And closing the last/only window doesn't quit it either.
  • I have another language installed besides English, and it's nib is "compiled", which Interface Builder says it can't edit. I don't actually use this other languagge (it's there for the future possibility of learning the language), so I don't know what I would edit. Maybe the compiled nib is a reference to the English nib?
  • Clicking on the Dock help Viewer icon opens a new help window, even if one is already open. A bit annoying.


[ Reply to This | # ]
10.5: Revert Help Viewer to 10.4-like behavior
Authored by: kyngchaos on Feb 14, '08 09:03:18AM

Update: Help Viewer WILL quit when closing the help window ONLY if it is the original help window and no other help windows were opened (like when the Dock icon is clicked).



[ Reply to This | # ]
10.5: Revert Help Viewer to 10.4-like behavior
Authored by: louisk2 on Feb 14, '08 05:16:09PM
Yes, there are two setLevel: calls in the binary, however editing the second one causes errors and an application crash! The universal binary doesn't duplicate itself entirely for each architecture, just parts.

Yes it is lucky that isVisible is the same length, and does not cause a crash when called - no results need to be returned from the call phew :P

I also have a utility I wrote to let the Help Viewer show itself when called from the help menu - yet I am not sure how to get Command-Q working again. Download it here: http://panzarino.100webspace.net/development/leopardHelpHelper.zip

[ Reply to This | # ]
10.5: Revert Help Viewer to 10.4-like behavior
Authored by: kyngchaos on Feb 15, '08 10:35:40AM

I edited both copies of setlevel and don't get crashes or errors. I'm on an Intel Mac, no PPC Mac with Leopard to test on.

I'm not sure what you mean by letting Help Viewer open when called from the Help menu. When I select a Help menu item, it opens Help Viewer and brings it to the front. Maybe you mean when Help Viewer is already open? I do find that when Help Viewer is already open and in the background, selecting another Help menu item doesn't bring Help Viewer to front, though the newly selected item is at least opened in Help Viewer.



[ Reply to This | # ]
10.5: Revert Help Viewer to 10.4-like behavior
Authored by: ephramz on Feb 14, '08 03:04:45PM

I found I had to turn off "Hide on Deactivate" in the Interface Builder to prevent the windows from disappearing in the background as well.



[ Reply to This | # ]
UPDATE
Authored by: louisk2 on Feb 14, '08 05:46:55PM
I have written a helper tool to let the Help Viewer show itself when called from the help menu. Download it here: http://panzarino.100webspace.net/development/leopardHelpHelper.zip

[ Reply to This | # ]