Advertisement

Hackinations: Making any OS X app full-screenable in Lion

Today, Steve Sande begged me to add a full-screen button to Colloquy. He offered me chocolate and kittens, neither of which is particularly good for me. But he's a good guy and I like him and his wife so I went ahead and figured this out. [Editor's note: Actually, she was offered chocolate-covered kittens, not chocolate and kittens.]

I am so warning you: if you are not comfortable at the command line, just skip on to the next post.

Seriously.

Still here? Let's go then.

Copy the App You probably don't want to edit the original, so copy the app to the Desktop.

Locate the compiled nib files Compiled nib files can be found in the app bundle's Contents/Resources folder. In more internationalized apps, they may appear in lproj subfolders. You need to locate the nib files you want to edit.

  1. cd whatever.app/Contents/Resources

  2. grep -iRl NSWindowBacking *

This returns a list of all nib files which define the NSWindowBacking key. That key more or less tells you that there's a window definition there. You can try to edit them all, or you can do what I did: just edited the three files in Colloquy's Resources folder that matched: JVChatWindow.nib, JVTabbedChatWindow.nib, and JVSidebarChatWindow.nib.

Convert to XML Use Apple's plutil or my plusutil to convert each nib file from a binary property list to proper XML.

plutil -convert XML1 filename.nib

Edit those XML files Once converted, open the now text-based XML files in TextEdit. Search for the NSWindowBacking key/value pair in each file. After that pair add

<key>NSWindowCollectionBehavior</key>
<integer>128</integer>

This tells the window that its behavior includes full size resizing. Save your changes and close the file.

Convert back to BPlist Convert your edited files back to a binary plist. Strictly speaking? This isn't a necessary step. It just pleases me aesthetically.

plutil -convert binary1 filename.nib

Run it With luck, your app now has full screen zooming support. Enjoy it. Make sure to back up the original app before replacing it with your edited version. And do not expect to upgrade this version, like, you know, ever.

UPDATE: If you don't mind installing SIMBL, a system level bundle loader, you can check out chpwn's well-received maximizer app as well. SIMBL allows you to enhance existing applications with new functionality and features.