Resource Posts In Category
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.
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!
Version as tested: 1.0.
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.
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 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.
1.0 6/22/12. Initial release.
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.
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.)
Crystal NIBs for SecurityAgent (Download file is 1.0MB)
Some variation of these text tools have been included in CrystalClear Interface, as well as Crystal Black, since those applications were first released. However, the tools have nothing to do with the theming of buttons and windows, or with the general appearance of Mac OS X. I added them because they address a real need of mine, which no other software could do.
As a writer, I need ready access to a range of text functions, and I need them in whatever application in which I happen to be writing. In most of the rich text editors I use, those functions are available somewhere in the app’s menus, but typically they're in different places within each app. Some apps don’t include one or two key functions at all.
Mac OS X has a rich text framework that provides just the set of editing tools I require, and it would be extremely handy to be able to access those tools consistently across apps. This is precisely what the MarsThemes Text Tools do: Grant easy access to the key Cocoa text tools that writers and editors need but can’t find.
So, what text tools am I talking about? Here’s a list of the key tools:
- Tables. I often find formatting content into rows and columns an extremely useful way of organizing information, but few RTF applications seem to agree with me. Mac OS X includes a quite functional table-editing tool that I can quickly use when needed without opening a professional word processor such as Pages, or reaching for a spreadsheet app like Numbers.
- Lists. From time immemorial, both humans and Martians have found organizing information as lists to be an essential tool for viewing and encapsulating that information. Again, finding the built-in list feature can be a problem, especially in apps that don’t let you access Mac OS X’s RTF “Ruler” tool (more on that momentarily).
- Links. In the internet age, writers often need to add hyperlinks to their documents, yet finding the built-in hyperlinking tool can be a challenge. The tool either isn’t there, it’s buried in a set of menus, or it’s somewhere that doesn’t make sense.
- The Ruler. If you’ve ever used a Mac OS X RTF editor such as TextEdit or Bean, or some kind of information management application like DevonThink Pro, EagleFiler, or Journler, you’re probably familiar with The Ruler (though didn’t know it had a name). The Ruler is the strip of tools that appears above whatever text document you’re working on. It contains a menu of handy (and customizable) text styles, alignment tools, a customizable menu for setting line and paragraph spacing, a menu for setting and customizing lists, and a group of tools for setting margins, tabs, and indentation. Sometimes The Ruler appears automatically, but other times you must hunt for access to it. Unfortunately, many applications feel the need to replicate these functions in some quirky unique way (such apps include Evernote and MacJournal). In my ideal editing environment, I want to summon The Ruler when needed, and dismiss it when it’s not.
- Strikethrough. Oddly, the only straightforward way of striking through text (a very useful thing to do!) is to open the Mac OS X Font panel, which has a menu that includes strikethrough and underlining functions.
- Copy and Paste text styles. Yes, there are standard keyboard shortcuts for these functions, but I find they don’t work in all applications, and I often forget what they are. Yet I use the functions frequently.
One of my favorite uses of the Text Tools is in applications or text fields that support rich text but provide no access to RTF editing tools. An obvious example of this is Apple’s Stickies application, which apparently assumes that users only want to type paragraphs with no formatting. Using the Text Tools, you can add The Ruler, a table, and all the rest.
Other note-taking apps I use heavily likewise provide no way to toggle The Ruler or add a table are Edgies and Sticky Notes. Both have some of the Text Tools accessible in their menus, but using their menus may be awkward. Since the MarsThemes Tools provide a contextual menu, the tools are always at your fingertips.
Other examples I like to point out are the Comments field in Xcode’s snapshots window and in the application Packages, the Notes field in Interface Builder, any text view you’re formatting in Interface Builder’s edit window, the image description field in Little Snapper, and various others. (For my developer colleagues, I should point out that using the tools in Interface Builder is especially nice, because it lets you enter attributed text without having to format it in an external RTF editor and then copying/pasting it into IB. Note also that I still use Xcode 3.2, so IB is a separate application.)
Then there are applications like Yojimbo, which should provide a way to format text, but don't. Here, the Text Tools let you add The Ruler, a table, etc.
As mentioned, the Text Tools are activated as a contextual menu — using either a right-click or a Ctrl-click — in the field or document you want to edit. The Tools also provide a keyboard shortcut — ^⌥ Y — to pop up the menu. The shortcut is particularly handy in fields (such as those in Interface Builder) that usurp the field’s normal contextual menu.
The MarsThemes Text Tools have only two user options, which you can access from the “Manage tools” item in the Text Tools menu, or from the “Text Tools” item in the application’s menu. The two options are:
- Show more text tools
- Show Manage Tools menu at top.
Selecting the first option adds the following tools to the menu:
- Styles (used for adding a custom style to your personal list)
- A “More Tools” menu, which includes the Capitalize functions, which normally appear in a submenu, as well as access to two handy formatting tools to control inter-letter spacing and baseline setting.
- Access to the Substitutions setting panel.
- A link to open the very handy Special Characters panel.
By default, the Manage Tools menu appears at the bottom of the Text Tools menu, but you can change that.
The Manage Tools menu also includes functions for checking updates, uninstalling, and getting help.
Finally, the Text Tools application is programmed so that it only loads into software that it detects has some kind of editing functionality. There’s no use loading the Text Tools into System Preferences or the Finder, for example. This keeps its overall footprint on your Mac as small as possible.
Text Tools is freeware, so give it a try! Hope you enjoy it as much as I do.
The Text Tools run as a plugin to the Mars Theme Loader (MTL) framework. If you do not have MTL installed, the Text Tools installer will do that for you. If you uninstall the Text Tools, the uninstaller will disable the MTL agent at that time.
There are very few components to the Mars Text Tools:
- The plugin (TTFilter.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/TextTools
To uninstall the Text Tools, open an application where they're active, open the Text Tools menu (easiest way is from the Application's main menu) and select "Uninstall Text Tools." If you have trouble finding an application that's running the Tools, open the folder referenced above and run the UninstallTextTools application.
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.
In the past few years, Adobe Flash has become more than an annoyance that some of us have kept in check by using "block Flash" plugins for our web browsers. More and more, entire web sites are being built with Flash, and they have no HTML alternative at all! This goes way beyond annoying, into the realm of crippling.
I had noticed the trend building for quite awhile, but it only really hit home when I realized that Google, of all companies, had redesigned its formerly accessible Analytics site to rely heavily on Flash for displaying content. This wouldn't be absolutely horrible except for the fact that Google provides no HTML alternative. I tried to needle the company through its Analytics forums, but only received assurance that yes, indeed, one must have the Flash plugin running to view the site.
Keep in mind that content like that on Google Analytics is not mere marketing information, like the sales pitch on the Analytics home page.
Those of us who are disturbed by the trend need to be a bit more vocal about our opinion. Hence, I'm starting a "Just Say No To Flash!" campaign, with its own web page, graphics for a banner, and the CSS and HTML code to deploy it on your own web pages.
I've mentioned this to some of my family and friends, and they often come back with: "So, Why should I say no to Flash?" I admit that as a power browser and a programmer geek type who, shall we say, makes more efficient use of the web, I'm more keenly aware of the ways that Flash is chipping away at the foundation of web content.
In the beginning, it seemed harmless: Flash was an alternative to animated GIFs, and an easy way to embed movies on web pages. But then advertisers wrapped their meaty mitts around it, and that's when Flash started to be annoying. However, one could block Flash in the browser, as part of a strategy of shutting out obnoxious advertising.
But publishing content via Flash is just wrong, for a number of reasons.
➠It's A Proprietary Technology
I don't think Flash is what Tim Berners-Lee had in mind when he created the first web browser and the markup language called HTML to run the web. Then, as now, the web is meant to be open to all. It is meant to be built using open standards that belong to no individual or company. The main open formats that should be used to build websites are simply:
- Images (open formats)
Open standards for video, audio, vector graphics, virtual 3D graphics, animated graphics, and others are also available to be thrown into the mix.
Adobe PDF is also a common format for distributing final-form documents, and PDF is based on open specifications for both PDF and PostScript that Adobe published back in the 1990s.
➠ It Isn't Backwards-Compatible
If you install a Flash plugin today, there's no guarantee you'll be able to view Flash content created 2 months from now.
If you have a Flash plugin from 5 years ago, it's probably useless today.
Flash is designed with built-in obsolescence, forcing users to repeatedly visit the Adobe website to get an upgrade. This is not only a bother, it forces one company's advertising into the world's face every time it releases a software update.
➠It Can't Be Customized
From time immemorial (well, at least since the beginning of web time), a web page's text could be customized to suit the user's taste and needs. All web browsers provide the tools to increase/decrease the font size, as well as to specify custom fonts for different page elements (headers, paragraphs, etc).
Flash throws all of that out the window with a terse shrug, "Let 'Em Eat Helvetica 10pt."
➠Its Content Is Inaccessible
No, you can't drag and drop images or text from Flash content. This most basic method of interacting with a web page—dragging images off the page, or selecting sections of the page to drag onto an email or text processor—is a non-starter if it's part of a Flash file.
Copy and paste? If the Flash programmer has been thoughtful, you should be able to copy and paste text. But don't even try to copy any other page element.
And that includes copying a link's URL. Right-click (Ctrl-click) anywhere in a block of Flash content, and you get the standard Flash popup menu. Not very helpful.
➠You Can't Save The Page
Another common task many web users take for granted is the ability to save a web page as text, as HTML, or as a format like rich-text format. With Flash, this is impossible.
You may be able to save the file as a web archive, but there's no open standard for a "web archive," and getting at the content inside one is almost as hard as getting inside a Flash movie.
➠Flash Consumes More Of Your Computer
When I'm running Flash — as I am now while shopping at Adobe — my Activity Monitor shows it's consuming a continuous 5-percent of my processing power, and about 130 MB of my RAM.
For What? There's nothing a Flash movie can deliver that can't be delivered using open formats. its heavy resource drain is one reason I keep Flash turned off when browsing the web.
➠You Can't View Flash on an iPhone or iPad
Apple has very good reasons for not supporting Flash on its tiny devices. As the previous point makes clear, Flash isn't a delicate, lightweight technology that your processor and RAM won't notice.
When trying to build hardware and software for small devices that work well and don't lead to memory problems or application crashes, why wouldn't you ditch unnecessary technologies like Flash?
Obviously, Steve Jobs stepped into a hornets nest here, but I think the hornets were wrong.
Make Your Site Say No To Flash
It's easy! Just follow these two steps:
1. Download the Image(s)
You can copy and save one of the following images, or download the Photoshop source and make your own.
2. Add the CSS
Here are two CSS styles for positioning the Just Say No To Flash banner on your web page. One positions the banner at the top-right, and the other at the bottom-right. To use the styles, just copy and paste the following code into the
<HEAD> portion of your HTML.
background: url(images/noFlashTR.png) top right no-repeat;
background: url(images/noFlashTR.png) bottom right no-repeat;
3. Add the HTML
Add the following to the beginning of your HTML, just below the
<BODY> tag, or at the end, just before the closing
<a id="noFlash" href="http://www.musingsfrommars.org/notoflash/" title="Just Say No To Flash!"> Just Say No To Flash! </a>
Thanks to the "Too Cool for Internet Explorer" campaign run by w3junkies for the concept behind "Say No To Flash," as well as for the general outline of information that campaign provided.
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.
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 solutionFor 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 ☆
- 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.
- 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.
- 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.
- 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.
- 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.
- 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...
- 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.
- 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.
- 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.
- 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.
- 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.
- 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 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.
- How to enable white text on black buttons and other interface elements without using software or the post-Leopard system resources.
- 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.
- How to enable white text on the labels of toolbar buttons and on window titlebars, without using software or post-Leopard system resources.
- 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.
- 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.
- 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.
One of the many challenges of building a usable black theme for Mac OS X is making it work with web pages. If you use Safari, the buttons, scrollbars, and other interface widgets on web pages get their marching orders from the system's graphics files—the same ones that regular applications use.
So, if a web page has a pushbutton, the button will by default take on the style of the active theme. If you're running Crystal Black, this means that the button inherits the Crystal Black style. We like this.
Color for the button's text, on the other hand, gets its marching orders from the browser's default Cascading Style Sheet (CSS) file—which, naturally, makes the text black, and therefore unreadable on top of a black button. We don't like this.
On first glance, the solution seems to merely design a special CSS file for Crystal Black and make Safari use it. And that does work for many web sites and many buttons. However, many folks who design web pages like to fiddle with the CSS style for their pages' buttons, and such fiddling means that there's nothing "mere" about designer a Crystal Black style sheet.
Further, many Mac applications these days have views that are simply embedded web content using Apple's WebKit framework. The practical implication here is that Mac apps don't know how to read a Crystal Black CSS file, so Crystal Black must do some fiddling under the hood to avoid having unreadable buttons in such web views.
In other words, the Web Inspector tool is nothing but an intricate, sophisticated, and extremely well designed web page!
Having built a Crystal Black CSS file for web pages in general, and with my past expertise in CSS, I attacked this challenge with relish! It reminded me of the time I realized that Dashboard widgets are, at their core, nothing but little web pages (as are simply apps for the iPhone). In tackling this one, the main question was, How should the various elements look? And the hardest part was inspecting the various parts in of the Inspector in great detail to determine which CSS rules governed their default appearance and behavior.
As I discovered, the WebKit has a a sub-framework called "WebCore," which in turn has a folder of resources specifically for the Web Inspector. In the Inspector folder, among other things, is a suite of CSS files that handle different aspects of the Inspector's design and behavior. Of these, the primary one I needed to tweak was called simply "inspector.css."
Naturally, since the open-source WebKit project was initiated by Apple, and since that project zoomed ahead of all other browser engines in developing new ways to design with CSS, that's how the Web Inspector is built. This approach—using a command syntax rather than images to design a user interface—is one that Apple has been adopting for its desktop applications. In recent years, Apple has been adding new classes and methods to the AppKit that make it a trivial matter to build a window frame, a border, a toolbar, or a button using code rather than individual graphics.
While this is a logical and efficient approach, it also presents challenges for theming Mac applications, a challenge that Crystal Black is often unable or unwilling to overcome. (The story of all the challenges in building Crystal Black are described in this article.)
Not so with the Web Inspector, fortunately.
The Inspector does use a few images in its design, but most of the toolbar, separators, and section headers are built with CSS gradients. Very cool indeed!
This bit of Crystal Black will eventually be bundled with the whole theme, but for now I offer it as a free download. Admittedly, the audience for such software is small—you have to like Crystal Black, and you have to be a regular user of the Web Inspector—but it might be of interest to others who are curious about how such things are done.
One caveat in viewing the screenshots... The scrollbars that appear, as well as the HUD window style, are part of the overall Crystal Black theme and are not part of the Web Inspector theme itself.
Update 4/18/11: The full Crystal Black 1.0 theme is now available from the Crystal Black website.
Installing Crystal Black for Web Inspector
The download contains a small application that you can use to install—and to uninstall—the theme. Simply double-click and select "Install" to apply the theme. Or select "Uninstall" to restore the default CSS files and graphics.
After installing or uninstalling the theme, you'll need to quit and restart Safari for the theme to take effect.
Crystal Black for the Web Inspector (Download file is 1.0MB)
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)
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 18.104.22.168 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!
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.
- 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.
The following are still a problem, however, for one reason or another:
- VoodooPad (sometimes)
- iFreeMem 2.0
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.
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.
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.
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:
- 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.
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.
- 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.