WindowMan
by Chris Bell

If you have a large number of windows open at the same time then your Desktop
can become very cluttered and even a 21" monitor doesn't seem to be large
enough. And a lot of time can be wasted looking for windows which have got
lost behind other ones.

WindowMan can help in 2 ways...

    It allows you to search for, and retrieve, individual windows more
     quickly, even when they have become completely hidden.
   
    It provides you with extra desktop space. You can distribute your
     windows over several different screens and view just a few of them at
     a time.

WindowMan installs itself on the icon bar next to the Display Manager or
Palette Utility and it can be configured to suit your own requirements.

Although it has been designed to be as intuitive as possible, some of its
finer points may be missed unless you have read through this manual. Acorn's
Interactive Help is supported, and help is also available from the icon bar
menu.


Inspiration
===========
WindowMan was originally inspired by the inability to connect 2 different
monitors to an Acorn computer, like you can to a Mac, and by the perceived
shortcomings and complications of other RiscOS virtual desktops.

I find WindowMan particularly useful when preparing my annual set of
accounts, when I need to have 25 spreadsheet pages open at the same time. I
open them all together in the Primary Screen and work on just one at a time
in the Secondary Screen, fetching and sending them back as needed.


Computer Setup
==============
WindowMan requires a minimum of RiscOS 3.10 and a hard disc drive.

Your computer must be configured to allow windows to move beyond the edge of
the screen in all four directions. This may be set by selecting both 'Allow
windows off-screen' options from the 'Windows' section of the standard RISC
OS 'Configuration' application.

You will be warned if your configuration prevents any WindowMan feature from
working properly.


Fundamentals
============

Window Manager
--------------
Most of WindowMan's features can be accessed from the Window Manager,
which is opened by clicking on the icon bar icon with Select or Adjust. 
Its various options are explained in more detail below.


Current Screen
--------------
The Current Screen, which you are looking at now, is just a window onto
a much larger Desktop. This comprises an array of individual screens
stretching up, down, left and right...

                :            :            :            :
              
                :            :            :            :
                :            :            :            :
                :            :            :            :
                :            :            :            :
              
                :            |            |            :
                :            |  Current   |            :
                :            |  Screen    |            :
                :            |            |            :
              
                :            :            :            :
                :            :            :            :
                :            :            :            :
                :            :            :            :
              
                :            :            :            :



Primary, Secondary and Tertiary Screens
---------------------------------------
The original single Desktop screen is called the 'Primary Screen'. You may
set another two as your 'Secondary' and 'Tertiary' Screens and can then
switch between them whenever you like.


Moving windows
--------------
Windows can be moved between screens and can even straddle the boundaries
between them. They are deemed to be in the Current Screen if their top
lefthand corners are visible.


Icon bar icon
-------------
The icon contains the coordinates - 'horizontal, vertical' - of the Current
Screen relative to the Primary Screen (which has coordinates '0,0'). When you
move to the Secondary and Tertiary Screens, the coordinates are displayed in
red and green respectively.

The grid pattern on the icon indicates where the Primary Screen is relative
to the Current Screen. The Primary Screen is shown with a bold outline and
other screens have dotted outlines.


Icon bar menu
-------------
Clicking on the icon with Menu opens a menu from which the 'Window Manager',
'Choices' and 'Help' windows can be opened.

Selecting 'Quit' first restores all windows to the Primary Screen, as if
'Restore to Primary' had been selected from the Window Manager. (Note that
windows are also restored when you quit from the Task Manager, but NOT when
using 'Alt-Break'.)


The Window Manager
==================
The Window Manager is normally opened by clicking on the icon with Select or
Adjust and most of WindowMan's actions can be accessed from it directly.
Unlike other windows, it always remains in the Current Screen and will follow
you if you move to a different screen. All buttons take effect immediately.

If 'Select closes Window Manager' has been selected from 'Choices' then using
the Select button on any option will close the Window Manager. Adjust always
keeps it open.


Current Screen
--------------
Clicking on 'Primary', 'Secondary', or 'Tertiary' will switch to those
screens.

'Fix current' fixes the Current Screen and disables all screen switching and
scrolling, although you can still move windows to and from other screens.

'Icon bar' toggles the icon bar from the bottom to the top and back again, in
the same manner as pressing Shift-F12.

The other 4 buttons move windows within the Current Screen. However if a
window's top lefthand corner isn't visible, then it isn't deemed to be in the
Current Screen and won't be affected.

'Top to btm' and 'Btm to top' move windows to the bottom and top, as if you
had clicked on their back icons or titlebars, further clicks fetching further
windows in turn. This is useful for retrieving covered windows. Unless
'Select closes Window Manager' has been selected from 'Choices' (see below),
clicking with Adjust instead of Select swaps the effects of these two
options.

'Reverse' reverses the stacking order of the windows. (Bottom to top, top to
bottom, etc). Use the next option to tidy them if necessary.

