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. |
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. |
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:
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. |
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:
![]() These menu items do the following:
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. |
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.
|
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.
|
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:
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/ |
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 |
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.
|