Hacking Quartz
Exposed writes "Meaty interview with Rich Wareham who is known to Linux users for his libdvdnav library which is used by Xine and other linux players. On OS X he created Desktop Manager, the GPL solution for VirtualDesktops on the Mac. Highlights are secret APIs in OS X for VirtualDesktops, who steals GPL source and why beginner programmers are at a disadvantage now."
It was a short section in the middle - to summarize:
"The level of effort is much harder now for a kid to get into programming - PC's used to ship with Basic manuals and you could write code to draw a spaceship in ten lines of code, but now you have to learn the Win32 API + Directx to get a black triangle on the screen."
"There is more worth loving than we have strength to love." - Brian Jay Stanley
I really have to say that Desktop Manager is amazing. It even has eye candy transforms between desktops (such as the sides of a cube representation of things). And to boot, Rich emailed me back some time ago when I had a question.
"Nature doesn't care how smart you are. You can still be wrong." - Richard Feynman
I've used this application and it was highly unstable, crashed constantly and was generally nothing like the virtual desktop one has gotten accustomed to on UNIX desktops.
Apple does indeed have a number of undocumented API calls in Mac OS X. Now whilst it would be nice for all of the API calls to be documented they simply aren't right now.
Quartz actually can do a whole load of other things using undocumented APIs besides this virtual desktop stuff. It's also possible to rotate windows, shrink them, and zoom them up - I have an application that does this. However those that have investigated the APIs that allow these wild things to happen have found that they're not exactly complete.
Apple has of course been challenged about these APIs, and they remain consistent: you shouldn't use these APIs. They are undocumented because they are likely to change in the future. When the API is complete they will be documented, but not before then.
It's quite possible that all of these APIs (handling virtual desktops, rotation, and scaling) will be documented for 10.4 (Tiger).
One example of this is the shadow effect that Mac OS X supports on windows and other graphics. It's been there since 10.0, but it wasn't publically documented (although some people discovered its API). Apple only used this API for shadowing windows and menus. An official API for shadows was introduced in 10.3 which is more fully featured and easier to use than the old unofficial API. Indeed there's two official APIs now for shadows - one for low level Quartz calls, and a high-level API for AppKit.
Of course what Apple really should do is make sure that these new experimental APIs simply aren't present in the shipping OS. Apple themselves don't use them, so why leave them around?
Of course this is a matter of taste, but i dont agree with you. Expose for me is pretty useless. OK, we can highlight a few applications, but that's not my problem.
My PROBLEM is that i dont want to mess around finding my apps. Expose is simply too slow to use, i cannot find everything with a single click.
On my Gnome workstation i have 11 virtual desktops, one for each server i'm maintaining, plus some for mail, comms and web. I know that by pressing CTRL + i instantly move to a desktop with all my windows positioned they way I want them. Desktop Manager does the same for me on OS X
My problem with Expose is that I'm not trying to find ONE application, but a whole bunch. I dont want to find "Word" or "Netscape". I want to find everything "Mailserver-related", "Primary Nameserver-related" etc. Simply put, i want to find more than one window/application, expose cant do that, Desktop Manager does.
Probable impossibilities are to be preferred to improbable possibilities.
Aristotele
Yeah, you're missing something, but I don't blame you, the write-up is confusing.
First, the poster mentions: on OS X he created Desktop Manager, the GPL solution for VirtualDesktops
So, you see, the poster is using "VirtualDesktops" as a name for "virtual desktop technology," not as "VirtualDesktop Lite/Pro, the product from the company CodeTek."
Second, the list at the end is suppose to be read this way:
Highlights are:
- secret APIs in OS X for [virtual desktop technology]
- who [is it that] steals GPL source [?]
- why beginner programmers are at a disadvantage now
Thus, it's just a list of interesting items from the interview; it isn't supposed to be read "blah blah blah CodeTek, who steals".
Finally, the answer to the second "highlight" -- is indeed in the article posed as:
You mentioned all of your code being released as GPL, and much of it isn't throw-away stuff. Do you ever worry or wonder about it being 'lifted' and incorporated into proprietary software?
So, yep, it's in there: "lifted" instead of "steals." Interesting answer from Rich, too.
My PROBLEM is that i dont want to mess around finding my apps. Expose is simply too slow to use, i cannot find everything with a single click.
WHAT? THIS IS EXACTLY WHAT EXPOSE DOES -- SHOW/HIDE EVERYTHING WITH ONE CLICK.
F7: Find all windows for one app.
F8: Find all non-hidden, non minimized windows.
F9: Show desktop (Pushes all windows off to the sides).
One click for each. Hold down the button and you get mouse over selection, otherwise it's mouse click selection. You can remap the keys as is convenient (I map Expose All to the middle mouse button). And what's best -- all of your windows continue to update while Exposed. Damn useful. It means if I have Safari open full screen, and want to change the mp3 playing in iTunes in full screen, i press and hold the middle mouse button, mouse over itunes, let the button go. To get back to Safari, I do the same. This to me is the best aspects of click-to-highlight, mouse-over to highlight, virtual desktops and single desktops while utilizing existing hardware to perform new functionality.
What you're talking about -- granularly assigning arbitrary windows to a particular desktop set across applications -- is something new that expose can't do, this I'll grant you. It's also a very specific use. Most people's jobs are task oriented, not server oriented. Therefore, it makes sense for the desktop to be task oriented, to work with EVERYTHING you're doing, rather than spaces of work. And it also makes sense that a third party application which offers you a solution for your needs would be valuable.
But the default? I dunno about that. Most people don't want two desktops, let alone an arbitrary number of them. I *can* say that if Apple were to offer us a fourth programmable Expose button, one that would group arbitrary application windows visibility and placement, I'd definitely toy with it. But I imagine most of what I'd use that functionality for is already covered by the dashboard.
Hey freaks: now you're ju
Whether or not that is the correct thing to do is something I'll have to be educated on.
It's not. Italic type is used to indicate emphasis, or to set off things like the titles of books or the names of ships. Sure, there's room for style, but just arbitrarily italicizing everything in parentheses is a great way to confuse and frustrate your readers.
So long as I'm being all rude and bitching at you for no good reason, next time it might be cool if you went through and got rid of the "ichatisms" like "IMHO" and "WTF." Expanding those acronyms would have made the interview a lot easier on the reader. If you look at a "real" interview (if you'll pardon the expression) you'll see that the author didn't transcribe every um and ah. It's part of the writer's job to take the interviewee's words and polish them into complete sentences so the prose doesn't get in the way of the ideas.
Okay, I'll quit being a pedantic little shit now. For the time being.
I write in my journal
Expose is somewhat slower if you don't have a Quartz Extreme Card. Classic apps tend to slow it down even further. On my faster mac, Quartz Extreme eliminates the annoying milliseconds of latency.
.info file, and one for monitoring compilations...)
It's rather useful, I think, when switching between mail, a web browser, and a few finder windows. It's less useful when one is trying to use multiple xterms, for say, writing a fink package. (one for constructing patches, one for writing the
Its a shame I can't mod the parent +1 astroturf...how about:
"Interestingly CodeTek uses this exact same bit of code for their latest VirtualDesktop program."
Seems pretty clear to me.
Perhaps you should read it again, in context this time:
"To allow DM to modify windows I had to use a little bit of code by Jon Rentzsch which allowed me to stick a bit of DM inside the Dock process (see later question). This bit of code communicates with the main app and performs much of the magic you see.
Interestingly CodeTek uses this exact same bit of code for their latest VirtualDesktop program."
The "exact same bit of code" referenced is obviously the Jon Rentzsch code, which you can find here. As you'll note from the site, it's released under a BSD license which can be incorporated into closed source projects. Since the article summary referenced "who steals GPL code" this doesn't even apply, now does it?
How's that astroturf feeling?
Want to improve your Karma? Instead of "Post Anonymously", try the "Post Humously" option.
I believe these API's in this case are secret because they are still in flux and not ready to be used. They probably still have bugs and memory leaks in them.
Jesus was a compassionate social conservative who called individuals to sin no more.
(On the subject, bolding is for keywords, headings &c. more than emphasis; whereas italicisation is only really noticeable when you're in the vicinity, bolding is visible pretty much anywhere on the page, drawing your attention to it. Avoid bold for emphasis.)
((Even more tangentially, anyone who has the capacity to use italics but still uses underlining for anything except for links will be hung, drawn and quartered when I'm ruler of the world.))
Look out!