Vdesk  (c) 2000-2006 Octatec
Vdesk is a Virtual Desktop Manager  for WIN32 systems. The installation also includes a sophisticated wallpaper changer, which can be used stand-alone, or, as intended, in conjunction with vdesk. Also included is an API so that you can add Virtual Desktop functionality to your own applications if you wish.


Keywords: Virtual Desktop, taskbar, status bar, system tray, multiple desktops, wallpaper changer

Summary: Vdesk manages upto 8 virtual desktops, allowing access from the task/status-bar

Getting Started

Vdesk has several ways of accessing and switching between virtual desktops, the following is the most convenient way of using it. Start vdesk, and move the application to the lower right-had side of the screen if it isn't already there. Right click in the client area to display a popup menu, and take the Preferences option - from the preferences dialog, select 'position on taskbar', Vdesk will disappear, but a small vdesk icon  will appear on the right had side of the task-bar (known as the status bar or system tray). If you left-click the icon, vdesk reappears with the grid display, giving full access to all its functionality; it will disappear when you click the icon again, or if you click the minimize-bar. If you right-click, you will  get the virtual desktop list which shows all desktops and windows in the system. Double-clinking a virtual desk-top will switch to that virtual desktop and immediately hide the vdesk application again. To close vdesk, left-click the vdesk icon and click the close-box on the applications title-bar. If vdesk was on the task/status-bar when it closed, it will automatically be there again when you re-start it. While vdesk is on the task/status-bar, it's minimize button will, in fact, completely hide the application, just leaving the task/status-bar icon, and not the usual application icon.

Vdesk Features

Vdesk supports up to 8 Virtual Desktops. It has a simple Drage&Drop interface that allows windows to easily be moved from one Virtual Desktop to another. Different wallpaper can be set for each Virtual Desktop, or the wallpaper can remain unchanged. When Vdesk exits, it saves the placement of Windows so that when it re-starts, window placement is maintained. . Vdesk maintains a small grid display, where each square of the grid represents a Virtual Desktop; just clicking in a square activates a Virtual Desktop. Vdesk implements a series of 'virtual' desktops, it does not try to extend the surface of the real desktop and  make the current desktop a view of a much larger desktop, but rather it creates several independent  virtual desktops, rather like the pages in a book - they will each show only the iconic-applications that they have running on their task bar, but they will all show the same short-cut icons used for starting programs, and they will all show the same start menu structure. This approach allows vdesk to take a much more passive role when interacting with the system, and places little or no extra load on your computer.

Dark grey squares indicate that there are no windows on that virtual desktop, light grey indicates that there are windows on the virtual desktop, The currently active virtual desktop is indicated in blue (dark blue if there are no windows on the virtual desktop). If you select the Horizontal display option, the main display is presented in one row as opposed to two.

Right clicking on one of the squares invokes the following popup menu.

From the menu, the preferences dialog can be displayed. The Show all windows command  lets you display all windows in the system on the current desk-top. If you then switch to a different desk-top normal service will be automatically resumed - you can also go back to showing just the windows on the current desktop by using the menu command again.

When vdesk exits, all winows are re-displayed on the desktop. If you re-start vdesk, the location of windows on virtual desktops will be restored provided the Save windows locations on close menu option is selected (it is selected by default).

Vdesk Management

This functionality  is available  from the List all virtual desktops  menu option available from the right-hand button popup menu or the Files menu. The list is in the form of a tree, and allows dragging and dropping of windows from one virtual desktop to another. Double-clinking a virtual desk-top will close the dialog and switch to that virtual desktop. A right-hand popup menu also allows  you to activate a different virtual desktop as well as change the wallpaper. If you double click an item under a desktop-node that desktop will be activated if it isn't already active, and the window you clciked will be brought to the front and displayed. The last node represents 'all' desktops - if you drop a window onto it, the window will be present on all every virtual desktops. You cannot double-click this node, but you can double-click (and activate) items underneath it. As well as using drag&drop you can use cut and paste (Ctl-X, Ctl-V) to move windows between virtual desktops.