'Tidy' moves every window, laying them out from the top lefthand corner of
the screen so that every titlebar can be read. The stacking order remains
unaltered. This is useful for locating covered windows.


Send windows
------------
Windows can be sent from the Current Screen to the Primary, Secondary or
Tertiary Screens, placing them on top of any windows which were already
there. Their positions will be the same as those they occupied in the Current
Screen. If a window's top lefthand corner isn't visible, then it isn't deemed
to be in the Current Screen and it won't be affected by these options.

The 'Top' buttons will send the Current top window to the Primary, Secondary
or Tertiary Screen.

The 'All' buttons will send all Current windows to the Primary, Secondary or
Tertiary Screen.

Pressing Shift at the same time as using these options will also switch to
the destination screen at the same time.


Fetch windows
-------------
Windows may be fetched from other screens and are placed on top of any other
windows in the Current Screen. If they were already in the Current Screen
they are brought to the top.

Their positions will normally be the same as those they occupied in their
original Full Screens. However if the 'Move fetched windows on-screen' option
has been selected from 'Choices' then any window which would otherwise be
partially off the screen is moved back in again.

The 'Top' buttons will fetch the top window, if there is one, from the
Primary, Secondary, Tertiary or all other screens.

The 'All' buttons will fetch all windows, if there are any, from the Primary,
Secondary, Tertiary or all other screens.

The 'Btm' button will fetch the bottom window wherever it is.

'Focus' will fetch the window with the input focus, if there is one.  (This
is the one with a light yellow titlebar.)

The 'Search' button opens a menu of all tasks which currently have windows
open. Selecting one of them will fetch every window that belongs to that
particular task. Individual windows can be fetched from the submenus which
show the titles of all windows belonging to each task.


Restore all to Primary
----------------------
This switches back to the Primary Screen. Every window which was not already
there is fetched and 'tidied' into the bottom third of the screen, on top of
those that were.


Close
-----
This closes the Window Manager window.


Icon bar shortcuts
==================
The icon bar icon provides a shortcut to some of the Window Manager functions
and adds a few more.


Primary / Secondary / Tertiary switch
-------------------------------------
Pressing Shift while clicking in the centre of the icon switches instantly
between these three screens. The Select button cycles in the following order
and Adjust cycles in the opposite order:

 Primary => Secondary => Tertiary => Primary => etc.

If you are not already in one of these three screens, then Shift clicking
with either button will initially return you to the Primary Screen. This is
useful for returning 'Home' quickly.


Scrolling into an adjacent screen
---------------------------------
You may scroll into an adjacent screen by clicking on one of the borders of
the icon bar icon while pressing Shift and/or Ctrl. Select scrolls into the
adjacent screen and Adjust scrolls in the opposite direction.

A 'Full Scroll' is achieved by pressing Shift while clicking on a border.
Scrolling stops when you reach the outer edge of the Desktop.

An 'Extended Scroll' is achieved by pressing Ctrl while clicking on a border.
In this case, the next row or column will be started if you try to move
beyond the outer edge of the Desktop. Thus every screen can be displayed in
quick succession by holding down this combination for more than a second or
so.

A 'Partial Scroll' is achieved by pressing both Shift and Ctrl while clicking
on a border. Instead of scrolling a whole screen at a time, you will move by
just a small amount and the offset screen boundaries will become visible. The
position of the icon coordinates indicates which Full Screen they actually
refer to.


Switch and Fetch / Scroll and Fetch
-----------------------------------
Pressing an Alt key while switching screens, full scrolling or extended
scrolling from the icon also causes a window to be fetched to the new screen.
The left Alt key fetches the overall bottom window and the right Alt key
fetches the current top window.

By repeatedly scrolling and fetching the bottom window (with the left Alt
key), you can place a series of windows on successive screens.  These may
then be viewed in the same order by just scrolling.


Mouse Scrolling
===============
You can also set up WindowMan to scroll whenever you move the mouse pointer
to the edge of the Current Screen.

This facility is useful for dragging windows across screen boundaries into
other screens. (However some windows are known to misbehave - if one refuses
to be dragged with Select, try Adjust instead. Or drag it as far as you can,
release it, and then pull it the rest of the way from the next screen.)

The exact effect depends upon which option you select from the 'Choices'
window, which is opened from the icon bar menu, as follows:


Auto full
---------
Moving the mouse pointer beyond the edge of the screen will cause Full
Scrolling.

You can override Full Scrolling by pressing the lefthand Shift and Ctrl keys,
in which case Partial Scrolling will occur instead.


Auto part
---------
Moving the mouse pointer near the edge of the screen will cause Partial
Scrolling - the closer the pointer is to the edge, the faster the scroll.

You can override Partial Scrolling by pressing the righthand Shift and Ctrl
keys, in which case Full Scrolling will occur instead.


