News Posts In Category
Mars Themes and OS X Mavericks
I'm sad to announce that the Mars Themes software, both commercial and free, will not be supported on Apple's newly released Mac OS X "Mavericks" operating system. This announcement will be of particular interest to all of you who have purchased a license for CrystalClear Interface (CCI), Crystal Black (CB), or AppMenu Magic. With the latest release of CCI (version 2.8.3) and CB (1.6.6) in July, the software can be installed and uninstalled safely on the developer preview of Mavericks. Neither package has been tested on the release version of Mavericks, but compatibility is expected without risk of damaging the operating system. That said, I highly recommend that you uninstall CCI if you plan to upgrade to Mavericks.
The latest versions of CCI and CB incorporate a safer approach to dealing with inter-OS compatibility, and I am keeping my fingers crossed that the approach will avoid previous disasters (for me) as Apple has moved so aggressively to upgrade the Mac OS X operating system in recent years. Rather than possibly replacing critical system graphics files with ones that aren't compatible with Mavericks, the software should now quietly fail to do the fundamental file handling tasks that could cause problems on Mavericks.
This means that while users should be safe from the problems that plagued earlier upgrades (Lion in particular) if they upgrade to Mavericks, CCI and CB will be prevented from doing some of the fundamental things that make the theme work. Specifically, on Mavericks the software will prevent you from applying button themes and menubar styles. As tested on the developer preview in July, CCI and CB will still function in other respects--for example, setting background colors, transparency, and window frames. But those tests also revealed an abundance of new bugs, which is one reason why I've decided to not support my software on Mavericks.
Since the meltdown of my Snow Leopard partition last fall, using the Apple developer tools to compile the Mars Themes software has become too cumbersome for me to deal with. One issue is that I've never migrated the software to Xcode 4, preferring the Xcode 3 interface and use of InterfaceBuilder instead. Now the prospect of upgrading to Xcode 4 is blocked by not only the huge effort of importing the project but because CCI relies on third-party Interface widgets (the BWToolkit Framework, for example) that aren't compatible with Xcode 4. For some reason, I also can't compile the projects in Xcode 3 on Mountain Lion, so I must boot into the development instance of Snow Leopard to do that, then switch back to Mountain Lion to use other software like Photoshop. It's a nightmare, and I'm sorry to say I've decided to call it quits.
Since development of CCI and CB is now at a dead-end, I'm considering releasing the source code in case some developer with more talent and energy than I has an interest in moving the code forward. If enough interest is generated, I'll think about getting the code ready for some kind of release.
To those of you with active licenses, I apologize for having finally burned out on the experience of keeping CCI and CB updated in the last few years. In the past, I've upgraded my software fairly promptly because I had planned to upgrade to Apple's latest OS anyway, and wanted to keep using the various Mars themes. This time, I have no current plans to upgrade my main operation to Mavericks. If my plan changes, and I do upgrade, like you I'll probably have to leave my beloved themes behind for the first time since I began this journey back in 2005. My long-running enterprise to develop and support interesting, alternative interface themes for Mac OS X has now come to an end.
Trying To Tame Mountain Lion Without A Hat
Remember my angst about whether I should migrate my computing life to Mountain Lion? Well, that story's now over, and Mountain Lion has won.
Once I had the Mountain Lion virtual disk, I could import that as a new virtual instance in Parallels on Snow Leopard. Doing so was simple and straightforward, and I don't recall running into any glitches. After the import, I could "boot" into Mountain Lion as an instance of Parallels desktop, and then switch back and forth between the two OS's as I would between two applications.
The reason I abandoned this effort is that when I installed CrystalClear Interface (CCI) or Crystal Black (CB) on the Mountain Lion instance, Safari would repeatedly crash. Disabling CCI for Safari made no difference. Only by uninstalling my software would Safari work again. I tried various other tricks to overcome this, but failed. Since debugging Safari on Mountain Lion was one of the primary goals of this whole effort, this failure effectively shut the project down.
At that point, I was stalled on CCI vs. Mountain Lion, so I turned my attention to migrating from the old Quicken 2007 for the Mac, because it won't run on Mountain Lion. That migration could be an article on its own.
In those few moments, the unthinkable happened. Suddenly, the dark shade of death descended from the top of the screen, signaling the warning that all the busy bits we rely on to keep the trains running on our Macs had given up and gone home — and we had better do so as well.
Well OK... no big deal, right? I've experienced this kind of kernal panic message before and come out unscathed after a restart. But not this time.
This time, after the reboot, rather than returning to Snow Leopard, I found myself in Mountain Lion.
How could that be? And why couldn't I find the regular volume for Snow Leopard in the Finder? Likewise, why did Disk Utility show new partition names for the volume that used to have Snow Leopard on it? And why couldn't Disk Utility mount either of the two partitions on that volume?
It turns out that the volume files — the ones that store information about the folders and files on the volume — had been corrupted, and none of the tools I used to try to repair the partitions or volume worked.
Anybody who wants to bail on the rest of this story now are well advised to do so, since it's just going to get more boring from here.
I'm doing this mostly so I can remember what happened and what I did... just in case.
Eventually I gave up on the old volume, and after confirming that Time Machine had the files I'd need to restore, I proceeded to set up the two partitions anew. Though I thought I'd be able to restore everything, I was hardly feeling nonchalant as I clicked the button that erased all my files and settings for my old Snow Leopard partition.
I was able to restore all the files on the second partition, which houses most of my third-party apps, but when I attempted to reinstall Snow Leopard on its partition, I realized my stay in Mountain Lion would be even longer than I'd imagined.
It turns out that my install disk for Snow Leopard was corrupted, and I had no other way of getting Snow Leopard onto my Mac.
On the phone with Apple support, I paid $19 for a one-time technical support incident. The upshot of that call was that Apple would express-mail new install disks to me for Snow Leopard — at their expense. As nice as this was, it was late on a Friday afternoon, and I knew it would be at least Monday before the disks arrived.
Fortunately, as it turns out, most things I need to do daily work fine on Mountain Lion. There are just enough "gotchas" that I still don't feel quite at home here, but it's working out better than I'd feared. Which is a good thing, because after the Snow Leopard disks appeared and I reinstalled the OS on my old partition, I discovered that restoring my user account was not going to be easy.
Normally, on the Mac you use an app called Migration Assistant to restore user accounts and files from another Mac, another partition, or Time Machine, and it's a painless and reliable process. That's how I set up my user account on Mountain Lion — I cloned it from my user account on Snow Leopard.
I had planned to do the restore from my Time Machine backup, but when I attempted this, Migration Assistant couldn't find any user accounts on the Snow Leopard backup. The only accounts it found were on other partitions on my Mac, including my account on Mountain Lion.
After much gnashing of teeth, I decided to try to restore my account from the one on Mountain Lion. Since this was a clone of my Snow Leopard account, I thought this might work.
The restore did indeed work, and I thought I was a little closer to returning to my beloved Snow Leopard.
Unfortunately, the restore didn't move all the files needed for various applications to work, and it contained Mountain-Lion-specific preferences that merely confused some apps. This meant I had to try manually restoring files from Time Machine, a time-consuming and error-prone exercise that took several hours. Most of the files I was trying to restore reside in the top-level /Library folder, which is why they didn't get properly migrated with my home Library.
I finally got my iWork apps to run, but Photoshop simply wouldn't. "Your license has stopped working," is the error message Photoshop gives me. Now, I could reinstall Photoshop, but this might screw up Mountain Lion, where Photoshop works pretty much as expected. (I'm still using Photoshop CS4.) On the other hand, my developer tools — Xcode and Interface Builder (I'm still using Xcode 3.x) — worked fine on Snow Leopard. All of my projects could be opened and compiled, and each still had its whole history of "snapshots," which I use to track changes in the code. On Mountain Lion, by contrast, I keep running into permissions problems in editing project files, and compiling fails with inscrutable messages. Just as serious, Xcode refuses to read the Snapshots disk image for my projects, so I have no code history.
At this point, there is really only one barrier to my feeling completely comfortable on Mountain Lion: Xcode. If I can get Xcode to behave reliably on Mountain Lion, I'd have no compelling reason to boot into Snow Leopard. But as it is, I have to do all my design work on Mountain Lion and then compile code on Snow Leopard. When time permits, I'm going to figure out what I need to do to reconnect my snapshots to Xcode, and then Snow Leopard will be as obsolete for me as Leopard, Tiger, Panther, and Jaguar before it. (If any reader knows how to reconnect Xcode snapshots on a new volume, let me know!)
So, what does this mean for CrystalClear Interface and Crystal Black?
For now, the MarsThemes software is in maintenance mode, meaning I'll be releasing updates to keep the software working, but not adding any new features. Bug fixes will be included in maintenance releases, but without my Snow Leopard debugging power I can't address any application-specific bugs. On Mountain Lion, Safari remains an enigma, and it troubles me that I have to keep CCI and CB disabled for it to run. It's extremely frustrating to not be able to debug Safari on Mountain Lion, but that was a problem before I found myself facing Mountain Lion without my lion-tamer hat.
So here I am, using Mountain Lion as my default OS and running back to Snow Leopard to use Quicken and Xcode. It's not the migration I would have planned — if I decided to migrate at all — but at least I'm through the worst of it and have survived.
The good news is that CCI and CB both run reasonably well on Mountain Lion, and I now go weeks without having to provide customer support. Who knows... maybe in a few more months I'll actually learn to love my new OS. I just hope Apple waits longer this time around before trying to move everyone to a new platform!
Introducing Smooth Black: A New Button Theme for CrystalClear Interface
In my previous article I spoke of a desire to get back to theming, and specifically mentioned a desire to do that "black matte" theme I've been thinking about. I guess the article helped spur me on, because after several weeks of work I'm now ready to release Smooth Black, a new button theme for CrystalClear Interface (CCI).
Smooth Black complements existing CCI components, including its Black Gradient menubar and Smooth Black window theme. It rides on top of existing code that made Crystal Black possible, so the implementation went rather, ah, smoothly.
At this time, the theme is missing graphics for all of the "mini" components in Mac OS X buttons. As a fill-in, Smooth Black incorporates the Black Gloss graphics for the "mini" buttons. On Lion and Mountain Lion, the theme also needs to be fleshed out with a complete set of "small" buttons.
Again, implementing Smooth Black hit a reality wall when time came to take it from Snow Leopard to Lion and Mountain Lion. Because the Lion systems require a tedious manual process to update their buttons, this wasn't any fun. But CCI 2.7.6, released today, does incorporate the buttons for all three operating systems.
Note: Smooth Black owes a debt of gratitude to the authors of the ShapeShifter themes Rhino and Carbon Polymer.
On Theming Mac OS X: How Long Can I Hold On?
CrystalClear Interface and Crystal Black are marvelous, foolhardy, and frivolous experiments in theming the Mac OS X user interface. As they were in the beginning, so they remain today: Elegantly imperfect software products, which will always be buggy. It's just the nature of the experiment. Why? Because they try to do something Apple works hard to prevent, and therefore are outlaw apps: Only able to pop up here and there with a sparkling, think-different approach that just isn't meant to be.
I am the foremost user of these two themes, and I continue to develop them because (1) it's still possible and (2) I really like them. As the author, I'm tolerant of their occasional misbehavior, but I understand that not all observers are so patient. Nobody likes a screaming 3-year-old while enjoying a quiet evening at one's favorite restaurant. I'm no different in that, but I do try to make sure my children learn how to behave as new situations arise that cause them to flare up.
Still, there are always new situations, and, well, children will be children. My children are still quite young, but the day may come when either they are banned from new restaurants for their behavior, or I become too exhausted from apologizing for them to take them out in public any more.
With each release of its operating system, Apple drives me one step closer to that edge. It's not intentional, I'm sure... In the interest of providing a safe OS environment, Apple continues to tighten the knot around inter-application interactions — especially those that allow third-party software, like CrystalClear Interface (CCI), to load itself into other applications, such as the Finder or TextEdit. And yet, without that kind of interaction, CCI and Crystal Black (CB) could not function.
For now, it appears that CCI will survive the transition to Mountain Lion (Mac OS X 10.8), but as with every release of Mac OS X since Tiger (Mac OS X 10.4), the amount of effort to do so is greater. And I fear that as the technologies introduced by Apple for increased security in Lion and Mountain Lion are more widely adopted by software developers, the number of applications that won't run CCI properly will increase.
In some future update, Apple could introduce a change that will turn off the lights for CCI and CB for good, as well as those for AppMenu Magic and my freeware Text Tools. Such a change would mean I could no longer develop the software, let alone support it.
On a personal level, this would mean giving up an obsession that's outlived enormous odds. When I first took up theming for Mac OS X back in 2005, it was strictly a design job, with lots of time spent in Photoshop working with teeny, tiny bits of buttons and other interface elements. And there was a stable theming environment provided by a third-party application called ShapeShifter, which became obsolete when Apple released Mac OS X 10.5 ("Leopard').
CrystalClear Interface became possible only after I learned how to make application windows with transparent-capable backgrounds. And I learned how to do that only by gradually teaching myself how to write programs for Mac OS X using Apple's Cocoa frameworks and its native language, Objective-C.
I didn't sit down tonight to write a history of CCI, so suffice it to say that as CCI evolved, the programming component grew in inverse proportion to the design/graphics component. In fact, the design work is now quite subservient to the code.
This means I can no longer amuse myself by designing new themes. Instead, I spend most of my time making sure the existing theme designs will work on Apple's new Mac OS X releases. I already gave up the Glossy design on Lion, but I'd really love to rescucitate it — And I'll have to if I actually upgrade to Mountain Lion. Why? Because I really like the Glossy theme, and I'd want to use it myself. And then there's the matte black theme I keep dreaming about...
On a side note, have you noticed that in Lion Apple has almost eliminated the Aqua interface? In fact, the button theme they're using for most items looks and works suspiciously like CCI's "Unified Gradient" theme, which I introduced in 2009 to uniformly apply to all interface elements a button style Apple had added to Leopard. In Lion today, the main elements that remain candy-colored are Apple's "stop light" buttons, the progress bars, and odd pieces like the titlebars of list-view tables. Otherwise, Aqua is gone, though not replaced with anything so memorable. And hard-core themers continue to weep and satisfy themselves with such trivia as themes for the Dock (easy) or Menubar (much harder). Some also try theming buttons and such, but with Lion Apple has made even that mundane endeavor mysteriously difficult. (Buttons are composited against window backgrounds in a mysterious way that requires providing whole separate sets of buttons for Snow Leopard and Lion.)
Which brings me to the crux of this overly-long, overly-dreary essay: CrystalClear Interface exists today only because once I had seen how beautiful it could be, I couldn't let that beauty go. I simply can't stand working with gray-gradient windows all day, no matter how elegant they may be. And there are times when I really want/need a dark interface like the Black Gloss theme from Crystal Black.
So either I sever the cord with Apple's future OS X updates, or I sever the cord with CCI. It will have to be one or the other, and I'm not yet sure which that will be.
In the current setting, supporting Lion (and soon, Mountain Lion) has been royally painful. So much so that for the last 6 months I've spent most of my time getting CCI to run on Lion, or merely keeping it running. Not very satisfying for me, since I don't use Lion myself (yet).
An earlier article discussed the grief involved in updating CCI for Lion, and I mention it here because the problems haven't gone away. They've merely formed a continuous obstacle that becomes more and more tedious to work around.
In other words: Most of the fun of developing CCI has been held at bay, and the drudge work of keeping up with Apple has made me wonder how long I can hold out.
My fondest hope is that next time, Apple will make us wait longer than one year before throwing a new OS our way.
AppMenu Magic Conjures A Simpler, More Elegant Menubar
AppMenu Magic is a small, simple application with only one cool trick: It replaces the application’s name with its icon in the system menubar. The functionality of AppMenu Magic has been part of CrystalClear Interface (CCI), as well as Crystal Black (CB), since those applications were first released. I am releasing the app separately because of continued requests for it. This app lets users take advantage of the improved appearance and reduced “screen real estate” of their menubar that AppMenu Magic offers, without having to use either CCI or CB.
This application could hardly be simpler to use. Simply run the installer, and voila! No more long application titles consuming precious space in your menubar. In its place, you’ll see the application’s icon — which is usually much prettier than its title in any case.
AppMenu Magic (AMM) does have a small Options panel — with only one option: You can elect to turn the “Show application’s icon in menubar” functionality on or off.
After installing AMM, you can find its menu in the application’s main menu, just above the “Quit” item (assuming it has one... unlike the Finder). The menu is quite brief: In addition to the Preferences item, it has an “About” item as well as “Purchase,” “Help,” “Check for Updates” and “Uninstall” items. Each of these is pretty self-evident, so I won’t discuss them separately.


