Search code examples
macosuser-interfacecolorscustomizationtitlebar

Modifying Window Button Colors in Mac OS X


How can I modify the red/yellow/green window buttons for close/minimize/zoom in Mac OS X? There must be an editable resource or plist somewhere.

Here are the buttons I'm talking about:

Mac stoplight buttons.

For red/green colorblind individuals, those colors can be maddening. I wish they chose the actual bluish shade of green used in a traffic light instead of the puke grass green. That grassy green is indeterminable from the red.

Changing the theme to graphite is a poor alternative, so any other method is much preferred.


Solution

  • Okay, after a long and seemingly endless research cycle, I've located where the window buttons are stored. They're in a file called ArtFile.bin in /System/Library/PrivateFrameworks/CoreUI.framework/Versions/A/Resources/.

    Also, a guy named Alex Zielenski with the help of Indragie Karunaratne created a utility named artFileTool to get to its contents. The second link is the code repository for the utility.

    Here's the process to extract and then rebuild the resource as described on the MacThemes forum by a user named toutheme:

    For ArtFile.bin - Lion

    Preparation

    • Create new folder: TheFolder
    • Copy the Lion ArtFile.bin (/System/Library/PrivateFrameworks/CoreUI.framework/Resources) and artFileTool on TheFolder.

    Terminal

    • Launch Terminal, type "cd" + "space" + (drag TheFolder on Terminal window). Type enter.

    Decoding

    To decode ArtFile.bin and compile a folder Resources Disconnected Classified:

    • ./artFileTool -d ArtFile.bin ResourcesDisconnectedClassified

      -- or --

    To decode ArtFile.bin and compile a folder Named Connected Images:

    • ./artFileTool -d -c ArtFile.bin NamedConnectedImages

    Edition

    Edit your files with PhotoShop, for example…

    Encoding

    To re-encode the Resources Disconnected Classified:

    • ./artFileTool -e ResourcesDisconnectedClassified ArtFile.bin ArtFile.new.bin

      -- or --

    To re-encode the Named Connected Images:

    • ./artFileTool -e -c NamedConnectedImages ArtFile.bin ArtFile.new.bin

    For ArtFile.bin - Snow Leopard:

    • ./artFileTool -d -l ArtFile.bin ResourcesDisconnectedClassified
    • ./artFileTool -d -l -c ArtFile.bin NamedConnectedImages
    • ./artFileTool -e -l ResourcesDisconnectedClassified ArtFile.bin ArtFile.new.bin
    • ./artFileTool -e -l -c NamedConnectedImages ArtFile.bin ArtFile.new.bin

    For ArtFile200.bin (Lion only):

    • Create new folder: TheFolder
    • Copy the Lion ArtFile200.bin (/System/Library/PrivateFrameworks/CoreUI.framework/Resources) and artFileTool on TheFolder.
    • Launch Terminal, type "cd" + "space" + (drag TheFolder on Terminal window). Type enter.

    Decoding

    • ./artFileTool -d ArtFile200.bin ResourcesDisconnectedClassified
    • ./artFileTool -d -c ArtFile200.bin NamedConnectedImages

    Encoding

    • ./artFileTool -e ResourcesDisconnectedClassified ArtFile200.bin ArtFile200.new.bin
    • ./artFileTool -e -c NamedConnectedImages ArtFile200.bin ArtFile200.new.bin

    • Make sure to check the size of the newly created file. (4.0-5.2 mb)

    • Rename ArtFile.new.bin to ArtFile.bin and replace the one location in the CoreUI.framework directory
    • Logout

    I hope this helps anyone who got as frustrated as I did at how difficult it is discovering basic information about the inner workings of OS X.