Millennium Falcon cockpit interior jumping to Hyperspace

Sensors show a Lion-​sized asteroid off the starboard docking rings, Wookie. Time to abandon ship!” — Me, pretending to be all Star Wars-​ey

Well, Mac OS X Lion has been out for close to a month now and for the most part it’s been a smooth ride (unless you left Hyperspaces installed — more about that below).

As I pointed out in my previous post, Hyperspaces didn’t survive the transition to Lion — I’m going answer some of the common questions people have been asking:

Why? Technically, why?

By far, the most common question I’ve been asked is “why exactly isn’t Hyperspaces possible under Lion?”. For the most part it’s genuine technical curiosity, so here goes. Note: I’ll use the term “Spaces” throughout the rest of this post to refer to a virtual desktop — they’ve been renamed to “Desktops” under Lion.

Under Mac OS X Leopard and Snow Leopard, there was a simple set of AppleScript classes and commands that let you perform common tasks with Spaces such as:

  • Getting and setting the number of rows and columns of Spaces;
  • Enabling and disabling Spaces;

Under Lion, these AppleScript classes and commands no longer exist. According to Apple’s engineers, these commands were never formally documented and were therefore not supposed to be used as public API. Hyperspaces could get by without being able to turn Mission Control on and off (it’s not actually possible to do this under Lion), but without knowing how many Spaces are actually available there’s no way to know which Spaces can be switched to. Or how many Spaces to render in the Space Switcher. Or which Space settings I should keep in memory. It’s a massive hole in the app — without listing any other reasons, this one stops Hyperspaces in it’s tracks.

Reason #2Spaces no longer report sequential identifiers. Under Mac OS X Leopard and Snow Leopard, each Space had an identifying number — these were between 1 and 16 (the maximum allowable number of Spaces). They were assigned sequentially, so that you knew without any doubt that Space 1 came before Space 2. Lion does not assign Space identifiers sequentially — they are also no longer numbers between 1 and 16. The numbers come through looking like 12360, 2092 and 11974. Perhaps there is some method that Apple uses internally to garner meaning from these identifiers, but my guess is that they’ve architected most of the system to not care anymore. Without these IDs making any sense, it becomes impossible to work out directionality between each Space. You can’t switch left or right if you’ve got no idea which Space sits to either side. I have seen a proof-​of-​concept workaround to this problem, but on it’s own it is not enough.

The more astute or technically minded readers may remember the bad old days of private SPIs, and the ever-​infamous CGSPrivate header that used to be used by every virtual desktop app on the Mac. These SPIs would not really bring you any closer to a solution, and introduce potential instability and undefined behaviour. Hyperspaces had enough troublesome ties to system-​level activities.

So what happens now?

We’re powering down the engine and putting Hyperspaces onto life support. There will be no further releases or updates, but I will continue to offer support for the foreseeable future. If you’re staying on Snow Leopard, you can still purchase a copy from our web store.

I won’t be releasing the code as open source at this point. Perhaps at some point in the future I’ll clean things up a little and put it out there.

What about that really annoying bug?

There are two bugs that I know of with Hyperspaces 1.1.1:

1. Hyperspaces goes into an auto-​focus frenzy when launched under Lion

You should uninstall Hyperspaces before you update. I can’t release an update to address this problem mainly because it would not make it through the App Store review process due to the following policy:

2.25 Apps that do not run on the currently shipping OS will be rejected

Just remove Hyperspaces from your startup items before you upgrade to Lion. Yes, I do know there are only three of you that haven’t done that yet.

2. Hyperspaces loses all settings on reboot

There is one issue that has been plaguing users with the Hyperspaces 1.1 update: on some systems, Hyperspaces would appear to lose all settings. The good news is that there is a workaround:

  1. Download this AppleScript, and expand it if necessary;
  2. Move the file somewhere like your Documents folder, or your Applications folder;
  3. Open up “System Preferences.app → Account → Login Items”;
  4. Click the “+” button, then navigate to where you placed the “Launch Hyperspaces After 15 Second Delay” script, and select it;
  5. Remove “Hyperspaces.app” from the Login Items list if it is still in there (this is critical).

The next time you boot your computer, Hyperspaces will wait a full 15 seconds before starting after you login. This seems to make things work as expected. This bug only seems to affect Snow Leopard users who have restored their current system from a Time Machine or backup.

Farewell, Gentle App

Hyperspaces was downloaded over 150,000 times over the last couple of years — it didn’t sell anywhere near that many copies, but it should stand as a shining example of following your dreams. Hyperspaces started as a quick weekend project, and snowballed into something that let me quit my day job and do what I love for a living.

You can rest now, little app — you’ve done well.

And with that, fin.


Want to talk about this post?