The preferenced dialog can be accessed from the options menu on the menu bar or from the pop-up menu. Most of the options should be fairly obvious.

The only preference that needs explanation if the Hung process detection timeout - it is basically what it says, if a window does not respond after waiting this long, it is assumed to be hung.

Problems and Pitfalls

If an application on a non-displaying virtual desktop puts up an application modal dialog, it will pop up on the current virtual desktop - not a problem but if you then switch virtual desktops to the application in question, the application will apear frozen, it is waiting for input from a window you cannot see. If you suspect this is happening, take the "show all windows" menu option, then click the non-responing application again - it should make any modal dialog apear 'on top'. A similar effect results if you start a slow application that launches several independent windows, and you then switch desktops before the application has launched all its windows, some of the windows will be on the previous desktop, and some on the new one - this isn't realy a problem as you can use the Vitula Desktop List to bring all the windows togeather on the same virtual desktop, if that's what you want.

If a window is dead, i.e. not responding to the system, it cannot be moved to different virtual desktops. When you switch to a different virtual desktop, dead windows will leave a 'ghost' image of themselves, other than that, dead windows do not cause a problem. If a dead window comes-back-to-life it should end up
positioned on the correct virtual desktop If a window is very busy it may be mistaken for dead - this is not realy a problem, it will be recognized again as soon as it responds.

Startup Strategy and Invisible Windows

When Vdesk starts, it finds all the 'system' windows and does not manage them - system windows are mostly defined by being invisible. If you have some applications running, but minimized,  it may be that some invisible windows belong to the minimized applications and actually need managing or the application will not behave correctly. This is certainly the case with Visual Basic's IDE and some other applications. NB if you have a particular application that stays visible on all virtual Desktops, this is probably the problem - to verify this, check the list of non-displaying windows. To overcome this problem, either (1) always start Vdesk before all other applications, or (2) do not start Vdesk with the problem application minimized or (3) enter the title of the problem Window  in the registry key-value HKEY_CURRENT_USER\Software\Octatec\vdesk\1.00\NonSystemWindows - this key-value is a semi-colon separated list of window titles, that, if found to be invisible at startup will not be added to the list of non-managed windows. (In fact, the full title of the window is not required, just a string that occurs in the window title is all that is needed - by default there is just one entry, "Visual Basic" in this key-value).

Setting Wallpaper

Different wallpaper can be set for each virtual desktop. This can be done from the main  popup menu (or from a right-hand popup menu from the Virtual Desktop List). The selection of wallpaper can be any common graphics format, i.e. jpg, gif, png and bmp (although som jpeg formats are not understood). The wallpaper can be shown using the 'traditional' desktop, i.e. you do not need the Active Desktop to display jpg, gif, or png wallpaper. If you are using the Active Desktop, that's fine, vdesk's wallpaper changer will automatically interface to the Active Desktop to change the wallpaper.

The following dialog is displayed when changing the wallpaper...

As you can see, you can select a single file, or chose to automatically cycle through files in a directory or listed in another file. The wallpaper selection can be different for each virtual desktop. Vdesk uses the WPchanger automation object to actually change the wallpaper. When vdesk exits, the original system wallpaper is restored. Of course, you don't have to change the wallpaper at if you don't want.

Non-displaying Windows

There are a lot of non-displaying windows that vdesk leaves completely alone. These can be listed from the main menu-bar's Files/List non-displaying windows option. Normally, you should not attempt to make these windows visible, however, if you ever suspect that you have 'lost' a window, close vdesk, then re-start it and check in the list of non-displaying windows. When you list non-displaying windows you will see the following dialog.

If you double-click an item, you will see this dialog which allows you to assign windows to a virtual desktop.

