Skip to content


EvilDesk 0.8 Released

I've been enjoying my vacation time, spending a good bit of it hacking on EvilDesk. This is something of an eyecandy release, with some visually appealing refinements. I'm always wary of eyecandy for eyecandy's sake, so I've tried really hard to balance resource consumption with visual goodness. To that end, the eyecandy features can all be turned off, and can also be tuned to reduce (or increase, if you like) their memory consumption. So, what features are new?

  • Added the ability to customize the appearance of slits and the task switcher. Each slit can have a custom background tile, as can the task switcher. You can also change the font, style and colour.

  • Added a window thumbnail cache. This is used by the alt-tab task switcher and also by Overview.

  • alt-tab uses the thumbnail cache to show previews of the applications as you're alt-tabbing.

  • The new Overview plugin is inspired by OSX exposé; pressing Win-F9 (configurable) will show a zoomed-out overview of all the open windows on each monitor attached to the system. You can then click on a window thumbnail to switch to that window. Unlike exposé, Overview performs no animation.

I also made it possible to set all the settings from the .evdm, which should make things significantly easier to configure.

Check out the full change log for more details.

You can Download EvilDesk here.

Happy New Year!

WinXP Desktop Shell Replacement, 2nd Release

[Update: Newer releases are available]

As a follow-on from the last release, I've uploaded the latest iteration of my EvilDesk shell replacement for Windows XP.

The changelog goes something like this:

  • much more robust installer, which should address most of the problems that were reported with the last release.

  • improved window state tracking. Console windows now respect the desktop state.
  • improved multi-mon behaviour.
  • improved window title display for really long window titles when alt-tab'ing.
  • new putty context menu plugin (read the docs for details)
  • experimental tweaks for changing the target slit and gravity for plugins (so you don't have to have everything on the right hand side of the screen). Registry editor required; no GUI. See docs for details.
  • fleshed out the Tweakage menu, making it more useful. The shell will use RunAs for the system level items, for those of us running without admin privileges.

Some random notes/comments:

  • During my debugging, I found that WinLogon doesn't like spaces in paths, so I've changed the default installation destination to \\EvilDesk on your system drive. Sorry about that, but it is a Windows bug.
  • You MUST have admin privileges to install the package; the installer will not modify your shell, so this is safe. Most people will be running with full admin rights anyway. (if you're one of those people, you should be reading The Non-Admin Blog)
  • Sadly, you can't use RunAs to invoke the control panel without invoking explorer.exe for the admin user. I'm open to suggestions. For now, control panel is launched using your privileges via explorer.exe.
  • On a related note, people running XP Home might not be able to launch the control panel. Tough luck, you should be running XP Pro anyway.
  • Gaim still has weird interactions (probably other gtk+ apps will do too). If you rapidly switch desktops, the gaim window sometimes gets mashed up, as though its layout engine has gotten confused. Not sure if thats my bug or GTK's bug. The workaround is to close the chat window when that happens.
  • Thunderbird/firefox: again, rapid desktop switching sometimes confuses them, causing them to not restore from minimized state properly. I have added code to spot this situation and make it less inconvenient. Again, not sure if (how?) it's my bug, or a bug in the toolkit used by those apps.
  • MSDN help browser: seems to do something funky with its top-level window (could be GDI+ related) that has some weird interactions when using the Win-W popup menu in evildesk.

If you want to download and install it, you should first read the following disclaimer:


The software is provided as-is in binary form only with no warranty. I am not liable for any bad mojo, be it mental, physical or meta-physical, that arises from its use. By downloading it, you assert that you will not decompile or reverse engineer the software in any way, and that you will not re-distribute it to any third party in any form without my express consent. All rights reserved; All liabilities disclaimed.


  • Download evildesk.msi
  • As the Administrator, install it, by double clicking on it. Note that this act will not change the shell of the administrator.
  • As the user(s) that plan to use the shell, login and run the "Set Shell" shortcut from the Start Menu:
    Start | Programs | Evil, as in Dr. | Shell | Set Shell
  • You should now reboot. Yes, rebooting sucks, but if you don't reboot, the Win-E will cause explorer.exe to load the taskbar. This is an issue with explorer.exe and affects all replacement shells. Sorry.
  • When next you login, you'll be running my shell.

EvilDesk 0.7 Released

Well, the bug fixes I made in the last release left me feeling empowered again, so I've followed up with a couple more features and some more bug fixes:

  • Added new MATCH CREATE window matching configuration option, which allows actions to be taken when windows are created. For example, you can cause all VMWare windows to start on a given workspace, or have your mp3 player automatically stick to all workspaces when it starts up.
  • Fixed a slit layout calculation bug.
  • Avoid blocking the flasher when the flashing app (eg: gaim 2.0 beta) hangs itself
  • Balloon tips now display the body of the balloon text, instead of the tooltip from the tray area, and will rise all the way to the top of the z-order.
  • Improved detection of deleted tray tooltips, so that balloon tips are not wiped out at the wrong time.
  • When a window was made sticky, it would remain in the minimized state on the inactive workspaces. This has now been corrected.
  • Fixed a string termination bug in the PuTTY plugin for sessions that have spaces in their names.
  • Environmental variables are now expanded when processing the MergeDirs directive in the .evdm file

EvilDesk 0.6 Released

Having finally found some time to myself, I thought it was about time that I push out a release with the changes that I've been using for the last few months. Some of these changes are based on feedback from users; keep it coming folks! :)

Feature changes in the new release include:

  • Revised plugin loading system. Slits are defined via the new SLIT directive and plugins are loaded via the new LOAD directive in the .evdm file.
  • Slit windows will hide themselves when an application goes fullscreen (and come back when it leaves fullscreen mode). I've tested this with PowerPoint (when viewing the slideshow) and PuTTY (alt-enter) and it seems to work ok.
  • Altered the gravity of the tray plugin so that it sinks below the flasher. Why? When double-clicking on the gaim tray icon, the first click would open the buddy list, causing it to flash. The flasher would bump the tray up, causing the second click to land on a different tray icon--usually the wifi icon, popping up the wireless network selector.
  • Added more internet-facing apps to the SaferExec line in the default configuration. No idea what that means? Read more on "Browsing the Web and Reading E-mail Safely as an Administrator".

Bug fixes include:

  • Fixed a race condition where windows could bleed across to the target workspace when switching workspaces.
  • Fall back to the system default icon in the task switcher and flasher if the window in question has no icon of its own.

Go get EvilDesk!

Merry Christmas!

EvilDesk, mini release

I've pushed 0.5.1 tonight; if fixes an uninstallation buglet that could leave you without a taskbar after uninstalling EvilDesk.

The only new feature is being able to select how many workspaces the alt-tab task switcher will cycle through; you can use up to 32, with the default being 4.

Visit the ChangeLog

EvilDesk, Release 5

I've updated EvilDesk yet again this weekend. The biggest new thing is making all the hotkeys (aside from alt-tab) user configurable.

Find out more on the EvilDesk Home Page (I've added a ChangeLog section for your tracking pleasure).

EvilDesk, Release 3

[Update: Release 4 is out]

I've updated my EvilDesk and included the user-definable context menu code I mentioned in the comments of my last post.

I've also created a new home for the project, so that I can group the docs together more easily.

I will continue to publish news about updates here on my blog, so if you're already subscribed here, you needn't do anything more to keep up to date on this project.

EvilDesk, Release 4

I've updated EvilDesk again. Aside from fixing a couple of bugs here and there, it now features built-in support for "Safer" execution of internet facing applications.

Find out more on the EvilDesk Home Page (I've added a ChangeLog section for your tracking pleasure).