
Customizing Workspaces for Workflows on OSX leopard
User Interface | Information Technology | Usability | User Interface Design | SwitchingOne of the things I always disliked (never blossomed into full hatred, given that I did not have a UNIX/LINUX background) was how all my processes or workflows open at once quickly became a mess. In particular, large workflows involving many windows were hard to manage.
In OSX, (thanks 'NIX-trolls, I know y'all had it first, long time ago) Exposé/Spaces offer a (less-than trouble-free) way to have multiple desktops open. What it does not offer is a way to successfully bind applications to a given space. Partly this has to do with the implementation of Spaces as a 'feature' of the Dock.
Hunh?
Thats right. Spaces does not have its own preferences PLIST. Spaces is disabled if the Dock disappears (crashes) or is killed, or while a Dock is loading.
What is more, while the Exposé/Spaces Preference Pane (in System Preferences) allows you to bind application windows to specific spaces (which I will henceforth call workspaces to differentiate between them and the OSX feature/application called Spaces), but not reliably.
Each Workspace may have its own list of application bindings...So jut because you add Firefox to Space 2 by opening System Preferences > Exposé/Spaces Preference Pane (henceforth The Preference Pane) in Space 2; it does not necessarily follow that opening The Preference Pane in workspace 1 or 4 will contain Firefox in its list of bound applications, or that the binding is for workspace 2.
While playing around with small multiples may not cause you to have Disappearing Windows in Exposé (though many have blogged about this problem) when you shift into high gear and have 6, 8, 12 or 16 workspaces, you are almost certain to encounter this problem (broken workspace/application bindings & missing windows).
Not looking so hot for Apples' Spaces right about now.
There is more news, and it doesn't get much better.
One of the principle reasons we want spaces to get around the problem of multiple windowing with complex workflows.
So how does creating 4 to 16 desktops reduce window multiplicity?
When you have 16 desktops, and they are numbered, how do you remember which one your are in, let alone the one you want to switch to?
Here are some more problems:
Navigation between Workspaces involves a lot of Knowing
When you hit the Spaces app icon (or Application shortcut key combination) you see a visual overview of your workspaces and their contents (which are the visible windows in them). In this view, the workspaces themselves are chiefly differentiated by window contents (also by location in the visible matrix). Their backgrounds are all identical.
If you don't know where an application window is, or want to move one to a different workspace, this is pretty cool.
You can relocate both applications and workspaces by click & drag. And you can zoom to selected workspaces by clicking on them.
When you hit the 'switch between Spaces' shortcut key, a sexy, dusky panel pops up. You see a matrix of workspaces, undifferentiated except by location. The workspace you are in is Highlighted in white. If you keep the command key pressed down, you can then use the arrow keys to wander through your workspaces (or to key over to a specific workspace, if you know where you are going).
This interactive panel matrix is a higher level of representational abstraction: the mechanism (combination of keystrokes) necessary to move your target workspace is conditional on the location of your current workspace. To use it, the user must know A) their current location in the matrix of workspaces, B) the location of their goal workspace, C) the relational distance between the two, and D) the keyboard mapping to effect the desired transition.
This is fine, except if you do not know what space you bound your application to. (Or the space you happened to be in when you opened an application that is not bound by default to any given workspace.) In that case you would use the Spaces.app method discussed above. (Or of the final methods, to be discussed below.)
As far as keyboard shortcuts go, if you have 10 or fewer spaces, you can set up a keyboard shortcut that moves you straight to your space ('switch directly to space').
Again, this requires that you know what windows are open (or should open by default only) in that workspace.
Finally, if an application is currently open (or if it is permanently in your dock), clicking on its icon in the Dock will bring you to the specific space in which it was opened or to which it has been bound.
All pretty good ways of navigating Spaces, but all require a significant amount of knowledge...about open windows, and status of apps as bound or not to specific workspaces, and exceptions like hidden, unbound, or 'moved' (from default workspace to some other) application windows.
The problem is that to use keyboard shortcuts, you need to know where you are going.
In order to know where you are going, you really "need" to have bound all your most-used apps to specific spaces; because remembering which random space you happened to be in when you opened an unbound app can quickly outstrip your short-term memory.
But as mentioned above binding Applications to workspaces is not reliable. Every workspace in Spaces seems to potentially have its own list of application bindings.
Binding Firefox to Space 2 through The Preference Pane opened in Space 2 will not guarantee that the Firefox binding will persist in Space 3 with The Preference Pane opened in Space 3.
So, you have to add all your application bindings not once but N times (N being the number of your workspaces).
And when you have nearly 300 applications (even with only 100 considered 'most-used apps') binding applications to workspaces is be a nightmare!
Say you were able to bind all your apps to their workspaces (with no errors!) manually using The Preference Panel for each workspace.
How would you remember which application goes with which workspace?
Spaces limits you to numbering workspaces. Spaces can not be used to reduce window when you cant find the right workspace. (Is it number 8 or 11? hmm...)
- You cannot customize workspaces with names.
- You cannot customize workspace background images.
- You cannot customize a Dock for each workspace.
- You cannot see any cues (beyond location) when switching between workspaces (either visual, like different background images, or textual, like named labels)
So what's a guy like me to do. I'm not a programmer, but neither am I afraid of a little hacking.
First things' first. I look for what apps are out there.
One good way to get started is to see how much other folks on the web have been bitching about these problems.
Bingo. Have a bead on many complaints, and some solutions.
First is Hyperspaces. Wicked app. Here are the highlights...
Hyperspaces allows you to customize workspaces with the following:
- Names!
- Background images!
- Background colors!
- Transitions between spaces!
- Labels (names) on desktop!
- Custom hotkeys!
- Memory control (throttle ram usage)!
I've got to tell you. This is the best customization app I've used to date. It is definitely worth the small shareware price for the ability to label and custom desktop
The only things it does not do very well or at all are:
- Multiple displays (quit and reload the app if you plug in an extra Display while Hyperspaces is on. Your background images and transitions should work after relaunching Hyperspaces.)
- Does not give the ability to display custom Docks customized to each workspace :(
But thats okay; because there is another app that allows you to customize a Dock for each workspace: DockSpaces
DockSpaces is very cool but also very limited. Let me explain.
It allows you to create as many docks as you like. However, it only 'ties' the first 4 to the first 4 workspaces.
In fact, if you turn DockSpaces on while you have more than 4 workspaces enabled, Watch Out!
It will overwrite your preferences for number of Columns and Rows in The Preference Pane, a snip your workspaces off after the fourth. They will disappear, along with whatever customizations you have added to them will be gone (can you see Elmer Fudd in the forest; 'Be vaaaawy vaaaawy caaoowfuww').
Also, if you have more than 4 Docks set up in DockSpaces be careful creating another one using the DockSpaces UI.
By default all newly created Docks get opened.
This means that added to the workspace you are currently in.
But overwriting your current dock changes (or more accurately removes) the preferences previously set for that workspace.
So be careful.
Now, you can get around these limitations, but only by getting messy with some PLISTs. (The detailed how-to is to be another post on my interminable to-do list...)
Suffice to say, much PLIST manhandling is required. First, in the App Support folder, select the PLIST for the first dock you have created and renamed in the DockSpaces UI. (Good idea to close DockSpaces first...)
Manually overwrite the values for 'workspaces-cols' and 'workspaces-rows' making whatever changes you want to this, now your new 'default' dock; then copy the renamed folder once for each new dock you want, renaming the copies appropriately.
You then must also edit the DockSpaces PLIST. First in the 'config' array, add as many items (I have 12) each with strings set to the same name you created for each of your copied yet renamed 'default' dock folders. Next throw the switch on the 'spaceint' variable. I tried manually adding in bindings to the additional spaces (for workspaces above #4) but didnt fly.
I would recommend adding all the appropriate application bindings to The Preference Pane of your default dock first, before copying and renaming one for each of your chosen number of workspaces. Otherwise a pile of manual editing and comparisons is in your future. Not so bad with BBEdit, but annoying and unnecessary.
Anyhow, ill go into the full description of the choice of names for each workspace, my decision rule governing which applications are bound to which spaces, and how I have created a wizard customized dock with specialized drawers containing every application I have installed in each of 16 major 50 minor and 6 primary categories.
Customization of each dock takes some time, as does that of the workspaces themselves.
But doing so can create a number of workspaces, each tailored to one genre of workflow. Its like a well-layed out woodworking shop; sufficient space around the tablesaw, bandsaw, drillpress, router table, planer, etc. all appropriate to the requirements of that particular kind of...yup. You guessed it. Task. Doing. Action.
Its my secret key. If applications are tools and the OS is my workshop, I will layout each workspace with every tool needed in the course of doing a certain type of something; and I will take great pains to lay out the workspaces in proximity to facilitate multi-step (or varied task) workflows.
My classification question is simply this: If this is a tool, what does it do? What can I use it for? If the app is 'big' enough that it has many multiple uses, I tag the most usuals, but use the most usual.
Recent blog posts
- how did I hide digital editions and Microsoft User Data
- retaining folder names as 'tags' for duplicate documents
- Note to self: Neatreceipts method
- 1239482 seconds since last panic
- Tag Folders (or maybe just smart folders) broken after 10.6.1 upgrade
- Hard to clean spots, No. 8: My Work folder
- Updating to DockSpaces 2.45 breaks FlowSpaces PLIST hacks
- Hard to clean spots, No. 7: My Databases folder
- Hard to clean spots, No. 6: My Documents folder
- Whats with these Stacks 'Drawers' anyhow?
bookmark
tuals 0.1 on del.icio.us