AppMenu Magic is compatible with other plugins from MarsThemes — including Text Tools, CrystalClear Interface and Crystal Black. If you are using CCI or CB, you don’t need to use AMM, but if you do, the two plugins won’t conflict with each other.
AMM will load into any application that supports the MarsThemes Loader scripting addition. Typically, this means it will work with any native Mac OS X application that you use. It also means it won’t load into some older Mac apps or into apps built with pure Java or with a scripting language like Python. The overall footprint AMM makes on your Mac is very small.
If you run into any problems while trying out AppMenu Magic, please use the Contact item in the app’s menu to let me know.
This little app is shareware, so give it a try! You can use AMM freely for 15 days. After that, you’ll need a license, which costs $5.00. Hope you enjoy it as much as I do.
The software will be added as a permanent item on the MarsThemes website, under Software. You can download it there.
Version History
1.0 6/22/12. Initial release.
Technical Notes
AppMenu Magic runs as a plugin to the Mars Theme Loader (MTL) framework. If you don't have MTL installed, the AMM installer will do that for you. If you uninstall AMM, the uninstaller will disable or remove the MTL agent at that time.
There are very few components to AppMenu Magic:
- The plugin (AMMagicFilter.bundle) located at /Library/Application Support/MarsThemes/plugins, and
- A folder containing this document (as a PDF file) and the Uninstall program. That folder is at /Library/Application Support/MarsThemes/AMM. If you purchase a license, the license is also stored in this folder.
To uninstall AMM, open an application where it’s active, open the AppMenu Magic menu from the application’s main menu, and select "Uninstall AppMenu Magic.” Alternatively, you can simply run the standalone UninstallAMM program.
Dress Up Your Mac’s Authentication Panel With Crystal NIBs!
This little application provides two alternative styles for the “Authenticate” panel that appears whenever you’re required to enter a password on your Mac. It works by substituting different “NIB” files — the files that define the window’s interface — for the default system versions. (Jargon Alert: NIB stands for “NeXT InterfaceBuilder,” which was the original IB app developed on the NeXT operating system — the predecessor of Mac OS X.)
The application lets you switch among three different styles:
- HUD (Heads-Up Display) style,
- Metal (Textured) style, and
- Default system style.
Using the Crystal NIBs
To use, just launch and enter your password at the prompt. Afterward, a small window appears that lets you choose one of the three styles from a pull-down menu. You can cancel the action or submit the form to change the NIB style.
After you submit your choice, run the application again to verify that the choice is now active. A logout or restart is not required.
When you want to uninstall the app, just run it and select the default system style.
The application has been extensively tested and used on both Snow Leopard and Lion systems, and it contains the default system files for both, as well as the Crystal alternatives. (Note: Use of this free software affirms that MarsThemes will not be held liable for any damage to your system that may result from using this application. Further, use that does not follow the above instructions is forbidden and will not be supported.)
These styles were developed to complement the MarsThemes applications CrystalClear Interface and Crystal Black, but they are free to use whether you’re using those themes or not.
Enjoy!
Download
Crystal NIBs for SecurityAgent (Download file is 1.0MB)
In The Works On Mars: CrystalClear Interface 2.6
As I wrote in a brief post yesterday, I am not using Lion myself, and don't plan to. So it's particularly hard to develop for. I expect to revisit this decision when Mountain Lion is released in a few months. I'll be installing the developer preview soon to see what I'm in for.
I'm sorry to leave my Lion users out of the party, but at least they still have stable versions of CCI and CB to fall back on.

