Scrollable Desktop (SDesk) v0.1.65
Copyright © 2002 by Robert Bresner
http://www.nearestexit.com/users/~wawb/
http://www.nearestexit.com/sdesk/

Last modified: Mon Jul 29 02:22:49 GMT Daylight Time 2002

SDesk development is slowing down. A couple other projects have been taking up my time lately, and next week I'm starting a job in New Zealand. (Won't that be fun? Yes it will.) Right now, small releases are still planned over the coming months, but the full 1.0 release I'd wanted to get out by the end of August may in fact have to wait until some time in December, if not later.

My biggest problem with SDesk of late has been trying to defeat the Max window size that Windows implements everywhere. What a hassle. For now, if the "Resize Window" dialog doesn't work, then the window you're trying to resize cannot be resized. Alas! But I've not given up on the problem.

Still, any problems or bugs, let me know and I'll fix those immediately.

If you would like to be added to the SDesk mailing list, and be notified of updates, send an email to sdesk@pobox.com and it shall be done. Rest assured that your email won't be given to anyone or anything, as I'll be writing it down on a post-it note and sticking it on my monitor, which is in a little office I call The Cave that no one goes into, because it's dark and scary.


Contents
What is SDesk
I'm glad you asked. SDesk is not a multi-desktop program. It is a program that creates a single, giant desktop that extends beyond the visible region of the monitor. Only a portion of the SDesk is visible at a time, as defined by the Windows desktop settings. To facilitate the organization of windows on the SDesk, a tool window displays the position of all visible application windows. The SDesk Toolwin is interactive: the SDesk view can be moved, and windows on the SDesk can be moved via the Toolwin. More on the Toolwin later.

All of the commands available can be assigned to a global keyboard hotkey, so the Toolwin isn't required, and so it can be hidden. An SDesk icon lives in the taskbar, with a pop-up menu. Double-clicking on the icon will toggle the display of the Toolwin. More on all that later, as well.


Installing SDesk
As this is only an beta version (albeit a very stable one) there isn't an installation package, only a .zip file. The .zip file contains the following:
  • SDesk.exe: The SDesk application.
  • sdesk.dll: Required to enable the mouse scrolling functionality
  • docs.zip: The html-ized docs (what you are reading now.)
