Virtual Desktop Manager
More desktops the better...




Quick Links

Download Now!

Features

Funky Alpha Blending

So What Does it Do?

Of Course There is Source!

Of Course There are Bugs!

Planned Additions



 Introduction

If you are a frequent Unix/Linux user, and use one of the many window managers for X, you will be well aware of the multiple desktop support. So, this tools lets you bring that functionality to Windows...

The 'Desktop Manager' basically provides you with four virtual desktops within Windows. Individual windows can be added to desktops, and hence you can switch between the desktops whilst maintaining window position and size!

A screen shot of this little application is shown to the right. The four desktop are displayed with the grey boxes representing the windows active on them. Users can switch between the desktops either by using short cuts keys, by clicking on the window in the manager itself, or by using a 'mouse switch' feature, similar to that in KDE.

The application itself can either stay on top of other windows, or minimize to the system tray. You can in fact use the whole application using shortcut keys, which are mapped to work anywhere in Windows. My main criteria for this product was that I wanted to be able to switch between desktops, and add/remove windows from desktops very quickly.
First look at the desktop manager
Goto Top







Default Keys Maps

Following are the default example global Windows key assignments.

Ctrl + {F1, F2, F3, F4} to switch between the four desktops.

Alt + Shift + {1, 2, 3, 4} to add/remove the current foreground window to/from one of the four desktops.

Switch desktops by moving the mouse to the screen boundaries, similar behaviour to KDE.

All the above functionality can be changed using the configuration file. Events can be mapped to almost any key combination.


 So What Does it Do?

The whole idea behind this application is that no window is added to one of the virtual desktops without the user specifying it. This means that there is essentially a global desktop, where windows exist at all times, and four virtual desktops under the users control.

First look at the desktop manager Anything that has a window can be added to a virtual desktop. As basically everything in Windows is treated as a window, even buttons etc, it means that you can even add your whole desktop and start bar to virtual desktop! You can add as many or as little windows as you want. If you really want to, you can add the OK button of a dialog to one desktop, and the cancel button of the same dialog to another desktop!

As indicated in the screen shot to the left, there is an option to enable a set of controls that float next to the desktop manager. These allow remote control of Winamp, providing options to play, pause, stop, forward, backwards, show playlists and change volume.

Also included is a Window Manager, allowing all windows to be shown/hidden and added to desktops. You can analyse controls within windows, such as buttons, panels and lists.

Windows added to any of the desktops can be directly manipulated by clicking on the grey boxes in the desktop manager. You can move windows about, even if you are not currently viewing that desktop, and perform other direction operations on those windows. Included with the application is an option to allow you to manager all windows with a registered handle, hence you can find out exactly what is running and have complete control over your desktop!

The application is now completely configurable. Using a single INI file you can specify what key combinations are used to change between desktops and add/remove windows to/from desktops. It allows various other aspects of the application to be controlled, such as toggling mouse desktop switching. Support is included for specifying sticky windows. These are windows that should never be able to be added to a desktop, hence will always be visible.

Goto Top




Delphi Coders!

Delphi 3 coders will be happy to hear that all source code for this application is available!

See the source section of this page for further details!








Slyware Logo






Funky Effects?

Don't worry, if you don't want any of the funky effects, they can all be switched off in the INI file.

Also, the application quite happly operates minimized to system tray, with the current desktop indicated on the tray icon itself.


 Features

Listed below are just some of the features included with this product.

  • Add any window with a handle to any of the four desktops.
  • Switch easily between desktops with global shortcut keys and mouse events.
  • Add/remove windows from desktops freely using defined key combinations.
  • Remotely control Winamp using the 'Winamp Controller'.
  • Have full control over all windows on your desktop.
  • Fully configurable, use whatever key assignments you want.
  • Set level of alpha blending to use on any window.
  • Set visibility of controls within windows, such as buttons, list etc.
  • Ability to customize the behaviour of the whole application.
  • Minimizes to system tray to reduce desktop footprint. Desktop number shown on system tray icon.
  • Alter the Z-order position of windows to specify layering, always on top etc.
  • Instance desktop switching.
  • Multiply your working space by four!
  • Locate those long lost windows, and hide the annoying ones!
  • Enable 'always on top' to keep your desktops to hand.
  • Drag and drop your windows between desktops using the form selector.
  • Full Delphi 3 source code available for you to customize to your own requirements!

 Alpha Blending

