Not logged in, Join Here! or Log In Below:  
News Articles Search    

Submitted by James Stewart, posted on October 27, 2004

Image Description, by James Stewart

These are some screenshots of TopDesk, a window navigation utility Iíve been working on thatís similar to the Mac OS X Exposť feature.

This is my second IOTD, the first being VPL, a little visual programming language I created way, way back in the day at university. Iíve put the trials and tribulations of university life behind me now, and started a company called Otaku Software. "Otaku" is a derogatory Japanese term for geek, and TopDesk is our first product.

Before I start getting into the technical details, I better say a couple of quick words before the Mac fans start beating me around the head with large, blunt, yet impeccably designed instruments. The first time I saw OS X Panther, my jaw dropped. The fast user switching effect was cool, but Exposť just blew me away. I literally spent hours just switching between applications, watching the windows zoom back and forth, back and forth (Iím easily amused). After seeing Exposť, I never wanted to use CTRL-TAB again, but I use a Windows machine for my day to day work, and since that isnít going to change anytime soon, I was stuck with it. I looked around for a Windows equivalent of Exposť and I found a Microsoft PowerToy that displayed window images when CTRL-TAB was pressed, but it didnít have the "wow" factor I was looking for. I wanted something with the same hardware-accelerated eye candy the Mac-heads had, so I decided to write TopDesk.

The interesting (and not so interesting) technical details are:

- It's written in C++, uses straight Win32 API, OpenGL, and is around 30k lines of code. Windows XP only at the moment.

- When scaled, windows are organized in a rectangular grid layout. Early versions of TopDesk had a more Exposť-like layout for scaled windows, but whenever we showed it to (semi-computer literate) users, they'd just stare blankly at the screen while shouting "make square! make square!" - hence the more "orderly" layout. I'm more a fan of the Exposť layout myself, but as they say, "the user is always right" ;) .

- As I mentioned above, OpenGL is used to do the scaling effect. Window images are grabbed using PrintWindow () and downloaded to the video card as compressed OpenGL textures. To pull off the illusion, we make our OpenGL the topmost window, set up an orthogonal projection, and draw our windows as textured quads at their current screen position. At this point, the screen effectively looks like it did before the effect started, except now everything is drawn in OpenGL. Once the initial setup is over, we scale and move the textured quads to simulate the windows moving and scaling to their grid layout positions.

- PrintWindow () is slooooow. How slow? My 2.8 GHz P4 takes around 100-200ms to grab a 32-bit 1280x1024 window image. That doesnít seem too bad until you realise that you only need to have a few windows open to introduce a 1 second delay before the windows scale. As you can imagine, this pretty much destroys the illusion. We tried other methods to grab the window image, like the excellent Windows 2000 compatible solution by Feng Yuan, but got similar results speed-wise. Then we realized that while lots of PrintWindow () calls are costly, the cost of calling PrintWindow () on one window is negligible. This led to the current solution: add a few global window hooks in so that we only grab windows when certain attributes (size, focus, etc...) change.

- Using a couple of tricks, we also managed to make TopDesk work with minimized windows. PrintWindow () doesn't work on minimized windows, so we had to come up with another way to implement them. Our solution was to install a hook to monitor when a window is about to minimize, then when the minimize event occurs, cancel it, grab the window image, then minimize the window ourselves.

- This isn't really a technical detail (more of a rant), but we found that a lot of applications do very strange things with their windows. Some (Excel, PowerPoint, I'm looking at you), even go as far as to create dummy windows that show up in the taskbar in an effort to trick people into thinking they're not MDI applications. It was a bit of an eye opener to discover just what some "commercial" applications were doing under the hood.

That about wraps up the details. If you'd like to know more about how TopDesk works, or discuss your own adventures with PrintWindow (), you can contact me.

If you'd like to try out TopDesk, thereís a beta version of the trial available at We're conducting an open beta of the trial version at the moment, so any feedback would be greatly appreciated.

Image of the Day Gallery


Message Center / Reader Comments: ( To Participate in the Discussion, Join the Community )
Archive Notice: This thread is old and no longer active. It is here for reference purposes. This thread was created on an older version of the flipcode forums, before the site closed in 2005. Please keep that in mind as you view this thread, as many of the topics and opinions may be outdated.

October 27, 2004, 07:46 AM

OS eyecandy is NOT the way to go. It's useless, takes way too much CPU/GPU time and really again it's useless. I don't want my OS requirements be superhigh just because some nice "feature". What was it again with Longhorn, nearly double specs with the eyecandy?

Sadly this is going to be the future. Virgin users being introdused these nice looking (pointless) OS's and starts avoiding these other products that dont have nice eyecandy.