Unzip the sdesk.zip file anywhere that suits your fancy. Double-click sdesk.exe to run. To enable the mouse scrolling functionality, sdesk.dll must be loadable. That means it should stay in the same directory as sdesk.exe, or be put in the <Windows>\<System> directory (On my machine, that translates to the c:\winnt\system32. On your machine, depending on which Windows you're running, that could be different).
If SDesk cannot find or load the SDesk.dll, the mouse scrolling Actions will be disabled, as will the mouse scrolling options in the Options dialog box.
Docs.zip contains all of the documentation for the SDesk version you've downloaded. The documentation is bigger than the app, ain't that something? For the latest version of SDesk and documentation, visit the SDesk web site.

SDesk has been tested with Windows NT4, Windows 98, Win2k, and WinXP but should work with any 32bit Windows. Nothing fancy going on here.


Running SDesk
To run SDesk, double-click on SDesk.exe (or, if SDesk.exe is in the Startup folder, it's already running).

So, let's discuss using the program. The first time SDesk runs on your computer, it uses default settings to get started. One such setting has the Toolwin in a visible state. This is the SDesk Toolwin:




The Toolwin has a sizeable border, so it's not really that big. The dotted rectangles represent windows that are open. The solid white rectangle is the portion of the SDesk which is currently being viewed. The red rectangle is the active window. The tooltip above the Toolwin describes the window being pointed at by the arrow. The background of the Toolwin is blue because that is the color of my desktop.

As the cursor moves around on the Toolwin, information is shown in the tooltip at the top (or the bottom, if the Toolwin is on the top of the screen), like the window being pointed to, and the position of the cursor on the SDesk desktop, and the region defined at the cursor position - which I'll explain later.

Ok. In this example Toolwin above, the cursor is pointing to the MSWord window that I'm typing this document in, but notice there's another, smaller, rectangle there? That window is behind the MSWord window, so if I point at it, the tooltip will not tell me what it is. But, the rectangle is there so you know there is another window there.

Here are some other default Options when SDesk is first run:
  • SDesk Width is 4 times current desktop width.
  • SDesk Height is 2 times current desktop height.
  • Toolwin is visible.
  • Tooltips are visible.
  • No Regions (See "What is a region" below).
  • Max Scroll is 100 pixels.
  • Min Scroll is 20 pixels.
  • Mouse Scroll is 80 pixels.
  • Edge Border is 5 pixels;
  • Mouse Scroll Type is Scroll one Desktop
  • Mouse Scroll Delay is None
  • Snap Toolwin to edge when moving.
For the following documentation, keep this key in mind: Keyboard and Mouse Actions abbreviations:
  • S- Shift
  • C- Control
  • A- Alt
  • W-Windows key
There are the following default Keyboard Actions (All Actions are described in more detail a bit later):
  • S-C-A-Space: Display SDesk menu
  • S-C-A-Right Arrow: Move visible desktop right by
  • S-C-A-Left Arrow: Move visible desktop left by
  • S-C-A-Up Arrow: Move visible desktop up by
  • S-C-A-Down Arrow: Move visible desktop down by
  • C-A-Right: Move one desktop to the right
  • C-A-Left: Move one desktop to the left
  • C-A-Up: Move one desktop up
  • C-A-Down: Move one desktop down
  • W-Down Arrow: Lock window in view
  • W-Up Arrow: Unlock window in view
There are the following default Mouse Actions (available only in the Toolwin)
  • Right Mouse Button: Display pop-up menu.
  • Middle Mouse Button: Move visible desktop to x, y center.
  • Left Mouse Button: Move the Toolwin.
  • S-Left Button: Move visible desktop to selected desktop.
  • S-C-Left Button: Drag a window represented in the Toolwin.
The SDesk menu is customizable. The default menu looks like this:


These menu items do the following:
  • Options…: The Options dialog.
  • Define Actions…: The dialog for customizing Mouse and Keyboard Actions.
  • Customize Menu…: The dialog for customizing the SDesk Menu.
  • Mark Current Region…: Defines a region in the Toolwin.
  • Show SDesk Toolwin: Toggles the visibility of the Toolwin.
  • Help…: The Help dialog, which has nothing in it right now.
  • About…: The About dialog.
  • Toggle Snap To Edge:actually, that isn't on the default menu..
  • Exit: Closes SDesk.
Something to note while I'm here: the "Options…" item cannot be removed from the menu, because it is a way of accessing the "Define Actions…" and "Customize Menu…" both of which can be removed from the menu.

Something else to note while I'm here:


While the Toolwin can be toggled on or off, and the Mouse Action to show the menu can be changed in the Toolwin, and the Keyboard Action to show the menu can be changed in the Toolwin, that little icon in the Windows Taskbar (the blue rectangles with the red arrow. See it there? I spent a lot of time making that) can always be double-clicked with the left mouse button to toggle the visibility of the SDesk Toolwin, and can always be clicked with the right mouse button to bring up the SDesk menu. Those two actions are hard coded and cannot be changed.

Now is a good time to discuss Regions. A Region is simply a named portion of the SDesk. It makes it simple to organize and move to particular parts of the SDesk. Here is a Toolwin with some Regions defined:

To create a Region, choose the "Mark Current Region" from the menu. A dialog will pop-up where you can give the Region a name, and click on the colored box to choose a color for the Region. Now, whenever the cursor moves over an empty portion of the region, the name of the Region appears in the tooltip. Also, look at my menu now:

The menu lists Regions as they are added, and selecting a Region from the menu will move the visible portion of the SDesk to that Region. The numbers to the left of the Region name are now Keyboard Actions, A-C-S-# will move to the numbered Region. Okay. So, those are Regions. They're a lot handier than I give them credit for here.

And, tada, I just fixed a bug. I just noticed as you did that the Tooltip has "Region 1:" and the menu shows aNOTHER rEGION as number 2. It's a menu_array[i+1] issue. With the fix, Regions are numbered 0-9, and as they are created, the hotkeys are registered, A-C-S-[0-9]. All in synch now.

There is no limit (except memory) to the number of named regions you can create. Regions can overlap each other, or cover each other completely. After 0-9, odd hotkeys are created, but I'll get to fixing that eventually. There are several Actions defined for quickly finding and navigating through named regions. You can read about those below.

In essence, this is where the "Infinite Desktops" come into play. All those punks with their "Nine Virtual Desktops!" can take a seat in the back.

SDesk Dialogs

Options:
Let's take a brief look at the customizing dialogs. First, here is the Options dialog:

The desktop height and width set the size of the SDesk. The spinner buttons beside the text fields will increase and decrease the size according to the current size of the real desktop, but you can enter any number into the text fields. Well, nothing smaller than the size of the real desktop, and numbers < 32,000. The actual limit is a 16-bit integer, a limitation imposed by Microsoft Windows. I'm working on an infinite desktop, but as I don't need it, I'll only get around to it if interest is high. (See, Microsoft won't let me move a Window to a position greater than +/-32767 (you know what I mean). So, I'd have to rewrite half the program to fake window positions. Sigh. )

The Border is the number of pixels from the screen edge that the mouse cursor must pass by to initiate a mouse scroll. The border must be between 1-10 pixels. Max Scroll is the number of pixels SDesk uses for Actions that refer to <max>.
Min Scroll is the number of pixels SDesk uses for Actions that refer to <min>.
Mouse Scroll is the number of pixels SDesk uses for Actions that refer to <mouse>.
The Actions… button leads to the Actions Dialog.
The Menus… button leads to the Menus Dialog.

The Mouse Scroll Methods refer to how SDesk will scroll when the mouse cursor passes the border. When the cursor nears the edge of the screen, SDesk will scroll the number of pixels chosen in Scroll Size (as set in the scroll fields above) in the direction towards the edge of the screen the mouse has moved to. Whew, what a run-on sentence. Delay before scroll indicates how long SDesk will wait before scrolling. Just Go, Baybeee indicates no pause before scroll. Left Button Click indicates that SDesk will only scroll when the left mouse button is clicked within the edge border. The scroll will not happen if the button was already pressed as the cursor passed over the border, the click must occur on the edge. Time (ms> is the number of milliseconds SDesk will pause before scrolling. One hundred is the default, but two-fifty is pretty good.



Actions Dialog: Keyboard Actions
I'll discuss the Actions below. For now, notice the dialog for assigning Keyboard Actions.

An Action can be assigned to a keyboard hotkey. Hotkey combinations can be pressed at any time, any where. As the warning indicates, an Action should use at least two key flags (Shift, Alt, Control, Win) to avoid problems. Technically, you can assign an action to, say, the 'E' key alone, and every time you press the 'E' key the SDesk Action will occur. Probably, you don't want that. To remove a defined Action from a key, highlight the action and press the Clear button. To assign a key combination to an Action, highlight the action, choose the desired combination and press Apply. If the key combination is assigned to another Action, or the hotkey is assigned to another running application, the Action assign will fail. Choose another combination. You don't have to clear an Action before applying a new key combination.

Actions Dialog: Mouse Actions


Mouse Actions are only available within the SDesk Toolwin, so the rules are a little less strict. I'll discuss the Actions in a bit, be patient for just a little longer.


But first, the Customize Menu Dialog:


Almost all of the Actions available can be put in the SDesk Menu. Only the Mouse-only Actions are not listed on the left side, and cannot be added into the Menu. This is also the dialog you go to for testing the Actions, that is, seeing what each one does. Highlight an action on the left side there, and click test. Nifty.

To add an item to the SDesk Menu, highlight it on the left, and click the ">>>>" button. To remove an item from the SDesk Menu, highlight the item on the right and click the "<<<<" button. An Action exists only on one side at a time, so it cannot be added to the menu more than once. To insert a separator line in the menu, highlight an item on the right and click the "Insert Line" button. The separator will be inserted above the highlighted item. An item must be highlighted to insert a new line. To move an item up or down in the menu, highlight the item and click the up or down arrow buttons. To save the changes made to the menu, click OK. To revert back to the menu before changes, click the Cancel button.

The "Toggle..." Actions will be checked or unchecked when displayed in the Menu. In the test window, there is no way to know the state of a toggle. Which is why you can look at the menu as you are editing it: Add a Toggle item to the menu, and right click on the icon in the Taskbar to see what the menu would look like if you saved your changes. You can also see the current state of a Toggle. Pressing Cancel will revert the menu to its settings before the Customize dialog was opened.


SDesk Actions
Ok. Finally. Now, keep in mind, the Actions are available pretty much everywhere. They can be assigned to a keyboard hotkey, a mouse key, or stuffed into the SDesk Menu. These are all the same Actions, just in different places, ok? Here is the current list of available Actions, and a better description of them than what's available in SDesk. The order here is an internal order, I'll get around to making it better eventually. The Action name is in Boldface. It can be assigned to Mouse, Keyboard, or Both. It may also be disabled as of this writing (beta version, you see). Disabled items are currently hidden from the list of available actions in SDesk. Any item available to Keyboard is also available to be added to the SDesk menu. Mouse-only Actions cannot be added to the Menu. There's a reason for this.

Display SDesk menu:
Both
This pops up the SDesk Menu. This Action is always available by right-clicking on the SDesk icon in the Windows Taskbar.
Move visible desktop to x,y position:
Mouse
Move the upper left corner of the viewable SDesk region to position clicked on the SDesk Toolwin.
Move visible desktop to x,y center:
Mouse
Move the center of the viewable SDesk region to the position clicked on the SDesk Toolwin.
Move visible desktop to selected region:
Mouse
Move the viewable SDesk region to the selected Named Region on the SDesk Toolwin.
Move visible desktop to selected desktop:
Mouse
Move the viewable SDesk region to the selected desktop on the SDesk Toolwin. That is, if the SDesk Toolwin were divided up into multiple desktops the size of the real desktop, then where you've just clicked in the SDesk Toolwin is one of those desktops: Move there. This is an example of why I need to rethink the terminology.
Move visible desktop right by <min>:
Both
Move visible desktop left by <min>:
Both
Move visible desktop up by <min>:
Both
Move visible desktop down by <min>:
Both
Move the viewable SDesk region in the direction indicated by the <min> number of pixels set up in the Options dialog. The number of pixels refers to the real desktop, not the number of pixels in the Toolwin.
Move visible desktop down by <max>:
Both
Move visible desktop right by <max>:
Both
Move visible desktop left by <max>:
Both
Move visible desktop up by <max>:
Both
Move the viewable SDesk region in the direction indicated by the <max> number of pixels set up in the Options dialog. The number of pixels refers to the real desktop, not the number of pixels in the Toolwin.
Move Toolwin right by <min>:
Keyboard
Move Toolwin right by <max>:
Keyboard
Move Toolwin left by <min>:
Keyboard
Move Toolwin left by <max>:
Keyboard
Move Toolwin up by <min>:
Keyboard
Move Toolwin up by <max>:
Keyboard
Move Toolwin down by <min>:
Keyboard
Move Toolwin down by <max>:
Keyboard
Move the SDesk Toolwin in the direction indicated by the <min> or <max> pixels set up in the Options dialog. The number of pixels refers to the real desktop, not the number of pixels in the Toolwin.
Move visible desktop to active window:
Both
Move the viewable SDesk region to the active window. If the SDesk Toolwin is visible, the active window is outlined with a red rectangle. If the SDesk Toolwin is not visible, the selected button on the Windows Taskbar indicates the active window. Also, see Toggle Follow Active window
Move active window to the visible desktop:
Both
Move the active window to the center of the viewable SDesk region... the part you're looking at, see. If the SDesk Toolwin is visible, the active window is outlined with a red rectangle. If the SDesk Toolwin is not visible, the selected button on the Windows Taskbar indicates the active window.
Flash the active window:
Disabled
Flash the titlebar of the active window. I'll probly never turn this one on. It's stupid. If the SDesk Toolwin is visible, the active window is outlined with a red rectangle. If the SDesk Toolwin is not visible, the selected button on the Windows Taskbar indicates the active window.
Move to next window on visible desktop:
Both
Cycle through windows on visible desktop:
Both
If more than one window exists on the current viewable SDesk region, these Actions will cycle through only those windows. The new active window will take keyboard and mouse focus, and be moved to the top of the window pile. The order is determined by an internal id called the Z-order. Everyone knows what a Z-order is. "Next window" cycles through the 2 topmost windows. "Cycle through windows" will cycle through all windows. If you're familiar with Alt-Tab, this is like Alt-Tab.
Move to the window to the right of the active window:
Both
Move to the window to the left of the active window:
Both
Move to the window above the active window:
Both
Move to the window below the active window:
Both
Thanks to timecop on EFnet #winprog for this suggestion. All the cool kids hang out on EFnet #winprog, by the way. These actions will change the active window to the window in whateever direction indicated by the action. If no window is currently the active window, these actions assume the window under the cursor to be the active window and moves from there. If the cursor is no where, then these actions will move from the edge of the screen and searches in the direction indicated by the action.
Move to next visible desktop:
Both
Move to previous visible desktop:
Both
Same as "Move one desktop to the right/left", except once reaching the end/beginning of a row, moves to the next/prev row. If that doesn't make perfect sense, set these Actions to a keystroke, turn the toolwin on, and watch the visible region rect as you hold down the action key.
Move one desktop to the left:
Both
Move one desktop up:
Both
Move one desktop to the right:
Both
Move one desktop down:
Both
Move one real desktop in the direction indicated. That is, if the SDesk Toolwin were divided up into multiple desktops the size of the real desktop, move the viewable SDesk region one full desktop in the direction indicated. So, if your real desktop is 800x600, you'd move 800 pixels horizontally or 600 pixels vertically. This is an example of why I need to rethink the terminology.
Move to top edge:
Keyboard
Move to bottom edge:
Keyboard
Move to left edge:
Keyboard
Move to right edge:
Keyboard
Move the current viewable area to the edge of the entire SDesk desktop.
Move to next defined region:
Both
Move to previous defined region:
Both
These should be "Named Region," not "defined region", but I'm getting around to standardizing the terminology. Anyway, regions are numbered as they are created. These Actions will cycle forwards and backwards through the regions by the order of their creation.
Drag the tool window to a new position:
Mouse
Reposition the SDesk Toolwin.
Move window represented in Toolwin:
Mouse
Reposition an actual window. This is my second favorite feature of SDesk. It allows you to drag a window around on the SDesk Toolwin, instead of having to find the window and reposition it by dragging it across multiple SDesk regions. By default, this is assigned to C-S-Left Button. Small windows are difficult to move around, but if you drag slow enough, it's ok.
Lock window in view:
Keyboard
Unlock window from view:
Keyboard
This is another way to get a window into a different region of SDesk without having to move the window itself. With a window set as the active window (red rectangle in SDesk Toolwin, or selected on the Windows Taskbar), use the Lock Window Action to lock the window. Now you can move the visible SDesk region to a new position: The locked window will stay in view. Once the window is where you want it, use the Unlock Window Action. This is my third favorite feature of SDesk. The point of all this is that I rarely use the mouse, (carpal tunnel you see) and made as many shortcuts to moving windows as I could think of. This is a good one, ain't it? I stole it from another multi-desktop program I found.
Toggle window topmost:
Keyboard
Toggle the topmost attribute of the active window. A topmost window will stay
Shrink Toolwin width:
Keyboard
Expand Toolwin width:
Keyboard
Shrink Toolwin height:
Keyboard
Expand Toolwin height:
Keyboard
This resizes (by the right/bottom edge) the SDesk Toolwin. The mouse doesn't need these Actions available, since you can resize the Toolwin on any edge with the mouse.
Flash visible area on Toolwin:
Disabled
This will flash the visible SDesk region on the SDesk Toolwin. I'm not sure what the point of it is, but I thought it useful enough to add to the list at some point. I'll probably never turn this on.
Save Current Settings...:
Keyboard
Saves the current setup (Options, Keyboard Actions, Mouse Actions, Regions) to sdesk.ini in the Windows directory. Eventually, this will prompt for a file name so a user can have multiple setups.
Load Settings From File...:
Keyboard
Pretty useless right now, but if you are toying around with the settings and want to revert back to what they were, reload them with this. Currently, settings (Options, Keyboard Actions, Mouse Actions, Regions) are stored in the sdesk.ini file in the Windows directory, but eventually multiple saved settings files can exist.
Mark Current Region...:
Keyboard
I'm going to change this to "Name current visible region," but I haven't yet. This Action pops up a dialog to name and color the current visible SDesk region. Named regions can simplify the organization of windows, and speed up moving the visible region (See Find Region, Move to Next/Prev Region).
Unmark Current Region:
Keyboard
And I'll change this to "Delete Current Named Region." To delete a region, move to that region in one way or another (Find Region, Next/Prev Region, Move to Selected Region, etc.) then use this Action. Various prompts will be offered.
Unmark All Marked Regions:
Keyboard
And I'll change this to "Delete all named regions." This will remove all regions that have been named.
Find Window...:
Both
Pops up a dialog, prompting for a window title, then searches through all windows for one that matches your search. If the window is visible (not minimized), the viewable SDesk region will be moved to that window. If the window is hidden, it will be restored and moved to the current visible region.
Resize Window...:
Both
This is a failed attempt at getting windows to resize to sizes larger than the real desktop. Not all programs allow such a monstrous thing to happen, and you should see the flames burst from your monitor. I'm either going to figure out how to circumvent Windows' desktop size limitations, or I'm going to remove this Action.
Options...:
Keyboard
Pops up the Options Dialog. This Action can not be removed from the SDesk menu. Through the Options Dialog, the Actions and Menu dialogs can be opened.
Define Actions...:
Keyboard
Displays the Define Actions dialog. More documentation for this dialog is earlier in this document.
Help...:
Keyboard
Displays the Help dialog. It's pretty empty right now, Beta version and all. Eventually all this documentation will live there, or I'll pop-up an html-ized version in whatever browser is setup to do such things on your computer.
About...:
Keyboard
Displays the About dialog.
Always on top:
Both
…and pretty useless as well. Toggles keep the SDesk Toolwin on top when it is visible.
Exit:
Keyboard
Quit SDesk. When SDesk does end, the current settings are saved (if that option is on in the Options dialog) and all visible windows are moved into a single viewable desktop.
Add Desktop to right:
Disabled
Add Desktop to left:
Disabled
Add Desktop to bottom:
Disabled
Add Desktop to top:
Disabled
Add one real desktop size on the SDesk desktop edge indicated. This is a shortcut to avoid the Options dialog.
Remove Desktop from right:
Disabled
Remove Desktop from left:
Disabled
Remove Desktop from top:
Disabled
Remove Desktop from bottom:
Disabled
Removes one real desktop size on the SDesk desktop edge indicated. If any windows are currently living in the region being removed, the window is repositioned to fit inside the new SDesk desktop.
Options.border + 1:
Disabled
Options.border - 1:
Disabled
This will change the value of the Options Dialog Border
Toggle Tooltip:
Both
Display, or not display, the tooltip with the toolwin when SDesk does something clever.
Toggle Load Previous:
Both
Toggle Save Previous:
Both
Whenever SDesk you quit SDesk, the settings will automagically save to the settings file, and whenever SDesk starts, those settings are restored. Eventually, I'll get to adding the Save/Load Dialogs, where you can pick and choose settings files. For now, this can be turned on and off.
Toggle Snap to Edge:
Both
When turned on, the SDesk Toolwin snaps to the edge of the screen when dragged.
Customize Menu...:
Both
Displays the Customize Menu dialog, documented above.
Change color of visible window borders:
Disabled
Windows displayed in the SDesk Toolwin all have white dotted borders. This will display a color dialog to choose a new border color for windows to make them easier to find in the Toolwin.
Change color of active window:
Disabled
Just a simple option, instead of a red border around an active window in the Toolwin, choose whatever color you want.
Show SDesk Toolwin:
Both
Toggles the visibility of the SDesk Toolwin. This Action is always available by left-button-double-clicking the SDesk icon in the Windows Taskbar.
Find Window...:
Both
Displays a list of all active windows, click on an item in the list to move to that window.
Keep active window in view:
Both
Whenever the active window is moved off screen, or a new active window is clicked or alt-tabbed-to, the visible region will center on that window.
Vertically tile windows in view:
Disabled
Horizontally tile windows in view:
Disabled
All windows in the visible region (even partially) will be resized and tiled to fit with no overlapping.
Restore a maximized window before moving:
Both
Some windows that have been maximized have strange behaviors when SDesk moves it around. And, once maximized, a user cannot move the window via its titlebar. When toggled on, this action will unmaximize a window, and then resize it to the maximum desktop size before moving the visible region. Try it, you'll see what I mean.
Move a minimized window when moving regions:
Disabled
With this turned on, minimized windows will not retain their position on the viewable screen, but on the SDesk desktop. A confusing explanation for a simple feature.
Toggle Follow Mouse Cursor:
Both
When turned on, the visible region will move when the mouse moves to the edge of the screen. The spot where the scroll happens is set in the Options dialog "border" field.
This Action is mutually exclusive to Toggle Wrap Cursor In View. The two actions cannot be turned on at the same time.
This features requires another file, sdesk.dll, to work. If sdesk.dll is not present, or fails to load, then this Action is disabled, and will not appear on list of available Actions.
Toggle Quick toolwin redraw:
Both
When turned on, the SDesk Toolwin will redraw faster while a window is being dragged. Looks nicer, but eats CPU.
Toggle Suppress mouse scroll when dragging:
Both
When mouse scrolling is turned on, do not scroll the desktop if dragging a window around.
[Toggle] Shift Supress Cursor Scroll:
Both
When turned off, the cursor moves in relation to the desktop scroll. When turned on, scrolling will be continous until the cursor moves away from the border edge, but holding down shift will return to the "off" behavior
Toggle Suppress Follow Active when dragging:
Both
When Follow Active Window is turned on, stop following (moving the visible region) while dragging a window.
Move Active Window Left <min>:
Both
Move Active Window Right <min>:
Both
Move Active Window Up <min>:
Both
Move Active Window Down <min>:
Both
Move Active Window Left <max>:
Both
Move Active Window Right <max>:
Both
Move Active Window Up <max>:
Both
Move Active Window Down <max>:
Both
Move Active Window Left <desktop>:
Both
Move Active Window Right <desktop>:
Both
Move Active Window Up <desktop>:
Both
Move Active Window Down <desktop>:
Both
Move Active Window To Left Edge:
Both
Move Active Window To Right Edge:
Both
Move Active Window To Top Edge:
Both
Move Active Window To Bottom Edge:
Both
If the SDesk Toolwin is visible, the active window is outlined with a red rectangle. If the SDesk Toolwin is not visible, the selected button on the Windows Taskbar indicates the active window. These Actions will move the active window as indicated.

Copyright, Disclaimer, Contact Info
SDesk v0.01.63b
Copyright © 2002 by Robert Bresner

Usage of this program implies agreement to this simple, and I'm sure legally binding statement:
    It is not Robert Bresner's fault.
That being said, I've been running this program for months with no problems. I'm making it available to the public on the chance that someone else may find it useful. It is Freeware. If you like it, tho, send me an E-Card: wawb@nearestexit.com

If you have a suggestion for an Action you'd like to see, or want to see one of the disabled actions turned on, drop me a line and I'll get to that faster. I'm only infrequently turning on the Actions I want (e.g. Keep active window in view) when I get too tired of not having the feature. Also, if you find a bug or notice some odd behavior, please let me know about that as well, as I'm trying to get rid of all those, see.

Also, if you can write documentation, and have lots of free time, feel free to write a better document than this heap. Thank you for your time and consideration in this matter.

For updates, visit my site http://www.nearestexit.com/users/~wawb/
or the official "hey I got another directory!" SDesk site http://www.nearestexit.com/sdesk/
Version History
07/28/2002 1.64 Added FKeys to hotkey list. Added Topmost toggle. First
                failed attempt at minmax hook disabled. Woo! You should have
                seen the explosions.
06/26/2002 1.63 Fixed (hopefully) the restore window follow active bug
06/26/2002 1.62 Added Actions. Move to <dir> window from active. Fixed focus
                problem after move. Screeensaver works, btw, but I didn't have a
                screensaver chosen. Ah ha.
06/20/2002 1.61 bugfix: Action defines wasn't showing all actions. Added some
                Actions. Egads, has it been two weeks?
06/07/2002 1.60 turned off actions I don't plan to support. Turned on:
                Border, show menu, Tile windows, transparency. Not working:
                XMouse, Screensaver. Received Tucows rejection: Beginning
                Tucows rewrite.
06/04/2002 1.59 Transparent Toolwin. LockWorkstation is back. prelim XMouse
                stuff.
05/29/2002 1.58 Activated Move Active Window actions. Finished Time Delay
                before scroll. Preliminary Activate screen saver, load/save
                window locations. Release 0.1.58a. Aiming for 0.1.60 BETA.
05/29/2002 1.57 Added mouse scroll stuff to Options: Mouse Scroll Type, Mouse
		SCroll Delay. Left Click, Right Click working. Time delay in
		progress. Supress actions working. (Hah. Zuh.) Added (but not
		done with) Active Window movement actions, Screen saver
		action (want screen saver corners.)
05/28/2002 1.56 Fixed annoying mouse scroll bug. FindWindow. SizeWindow.
                Removed LockWorkstation. Prelimin new mouse hook actions.
05/24/2002 1.55 Turned on the cursor follow. Preliminary behavior, new
                Action: Toggle Cursor Follow. NEEDS DLL to work. Ok.
05/23/2002 1.54 Fixed About/Help unicode font problem; Sep'rated dlgprocs.
                Enabled Action: Unmark current region. (I really need to
                rename the actions.) Enabled: Unmark ALL regions. Mentioned
                non-issues in DOC bugs section
05/22/2002 1.53 Added version info to about dlg, added Perl auto-increment-
                version to build process
05/22/2002 1.52 Enabled Actions: Move to previous/next (cycle) window in
                region. Enabled Actions: Move to next/previous desktop. Added
                Lock Workstation (Needs Win9x bugtesting.). Fixed Options
                dialog (OK button missing. Sigh.) Updated docs.
05/21/2002 1.51 Fix: Keep active in view (and default off). Fix: Move to
                Active. Fix: Move Active to visible. Removed extraneous
                beeping.
05/10/2002 1.50 Friendlier help message. Enabled Action: Restore maximize
                before move. Emacs is happy again. Documentation updated
05/10/2002 1.49 Removed toggle options from Options dlg, made Actions. Added
                actions: Move to active window, some other disabled actions.
                Enabled some other actions. Removed mysterious windows from
                toolwin. Changed some defaults. Added some defaults.
03/24/2002 1.48 Menu defaults. Region ID sync. RegisterRegionHotKeys(). First
                Release: 0.1.48a
03/24/2002 1.47 Options to/from files. Nearestexit icon. DrawTriangle
                functionized. About fix. Help fix. KEY_DISABLED's for now.
01/21/2002 1.46 tweking spinners. I'm in an airport with lots of spare time,
                see.
01/21/2002 1.45 Wee! Spinners work. Very lame. Very very lame.
01/21/2002 1.44 Added preliminary spinner controls to Options dialog
01/21/2002 1.43 Coolio. Added TrayIcon, Toggle show toolwin. Handling initial
                ActionDefine.status for menu checkmarks. SOme, anyway.
01/21/2002 1.42 Active Window moving handlers. Color handler defines added,
                but not handled. Tweaks
12/29/2001 1.41 Finished Help dialog. Added Debug (which doesn't work, of
                course). Other tweaks.
12/28/2001 1.40 Cleaned up dlg calls (nonmodal). Cleaned up hook calls (one
                loop pass now). Menus completely Dynamic: All KEY_KEY
                commands are Actions. Menu Dialog. Menu settings added to
                Options save/load
12/27/2001 1.39 FINALLY! (again). autoload/autosave of options to .ini file.
                Remembers position! Finally!
12/27/2001 1.38 More stable. Some bug fixes. Still need to add
                saving/restoring, only big thing left, really.
12/27/2001 1.37 Brilliant. Rewrote MoveVSDesk, and converted calls. Much
                better. Fixed enum out-of-sync
12/27/2001 1.36 Ooops. Didn't correctly register non-arrow hotkeys. Fixed
12/27/2001 1.35 Now the keys work. Things to do: Save/restore settings. Thing
                to fix: When moving by keyboard, the desktop/sdesk ratio is
                fuggin up the moving region. Gotta fix that.
12/26/2001 1.34 Finally! Actions can be changed through options dialog.
                (Well, I still have to finish the hotkeys side, and error
                checking and ... But it WORKS! FINALLY!)
12/26/2001 1.33 Fixed snap to, now that moving manually...
12/26/2001 1.32 Cleaned up. Mock asynch-move wins: Now the app doesn't freeze
                if there's a window that refuses to move. Very cool
12/26/2001 1.31 Added Locked windows. Fixed crash (but not done yet) with
                Actions Dialog ListView. Removed NCHitTest handler, check for
                move window in OnMouseMove.
11/03/2001 1.30 Fixed move toolwin hook, tweaking some others.
11/02/2001 1.29 Ok! Actions are no longer hard-coded. (most of) 38 default
                actions work dynamic, but the code to change settings isn't
                done yet. Moved Hooks to sep'rate files
10/27/2001 1.28 tooltip option, prelim save/load, region menu tweak, dialog
                flash, min/max move defaults, reset regions, mouse capture,
                activate foreground on move, edge snapto, better actions
                hooks prelim, tooltip always visible, actions dlg changes:
                listview, defaults, etc; many many tweaks and changes. I've
                been away from the repository for 2 weeks
10/17/2001 1.27 Changed hard-coded arrows to Alt-Ctrl, because Neil's laptop
                doesn't have win key. Activate topmost when moving desktop
                with keyboard. Modified dlgs for new hardcoding
10/15/2001 1.26 Even better -- check for region first and go there.
                Otherwise, go to desktop. I REALLY need to get 
                keyboard movements inplemented
10/15/2001 1.25 Good idea. Added 'g' hotkey for move to foreground window
10/15/2001 1.24 Another tooltip tweak. Using Focus rect instead. Rewrote
                help/action messages for hard-coded actions
10/15/2001 1.23 Fixed OnTimer enum bug
10/15/2001 1.22 Added hard-coded arrow-key hotkeys. Eventually I'll get to
                the options... I really mean it.
10/15/2001 1.21 Another foreground failure. Tooltip tweaks
10/15/2001 1.20 Admitting failure: The mouse hook eats _WAY_ too much CPU, so
                implemented 100ms timer for redraw, et al. RestoreWindows
                only when desktop sized smaller. Tooltip tweaks - stays with
                Toolwin. WatchForeground also a failure...
10/15/2001 1.19 Fixed region painting
10/15/2001 1.18 Regions can be a different color. Regions have border in
                toolwin
10/15/2001 1.17 Mouse click move To Region! (Woo!) Mouse Drag window!
                (Hiphiphooray! Very cool!)
10/14/2001 1.16 Move Dlgs to sep'rate file. Created Tooltips.
                FindAWindowAtPoint(). sdesk.h
10/14/2001 1.15 Added preliminary Actions options code
10/12/2001 1.14 named regions, move to named region (menu). Not really done
                yet.
10/11/2001 1.13 Fixed restorewindows for max'd windows
10/11/2001 1.12 Hilite foreground window. RestoreWindows() on close and
                resize: puts window in same position on current desktop.
10/11/2001 1.11 Findwindow
10/11/2001 1.10 Min scroll, online help
10/11/2001 1.9  Never take focus. Caption is gone. Ctrl-click moves
10/11/2001 1.8  Shift click, initial RECT changes
10/09/2001 1.7  Added fake spinners in options, mouse scroll option
10/09/2001 1.6  Added mouse drag
10/09/2001 1.5  Added mouse clicking in sdesk to move visible SDesk
10/08/2001 1.4  Windows scroll, quitting resets. All works well.
10/07/2001 1.3  Using options, visible rect working (scrolls a bit slow...)
10/07/2001 1.2  All moving messages work now.
10/07/2001 1.1  Initial revision - proof of concept is proved. I have an
                infinite desktop now, no features.
FAQ and Known Bugs
Bug: Some windows do not like being moved off of the visible desktop. For example, I've got the Windows Media Player running right now, and when I try moving it off the visible desktop, it starts resizing itself. Fascinating. I guess some applications are keeping track of their own position and try to correct what it assumes to be an error, and it considers it an error to be moved off of the screen. Most apps don't do this, and furthermore, most of the ones that do won't correct a problem unless the app window is active. WMP goes crazy regardless. Emacs windows correct the "problem" only if the window is maximized. Winamp sometimes gets squirrelly. Maximized windows in general will try to stay in the visible area, but there's an option to unmaximize a window, but keep the size, before trying to move it. I'm working on these things. In the meantime, whenever I run e.g. Winamp I lock it (default W-down) so SDesk ignores it.

Bug: Some windows move when SDesk ends, even though they shouldn't. They're slightly off the screen, so SDesk thinks they're completely off the screen. It's sort of a known bug.

Bug: On a related note, some windows that should move when SDesk ends apparently don't move. There are two problems here. One is that a window does move as it should, but moves under the Windows Taskbar and is hidden from view. The other problem is that minimized windows aren't moved when SDesk ends, so if they're out of the visible region when SDesk is running, they remain off of the visible region even after SDesk ends. There's a fix in place for this that I have turned off, because it causes a worse problem.

Q. "Move to Next/Prev Named Region" doesn't always work.
A. That's not a question.
Q. Why doesn't "Move to Next/Prev Named Region" always work?
A. I'm glad you asked. The "current" region being viewed is determined by the upper left hand corner of the viewable desktop. If the upper left corner is obstructed by another region (since regions can overlap, see) then SDesk thinks you're looking at _that_ region. So, the prev/next region becomes whatever region was created before/after that one. If you normally have the toolwin hidden, turning it on and watching how it goes through regions will make this explanation a lot clearer. It's not a bug, it's a loose nut on the keyboard. It's helpful to have non-overlapping regions, even though you can.
You can use the Find Region action to move to a hidden or overlapped region.