Alpha blending is a new feature within the Windows API, included with Windows 2000 and higher. As it makes things look cool, I added it to the Desktop Manager. I'm sure it has some real uses!

The desktop manager allows you to apply transparency (0-100% in 10% increments) to any window, either through right clicking on it in the manager itself, or using the form selector. Windows can use alpha blending whilst being added to a virtual desktop.

Ok, so you can go a little over the top with alpha blending, as the picture to the right shows! Click on it to see a full sized version. Under 2k, it does seem to go a little weird with lots of alpha blended windows. Repaint problems sometimes occur, but generally it is ok.

Funky alpha blending!

Of course, if you don't want to use alpha blending, just set the AlphaBlending variable to 0 in the INI file, and it will not use it. Obviously it won't work in 9x, but the program will behave as normal without any extra configuration.

If you apply alpha blending to the actual desktop itself (Program Manager - Progman), you get very strange effects!

Goto Top





A close up of the desktop manager in action






Configuration?

This application is designed to work with minimal configuration. Just needs the EXE, the INI and a DLL.

I wanted it as portable as possible so that I could bung it on a zip disk and use it at Uni!







Got any ideas?

If you think of any additions to this application, please mail me at the following address, and I will see what I can do!

simon@slyware.com


 Downloading

This application should work with any version of Windows equal to or higher than 95. I've done most of my testing in 2000, but there is no real reason why it shouldn't work in any thing else. If you encounter problems, please contact me on support@slyware.com.

Installation wise, just unzip the archive to the folder you want to install it to, and create a shortcut to deskman.exe. That's it! The application requires the main EXE file and a single DLL (to do the mouse event hook). If you want to specify you own configurations, you will need the INI file. Edit that file in a text editor (or right click on the desktop manger tray icon and select General Preferences).

You can download the executable for version 0.21 here (approx 189kb).

 Source Code

All the source code is available for free download from this site. I developed this application in Delphi 3, but there shouldn't be any problems converting up the version tree. I tried to keep the code neat in design, hence a splattering of OO to help future expansion. The concept of desktops and desktop entries should allow for easy expansion to support more than four desktops, hopefully with only a small amount of hacking.

Feel free to do what you want with the code, just please include a reference to the original author. If you add some improvements, and feel that other could benefit from them, please mail me and I'll detail them on this site.

The source code can be downloaded from here, and should include all information required to get it to compile etc. Currently, the code is for v0.21 PRE, but I will put up the latest source code soon.

 Recorded Bugs

This software is very much a work in progress. I simply write new functionality when I find the need for it. However, there are bugs in this software, and to be honest I've simply been putting up with them!

Desktop switching using the mouse is pretty icky in places. The main problem is that this software uses the mouse co-ordinates to detect screen limits, and switch desktop. However, if a window is placed at the boundaries of the screen, the mouse doesn't receive the mouse move events up to the boundary. So, having the task bar at the bottom of the screen prevents downwards switching!

This application uses a simple method for switching windows, it simply hides and shows them. Therefore, adding a window to a desktop does not mean that all its children will only appear on that window, they will have to be added individually.

When I last tried it in Windows 95 it went a bit strange. If anyone else has such a problem, with menus not being drawn, please mail me.

 Planned Additions

  • Hook to catch right click on window title bars, so that windows can be added to desktop using the mouse easily.
  • Setting transparency levels using right click on title bars, as above.
  • Method to link parent-child windows together, so that a whole application can be added to a desktop.
  • Ability to send various messages to windows, such as resizing them remotely etc.
  • Fix vertical mouse desktop switching.
Goto Top