Shift+Ctrl
----------
Mouse Scrolling will only occur if Shift and Ctrl are pressed. The lefthand
keys cause Partial Scrolling and the righthand keys cause Full Scrolling.


Disable
-------
Mouse Scrolling is inhibited altogether.


Choices
=======
The 'Choices' window is opened from the icon bar menu and allows you to
configure WindowMan to suit your own way of working. 


Restrict desktop
----------------
Use this option to restrict the overall size of your Desktop. Click on the
arrows to alter the number of screens in each direction - the total number of
screens is shown in the window on the right.

If you deselect this option, WindowMan defaults to 5 screens in each
direction, giving a total of 121 screens. You may also restrict your desktop
to just 1 screen (the Primary Screen) in which case scrolling is disabled
altogether.


Secondary screen / Tertiary screen
----------------------------------
These options determine whether these named screens are available or not. If
they are then their coordinates are shown and may be altered by clicking on
the arrows. The Current Screen is automatically inserted upon first selecting
these options.


Move fetched windows on-screen
------------------------------
After selecting this option, any window that is fetched to the Current Screen
will be moved, if necessary, so as to be completely visible.  (This option
only affects windows which would otherwise be partially off-screen.)


Select closes Window Manager
----------------------------
Choose this option to close the Window Manager whenever one of its buttons is
clicked with Select. Adjust will keep it open, just as with menu entries.


Mouse scroll / Drag
-------------------
Select one of these options to choose how to scroll with the mouse, as
described above under 'Mouse Scrolling'.


Exceptions...
-------------
This opens the Exceptions file for editing - see below.


Save choices / Cancel / OK
--------------------------
'OK' and 'Save choices' both implement your choices, the latter also saving
them as defaults for use in the future. 'Cancel' undoes any changes you have
made and redisplays the current configuration.

Clicking on these 3 buttons with Select closes the window - clicking with
Adjust leaves it open.


Exceptions file
===============
Although WindowMan handles most windows correctly, certain applications
require their windows to be processed differently to others. 'Panes' and 'hot
key' windows, for example, don't always behave in the same way.

To cope with these variations, WindowMan has an 'Exceptions' file which
alters the way in which certain windows are processed. Some exceptions are
already setup and you may add others if you find windows which misbehave.

The Exceptions file is accessed by clicking on 'Exceptions...' in the
'Choices' window, from where it may be edited. Further instructions are given
inside the file itself.

A certain amount of experimenting may be necessary to achieve the desired
results. Most, but not all, windows can be persuaded to cooperate with
WindowMan. A few known problems are noted in the file.


Hints for using WindowMan
=========================
Although WindowMan can handle up to 121 separate screens, it is unlikely that
you will want to use that many. The 'Current Screen' options in the Window
Manager are still useful even if you restrict your Desktop to just one screen
and deselect both Secondary and Tertiary Screens.

You can set your Secondary and Tertiary Screens outside the area you can
scroll in if you wish. And you can always return to the Primary Screen from
anywhere else with just one Shift click on the centre of the icon.

Windows can be hidden, if required, by placing them on a screen which is then
made unavailable by restricting your Desktop.

If you try to open a window which you have forgotten is already open on
another screen then nothing is likely to happen. Use one of WindowMan's
facilities to find and fetch it or, if all else fails, use 'Restore to
Primary'.

Not all applications handle special windows, such as panes, in the same way.
If you find that a particular window misbehaves then you can try to tame it
by editting the Exceptions file.

You can distribute a series of windows over a number of screens by repeatedly
scrolling and fetching the bottom window (by clicking on a border of the icon
bar icon whilst holding down Ctrl and the left Alt key). They can then be
viewed them in the same order by just scrolling (without the Alt key).


Notes
=====
1. Pinned icons and menus cannot be moved to other screens. They always
appear in the Current Screen.

2. Windows remain in their correct screens when you change to a different
screen resolution (mode) but they are repositioned and/or resized if they
would otherwise spill over into an adjacent screen.

3. Disable Mouse Scrolling if you are not going to use it as it may slow up
your computer for other applications.

4. By default, only the first 30 tasks and windows are displayed in the
'Search' menus and they will indicate if there is more data that could not be
shown. (This figure can be editted at the start of !RunImage if you know what
you're doing.)


Feedback
========
I would be interested to hear of any suggestions you might have for
improvements to WindowMan, and of any additional entries that you make in the
Exceptions file.

Bug reports are also welcome - please supply as much detail as possible,
including a list of all the tasks running at the time of the problem, your
'Choices' settings and any additions you have made to the 'Exceptions' file.

   Chris Bell
   Highpath Engineering
   Cornant, Cribyn, LLANBEDR PS, Ceredigion, SA48 7QW, UK

   email: chrisbell@argonet.co.uk

Copyright  RISC User 1999