Work on programming and graphics is now far enough along that it's safe to say that CrystalClear Interface 2.6 will be ready for release soon. How soon? Don't ask, because my answer is always wrong.
CCI 2.6 will be a major upgrade, with some features customers have wanted for quite awhile now. The upgrade will be free for current CrystalClear Interface license-holders, but after release the software's price will increase to $18. The price increase reflects the major amount of work required to push CCI's functionality to the new level, and a lot of that work has to do with making it work — and look right — on Lion (Mac OS X 10.7).
Briefly, the main new features in CCI 2.6 will be:
- Incorporates the Crystal Black button theme for users on both Snow Leopard and Lion.
- Adds eight menubar themes users can mix and match with their chosen button theme.
- Seamlessly swaps custom application graphics for a given theme with the chosen new one.
- Fleshes out the custom system graphics for Lion, so that both the Gradient and the new Black Gloss button themes are almost in parity with Snow Leopard.
- Adds two new window frame styles — "Black Gloss" and "Black Gradient."
- Incorporates two new preset themes — "Black Gloss" and "Smooth Black" — to take advantage the new window styles.
- Adds numerous new Crystal Docs icons, and improves the icons tab to show previews of the various icons.
- Automates the installation of third-party Crystal Docs icons, so the user isn't interrupted and prompted to install for each app as they open it.
- Provides a new set of Crystal Desktop pictures, mainly for users who want a dark desktop. This set of "Deco Bubbles" desktops has six dark variations and four light ones.
- Adds code to enable readable statusbar text for the clock and username "menu extras." (Note: This feature currently doesn't work consistently on Lion.)
In addition to those features, the release incorporates numerous bug fixes and enhancements. Of those, the most noteworthy are:
- Lets you collapse the CCI Preferences window when you need to temporarily minimize it.
- Adds new menu extra icons for some third-party apps: Tags, Proxi, TotalFinder, and My Living Desktop.
- Adds a "Refresh" button to the list of disabled apps in the CCI Preferences Pane, letting you force the table to update if it doesn't do so automatically.
- Fixes a bug in Mail that could cause the app to crash when the user closes a window with the Cmd-W shortcut.
- Adds a better workaround to the problem of black test on dark background for Safari's URL field on Lion.
- Improves theming of text colors on buttons in disabled apps.
So, you may be wondering why building CCI 2.6 has been so hard. No problem... I'm dying to explain. The four main areas of work that have kept me up late nights are (1) Designing workable graphics for Lion, (2) making sure text colors change appropriately as the user changes button themes from or to Black Gloss, (3) making sure all the customized app and system graphics change to match a new button theme, and (4) writing the new menubar function to be smart enough to provide only options appropriate for each button theme, and to swap out the menubar text and "menu extras" icons as necessary.
Lion introduces a whole new paradigm for a large swath of its button graphics. Prior to Lion, Apple's graphics have always been opaque, though for many of them a themer could substitute translucent ones. However, Lion has a whole class of transparent graphics, which are widely used for segment buttons and popup/popdown buttons. This wouldn't be a problem except that the way these buttons are composited on window frames is altogether different from Snow Leopard and any earlier Mac OS X release. Thus, making substitute graphics requires a large amount of trial and error.Even for graphics unchanged from Snow Leopard — including those for titlebar buttons, radio and checkbox buttons, and tab bars — Lion's algorithm for displaying the graphics on a window makes it impossible to simply reuse Snow Leopard graphics. In particular, Lion is picky about graphics with white in them, and is also unfriendly to graphics that try to cast a light shadow under the button. Again, solving these problems has required a huge amount of trial and error — including a reboot on Lion to test each change.
Since it isn't possible to simply reuse graphics from the previous operating system version — a procedure that's made transitioning themes to new versions much easier in the past — I've had to build by hand an unfair number of tiny graphics. For each theme, Lion has two art files — one that has graphics for the menubar, other menu highlights, drawer frames, apple menubar icons, and various graphics that appear on buttons (arrows, text items, disclosure images, and so on). The second file has all the button graphics, which total 2,668. That's 2,668 graphics that could be themed in Gradient and Black Gloss style for CCI 2.6. So this is an exercise in sheer drudgery.
Prior to Lion, the theming world was blessed with a tool called "ThemePark," which greatly simplified the process of adding and changing this vast universe of button parts. However, given the issues with Lion, ThemePark has not been available. Instead, we have a couple of Unix executable files which are run from the command line. Thus, all the work in incorporating buttons must take place in Finder (or another file browser) and then compiled in Terminal.
Another issue that's made theming Lion drive me crazy is that Apple changed the Art Files from 10.7.1 to 10.7.2 — meaning that you couldn't use the files from one with the other. The files are not just incompatible, they double the graphics workload. With double the workload, the job of keeping track of the various art files and of making sure changes in one are in sync with the other becomes not only difficult but dangerous. Keep in mind that covering both sets of Lion art files, as well as those for Snow Leopard, means that there are 6 art files for the button graphics to manage. Because CCI 2.6 includes 8 menubar options, as well as seamless changes in text color for the various menu graphics (which is controlled by a third system graphics file), the total number of art files explodes to 58 — 22 for Black Gloss, 26 for Gradient, and 10 for Glossy.
Because of the unreasonable effort required and the great risk of error — which could disable users' application usage — I decided a couple of weeks ago to abandon support for 10.7.1. Thus, CCI 2.6 will only support Snow Leopard and Lion 10.7.2 (and greater).
- Making sure text is readable as users change background colors or use different window styles has always been a challenge. With Crystal Black, the problem is somewhat less because the window background style doesn't change, and users have fewer options for changing colors in the interface. However, combining the Glossy Black window style and buttons with CCI's light varied window styles and gradient buttons more than doubles the programming logic required.
- Adding eight menubar styles to the software requires multiple text-color options instead of the single option in CCI and Crystal Black. Some of the menubars require white text for inactive menus and white text for selected ones, some require white text with black text, others require black text with white text, and then there are those that require black text with black text. Further, there are variations in the colors needed for selected menu items on open menus. Some must be white, and some black. The various combinations mean I need to prepare 18 different versions of the art file that controls the text color.
Adding the Crystal Black button theme to CrystalClear Interface also means that all the custom application and system graphics included with Crystal Black must go away when a user switches to the Gradient or Glossy buttons. Likewise, the Gradient and Glossy themes come with a set of their own graphics. These must be swapped out with whatever button theme the user switches to. Though the Black Gloss theme has far more custom graphics than the other two, the functions to handle BG would necessarily have to work with Gradient and Glossy. To build functions that automatically toggle sets of graphics — the set of which differs with each theme — has required developing logical structures and routines for storing the files, for determining the set of default graphics that are common to all three themes, and for determining which files are unique to each. These tasks have proven much more difficult than I had anticipated.- Because it includes so many custom graphics, Crystal Black provides a set of tools that CCI does not: Tools for uninstalling and reinstalling graphics for Applications, Preference panes, and System frameworks. CCI 2.6 needed to add these functions to handle the tasks described in the previous item, but the code required to enable them in CCI turned out to be far more complicated than that for CB. The end result is a new tab in the CCI Preferences panel called "Manage Installed Graphics." The functions here need to know which applications, preference panes and system frameworks pertain to the current theme, and it provides a dynamic list showing users what items are affected by the "Reinstall" or "Uninstall" actions.
Providing menubar options in CrystalClear Interface — a much-requested enhancement — threatened to mushroom the number of a particular system graphics file unless I could restrict the options to some reasonable extent. In the past, each button theme came with one "SArtFile.bin" file. This file contains the menubar graphics, as well as graphics for drawers, apple icon, and numerous PDF files used for symbols throughout the OS — things like arrows, gears, disclosure triangles, magnifying symbols, and many more. If users could choose any menubar type with any button theme, each button theme would have to maintain eight "SArtFile.bin" files — one for each theme. In the interest of my sanity and code maintenance, I cut that number in half, so each theme can use only four menubar styles at a time. To access the other menubars, the user will have to switch button themes.- In addition to managing the switching out of different menubars, this function also needs to coordinate with the system file, "Extras.rsrc," to make sure the text used with each menubar is readable. As previously described, each menubar has unique requirements, and since on Snow Leopard the "Extras" file also provides the system graphics for scrollbars and a few other interface widgets, the menubar function must swap out the appropriate "Extras" file not only for itself, but also for the current operating system. Needless to say, this ended up being a pretty complex function.
So, was it worth the effort? I've certainly been enjoying the flexibility of CrystalClear Interface 2.6, but ultimately you'll have to tell me once the software is released.
Keep an on the MarsThemes or CCI websites for the latest news.
Theming Snow Leopard:
How Hard Could It Be To Paint A Leopard Black?

Dark interface themes are extremely popular with a small, but very passionate, group of Mac users. Sadly, since Apple introduced Leopard (Mac OS X 10.5), the old, relatively simple method of creating such themes on the Mac can't be used, and it took the theming community a good year and a half to figure out the current, relatively hobbled tools to theme the few bits of the interface that can be themed.
Given the weakened state of theming on the Mac, it's not surprising that the number of themes available has dwindled to a mere handful. And even those only go part of the way compared with what we used to be able to achieve with ShapeShifter. Still, the yearning for Mac themes remains strong among this community, and black themes are virtually nonexistent now.
Black themes have always been a challenge, because the frameworks used to build applications were designed to assume that text would always be black and the color of windows and buttons always light. Apple introduced a dark-theme paradigm a few years ago with its Heads-Up Display window style, which, with its translucent black background actually assumes that text will be white.
Starting with Leopard, developers using Xcode could tap into the HUD window style and use it whenever they want to, but most application windows aren't well suited to this, and Apple's user interface library still assumes that regular windows will be light, with black text.
It's not only desktop applications that make this assumption. Web pages with button widgets also assume that the widgets will be light and their text black. On the Mac, it's becoming common for desktop applications to embed the WebKit for parts of their user interface—meaning that the button widgets are HTML- and CSS-based, not AppKit-based.
In addition to this basic problem, there's also the challenge of handling legacy applications based on Apple's earlier Carbon frameworks, as well as apps that are a blend of Cocoa and Carbon. Complicating this issue is that, as it turns out, applications built for the older PowerPC processor platform use a different part of the system graphics than those built for Intel chips.
If you try to design a theme that introduces black interface controls, you run into another challenge that has nothing to do with text. Many interface widgets use images rather than text to convey their purpose, so what if—as is usually the case—the application designer provides only black images for these buttons? Is a themer supposed to provide white images for every application a themee might want to use?
One specialized case of the images problem is the Mac OS X statusbar. Here, applications represent themselves almost exclusively as images, and nine times out of ten, the images assume that the menubar is light, so they should be black. Some enterprising themers have tried to solve this one by providing alternative white images for the most common statusbar applications, but usability can still suffer if someone using a black menubar launches an application that insists on putting a black icon up there.... one for which no white alternative exists.
Given all this, why would anyone undertake an effort to introduce a fully black theme for Snow Leopard?
I suppose it's because we Martians just can't step back from a challenge. Not to mention the fact that we, too, are afflicted with the passion for dark themes that many Earthlings suffer from. I also have a good starting point, having developed some useful techniques for the challenge through building CrystalClear Interface.
That said, the best I can offer still has compromised usability, which I detail below. But for the most part, I think I've succeeded in bringing to life a useable version of the legendary Cathode theme for ShapeShifter, in a redesign appropriate for Snow Leopard. The theme covers window backgrounds, background colors for tables and outline views, interface buttons, menubar, and text colors. It also coerces various types of windows to theme themselves in HUD style.
To acknowledge the theme's heritage, I've dubbed the theme Crystal Black. Crystal Black will be available for download soon, with a 15-day trial period and a purchase price of $6.00
It's important to note that Crystal Black and CrystalClear Interface can not coexist on the same system. You can't install Crystal Black until you uninstall CCI.
For my own documentation of this work, as well as to highlight the theme's strengths and weaknesses, the following list shows the various unique challenges I've faced in building Crystal Black and the solutions, if any, devised. Other challenges have been faced—and largely solved—in developing CrystalClear Interface, so I won't spend time on them here.
In the list, I've used a small graphic to indicate the degree of success in addressing each challenge:
★ Solid solution
☆ Partial solution
∅ No solution
For Cocoa applications:- Images on buttons and in column headings ★
- Images and icons in the statusbar ★
- Text color of buttons in web pages ★
- Applications that use non-standard buttons and GUI frameworks. ☆
- Text color on Finder items with color labels ∅
Cocoa applications that can't or won't take theming by Crystal Black ☆(Problem solved 4/13/11.)- Cocoa applications that are on the user's "Disabled Applications" list ☆
- Text color for control widgets ☆
- Color of titlebar and toolbar text ∅
- Window and control object background colors ☆
Cocoa applications
- Challenges
-
- All images need to be made white, but without making custom button images for every possible application. Somehow, black images must be inverted as windows load.
- Some images are already "templates," easy to invert. However, other images look like "templates," but aren't, and making them templates isn't a reliable technique.
- Images with color (hue > 0) need to be distinguished from black/white ones. Knowing the image's color space doesn't help.
- Some images are "Core Image" images, which don't have a bitmap representation that can be easily analyzed. In this case, Crystal Black must create a bitmap representation in check it out.
- Images in column headings aren't buttons, so they require extra processing. In many cases, they change often so must be analyzed repeatedly. Some have proven inaccessible.
- Solution
- Each button and column heading in application windows are analyzed as they load to determine whether—and how—they require inverting. If inverting is needed, Crystal Black generates a new image and sets in place of the original.
Still, there are a few cases that haven't yet been addressed. One is the case where a pull-down menu contains an image. I hope to deal with this in a future update.

- Challenges
-
- For nearly all applications that have a statusbar item and associated image/icon, the image/icon is black in normal state and white when highlighted. This means the image is unreadable against a black menubar.
- Unfortunately, the solution to the problem of images on buttons can't be applied to images and icons in the statusbar. In a few cases, the technique of inverting "template" images works, but applications with statusbar helpers that have invertable images are in a large minority.
- Solution
- Most of your applications that have a presence in the statusbar—including all of Apple's—must have custom-built images. In Crystal Black, these images are installed in the application's Resources folder, while maintaining a backup of the original images. Crystal Black also runs an inversion method that works in a few cases, but can't be relied on for most.
- Challenges
-
- Requires digging through the page's document object model and checking for buttons. Technique for theming push buttons is quite different from that for pop-up buttons.
- Many pages use nonstandard button styles, themed through CSS, and these are much trickier to coerce into using white text.
- Solution
- Crystal Black installs a custom CSS style sheet, which can be used with browsers that support custom style sheets. In the case of Safari, Crystal Black enables the style sheet automatically. Although this works, it manages to destroy a lot of custom-designed buttons along the way...
- Challenges
- Many newer Mac applications have buttons that are subclassed from the standard Cocoa button class and therefore don't respond to theming. Similarly, various open-source frameworks for building windows and buttons are in use, with similar challenges to theming.
- Solution
- Unfortunately, since Crystal Black cannot convert such buttons to its dark theme, it must apply a custom modification for each application to ensure buttons are readable. This means that some apps will have buttons with white text, since they aren't accounted for in Crystal Black.
- Challenges
-
- When the Finder is in column or list view, and these views have the dark background users normally prefer in themes like Crystal Black, the names of files and folders that have colored labels cannot easily be read.
- Despite numerous attempts, I have not discovered any method for changing the colors of these labels to provide ☆suitable contrast for white text.
- In addition, because of the way the Finder's file browser works, it's not possible to coerce a specific file or folder to use black text instead of white, when the item uses a label.
- Solution
- There is no good solution to this problem. To keep Finder's column and list views readable, Crystal Black prevents the background color for these views from darkening to the point that would trigger the use of white text. In other words, the names of files and folders in the Finder will always display as black.
Challenges- If a user disables Crystal Black for a specific application, the software no longer has a way to transform text or images from black to white.
Without some action, this would be the same as a user downloading the (free) Crystal Black system graphics files and installing them without the software: You wouldn't be able to read a lot of the interface elements.
Solution- The problem can't be totally solved. However, Crystal Black does three things to maintain usability. First, the CB filter module (which is what determines whether to load Crystal Black or not) installs a minimal set of color instructions before declining to load the core software. These colors keep text on buttons readable. Second, the old Extras resources files have a few text-color settings that still have an effect, and these take care of text color on segment tabs. Third, Crystal Black sets some specific defaults for the disabled application that prevent it from using a totally black window frame. These defaults are swapped out if the user re-enables the app for CB.
Carbon applications
Carbon applications are incapable of loading Crystal Black to any meaningful extent. However, some such applications have components built with the Cocoa frameworks, and these components will load Crystal Black (unless the app is in CB's disabled apps list). An example of the latter is Adobe Photoshop CS4, which itself is a Carbon-based lifeform, but may have plugins that are Cocoa-based. In this case, the plugin will load Crystal Black as long as Photoshop itself does not have CB disabled.
At the time of this writing, the Carbon universe is split into two difference species: Those that will only run on PowerPC chips, or under Rosetta on an Intel chip, and those that will run natively on both kinds of chips. The distinction is important, because the different species, it turns out, use different system resources for some of their graphics.
In any case, the challenge for affecting Carbon applications with a dark theme is that it must be done in the "old-fashioned" way—using the graphics files that used to enable theming in the age of ShapeShifter.
- Challenges
- How to enable white text on black buttons and other interface elements without using software or the post-Leopard system resources.
Solution- To a large extent, this is solved by relying on the pre-Leopard Extras resources files. Carbon applications make more use of these than Cocoa ones do, and Carbon apps that require Rosetta under Leopard make even more use of them.
Challenges- How to enable white text on the labels of toolbar buttons and on window titlebars, without using software or post-Leopard system resources.
- Solution
- No solution found. This is one challenge Crystal Black has been unable to overcome. Since toolbars are an interface element that's uncommon on Carbon applications, the toolbar label problem isn't a huge issue. (The only such app I use is Yummy FTP.) However, nearly all windows have a title, and it remains black against a black background.
Challenges-
- The background colors of various objects on a Carbon window are drawn from ancient system resources that aren't straightforward to use and that can mix with unexpected results.
- The elements that must mesh to make a smooth, pleasing, darker-than-white color are nested, and some resources are used for more than one level in the nest.
- One complication that became clear from this exercise is that resources used differ between Universal-binary applications and apps that must run under Rosetta.
- The background color must remain light enough to provide contrast for both white and black text.
- Solution
- Ultimately, this goal required detailed mapping of resource "PPAT" (pattern) objects in the Extras files to observed results. Thereafter, a good deal of trial and error was required to get the colors to mesh—for example, the background color of a "group box" nested in a "tab view", and the background color of buttons and other controls nested inside the "group box."
I couldn't theme some elements to my satisfaction, however. In particular, I wanted the background color of a group box within a tab view to be lighter than that of the tab view. This isn't a problem, but, because the background color of objects within the group box use the same pattern resource as the tab view, the objects have a darker background than that of the group box itself. You can set distinct background colors of control objects that are inside a tab view from those that are outside the tab view, and of those that are in a tab view from those that are nested inside "secondary group boxes" within the tab view. But you can't do the same for objects within the tab view and those within nested group boxes.
A Black Gloss Theme for CoverSutra
I recently posted another member of the coming Crystal Black theme for Snow Leopard on my deviantART site. This new component is a glossy black theme for the popular iTunes controller CoverSutra.
Crystal Black is a theme for Mac OS X "Snow Leopard" that I'm still refining and plan to release eventually. I published a preview of the theme last fall, and a few weeks ago released a Crystal Black theme for iTunes. The skins for both iTunes and CoverSutra will, of course, be included in the full theme once it's out.
One more application-specific Crystal Black theme I plan to release soon will be of interest primarily to web developers: It's a theme for Safari's Web Inspector module. Stay posted for more on that, and for more about Crystal Black as a whole.
Update 4/18/11: The full Crystal Black 1.0 theme is now available from the Crystal Black website.
Installing Crystal Black for CoverSutra
The download contains a little application that installs the Crystal Black theme for CoverSutra. To install, simply doubleclick the application and select "Install." You can also use the app to restore the default CoverSutra theme. To restore, doubleclick the app and select “Uninstall.”
After installing or uninstalling the theme, you'll need to quit and restart CoverSutra for theme theme to take effect.
Also included in the download is a folder containing CoverSutra's default (black) menubar icon, as well as a white alternative for those who use a dark menubar.
Crystal Black for CoverSutra (Download file is 1.5MB)
Crystal Black Preview: A New Attempt To Put a Dark Skin on Snow Leopard
Like many themers for Mac OS X 10.3 ("Panther"), I was awed by the beta releases of a theme called "Cathode" back in 2004. An artist named Dragun took the theme through a few iterations and then abruptly halted development.
Those of us who used ShapeShifter to run Cathode on our Macs understood why. Although Cathode was beautiful, in practice it was impractical. There were too many elements of too many applications that resisted a dark theme for buttons and window backgrounds.
For me, however—and I'm sure for many theming fans—the dream of using a beautiful black theme like Cathode was a siren call impossible to forget. Over the years, the dream receded further from our grasp because of roadblocks Apple erected—intentionally or not—to the existing mechanisms of theming Mac OS X.
Starting with Mac OS X 10.5 ("Leopard") in 2007, the main tool for applying Mac themes, ShapeShifter, went bye-bye and has never returned. This is one of the main reasons I continued development of CrystalClear Interface, because it was the only way for me to apply a fully realized theme to Mac OS X.
Since Leopard, themers have been able to finesse the problem by changing the system graphics files that apply buttons, menubar background, basic window shape and color, and a few other items to your window appearance. Despite best efforts to unravel the secrets of the Mac's new ways of drawing itself, this mechanism isn't able to consistently change text color in the many contexts in which it appears in a window, thus making design and use of dark theme impractical.
As I'll describe in a future article, tackling the design of Crystal Black, a new theme inspired by Cathode, has been far from easy. And there remain user interface elements that totally resist its charms. But for me, those elements are few enough to make Crystal Black practical.
At this point, I'm confident that I'll be able to complete Crystal Black and release it at some point for all Mac users of Snow Leopard (Mac OS X 10.6). The theme is an offshoot of CrystalClear Interface (CCI) and uses much of the same code. However, Crystal Black is much simpler, has a smaller impact on the operating system, and is compatible with many more applications than CCI. Also unlike CCI, Crystal Black provides a complete theme for iTunes 10.
During early development of Crystal Black, I had intended it to be a feature of the next major release of CCI—and eventually it will be. In mid-September, though, I got the bright idea of forking Crystal Black as a separate application, mostly because I thought it would simplify its development and allow me to get it into user's hands more quickly.
Like all software development, it seems, the code cooperates only so far, and timelines end up stretching beyond intentions. That's been the case with Crystal Black, but I'm happy to say that not only is it nearing the end of its core development, but a lot of the Crystal Black code will be able to optimize CrystalClear Interface. It's kind of like what Jobs talked about in the recent keynote about Mac OS X and the development of the new Macbook Air: Things I've learned in developing Crystal Black will ultimately make CCI a better product as well.
As an aside to CCI users, I'm planning to put out a minor update soon that will incorporate the Crystal Black-enabled optimizations as well as address bugs and other changes made since the release of version 2.5.6.3 in August.
This post, then, is simply a preview of Crystal Black, showing how it appears in various widely used Mac applications as well as in full desktops. I hope you find it to be as gorgeous as I do!
CrystalClear Interface 2.5:
Taming a Leopard in Winter
I recently released a major new version of CrystalClear Interface (CCI). Among the most significant enhancements in version 2.5 are its full compatibility with Mac OS X 10.6 ("Snow Leopard") and its ability to finally theme the Finder. Because of new limitations to system add-ons imposed by Apple, taming Snow Leopard has been a daunting challenge, but the final outcome is a version of CCI that's the most stable, robust, and compatible yet. The extended struggle with Snow Leopard over the winter is one of the primary reasons I've decided to require a license fee for CCI 2.5 ($12.00).
The solution would not have been feasible without use of an updated SIMBL framework, which now relies on a ScriptingAddition rather than an InputManager for its magic. However, using SIMBL is not without a pretty noticeable drawback. Specifically, when loading into 64-bit applications, CCI must wait until SIMBL loads, and this produces a delay in theming windows when you first launch such an app. (This problem doesn't affect 32-bit apps, because CCI still uses an InputManager for those.) So far, I haven't found a workaround to this. If you find the delay unacceptable, you have two choices:
- Don't use CrystalClear Interface 2.5.
- Modify your 64-bit apps to run as 32-bit ones. (This involves opening the Info window for the app in Finder, and then selecting the checkbox "Open in 32-bit mode.")
I've completely rewritten the CCI User's Guide, which I encourage you to peruse in order to get a feel for the breadth and depth of CCI's power. But for this article, I'm confining myself to listing the highlights of version 2.5.
- Compatibility with Snow Leopard. CCI 2.5 not only now works with Snow Leopard, it's actually more stable and app-compatible than on Mac OS X 10.5. As noted above, the only significant downside is that the initial loading of CCI into 64-bit applications takes longer than with traditional 32-bit apps. The delay is due CCI 2.5's use of the SIMBL framework for 64-bit applications, which must be loaded before CCI can.
- Support for Finder on Snow Leopard. Finally, CCI can theme the Finder! In Snow Leopard, Apple transformed Finder into a Cocoa application, so it can be themed like all the other Cocoa apps you use. CCI's Finder functionality was added fairly late in the development of version 2.5, so its implementation isn't complete. Look for a more thorough and robust implementation in a future update.
- New "Glossy" button theme. Designed for Snow Leopard, the Glossy button theme is also available for Leopard.
(For now, the original "Gradient" CCI button theme is only available for Leopard.) - Robust toggling between button themes. You can now quickly, easily and fully switch between Aqua and the CCI button styles.
Crystal Docs Icon set. This set of icons is designed to complement the Crystal Albook icon set I released a few years ago. In CCI 2.5, you can easily install or uninstall these document icons for various groups of Apple applications as well for an initial set of third-party apps. The Crystal Docs icon settings now occupy a separate tab in the CCI Preferences panel. (For a visual preview of the icons, refer to this Mars article from January.)- A new set of eight preset themes. The new themes are designed to complement the set
of eight "Frosted Crystal" desktop pictures introduced with CCI 2.2. (The themes were previewed, with full screenshots, in this February 2010 Mars article.) 
Window overlay options. An earlier version of CrystalClear Interface experimented with using a glossy (shiny) overlay for windows, but I removed it some time ago because the implementation was buggy. For CCI 2.5, however, the overlay idea is back and much better than before. You can set this Interface Fluff option to one of two different kinds of "shine," or elect to have no shine at all.
- New preference settings:
- Make all toolbars customizable. Gives you access to settings that are often hidden—for example, rearranging toolbar buttons in application preferences windows, changing the size of icons, or showing or hiding icon labels.
- Make (almost) all windows resizable. Adds a resize corner to windows that don't normally have them.
- Specify a different color for window "panels" and application preferences windows. Previously, windows and panels had the same color, though they could use different window frames.
Redesigned window frames. The "Gradient" style has been completely redesigned as well as reprogrammed, so it's totally stable now. The "Glass HUD" frame has also been refined.- Experimental theming of focus color. This is an attempt to replace the usual blue or graphite keyboard focus color with one that matches your current window color. At this time, it only affects one or two types of buttons.
- Check for CCI updates from the global menu. Now you don't have to open System Preferences to check for updates.
- CCI Contextual Menu. You can now access the CCI global menu by right-clicking on virtually any window that has a titlebar.
- Redesigned and expanded "Extras" Tab. With the various major additions to CCI "Extras," this tab now has four tabs of its own:
- Alternate Interface Paradigms
- Graphics Options
- Interface Fluff, and
- Other Options
- Expanded implementation of Text Tools. The text tools available in the CCI global menu have not only been expanded to include full Mac OS X Format and Styles submenus. Of even greater use to those of you who love contextual menus, CCI adds a contextual menu that's available wherever you can write and edit rich text. The menu, labeled "Format," has the same set of tools as the Format menu in the CCI Menu's Text Tools section.
- Numerous Bug Fixes and Enhancements To Earlier Features. CCI 2.5 has made still further progress in handling text color for best contrast (including the need for correct contrast colors on buttons when using the new Glossy theme), covers more of the many non-standard elements found in some Cocoa applications, and makes further strides in ensuring reliability and stability.

There are a few differences between the way CCI works on Snow Leopard than it does on Leopard. I wouldn't characterize them as "bad news," per se, but they may annoy or disappoint some users.
- App icon in menubar. I have succeeded in making this happen in 64-bit apps on Snow Leopard, but not in 32-bit apps. So for these apps, you'll have to make do with the app name, as the Good Apple intended.
- Carbon windows don't hide. When you're using Single Application Mode (SAM), windows from some applications constructed mainly from Apple's older, "Carbon" frameworks refuse to hide as other app windows do. There are exceptions, fortunately. For example, Adobe Photoshop does obey SAM. (For the full scoop on Single Application Mode, refer to my recent Mars article, "The Ultimate Solution To Window Clutter: You Can Call Me SAM".
CCI 2.5 does have a few known bugs that you are likely to notice. Fortunately, each has a fairly simple workaround.
On Snow Leopard:
- Exposé does not work correctly in CCI's default configuration. Most windows show up with only their bounding rectangles and titles showing.
Workaround: Disable window blurring. Open CCI Preferences, select Extras tab, then the Fluff tab, and deselect the second checkbox on that screen. You'll need to restart any open apps to see the change. Spaces is affected by the same bug. - Finder sometimes will unexpectedly restart when you eject a disk image.
Workaround: fThis bug occurs when you eject an image while you have the image selected in the sidebar. So, to keep the bug at bay, select another item in the sidebar either before or just after ejecting the disk image.
On Leopard:
- When you enable the option to show the application's icon in the menubar, you end up disabling that app's Services Menu.
Workaround: Deselect the CCI option that replaces the application's name with its icon in the menubar. Open CCI Preferences, select the Extras tab, then the Other tab, and deselect the second checkbox on that screen. You'll need to restart any open apps to see the change.
- Espresso
- Picturesque
- CSSEdit
- Burn
- Times
- Sandvox
The following are still a problem, however, for one reason or another:
- VoodooPad (sometimes)
- iFreeMem 2.0
- XTorrent
- Coda
In version 2.5, CCI now explains the compatibility issue when it pops up a warning about a particular app.
More information about CrystalClear Interface, including screenshots and documentation, are now available on the CrystalClear Interface website.
If you find a bug—particularly one that affects one of your favorite apps—you can either leave a comment to this article, or contact me through this page.
Eight New Themes Coming in CrystalClear Interface 2.5
Besides the set of Crystal Document icons previewed recently, another feature of the forthcoming CrystalClear Interface 2.5 is a new set of eight beautiful preset themes, shown below. (Click the images for a closer look.) The themes are designed to complement the eight Frosted Crystals desktop pictures released with CCI 2.2. Of course, you can still set colors, frames, and transparency settings for Mac OS X windows to your own taste, as always. The preset themes are ones I've enjoyed and find a convenient shortcut to designing custom themes.







Introducing Crystal Documents:
A Set of Document Icons for CrystalClear Interface
This is a set of 74 document icons intended to complement CrystalClear Interface and the set of Crystal Albook system and application icons I released a couple of years ago. The set covers most of the document types used by Apple's applications as well as a limited set of document types for third-party applications. The icon set for third-party apps will be augmented substantially as time permits.
These icons are available for download now, and they will be included in the forthcoming release of CrystalClear Interface 2.5 (more on that in another article). In CCI 2.5, you will be able to automatically install and uninstall the various icon sets displayed below, including any of the Crystal Docs icons for any of the third-party applications you use. The new icon install feature will be included in the new CCI Preferences window.
Enjoy!







CrystalClear Interface 2.2

I posted the new version of CrystalClear Interface a few days ago, and then proceeded to hunt down and squash a couple of last-minute bugs. Yesterday, I was also moved to make one of the hard-wired features a configurable option. While not as dramatic an upgrade as version 2.1, CCI 2.2 nevertheless has a large number of new features, enhanced features, and bug fixes, as well a great deal of code optimizing. What follows is a summary of the more significant changes since version 2.1 was released in June.
- Rewrite of Text Contrast Code. The new code in version 2.2 is much more compact, requires less processing, and is more robust and accurate to boot! It also now handles text labels on form fields.
- Window of Quick Tips for New Users. A lot of what CrystalClear Interface does—as well as how it’s done—is not your average application fare. It’s won’t even be familiar to users who have previously tried theming software on the Mac. So, I put together a small panel that shows up the first time a user launches an application hosting CCI. The new panel briefly points out some of the features and methods a new user needs to know to make the most out of CCI.
- Identifying Incompatible Applications. Starting in vertsion 2.2.0, CCI is maintaining a list of applications known to be incompatible with CrystalClear Interface. Whenever a user launches one of these apps, an alert notice will appear explaining the problem and offering to let them either “minimize” or disable CCI. It would be best if no such applications existed, but given the complexity of what CCI is doing, that’s never going to happen! The following applications are already on this list: Espresso, CSSEdit, Times, and Burn.
If you encounter an application that doesn’t work in CCI’s default mode, please email me a note so I can do some testing and add it to the list. - Additions to the CCI Global Menu. CCI 2.2 squeezes a lot of functionality into its newly designed global menu. Here’s a brief rundown on the major changes:
Minimizing and Disabling CCI. Now you can turn CCI off or minimize/maximize it right from the menu! Disabling adds the current app to the list maintained in the CCI System Preferences pane, and you’ll have to go there if you want to enable CCI for that app again. Minimizing and Maximizing can take place right from within the menu. Note that for any of these actions you’ll be asked to restart the current app.- Specify Your Desktop’s Brightness. Since CCI can’t see through your windows to account for the brightness of your desktop picture, it’s never been able to re-set the contrast text color when your desktop picture changes. If, like me, you have a rotating set of desktop images you like to use, this required either some compromise in appearance or some time to change the CCI theme to work best with the new background. In CCI 2.2, you’ll find a handy setting in the global menu that lets you tell CCI that you have a Dark Desktop at the moment, or a Light Desktop. CCI will then take that information and intelligently apply it to the text in your current windows, including all your other open applications. It’s not perfect, but I’ve really enjoyed having it available!
- Text Tools. I added these out of frustration that many of the fine apps I use for formatting text leave out one or more of the various text format panels that are part of Apple’s Cocoa frameworks. Sometimes you can’t find a Color panel, sometimes the Font panel is hidden, and outside of RTF editors like TextEdit, Bean, and DevonThink Pro, you hardly ever have easy access to the Table panel. Besides those, there’s one incredibly useful text panel that I’ve never seen implemented in any Mac OS X application: The Font Options Panel.
Once you get your hands on this, you’ll want it at the ready, as I do. (Apple has built many of its features into the Font panel you can find in iMovie.) And if you want to make a list or use your defined text styles, you can toggle the formatting Ruler on and off as well. All of these now appear in the new Text Tools submenu: - Fonts
- Colors
- Table
- Font Options
- Add/Edit Link
- Toggle Ruler (which gives you access to lists, alignment, and styles, among other things.)
- New Window Frame. Based on a frame developed a few years ago for ShapeShifter called "Cathode," the new "Shiny Dark" frame is perfect for those of us who like a rich, dark, sleek look for windows now and then. This frame is now the default for CrystalClear Interface.
- Browser and Icon Views. File browser views, such as those in Save/Open panels, now get a complementary color, as do icon views.
- New "Extras" Option. The "Extras" tab now includes an option to enable or disable the blur effect for window backgrounds. The effect helps readability and overall usability, but on some systems may also cause some distracting flickering of page elements. If you disable the blur, the change will take effect with the next window you open, not with your current one.
- "Frosted Crystals" Desktop Pictures. The CCI 2.2 download includes the set of 8 desktop pictures featuring a "frosted glass" look that were previewed in a recent Mars article.
- Redesigned Preferences Panel. The preferences panel for CrystalClear Interface has been redesigned for version 2.2. The new panel has a different tab style and coloring, is somewhat smaller, includes more labeling and explanatory text, and accommodates more window frame styles.
Custom Application Mods. Added some CCI theming to iMovie, iPhoto, Leap 2.0, and a few others. Also made some changes to handle Safari 4.0. In addition, I’ve just about finished theming the widgets in Apple’s iWork suite (Numbers, Pages, Keynote).- New Window Animations. Yes, I'm still fiddling with these! This time around, the windows fade in as in version 2.1, but they zoom out more like Quick Look panels.
- Poor Man's Contextual Menu. I plan to rework this in a future update, but here's what you get in 2.2. In most of your applications running CCI 2.2, right-click (or Ctrl-click) on the window titlebar, and you'll gain access to the application's main menu, including, of course, the CCI global menu. This is a convenience for those of us who are too lazy to drag the mouse all the way to the system menubar. You won't be able to access the menu in applications with toolbars that extend their own menus into the titlebar (e.g., Safari).

More information, including screenshots and documentation, are now available on the CrystalClear Interface website. As noted there, this is likely to be the last free version of CCI, given the rather huge amount of time that's been devoted to it. I'm hoping that if you download and use version 2.2, you will make a donation to the cause.
One final note, regarding Snow Leopard, due to be released in a couple of days. CCI does work on Snow Leopard (Mac OS X 10.6), but will not load into applications running under the standard 64-bit memory system. Most of Apple's own applications run as 64-bit apps by default, and some newer third-party ones do as well. For these applications, you can load CCI by opening the application's Info window in the Finder and selecting the "Open 32-bit" checkbox. In addition, the CCI graphics module is not yet compatible with Snow Leopard, so you'll see the default Snow Leopard buttons and other widgets rather than CCI's. I'm hoping the latter problem can be solved soon.
Introducing Frosted Crystals for CrystalClear Interface
These are snippets of the 9 "Frosted Crystal" desktop pictures that'll be distributed with CrystalClear Interface 2.2. The look of frosted glass looks terrific when viewed through CrystalClear windows! I hope you enjoy using them as much as I have.









CrystalClear Interface 2.1
- CCI Load Filter. CCI 2.1 adds a new component that acts as a gatekeeper to apps you designate as "disabled" in the CCI Preference Pane. With this in place, you can reliably turn CCI off for individual apps as needed, or disable CCI entirely using the Preference Pane button for that purpose.
- Background Blur Filter. Another major improvement is the use of a blur filter behind all windows, which is one more way to enhance focus on the frontmost window by minimizing background distractions. This blur filter is similar to the one Apple uses for its default sheet windows.
- Preset Themes. In the CCI Preferences window, you'll find a 5th tab called "Themes." I view this as a starting point for a more robust, extensible system of theming down the road (time permitting!) For me, the four themes included in CCI 2.1 are designed to complement the four desktop pictures I most commonly use, which by the way are included in the CCI download package. They are simply a fast shortcut for switching the frame style, transparency, and color of windows and text areas. Now, rather than having to do this each time I pick a different desktop picture (which is, I must admit, rather tedious), I can easily pick one of the four that works best.
- Matching Table Row Colors. Instead of seeing the same grey and white alternating row colors for tables all the time, CCI 2.1 dynamically sets the colors to match the color you've chosen for your outline views.
- Three new "Extra" options. In CCI 2.1, you can now
- Opt to suppress the horizontal scroll bar in multicolumn file-browser views if you want,
- Have the ability to move windows by any exposed background areas, not just by their titlebars.
- Use the small scrollbar style for all your applications instead of the regular size.
- New Window Animations. CCI 2.1 uses a "fade-in" animation rather than the "move-in" animation used previously. I find this a bit smoother and less intrusive, and it causes less wear and tear on your windows by not leaving their screen positions in awkward places (like with their titlebars floating at the bottom with the dock) should you turn CCI off for some reason. In addition, I couldn't resist adding some new eye candy for windows as they close; now, the closing animation varies a little based on the kind of window that's closing.
- Modified Graphics. Some of the CCI system widgets have been redesigned... most noticeably, the titlebar buttons and the scrollbars.
- Clean HUD Windows. This has been on my to-do list for quite a while now, and I finally figured out how to do it right. In previous versions of CCI, the HUD window style that's applied to "utility" windows like inspectors, info panels, and utilities like the font and color panels didn't display the smooth rounded corners at the top and bottom edges that you expect from those Apple includes. Instead, you'd see a faint horizontal highlight artifact at the top, and the bottom edges would be squared off. Now, that design flaw is gone, and all CCI HUD windows look the way they should have all along. The screenshots below show the "before" and "after" views.
- Support for "Garbage Collection."A growing number of Mac applications utilize the "garbage collection" feature of Objective-C Apple introduced in Mac OS X 10.5 ("Leopard"). This version of CCI can be used by these apps, which include Xcode, Smultron, and others.
- Myriad of Smaller Enhancements. One example is that the CCI Help window is now resizable, so it should be somewhat easier to read.
More information, including screenshots and documentation, is available on the CrystalClear Interface website.
The Many Faces of CrystalClear Interface 2.0
Screenshot of CrystalClear Interface 2.0 with Dark Background, Teal Window, and Gradient Sheet
Screenshot of CrystalClear Interface 2.0 with Dark Background, Teal Window, and Simple Frame
Screenshot of CrystalClear Interface 2.0 with Pastel Background, Glass Window, and Glass Sheet
Screenshot of CrystalClear Interface 2.0 with Pastel Background, Mauve Window, and Rose Alert Panel
Screenshot of CrystalClear Interface 2.0 with Teal Background and Glass Theme Window
Screenshot of CrystalClear Interface 2.0 with Teal Background and Gradient Theme Window
CoreUI Finder Utility Now Available For CrystalClear Interface 1.9
I prepared this add-on to CrystalClear Interface 1.9 a few weeks ago, and it works like a charm for me. It’s a simple AppleScript utility that quits the Finder, turns CoreUI back on, and restarts Finder again.
I keep it in my Login Items so the Finder looks right every time I log in. If you happen to relaunch the Finder during your current session, you’ll need to
run CoreUI Finder again. For such cases, I keep the utility in my Finder toolbar. CoreUI Finder is available in the Mars Downloads section, or from this URL.
CrystalClear Interface Update: Version 1.9.1
Update 3/23/08: This release fixes a problem with the uninstaller, and is otherwise the same as 1.9.0. The uninstaller now runs a new utility, GraphicsToggle, after running the installer/uninstaller, and this takes care of making sure the Leopard graphics are fully restored. See the documentation included with the download for more information about GraphicsToggle.
Since releasing the last version of CrystalClear Interface (CCI) in January, I’ve been hard at work on a lengthy—and, it sometimes seems, never-ending—list of bug fixes. Given what CCI is trying to accomplish, I don’t suppose I’ll ever release a bug-free version. However, I’m pleased to say that version 1.9 is much better behaved than 1.8.
Of course, the really fun part for me is seeing what else I can get CCI to do in the way of theming various aspects of Aqua. Many of the experiments in 1.9 are customizations I would have relied on ShapeShifter for if it were available for Leopard. However, it appeared that Unsanity was going to be some time in getting a Leopard-compatible ShapeShifter finished, and (no offense, Apple!) I’ve really gotten bored (sick?) of the Aqua “theme.”
I mean seriously, Aqua is soooo 2001! I don’t know about you, but I’ve been itching for something insanely different for awhile now. Leopard is a marvelous upgrade in many ways, and yes, it did finally introduce the much-requested “unified” theme for OS X windows, a controversial (why?) new menubar, and a cool new Dock, but overall its look and feel is the same-old, same-old Aqua we’ve used since Mac OS X 10.0. Seven years is a long time in the Internet age, Steve! (But you know that, I’m sure… we all have our multiple priorities to juggle.)
There really are too many enhancements in CCI 1.9 to list them all here, but here a few of the highlights:
- Transparent scrollbars. I’ve been trying to make these in ThemePark and ShapeShifter forever, but finally gave up some time ago. I’m pleased to say that I was successful in bringing them to shiny life in CrystalClear Interface 1.9!
- Titlebar Buttons. There’s nothing exciting in titlebar buttons per se, but Leopard windows refuse to use the ones you slip into Extras.rsrc, so I had to try to the CCI route. It worked!
- PopUp Buttons. In another experiment, I tried banishing Aqua from my popup buttons by forcing them to adopt a different, Apple-designed “bezel style.” As I am quite fond of the “recessed” bezel style introduced in Tiger, I chose that one.






- Other Buttons. The trick I used for popup buttons came in handy for theming other buttons as well… again using alternative “official” bezel styles. You’ll see the shiny metal theme used for segmented buttons and push buttons (including toolbar buttons like those used in Mail). Disclosure buttons also get a tweak.
- HUD Windows. I also did some work on this kind of window, trying to unify the look across the various applications that use them, and across the kind of “utility” window they represent.
- Text Color Contrast. My attempt to make sure all text is readable regardless of the window color, level of opacity, or desktop picture you may prefer has improved in 1.9. Still needs work, but it’s much better.
- System Graphics. I decided to go ahead and release a custom version of Extras.rsrc (and Extras2.rsrc for Intel Macs), since it incorporates some of the system graphics I haven’t had time or been able to customize using Cocoa in CrystalClear Interface itself. In this category are things like tab bars, tab bar background bevels, text field overlays, progress bars, radio and check buttons, and a few others. The CCI 1.9 install program includes an option to install these graphics if you choose. (An uninstall option restores the original system graphics files.) It’s important to note here that most of the graphics in the Extras resource files only work by disabling some of the new Leopard graphics. In the Preferences for CCI 1.9, I’ve added some options to let you choose whether or not to use CCI graphics in this manner. You can opt out of CCI’s graphics either globally or for individual applications.
- New Window, Toolbar, and Titlebar Gradients. I started playing with Leopard’s new NSGradient class and discovered how easy it is to create cool gradients for these window elements. In CCI 1.9, you’ll discover most of these when you set CCI to “Disabled” for a particular application. However, the new gradients also show up in some Carbon applications like the Finder or PhotoShop when you call forth an Open or Save dialogue box. In a future version, I’d like to make this window style an optional variant within CCI Preferences. Along the same lines, you’ll find some HUD style windows popping up even if you have CCI disabled.
Sad to say, all of these enhancements do come at a price.
No, I’m not talking about money (though I’d really like a few bucks one day for all this toil and trouble!) The price is that I’m jettisoning support for Tiger (Mac OS X 10.4) as of CrystalClear Interface 1.9. I had intended to keep CCI running on Tiger for some time, but even though I had coded to keep Leopard-only code out of Tiger’s way, when time came last month to test what I had, it became clear pretty quickly that Tiger just didn’t want to play along. Not only do I have a real shortage of time, but my only Tiger test system is going away soon, so I won’t even have a way to test if I did have the time.
So… sorry, Tiger fans. The good news is that you still have ShapeShifter to satisfy your diet for theming alternatives. In the meantime, save up your money and upgrade to Leopard when you can… if for Time Machine alone, it’s well worth it! (Time Machine seems more awesome too me the more I use it. How did I ever get along without it?)
And Leopard fans, rejoice! CCI 1.9 begins to feel like an actual, complete theme… and one of the only options I’ve got at this point.
What Does CrystalClear Interface Do?
Rather than repeat everything from the January article, I’m just going to link to it. It has a section with the same heading as this one that runs down all of CCI’s features pretty well.
However, because of continuing confusion about where you can access CCI’s Preferences window, I’m reiterating that info here. As with the previous versions, you access CCI Preferences by clicking on the small, round icon in any application in which CCI is loaded. For example, here is where CCI’s menu appears in TextEdit:
Caveats for CCI 1.9
So, CCI 1.9 does all these cool things, but what’s the downside? Well, I wouldn’t be a good wizard if I didn’t warn you that “Yes, Dorothy, there is a dark side to CrystalClear City.”
- Although there are fewer cases that I know of this time around, you will undoubtedly encounter an application that doesn’t work well with CCI turned on. In this case, you should try just disabling CCI for that app by using the checkbox at the top of the CCI Preferences panel.
- Aperture crashes when you terminate it. It works fine otherwise.
- Small scrollbars need a smaller image to go with them. In addition, empty scrollbars may show a small, unnecessary piece of themselves at the top of the scroll track.
- In apps such as Mail and Activity Monitor, the layout of items in a given Preferences panel tab gets messed up if you close and then reopen the panel.
- In some Carbon apps, such as Photoshop, you’ll find that the background window color doesn’t match the background color of button controls and/or text.
- Buttons don’t always get themed when you first open a window or tab item. You can force them to theme themselves by tabbing to a different keyboard input control, or by clicking in an inactive text field.
- The Crystal Menubar still isn’t always showing its state correctly in the CCI menu.
- You may find memory usage higher than usual in some applications… although I’ve done a lot of memory-leak cleanup, you can never do enough, it seems. I find Safari and iWeb, in particular, get draggy over time, but they snap back when I restart it. (I do think CCI makes iWeb more crash-prone than usual.)
- When you have CCI disabled in an application, you may find a window (usually one such as a preference panel or utility window) that refuses to be dragged. This problem occurs when you first disable CCI in an application and will be eliminated by restarting the app.
- If you have CCI disabled and then re-enable it, one of the windows may take on a “shadowy” appearance. You can workaround this by closing the window’s toolbar and reopening it. Or it will go away if you restart the app.
- In Pages with CCI disabled, you will experience a lag in keystrokes initially. To fix the lag, resize the window slightly. The problem will not recur during the current Pages session.
- In Numbers with CCI enabled, attempting to use one of the popup buttons on the toolbar will cause the app to crash. To workaround, either disable CCI or do some work in your spreadsheet before clicking on a toolbar popup button.
- With CCI disabled, some HUD-style, dark-background windows use black text rather than a contrasting white, as they do with CCI enabled.
As before, Crystal Clear has much more of an effect on Mac OS X apps that were developed using the “Cocoa” frameworks than it does on apps developed with the older “Carbon” frameworks. Some apps are a mix of the two frameworks, so some windows may get themed “clear,” while others won’t. Most of the applications Apple builds are Cocoa apps, with the notable exceptions of iTunes and the Finder. Nearly all new Mac apps built today use the Cocoa frameworks, but a number of high-profile apps that have been around for years are still built with Carbon. In this latter category are all apps from Microsoft and Adobe, as well as some older apps from Mac vendors that are now building with Cocoa, such as BBEdit (BareBones).
It’s also important to note that CCI 1.9 will be most enjoyable if you run it on a recent-model Mac with at least 2GB of RAM and a 2Ghz or better processor.

Left To Do For Future Versions
No, I’m not done yet, much to my wife’s dismay.
Although I intend to take a break for awhile (if I can drag myself away…), here are a few things I still want to incorporate into CrystalClear Interface:
- Menus.
- Menubar.
- Focus highlight color.
- Spotlight.
- Did I mention Menus?
- Other applications.
- Finder and other semi-Cocoa Carbon apps.
- Expand CCI Preference options.
- Allow user customization of window elements (backgrounds, buttons, etc.)
What’s in the CCI Download Package?
Not nearly as much as before! Besides some nice desktop pictures, documentation, and a screenshot, the 1.9.1 package just includes the CCI software installer, which lets you do the following:
- Install CrystalClear Interface 1.9.1. This installation also checks to see if you have an old version of SetAlphaValue installed and moves it to a (Disabled) folder, since it can conflict with CCI.
- Optionally install system graphics. This option is off by default, but if you want to use the custom “Extras” resource file included in the CCI installer, click the checkbox before running the installer.
- Uninstall. The Apple PackageMaker program doesn’t make including an uninstaller very elegant, but I’ve put one in anyway. If you want to uninstall CCI and the custom system graphics at any time, run the CCI installer again and select the uninstall option. (Be sure to deselect the install option if you do this.) Note: The install program will still label the Uninstall step as an Install step.
Download CrystalClear Interface 1.9.1 (7.7 MB)
Update 3/16/08: If you uninstalled CCI 1.9.0, and buttons in the Finder and Safari no longer have the new “Leopard” look, download GraphicsToggle and run it. Just doubleclick on the GraphicsToggle icon, and it will do its thing and then quit the Finder. You’ll need to relaunch the Finder to complete the restoration.
Update 3/23/08: The new CCI 1.9.1 package not only includes GraphicsToggle as a separate app, but also incorporates it into the installer/uninstaller, and this takes care of making sure the Leopard graphics are fully restored. See the documentation included with the download for more information about GraphicsToggle.
Note: If you’re looking for the ShapeShifter theme, the Crystal Albook iconset, or other extras, you can download them from the Mars Themes page… select Crystal Clear (for ShapeShifter) version 1.5.
LICENSE
© 2008, Leland Scott, Musings from Mars
Version History
| 1.9.1 | 03/23/08 | Incorporates a new utility as part of the uninstall process that makes sure the Leopard graphics are fully restored to their original state. This program, GraphicsToggle, is also included separately in the download package for users of CCI 1.9.0 who want to use it after uninstalling. |
| 1.9.0 | 03/12/08 | Significant improvement in stability, and numerous extensions in capability. CrystalClear Interface 1.9 begins tackling theming chores previously handled by ShapeShifter, and also makes its presence felt visually on “disabled” apps. The installer optionally installs a system graphics file that replaces some images with those from the ShapeShifter version of Crystal Clear. Note: Starting with this release, CCI will only run on Mac OS X 10.5 (”Leopard”). |
| 1.8.12 | 01/02/08 | Additional round of performance optimizations and bug fixes. Targets include iPhoto, iChat, PhotoBooth, iWeb, and, on Leopard, QuickLook. Crystal Menubar’s launch mechanism still needs work, but it should no longer drop down the screen when you enter full-screen mode in an application. |
| 1.8.0 | 12/1/07 | CrystalClear Interface was numbered early in development, since it was conceived as an extension of the ShapeShifter theme, CrystalClear. However, things turned out a bit differently. The article on Musings from Mars explains. |
| 1.5 | 9/7/07 | Crystal Clear 1.5 was developed to complement CrystalClear Interface, then in development. |
| 1.2 | 6/6/07 | Crystal Clear 1.2 introduces a new approach to the system menubar that attempts to solve the problem created by backgrounds in menu extras there. There are many other new interface elements as well as some fixes to earlier ones. This version does not include the Crystal Albook icons, but they can be downloaded separately. See this article for the latest information on Crystal Clear releases. |
| 1.1 | 4/19/07 | Crystal Clear 1.1 has several major new interface elements as well as a newly designed, full set of Crystal Albook icons (version 1.0). |
| 1.0 | 3/26/07 | Crystal Clear 1.0 provided a complete package, with both “Lite” and “Dark” variants included. This release also included an initial set of Crystal icons based on the Albook icon set. |
| 0.6 | 3/2/07 | Introduced a variant called Crystal Clear Lite, which utilizes translucent white menus instead of translucent black ones. The variant also incorporated numerous other improvements and bug fixes to the original release. |
| 0.5 | 2/13/07 | First release of Crystal Clear. This version is what became known later as Crystal Clear Dark. The development of Crystal Clear was described in this introductory article on Musings from Mars. A few days earlier, this preview article appeared, with many application screenshots. |
Announcing CrystalClear Interface v. 1.8.12
This unexpected journey into the realm of transparent user interfaces has taken me much further than I ever imagined. It's been almost a year now since the first inkling of the idea rattled my brain, which led to the first release of Crystal Clear for ShapeShifter in mid-February.
Thanks to the Cocoa InputManager SetAlphaValue, I was led, Pied-Piper-like, into the enormous and strange world of Objective-C and Cocoa during the summer. I'm finally surfacing from that expedition and have brought a souvenir of my travels into the strange, terrifying, and glorious realm of Cocoa.
Each computer user will have to decide for themselves just how much transparency they can stand while working at their Mac. I was surprised at the amount of loathing that was expressed towards Leopard's newly translucent menubar last month. But I don't think it's indicative of any permanent flaw in the concept. Quite the contrary, in fact: If anything, Leopard's toying with translucency is too much of a baby step, on the one hand, and smacks of me-tooism with Vista, on the other.
Very briefly, the premise I'm proposing is that our computer monitors are essentially glorious light sources, much like the ones that shine through windows in our houses and automobiles. Just as we do with those windows, there are times when we want to bask in the beauty shining through, and other times that we prefer to close the blinds to avoid glare. On the computer, we already know how to close the blinds. I'm suggesting that there's a world of beauty awaiting computer users who can enjoy the light as well.
Based on my experience in building this software, I'd say transparency is quite practical to achieve on the Mac, with the appropriate support and technical leadership from Apple. What you'll find in CrystalClear Interface is flawed in a number of ways, but is still a good demonstration of what's possible. I'll have more to say on this point once I recover from this release, which is already 3 months later than I had planned.
Since this trinket I'm bringing, which I'm calling CrystalClear Interface, is still a work-in-progress, I'll certainly keep tinkering away at it and will post updates for any who want them.
InterfaceBuilder on Leopard with CrystalClear Interface 1.8 and the Eagle Nebula desktop picture (c/o finalfrontier.za.org). Click for larger version.
For now, CrystalClear Interface is available for free, but if I'm able to make the improvements I envision--both in functionality and in stability--I may want to get a little monetary reward for my bauble eventually. That said, if you try CrystalClear Interface now, learn how to use it, and like it, it would be terrific to know of your appreciation by way of a donation (you can use the link on this page for that).
The download package has three documents that give brief explanations of its contents, including a Help document for the new CrystalClear Interface software. What follows are two lists: First, some highlights about the latest, greatest Crystal Clear release, and second, the contents of the download itself. There's a lot here, so pay attention!
First, it's important to understand that Crystal Clear Interface can be used either in conjunction with the Crystal Clear appearance theme for ShapeShifter, or on its own without ShapeShifter running. It's also compatible with numerous ShapeShifter themes besides Crystal Clear. Another confusing point is that I'm releasing here an upgrade to the Crystal Clear ShapeShifter theme as well, though you probably won't want to use it without using CrystalClear Interface.
What Does CrystalClear Interface Do?
Assuming you're already familiar with the appearance theme (if not, there's a Welcome document in the download that covers it), the following is a list of the user-interface customization options that are introduced with Crystal Clear Interface. Many of them have been mentioned in the two preceding articles on this release, which are worth looking at for the screenshots and screen movies if not the words:
- Crystal Clear 1.5 Preview:
Yes! The Term "Opaque Window" Is An Oxymoron (8/6/07) - Update On That Crystal I’ve Been Growing (10/11/07)
- Manages overall window transparency (as SetAlphaValue did), including the ability to customize transparency for windows both globally and on a per-application basis. Also from SetAlphaValue, you can set custom transparency values for individual, named windows, and for unnamed windows of given dimensions.
- Adds separate transparency settings to window backgrounds and background colors of text views of various kinds.
- Replaces the default window "frames" of Mac OS X Aqua with transparent ones that more or less reproduce the look of windows in the ShapeShifter version of Crystal Clear. Non-utility panels have a visually distinct transparent frame.
- Puts a Crystal Clear icon in the main menubar where you can find it. (Many users of SetAlphaValue could never figure out how to find its powerful settings... ) There's also a preference option that lets you move the Crystal Clear menu item from the main menu to the application menu if you need to.
- The Preferences pane has been redesigned with an eye toward expanding the number of settings users can control. Initially, it adds six controls: Three color controls and three optional settings.
- The Color tab lets you customize colors in three parts of the interface. Most significant, you can customize the background color of application windows, using the standard color picker and also including transparency as one variable. With this option, you can restore opaque windows if that's your pleasure. The second control is for the background color of "column view" text areas, such as the ones in iCal, Xcode, Mail, etc. Finally, I added an option that lets you customize the text color in certain menus--namely, the ones that you always wished you could theme when using or designing a "dark" ShapeShifter theme.
- CrystalClear Interface also introduces somewhat superfluous animations that fire when you close windows. An option in another new tab lets you turn the animation mode off if you like.
- Another option, which isdisabled by default, lets you turn on SAM (single application mode). Since SAM is one of the desktop paradigms that I believe are essential to successful adoption of clear interfaces, I'm offering this minimal version as a start. I still use LiteSwitch myself for day-to-day SAMming, because it (a) works with Carbon apps, too, and (b) implements the standard "Shift-when-switching" key that lets you keep two (or more) applications onscreen at the same time when necessary.
- Utility-type panels (such as the color and font panels, and "inspector" panels) are designed with a faux "HUD" look that’s become popular in Apple’s software lately.
- Sheets are designed as a light blue sheet of glass, and "alert" panels appear in a gold color. The structure is in place to allow users to customize the color settings for both of these kinds of window objects.
- To make CrystalClear windows look as much like glass as possible, I was able to persuade a slice of transparent "highlight" glass to affix itself to each one. The effect is really quite cool. The shine resizes itself with its window and disposes of itself when the window is closed. Again, I plan eventually to let users turn the shine on and off, and also to select from a few other shine "styles."
- This version has a routine that changes the background text color from black to white in the HUD-style windows that are by default set in a dark translucent color. Customizing the text color contrast in this way is key to making windows of variable color and transparency readable. I've managed to do the same thing to some other windows (concentrating on those that have transparent backgrounds), but the function is still evolving.
- Besides a link to Preferences, the CrystalClear menu item now also has a selection for turning the Crystal Menubar on and off. (The on-and-off part is still a bit buggy.) This function activates a newer version of the Crystal Menubar, but you can still use the one I released in August instead.
- You can disable CrystalClear Interface on a per-application basis, as you could with SetAlphaValue. Even in this mode, however, you can enjoy a side-benefit of the software: CrystalClear Interface activates the "Opacity" slider everywhere the Color panel is used (well, except for Carbon apps). This means you can get transparent backgrounds in applications like Xcode, Coda, Smultron, etc., that otherwise wouldn't let you!
What's In the Crystal Clear Package?
The Crystal Clear download includes the following files in the main folder:
- Crystal Clear v15.guiKit (Both variants of Crystal Clear for ShapeShifter).
- CrystalClear Interface.mpkg (Installer for CrystalClear Interface).
There are six subfolders in the package:
- docs: Two Welcome documents, one for CrystalClear Interface and one for Crystal Clear for ShapeShifter, and a Help document (which is also included in the software's preferences pane).
- icons: I've updated the Crystal Albook icon set, adding a dozen or so new icons. This folder has a GuiKit file for use with ShapeShifter, and three iContainers for use with CandyBar (they were made with the terrific, new CandyBar 3.0, but I think can be used with previous versions as well).
- menu extras: Here you'll find folders with menu-extra graphics and installation ReadMe files for Chronosync, DropCopy, FastAndSlow, FastScripts Lite, iKey, MainMenu, Sound Source, Yahoo Widget Engine, and YouControl Tunes.
- other extras: This is where you'll find the iCan theme, the updated Growl style, and a folder for the extra SafariStand toolbar graphics.
- pics: Contains full-screen previews for both Crystal Clear and CrystalClear Interface. The pic of Crystal Clear (ShapeShifter) is taken with CrystalClear Interface running on Tiger (Mac OS X 10.4.10). The pics of CrystalClear Interface on its own is taken in Leopard (Mac OS X 10.5.1).
- desktop pics: A Crystal Clear user sent me a terrific batch of desktop pictures with a Cosmos theme, which, given Leopard's default desktop, is quite timely. I've been enjoying using them lately, and in fact they provided the backdrop for some of the pictures I took for the Musings from Mars release article.
Known Issues and Usage Notes
In addition, there are a number of applications that may not work properly with CrystalClear Interface running. On Leopard (Mac OS X 10.5), in particular, I have done less testing than on Tiger. Applications that I've experienced some difficulty with include:
- InterfaceBuilder (Leopard) (better with v. 1.8.1)
- Numbers (actually works now with v. 1.8.1)
- Console (Leopard). It runs fine, but crashes if you close a window showing the tabular log data.
If you need to disable CrystalClear Interface in a particular application, simply select the checkbox at the top of the Preferences window. In this situation, it's a good idea to quit and restart the application afterwards.
On Leopard, there is a bug involving the main menubar, which I'll be working on for a future release. Occasionally, selecting the main menubar will cause the application to crash, but it's a fairly rare occurrence. I also experience an occasional crash when clicking on a window's close button.
The Crystal Menubar loading/unloading mechanism is still buggy. If you find that you've launched more than one menubar, for now you'll have to use ActivityMonitor to quit one of them. In ActivityMonitor, enter "Crystal" in the search field to locate the Menubar applications.
I'll be actively developing CrystalClear Interface for some time, so if you experience a particular bug, please email me a report with as much detail as possible: llscotts at fastmail.fm
To uninstall CrystalClear Interface, delete the folder "CrystalClear" from your /Library/InputManagers folder. Deleting this folder will require you to authenticate as an admin user.
Download CrystalClear Interface 1.8.0 package (12.4 MB)
» Update 01/02/08: Download CrystalClear Interface 1.8.12 (0.8 MB)
Note: Version 1.8.12 consists of an additional round of performance optimizations and bug fixes. Targets include iPhoto, iChat, PhotoBooth, iWeb, and, on Leopard, QuickLook. CrystalBar's launch mechanism still needs work, but it should no longer drop down the screen when you enter full-screen mode in an application.
The thumbnails below link to full-size desktop screenshots on my deviantArt site. Hope you enjoy the surprise!
LICENSE
c 2007, Leland Scott, Musings from Mars
Use of this software is free of charge, but redestribution or modification is prohibited without the author's permission. All rights reserved. The author assumes no responsibility for any damage to your system that may result from the use of this software. Please be sure to read all instructions and information in order to make the most of CrystalClear Interface.
Version History
| 0.5 | 2/13/07 | First release of Crystal Clear. This version is what became known later as Crystal Clear Dark. The development of Crystal Clear was described in this introductory article on Musings from Mars. A few days earlier, this preview article appeared, with many application screenshots. |
| 0.6 | 3/2/07 | Introduced a variant called Crystal Clear Lite, which utilizes translucent white menus instead of translucent black ones. The variant also incorporated numerous other improvements and bug fixes to the original release. |
| 1.0 | 3/26/07 | Crystal Clear 1.0 provided a complete package, with both "Lite" and "Dark" variants included. This release also included an initial set of Crystal icons based on the Albook icon set. |
| 1.1 | 4/19/07 | Crystal Clear 1.1 has several major new interface elements as well as a newly designed, full set of Crystal Albook icons (version 1.0). |
| 1.2 | 6/6/07 | Crystal Clear 1.2 introduces a new approach to the system menubar that attempts to solve the problem created by backgrounds in menu extras there. There are many other new interface elements as well as some fixes to earlier ones. This version does not include the Crystal Albook icons, but they can be downloaded separately. See this article for the latest information on Crystal Clear releases. |
| 1.5 | 9/7/07 | Crystal Clear 1.5 was developed to complement CrystalClear Interface, then in development. |
| 1.8 | 12/1/07 | CrystalClear Interface was numbered early in development, since it was conceived as an extension of the ShapeShifter theme, CrystalClear. However, things turned out a bit differently. The article on Musings from Mars explains. |
| 1.8.1 | 12/22/07 | This version adds an option to disable the "window shine", as well as makes a number of improvements to stability and performance, particularly on Mac OS X 10.5 ("Leopard"). |
| 1.8.12 | 01/02/08 | Additional round of performance optimizations and bug fixes. Targets include iPhoto, iChat, PhotoBooth, iWeb, and, on Leopard, QuickLook. CrystalBar's launch mechanism still needs work, but it should no longer drop down the screen when you enter full-screen mode in an application. |
System Preferences (Desktop Pictures) on Leopard with CrystalClear Interface 1.8 and the Incarnation desktop picture (c/o artofgregmartin.com). Click for larger version.
Time Machine on Leopard with CrystalClear Interface 1.8 and the default Mac OS X 10.5 desktop picture (Warp). Click for larger version.
Automator on Leopard with CrystalClear Interface 1.8 and the Celestia III desktop picture (c/o artofgregmartin.com). Click for larger version.
PathFinder (Spotlight Viewer) on Leopard with CrystalClear Interface 1.8 and the Orion Nebula desktop picture (c/o spacewallpapers.net). Click for larger version.
Update On That Crystal I’ve Been Growing
Streaming QuickTime (2 Minutes). Audio On | Off

I can’t believe it’s been 2 months since I published the preview article for Crystal Clear 1.5! What was going to be a 2-3 week project after that turned into a monster of a project that’s taken me on several long, exciting, rewarding, but often tortured journeys into the bowels of Mac OS X and Cocoa, the primary framework for building Mac OS X software in the programming language Objective-C. But the story of those journeys–if I ever have time to write them down–would be an article unto itself.
Today, I just want to briefly report what’s going on with Crystal Clear. Besides the features noted in August, the screen movie above shows a variety of noteworthy advances, some obvious and some not so obvious. Here are the ones I want to point out in particular:
- Crystal Clear 1.whatever (I’m thinking of jumping straight ahead to 1.8…) will run as a standalone application without ShapeShifter. As shown in the movie, it can be used with plain old Aqua, but you can just as easily run it with many ShapeShifter themes.
- This version of Crystal Clear replaces SetAlphaValue, so it manages not only window transparency settings, but also transparency for views and background colors for views and windows. In addition, it includes a set of window “frames” that reproduce (more or less) the look of windows in the ShapeShifter version of Crystal Clear.
- The Preferences pane has been redesigned with an eye toward expanding the number of settings users can control. Initially, it adds two controls: One for customizing the background color of application windows and another for customizing the background color of “column view” views. (In the movie, the Calendars view list is such a view.)
- Panels (such as the color panel shown in the movie) are designed with the “HUD” look that’s become popular in Apple’s software lately. Sheets are designed in a light blue. The structure is in place to allow users to customize the color settings for both of these kinds of window objects.
- Most windows in Crystal Clear are rendered with a “shine” overlay that looks really cool. The shine resizes itself with its window and disposes of itself when the window is closed. Again, I plan eventually to let users turn the shine on and off, and also to select from a few other shine “styles.”
- This version has a rudimentary routine that changes the background text color from black to white in “panel” windows that are by default set in a dark translucent color. Customizing the text color contrast in this way is key to making windows of variable color and transparency readable. I plan to work on evolving another function that would serve more generic situations with other kinds of windows.
- New in beta release: Experimental option to enable frivolous window animations. Option turned off by default.
- New in beta release: Experimental implementation of Single Application Mode (SAM). Option turned off by default.
- New in beta release: CrystalClear icon now appears in the application’s main menu, in addition to its application submenu. This should make finding the preference pane easier.
That’s it for now! I hope to have a version ready for early beta testing in a week or so. If you’re interested in helping me get this version of Crystal Clear ready to go, send me an email at llscotts AT fastmail.fm, and I’ll send you a copy of the beta when it’s ready.
Oh, and just to be clear, I do plan to release an update of the ShapeShifter version as well, and you’ll be able to use both versions together. One advantage of adding the ShapeShifter version is that the Finder, which has a good deal of Cocoa built in, retains its transparent toolbars, and the system menubar stays crystalized, too. (I haven’t figured out how to modify either of those to my satisfaction… it’s not just a simple matter of doing an “Uno”, since Uno doesn’t touch as many bits and pieces as Crystal Clear, and it doesn’t account for problems of transparency.)
Note: Here are some more previews of the new Crystal Clear:

















































