Eyecandy is pointless in OS's, the system should only do what I want and when I want. I dont want my CPU/GPU cores melting just because I ran too much desktop :)

But the product looks good, keep it up ;)


October 27, 2004, 07:49 AM

I personally do like it if the OS I'm working with and have to look at for hours every day actually looks good...


October 27, 2004, 08:31 AM

I agree with Masfonos, OS eye candy is in general a bad thing, but what is the first thing someone says when they see it 'oh cool', hence why we have it. Only the minority of nerds and poeple who actually do work (myself included) on our computers hate eye candy, a billion icons, and bloat. Thankfully MS included the Win2000 override settings in XP to remove their dumb menu, and you can get it pretty much back to basics if you want.

As for your program specifically I personally think its useless, but I know there is a big audience out there who will love it :) From a technical standpoint I'm impressed as I've done similiar projects in the past, and there are a lot of details to work around. Also thats a cool idea for a company name.


October 27, 2004, 08:38 AM

Why is this labeled as being purely eye candy? I can see myself enjoying using a tool like that in my daily work, and it would have nothing to do with cuteness.


October 27, 2004, 09:09 AM

the eye-candy blueish skin of xp doesn't have to do anything with the start-menu layout. the new layout wich removes all icons from the desktop (except dump bin folder), and moves them into the startmenu, wich got a major redesign is a very good thing, indepdendent wether you want a 2000style skin, or an xp-style skin.

it's a refactured structure, more optimal to both casual users and high-end users.

the only ones that completely back-tweak to 2000 style startmenu and such are the ones that aren't clever enough to learn new things, and check if there are good things with it. there are. (hint, you can completely customize the startmenu with all the stuff.. i have all the apps i have only one click away, namely the [win] key.. and then, i can choose from big icons (easy to target with mouse), or with keyboard by name.. as well as directly accessing the workplace, my files, my images, music (yeah, there, some customisations for "my projects" would be cool), and a lot of other items).

simply bashing new features as useless is dump. this one is not only eye-candy presented here.. eyecandy can help to visualise bether, and make working with a graphical interface much more efficient, and simple.


October 27, 2004, 11:12 AM

The power with exposť imo is that you dont have to forexample switch to a underlying application to see if its done with it tasks that you batched up.

As I read this wont be possible with your tool, since it will only care about windows that have changed their physical status?

Result ? Making this ONLY eyecandy, afaik. And prolly not very speedy anyways, if it is, it's useless, it's Windows fault so don't take it as criticism on your application.

I'll stay with ordinary explorer.exe and use exposť on my mac instead :-P


October 27, 2004, 01:47 PM

Hi Guys,

Thanks for the feedback.

Masfonos, ZEN, and stefan1, I probably didn't make this clear enough, but the point isn't nice eye candy, its usability. The power of the application is the ability to switch between windows easily, not its ability to look nice. Yes, my write up and the the trial version do promote the eye candy factor, but anyone that has used OS X will appreciate the usability of such a product.

The trial version you can download from the website is feature-limited, which is made quite clear on the download page ( The purpose of the trial version is solely to show off the effect. The retail version allows you to switch off animation altogether and bind the window tiling to the hotkey of your choice, allowing you to switch between windows efficiently.

I'll take the point on board that the window animation is quite slow, however, as is made clear on the webpage, it's a trial version, and some features, such as the ability to configure the animation speed, are not available. The point of the trial version is to demonstrate the product, nothing else, and you can find out the actual features of the retail product by visiting

Kurt Miller

October 27, 2004, 02:35 PM

Hey, that's pretty cool. Like someone else mentioned, my main gripe is just the animation speed-- I want the windows to snap forward quickly. But if it'll eventually be configurable like you mentioned, that's cool. Another awesome thing would be if I could bind the middle mouse button to tile the windows since F9 is out of the way.

Good luck with it, it seems useful to me.


October 27, 2004, 03:34 PM

Most of the comments and emails we've receive have been about the animation speed, so we've decided to change the animation speed in the trial from 1200ms to 400ms. I guess I need to be told twice that the user is always right :)

If people are still interested, they can download the new version from

As I've mentioned before, the retail version lets you speed up the animation even more (or disable it completely) and configure whatever hotkeys you want. In the retail version, my personal favourite configuration is "tile all windows" set to CTRL+middle mouse button, "tile current application windows" set to SHIFT+middle mouse button, "hide all windows" set to CTRL+TAB, and tiling animation turned off. Switching windows using this configuration is very very cool, so kudos to uber-tester Shaun for coming up with the config-to-rule-them-all :)


October 27, 2004, 04:33 PM

