I recently got a beastly x86 (actually AMD64) machine of death. It has windows and Ubuntu on it. Ubuntu is really neat, but it's still not as sane as my mac in how easy it is to work with. That is, it wasn't until I wrote THIS!

(require 'sawfish.wm.commands.x-cycle)

'cycle-applications 'cycle-applications-backwards
(lambda (origw)
(append (let ((windows (managed-windows))
(seen-classes `(,(window-class origw))))
(lambda (win)
(let ((ret (not (member (window-class win) seen-classes))))
(nconc seen-classes `(,(window-class win)))
#:spec "%W")

Put that in your ~/.sawfishrc file and you'll be able to have application/window switching that works somewhat decently with the "Cycle Applications" binding command, in addition to a binding to the built-in "Cycle Group" command (the former on alt-tab, the latter on alt-`).

It's still not as usable as the mac, but it's good enough that it won't distract me from actually using my computer.