10.5: Revert Help Viewer to 10.4-like behavior
Feb 14, '08 07:30:04AM
Contributed by: louisk2
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
- 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.
- 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.
- 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
- 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.
- 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.
- 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.]
Comments (7)
Mac OS X Hints
http://hints.macworld.com/article.php?story=20080206043958126