The mouse is pretty good, but I think in many ways it has been abused as an interface device. Now, it's a slightly different story for Macs since you all went years with only one button, but for the rest of the world there were multiple buttons, and while we can all generally agree what a left click should do, the other buttons are a complete mess. Programmers basically make them do whatever the hell they want them to do, and in doing so make software designed for multiple mouse buttons dramatically harder to learn intuitively. So that's one point where the desktop experience could be improved.

As for windowing systems, I think they're all terrible. I think they were good at the point where computer's couldn't really manage to display more than a few windows on screen to begin with. However, modern computers can display hundreds of windows simultaneously, and windowing systems are all playing catch up with how to handle that, rather than rethinking the basics of how to interact with lots of data.

Another example is tabs in the browser, which is a microcosm of what I'm talking about with windowing systems. Tabs are an awful awful user experience once you get past 4-5 open at once. But they're way better than separate windows, so everyone loves loves loves their tabs. But tabs are awful. I'd explain exactly how to make it better, but that's the exact project I'm working on right now, so I'll just say that the solution I have for browser tabs applies just as well to desktop windows.

I'm really not a Mac person, but you're right about Expose and I do get jealous of that. I've used Expose a bit on the Macs in my university, but as a hacker/sometimes game modder, I often get into situations where I have several explorer windows open, with several files in each of those folders open, in addition to whatever browser windows or IDE/text file windows I might also have open. Managing those is a pain. I don't see how Expose or alt-tab can help with 20 odd windows on screen. (Quicksilver seems to be a keyboard centric program, and I'm that rare hacker who favors the mouse).

Here's the other thing -- is the Expose code really that complicated? Not really. In fact, to me it seems like something you should be able to tell your desktop shell to do without needing to know how to code it, and without installing some addon that someone else coded for you. There are countless other minor UI tweaks that any random user could think up, but that they can't actually get their OS to do without getting someone to code it for them. Even take the earlier example of dragging a file onto the file browser dialog. It's great that OSX has it built in. And yet it's so ridiculously simple to implement that I don't understand why I can't just tell Windows: "When I drag a file into this text box, copy in the location of that file". Instead, users have to sit around waiting for the shell-masters to approve minor improvements to the UI/UX. Imagine if there was something like Greasemonkey that worked on your desktop shell, but didn't require you to know even the basics of programming. I don't know if that sounds to you like I'm talking insane-fantasy-world here, but I've got some solid ideas on how to implement exactly that.