A few bugs in it. It causes a pause when minimising windows, but you've explained why...however, the irritation of this far outways the usefulness of this tool.
Also, it seems freak out at 2 monitors, especially when one's been rotated 90 degrees with nvrotate.
It also made opengl applications that have worked for years start randomly crashing.
All in all, it's just not worth the bother. Windows is flaky enough as it is without adding this wildcard into the mix of things to go wrong.

Brandon Bloom

October 27, 2004, 04:45 PM

Also see:


October 27, 2004, 05:12 PM

As we state on the website, TopDesk is currently in beta, so it may well have some bugs. If you find any, let us know (

The purpose of TopDesk is to navigate the the window you want as fast as possible. If you need to do this, then it's a useful tool. The trial version demonstrates the main feature of TopDesk, but as we state on the website (, it doesn't include most of the features of the retail version. It doesn't work with certain applications (fullscreen OpenGL and DirectX), and we don't make any effort to hide that (see

We explicitly state that TopDesk does not currently support multiple monitors (see, and as we state in the compatibility list (see, TopDesk doesn't play nice with OpenGL and DirectX applications. It also has fairly hefty system requirements (, so it might run slowly on systems that don't meet the minimum requirements.

The bottom line is that it will either work with the applications and graphics setup you use, or it won't. If it doesn't work, let us know ( We make it clear on the support page what we've found will and will not work (, and we've provided a (beta) trial version for you to test this yourself.

If it doesn't meet your requirements, let us know, and we'll try include your requests in a future version.


October 28, 2004, 07:17 AM

Good idea.. in theory..

I can't get your program to run correctly. When it starts i can browse the context-menu, but the real thing doesn't work, plus it kinda screws my system. Everything starts running awkward.

Btw: That winplosion-thingy works, but screws my system up too.. for example outlook won't get my mails and matlab doesn't work. Is it soo hard to get this to run? If i think of how this is implemented i can't really think of any reasons why this can screw up everything.

Keep up the work.. when one of the both runs perfect (apple-like) on my system i would buy it (for 10$ or something).

Edit: i just restarted the system.. winplosion works perfectly now.. was probably your program that made me remember it after i uninstalled it. It really needs some work/debugging.


October 28, 2004, 07:28 AM

That's cool, but winplosion seems to be better... but that's true, you're still in beta stage!

A big problem: the default keyboard shortcuts! These shortcuts are used in most applications. I'm in Visual Studio, press F9 and oops! got a breakpoint and the windows are scaled down... Not really useful.

And I think that a lot of people here don't make a difference between eye candy and new feature... This app has both, it's not just eye candy!


Victor Widell

October 28, 2004, 07:44 AM

Why won't it work with win2k? I can see no obvious XP-only features...

(Yes I use win2k, and it didn't even start.)


October 28, 2004, 08:09 AM

> the only ones that completely back-tweak to 2000 style startmenu and such are the ones that aren't clever enough to learn new things

This is just plain bullshit. People's opinions differ, no need to call them dumb (as in: not clever) just because they don't agree with you.

I myself dislike the XP style start menu, and yes I too have configured stuff that makes programs easily accessible. FYI the new start menu is not the only way, there is also something called the quicklaunch bar (yes there is). I put all my most used apps, games and folder shortcuts there. This doens't mean that the bar is so long there's no room left for normal taskbar buttons, I've got 7 most-used apps shown on quicklaunch bar, and the rest is accessible through the >> button. Nicely ordered and a single to few clicks away.


October 28, 2004, 09:10 AM

i' not saying people are dump if they use the old style. but most i've seen just installed xp, cried once, and set everything back to old style "uh oh that new style is shit".

and _THAT_ is a simply dump movement. if they don't even try the new stuff, how can they judge? and how can they ever advance if they set back their stuff all the time. it's the same as the people today crying that vc6 doesn't get full support anymore, and how ugly all the .net ide's are.

the quicklaunch bar is much much smaller, and the >> key is about the smallest, and both are not accessible trough the keyboard, too. much more difficult to target with mouse, and not directly targetable with keyboard.

the startmenu solves both such problems. on highres systems quickly clicking a very small thing (like >>) is quite difficult. on lowres systems having the quicklaunch bar taking away the taskbar with the windows on can be quite disturbing.

with one click onto [start], i've solved all those issues most people are so trained in, they don't even realise it could be lifed easier without :D


October 28, 2004, 12:35 PM

Hi Guys,

Brandon: I was aware of WinPLOSION before I started TopDesk. I'll leave it up to you guys to decide which one you like best :)

Yonaz: We're currently in beta, so the application doesn't represent the quality of the final version. Can you please submit a bug report that describes your problem? Could you include your system specs and a list of the applications you are running along-side TopDesk? I'd be interested to find out what you mean by "outlook won't get my mails and matlab doesn't work". There shouldn't be anything TopDesk does that would stop you from receiving emails, but if there is, I'd like to find out.

Faelenor: As we state on the website, the version of TopDesk available for download is a trial version, and the trial version has hardcoded hotkeys. The retail version allows you to change the hotkeys. We're coders ourselves, so we're aware that F9 is used to set breakpoints in Visual Studio, and on my own copy of TopDesk (retail), I've assigned the hotkeys to other keys. The trial version is only meant to show people that the software does what we're claiming it does. For some people (anybody who doesn't use Visual Studio, and who doesn't care about minmized windows not being shown), the trial version will be "good enough", and they won't need to buy the retail version. For others, the trial version won't meet their needs (most developers would want to change the F9 key to something else for instance), so if they like the functionality of TopDesk and want to use it on a daily basis, they'd need to buy the retail version.

Victor: TopDesk uses the Windows XP-only PrintWindow () function. We're looking at using Feng Yuans excellent Windows 2000-compatible capture method ( in the next version (v1.1) of TopDesk, but v1.0 is "feature complete", so it will remain Windows XP only.

On a related note, I've noticed that a lot of the posters are asking question about being able to change the window animation speed and the hotkeys in the trial version. The capabilities of both the trial and retail versions of TopDesk are listed up on the website, and most of the questions people have are answered on the website, but given that so many people are asking these questions, I'm inclined to think that we haven't put the information in a place where people can easily find it.

Has anybody got any suggestions on how we could make the website more usable, or how we could make people more aware of the features of the trial version versus the retail version?


October 28, 2004, 03:07 PM

"Has anybody got any suggestions on how we could make the website more usable"

Well, I guess a top menu item linking to a products page (or even to topdesk's page) would be more useful...

Just my 2 cents.



October 28, 2004, 03:58 PM

Wow, winplosion is great. All works well with it enabled. It copes admirably with dual monitors, even rotated ones.
Ironic that your IOTD has done nothing other than make lots of people aware of your competition.
If you're holding all the good stuff back in the trial version, then you're making a grave mistake - full functionality with time limit would have possibly made you look slightly better in the shadow of winplosion, but your current trial version doesn't do what a trial version should demonstrate the product in all its glory, and encourage you to buy a copy.
Sorry, but you should get your act together for your next product - look at how others do their marketting, and only release a trial when your product is worth the download.


October 28, 2004, 09:44 PM

Rui: Thanks for the feedback. At the moment, the "Home" page is effectively the "Products" page, but I take you point. We'll look at putting in a "TopDesk" menu item to make navigation easier. My question was aimed more at how we could better present the information in the website however, as it looks like we're not being clear enough about the differences between the versions.

knackered: If all this IOTD has done is make people more aware of WinPLOSION, then that's great. We programmers need to stick together :) I encourage people to download both TopDesk and WinPLOSION and see which one they like best - which one pauses and locks the system up the least when it's running in systray, which one is the least bloated, which one tiles the windows in the most easy to use layout, which one has the best window selection method, and which one looks and feels the best. I'm confident that TopDesk is the better product, so I think it's a good thing that people can compare it to any competition that's out there.

WinPLOSION does work with dual monitors, while TopDesk only tiles windows on the first monitor. We're upfront about this on the webpage. It shouldn't come as a suprise that WinPLOSION has this feature and TopDesk doesn't, as WinPLOSION been around for most of of this year, while TopDesk has been in beta for 3 days :) We'll have multiple monitor support in the next version (v1.1) of TopDesk (it's under development at them moment), along with a boat load of other new features suggested by users. If you really need multiple monitor support, then your best bet at the moment is to go with WinPLOSION. Just a heads up though - from personal experience, WinPLOSION cuts off the edges of some windows on the second monitor, so I don't think they've quite got all the kinks out of it yet.

If by "get your act together" you mean that the trial version doesn't do something that we've said it does, then let me know. We've been clear about the restrictions on the trial version, but we're always open to advice about how to be even clearer. If by "get your act together" you mean release a time-limited trial instead of a crippled version, then that's a different story. The argument about time-limited vs crippled trials has been going on for as long as the software industry has been around, and each method has it's pros and cons. Based on case studies and historical evidence, we made a business decision to go with a crippled version. As it was a business decision, I don't want to waste peoples time discussing it on a development website. If you wan't to talk more about this topic, drop me an email.

Finally - "look at how others do their marketting, and only release a trial when your product is worth the download" - remember that for the first several months after WinPLOSION was released, it didn't even have a trial version ;)


October 29, 2004, 03:34 AM

> the startmenu solves both such problems. on highres systems quickly clicking a very small thing (like >>) is quite difficult

Speak for yourself ;)

This thread contains 22 messages.
Hosting by Solid Eight Studios, maker of PhotoTangler Collage Maker.