This facility can be useful  if Windows Explorer (The Windows Shell) crashes while vdesk is on the desktop task-bar (and not visible). If this happens all you realy need to do is start vdesk again, it should detect the already running instance and force it visible,  you can then manually close it, or remove it and and re-add it to the task bar. Alternatively you could kill the running vdesk, then  start vdesk again and assign any lost windows to a virtual desktop using a the dialog above, (then quit vdesk straight away).

The Vdesk API

Vdesk supports a COM api that allows you to control Virtual Desktops from within your programs. The COM Automation Objcet "Vdesk.API" implements the following methods.

[id(1)] long Open(BOOL hildeUI);
Open a Vdesk session, if the Vdesk application isn't already running, this method will start it, If hideUI is TRUE, then Vdesk will nor display any User Interface.

[id(2)] long Close();
Close the Vdesk session. Only if your Open() call  launched Vdesk, will the Close() call  terminate the it. If you want to leave Vdesk running, you don't have to call Close()at all..

[id(3)] long SetActiveDesktop(long n);
Switch to a new active desktop, n must be between 0 and 7.

[id(4)] long GetActiveDesktop();
Get the current active desktop.

[id(5)] long ShowAllWindows();
Show all windows.

[id(6)] long ShowCurrentDesktopOnly();
Show only the windows belonging to the current Virtual Desktop.

[id(7)] long HideUI();
Hide the User Interface if it is currently visible.

[id(8)] long ShowUI();
Show the User Interface if it is not currently visible.

[id(9)] long EnableWallpaperChanger(BOOL mode);
Enable or Dissable the changing of wallpaper on a virtual desktop switch.

[id(10)]long SetDeadWindowTimeout(long timeout);
Set the timeout value for detecting dead windows

[id(11)]long ShowVdeskListUI();
Show the list-of-Desktops user interface.

[id(12)] result SetVdeskNotificationSink(BSTR sinkObjectName);
This method allows you to set an object that receives a notification when the Virtual Desktop changes. Any numer of notification objects can be specified. The notification object is created by Vdesk and the method with dispid 1 is called with the new desktop numer as an argument, [id(1)] void OnVdeskChange(long vdeskNumer);

The Wallpaper Changer Interface

Vdesk is distributed with a Wallpaper Changer automation object, "Wallpaper.API" (WPchanger.exe). This object implements a simple interface for accesing the system wallaper. You can use it from your own C++ or VB programs if your wish, the Type-Library and ODL files are included with the distribution.

[id(1)] boolean SetWallpaper(BSTR pathName);
[id(2)] boolean CycleWallpaperInDirectory(BSTR dirPath, long minutes, boolean randomOrder);
[id(3)] boolean CycleWallpaperInFile(BSTR pathName, long minutes, boolean randomOrder);
[id(4)] void SetTileMode(boolean mode);
[id(5)] boolean ResetSystemWallpaper();

Vdesk uses the above interface to change the wallpaper. The wallpaper can be in either .BMP, .JPG, .GIF or .PNG  files, if the Active Desktop is not running, the .JPG, .GIF and .PNG  files will be first converted to a BMP file before being displayed - if the Active Desktop is running this is not necessary. The object can interface with the Traditional Desktop or the Active Desktop to display the wallpaper. Note: becuase of the variability of jpeg-format files, the Wallpaper changer may not be able to display all .JPG files - if you have difficulty, try running the Active Desktop; NOTE if you start the Active Desktop while the Wallpaper Changer is running, (i.e. while vdesk is running) it will NOT detect this and will not be able to interface to the Active Desktop, and so will not be able to change the wallapaer.

The object maintains 3 log files in the system temp directory, where it reports its progress, wp_init.txtwp_file.txt  and  wp_cycle.txt.

Home | FixGateway | AFI/J | SimpleGrid | SBpayroll | SXAzip | InstallScript | DiskUsage/DiskClean | Virtual Desktop Manager | ComBridge | Demos | Purchase