# 7 th software · MoreDesk

Contents

- Introduction
- Installation
- Getting Started
- Backdrop Association
- Cloning Backdrops
- Fetching Windows - introduced in version 1.02
- The ‘Micro’ View - introduced in version 1.03
- Flashing Alerts - introduced in version 1.04
- Switching Between Windows - introduced in version 1.08
- eSpeak Support - introduced in version 1.18
- Automation Management - introduced in version 1.15
  - The Manage Desktop Window
  - Auto-fetching Windows
  - Auto-opening Directories
  - Auto-running Applications
  - Auto-loading Files - introduced in version 1.17
- List of Mouse Controls
- List of Keyboard Shortcuts
- Window Statistics
- Pane Windows
- Performance Issues
- Command Line Interface
- SWI Interface for Programmers
- Customisation Guide
- Frequently Asked Questions - e.g. how to report a fault
- Other Virtual Desktop Programs
- Version History
- Licence

## Introduction

This program allows you to organise your windows over a space which is larger than the normal desktop. It does this by creating a grid of desktop spaces and by allowing you to select any one to look at. You can switch between them whenever you like.

You can easily move windows between desktops and get a view of the entire desktop space. You can even have different sets of pinboard icons and a different backdrop image for each of the desktops.

Often, you can use a specific desktop for a specific purpose. For example, you might have one where you deal with email and for reading newsgroup posts. Another desktop might be used for web browsing and yet another might have some word processor documents open that you are reading. Desktops can be given names to help you to identify them quickly.

With MoreDesk, it's easy to do this and get a quick overall view of all of your desktops, switch between them and move windows around the whole space. You can even have windows open in pre-defined locations on the screen and have files and applications start when you enter a desktop.

The MoreDesk main window

| MoreDesk fully supports the interactive !Help application so you should consider loading it while you're getting to grips with it!
| MoreDesk supports Jonathan Duddington's eSpeak application.

## Main Features of MoreDesk

- Configurable number of desktops
- Assign a name to any desktop
- Associate pinboard with each desktop
- Associate backdrop image with each desktop
- Pinboard and backdrop can be copied and pasted between desktops
- Scaled view of entire desk space
- Real-time update of scaled view
- Drag and control windows from scaled view
- Drag multiple windows at the same time
- Snap windows to desktop edge or top of iconbar
- Can switch desktop in four ways:
  - double-click in scaled view
  - alt and cursor key
  - alt and move mouse to screen edge
  - from the command line
- Comprehensive keyboard shortcuts
- Supports eSpeak to speak various bits of information
- Full interactive help support
- Broad range of configuration options
- Links directly with !Configure backdrop setup plug-in
- Supports the ConfiX configuration application

## Guided Installation (Recommended)

MoreDesk comes with an installer called !Install which is run by double-clicking it in the filer window. This will install all of the main components required by the application (e.g. !MoreDesk, !Routines and !ConfiX).

If you have existing copies of any of the above software, the installer will compare the versions and only install if your existing copies are older than those required. The existing copies will be backed-up into the directory ‘$.MD_Backup’ automatically.

## Manual Installation

MoreDesk can also be installed manually by placing the !MoreDesk application somewhere on your hard disc, such as inside ‘$.Apps’, and double-clicking it.

| MoreDesk requires the !Routines libraries, which are available from:

http://www.7thsoftware.co.uk/download.html

These can also be placed in ‘$.Apps’ or the more usual location for this sort of thing is in ‘$.!Boot.Resources’. Double-click !Routines once you've copied it into the desired location.

| MoreDesk also makes use of the ConfiX program from:

http://www.xat.nl/en/riscos/sw/confix/

This is used to provide a front-end for configuring the various options in MoreDesk. !ConfiX would normally be installed into ‘$.!Boot.Resources’.

## Additional Information

MoreDesk requires RISC OS 4 or later, a recent SharedCLibrary, WindowManager 3.80 or later and the Universal Boot Sequence. It also makes use of ConfiX for configuration.

MoreDesk includes an installer which may install ConfiX, the required SharedCLibrary and associated modules. It includes the C Library and CallASWI module updates from the old Castle Technology web site. These updates were known to be correct as of 24th March 2006.

| MoreDesk is fully 32-bit safe and should work equally well on 26-bit or 32-bit RISC OS systems.

## Getting Started

When run for the first time, MoreDesk will add its icon near to the right-hand end of the iconbar. Left clicking on the iconbar icon will open the main window (you can also open and close the main window by pressing Ctrl-Alt-Tab).

The MoreDesk main window

The main window contains a scaled-down view of the entire desk space, showing each desktop and all of the main windows that are currently open. By default, the desk space consists of the 'home' desktop and one further desktop to its right.

The desktop which is currently being viewed is called the 'home' desktop because that is the one which will be restored when MoreDesk quits. You will notice a red square highlighting the current desktop. This highlight can be moved around with the cursor keys. Pressing 'return' will select the desktop which is highlighted.

## Naming Desktops

Desktops can be assigned a name. This is purely for your information to help you to remember which desktop is which. It is often helpful to use the same desktop(s) for a specific set of tasks so that you can always remember where to look to find certain windows. Desktop naming will help with this.

Giving a desktop a name

In the example above, we have opened the main menu over the ‘home’ desktop and we are going to give it the imaginative name of ‘Home’ by typing the name in and either left-clicking on the name or pressing Enter.

A desktop with a name

It is as simple as that! You have given a desktop a name. The name doesn't have to be one word - it can be anything up to around 250 characters. However, long desktop names will tend to be clipped to fit into the image of that desktop in the main window view (although the text is wrapped to reduce this effect).

Some users may find that the text doesn't look as good as pictured above; the edges of the text may appear ‘fuzzy’. If this is the case, you will need to switch on the RISC OS “Font Blending” technology. The easiest way to do this is to download and install Paul Vigay's very handy MiscSetup plug-in. Then you can use the normal Configure system to switch Font Blending via Misc Setup.

The foreground and background colour of the text can be controlled using the standard Pinboard Setup configuration plug-in - this has options for setting the text and background colours. Each desktop has its own configuration.

Note: if you have backdrop association disabled, you may find that you cannot configure the text foreground and background colours in that way.

## Managing Open Windows

Any other windows which are currently open will be reflected in the main window view as scaled-down pictures of windows. Each window has an icon at its centre to indicate the task to which that window belongs. MoreDesk will try to make that icon smaller to fit into different sizes of windows, as below.

Windows with task sprites

In the main window, you can drag and drop windows to move them around the desk space. You will also notice that this scaled-down view updates as you move windows around in the normal way (e.g. by dragging their title bar).

Start a “rubber box” drag in a space between windows and extend it until it touches the windows which you want to select. You can right-click on other windows to add them to the selection.

Selecting windows with a rubber box

Once a window has been selected, it will turn yellow (or whatever the configured selection colour is). You can right click a selected window to deselect it, or left click in a space between windows to deselect them all.

Selected windows turn yellow

Once you've selected the windows you want to move, drag them over to the location where you want them to be placed. Press escape at any time to cancel the drag operation.

Dragging a selection of windows

When you finish the drag operation, the windows themselves will be moved to the place where you indicated.

Drop the selection into another desktop

Note: you can set some options in the MoreDesk configuration which will make windows which are dropped near to the edge of a desktop, or near to the iconbar, snap up to that edge. This helps to stop windows from straddling the boundary between desktops by small amounts, which can be irritating. This feature only applies to windows being moved via MoreDesk, not to normal window drag operations (e.g. by dragging the window's title bar).

From the main menu, you can select groups of windows. This is particularly handy if you want to relocate all of the windows in a given desktop to another desktop but preserve their relative position.

Selecting windows

Also using the main menu, you can close all selected windows, iconise them, push them to the back or pull them to the front of the window stack. You can even force selected windows to the centre of the screen or fetch them from another desktop whist preserving their position relative to the desktop origin.

A good example of how to do this in practice is to do the following:

1. Move into an empty desktop
2. Open the MoreDesk main window
3. Click in a different desktop (one with windows in it)
4. Select all windows in that desktop (ctrl-D)
5. Fetch the selected windows into the current desktop (ctrl-E)

You can see that all of the windows move into the current desktop but maintain their position relative to one another and the edges of the desktop. A handy alternative to move the selected windows by increments of one desktop is to hold down the shift key and press the cursor keys.

One more handy thing you can do is to select all windows belonging to a specific task (e.g. the Filer) and close them. Have a look around the main window's menu to see how this is done.

## Backdrop and Pinboard Association

There are lots of options in the MoreDesk configuration which you can change to adjust the behaviour and appearance of the main window. Don't be afraid to have a play with these options to see what they do. Hint: right-clicking on the “Save” button in the choices window keeps the choices window open so you can immediately see the effects of your changes in the main window while you tweak values and settings.

In its initial (default) configuration, MoreDesk doesn't keep a different set of pinboard icons or backdrop image for each desktop. To enable these features, open the menu over the iconbar icon and select “Choices...” or open the menu over the main window and select “MoreDesk Setup...”.

How to start the configuration plug-in

Go to the tab for controlling pinboard and backdrop settings, switch them on and click “Save”.

Backdrop and pinboard association

Note: if you get an error like “One or more windows have been left in an unreachable position” you should read the second point on this page.

At this point, you should get a scaled-down version of your backdrop image displayed for the current desktop in the main window. This may take a few seconds!

Setting the first backdrop

Selecting the other desktop (e.g. alt-double click in it) will return you to an empty desktop with no pinboard icons or backdrop image. You can set the backdrop image for this desktop by using the Pinboard Setup !Configure plug-in as normal. Opening the menu over the MoreDesk main window and selecting “Backdrop setup...” will also launch this plug-in.

Starting the pinboard setup plug-in

Note: when you set the backdrop image, you will always be doing so for the current desktop, not the one with the red highlight (this is not the case for cloning a backdrop - see the next page for more info).

The pinboard setup plug-in

Once you've chosen an image and clicked “OK” in the plug-in, you should see it appear in the MoreDesk main window. This may take a few seconds!

Both backdrops are set

Pinboard icons can also be associated with a specific desktop. This is very useful if you only want certain things pinned to the pinboard on a given desktop (e.g. you might have a “web browsing” desktop that includes pinboard icons for all of your favourite Internet-related applications).

If you have a common set of pinboard icons which you'd like to have on all desktops, you can ‘clone’ the pinboard from one desktop to the next across all of your desktops and then go back through them adding any custom icons.

When pinboard association is switched on, MoreDesk will spot when you save the pinboard and make a note of the new setup for the current desktop. This means to can temporarily add something to the pinboard, then change desktop and change back again to remove it.

Unfortunately, due to the way the RISC OS pinboard works, you cannot associate iconised windows with a desktop. If you iconise a window onto the pinboard, then it will be on the pinboard for all desktops, irrespective of your MoreDesk configuration.

## Cloning Backdrops

When you extend your desk space, by adding more rows and columns of desktops, you may find that you want to copy the pinboard or backdrop image from one of your existing desktops into a new desktop. In the examples below, we add a new row of desktops above the initial two.

Start the configuration plug-in

Click on the first tab, which has a little monitor as an icon, (see the diagram below) and add an additional row of desktops ‘above’. Then click on the “Save” button.

Adding a row of desktops

Note: if you get an error like “One or more windows have been left in an unreachable position” you should read the advice on this page. You will now see a new row of blank desktops above the current two.

In this example, we clone the backdrop from the bottom-right desktop by opening the menu over the desktop we're copying (with the middle mouse button) and by selecting “Clone->Copy backdrop”.

The “Clone” menu

Once copied, you can open the menu again over another desktop (the top-left one in this example). Then select “Clone->Paste backdrop” to paste it into that desktop. Note: you don't have to be in the desktop to paste a backdrop or pinboard to it.

Paste a backdrop

Once pasted, MoreDesk will update the stored information for that desktop and update the main window to reflect the new backdrop selection. Note: this may take a few seconds.

The copied backdrop is pasted

The process for copying and pasting sets of pinboard icons is essentially the same. There are some caveats though; MoreDesk does not reflect pinboard icons in its main window and iconised windows cannot be associated with any specific desktop.

## Fetching Windows

Sometimes, it is possible that a window you want to open is already open on another desktop, but you're not sure which one. This is most noticeable with windows which are accessed from an icon on the iconbar, such as a filer window for the root directory of a hard disc.

MoreDesk has the facility to ‘fetch’ windows from their current location onto the current desktop. It can be accessed from the menu over the main window or from the MoreDesk iconbar menu.

Navigating to the Fetch menu

The fetch menu lists all tasks which currenly have one or more windows open (and which MoreDesk has not been told to ignore). Under each task is a submenu listing the windows by title. Any windows which do not have a title will simply show ‘’. The menu of tasks and menu of windows are both sorted alphabetically.

Click on the entry for the window of interested and it will be moved from where it is onto the current desktop. The fetched window is also brought to the front of the window stack.

You can also fetch windows into the current desktop by selecting them in the main window view and selecting “Window”->“Fetch” or by pressing ctrl-E.

Some windows in the fetch menu are shown in grey. This indicates that the window is already in the current desktop and does not need to be fetched. Other windows may appear in a red colour which indicates that a flashing alert has been raised for that window.

## The 'Micro' View

There are several ways of switching between desktops in MoreDesk. You can alt-double-click the desired desktop in the main window, or use the cursor keys to select the desktop in the main window and then press return.

Other ways do not require the main window, such as by holding down the ‘alt’ key and moving the mouse pointer to the edge of the screen or by pressing a cursor key with the alt key held down.

All of the above methods require use of the keyboard, sometimes in combination with the mouse. In MoreDesk version 1.03 or later, there is a method of switching desktop which only requires the mouse - the ‘micro’ window.

If you adjust (right) click on the MoreDesk iconbar icon, a small window will open that represents the entire desk space. This is a very simple view which does not attepmt to represent the location of any open windows.

An example of the micro window

If you select (left) click on a desktop illustrated in the micro window, MoreDesk will move you onto that desktop and close the micro window. Adjust clicking in the micro window will change desktop and keep the micro window open. The current desktop is always highlighted in the micro window.

You can close the micro window by either adjust clicking on the iconbar icon again or by moving the mouse pointer over the micro window and then off it.

## Configuring the Micro Window

New to version 1.10 of MoreDesk is the ability to configure various features of the micro window. For example, you can change the colours used for things like the background, grid lines and current desktop highlight.

Micro window configuration (1)

You can also enable a highlight for the ‘home’ desktop which is useful as a point of reference for navigating around the micro window view when you have many desktops available.

The configuration windows also allow you to give the micro window a border area which helps to stop the window from closing if you accidentally move the mouse pointer over the edge of the window when trying to select a desktop near the edge of the desk space. Note: you can select desktops by clicking in the border area - MoreDesk will move to the desktop nearest to the click point.

Micro window configuration (2)

An example of the micro window as it could appear in a more complex virtual desktop setup, including the default eight pixel wide border area, is given below. Note that there is an icon in certain desktops. In the standard configuration, this icon represents the task which owns the top-most window in a given desktop (if any).

A larger micro window

## Flashing Alerts

MoreDesk includes a feature which is available to third party software developers which can be used to alert the user to an event which may require their attention. It does this by flashing the relevant window in the desk space view and by flashing the desktop containing the alert window in the micro window. E.g.

A flashing alert

In the example, above the user is working in the central desktop of nine desktops when an alert is raised by a window in the top-left desktop. This alert state may clear itself after a time (if the program which raised the alert so chooses) or it can be cleared by the user by switching to the desktop containing the alert window (or by moving the alert window into the current desktop).

You can start a flashing alert from the command line using the *MoreDesk_Flash command. This allows you to create custom flashing alerts for your own purposes. See the section on the Command Line Interface for more information.

## 7th software - MoreDesk: Switching Between Windows

MoreDesk includes a factility which allows you to very quickly switch between which window is currently at the top of the window stack with input focus. If the desired window is on another desktop, MoreDesk will automatically switch to the correct desktop.

This facility is similar to the alt-tab function in Windows or to CoolSwitch or similar programs for RISC OS. It has the advantage of being integrated into MoreDesk so it can switch desktop as required. To activate the switcher, press alt-tab (note: this keyboard shortcut can be changed to alt-ctrl-tab from the MoreDesk choices). A window will open, similar to the one in the illustration below.

The switcher display shows all of the open windows, listed from the top-most to the bottom open window (top left of the display to bottom right). It does not include any iconised windows or windows which MoreDesk has been told to ignore.

By repeatedly pressing alt-tab, the selected window will move on to the next one down in the window stack. As soon as the alt key is released, the selected window is brought to the top of the stack, given input focus and the desktop will be switched if required.

You can also navigate around in the switcher display using the cursor keys, but keep the alt key held down until you are happy with your selection. You can press the ‘Escape’ key at any time to close the switcher window without performing a switch.

The switcher window

If any windows are in a ‘flashing’ alert state, the top-most alert window will be the one initially selected when you open the switcher display. Otherwise, the window below the top-most open window is selected - this allows you to switch between a couple of open windows at the top of the stack simply by pressing alt-tab once.

If the switcher feature is not required, it can be disabled from the MoreDesk choices window. You can also force it to be activated using alt-ctrl-tab. This will make opening the MoreDesk main window use alt-tab instead. From the choices, you can also change the number of windows in the switcher display (fewer windows means they are plotted larger).

Switcher window configuration

## eSpeak Support

| MoreDesk supports Jonathan Duddington's excellent eSpeak application for a number of events and bits of the user interface in order to provide spoken information about various things which are going on within MoreDesk.

Examples of the spoken events are given below. More events may be added in the future.

- MoreDesk starting and quitting
- Selecting and deselecting windows in the main window view
- Using MoreDesk to close, iconise, fetch and move windows
- A new flashing window alert has been raised
- Navigating through the window stack in the switcher window
- Changing desktops

eSpeak support is off by default but it can be activated and configured through the MoreDesk choices window, as illustrated below.

eSpeak configuration

You can also assign a ‘voice’ and speed to the way that eSpeak says the messages from MoreDesk. Below is a list of the voices which MoreDesk supports (although your eSpeak installation may actually support more or fewer voices than this list).

eSpeak voices

If MoreDesk were to be translated into another language, it would be most likely to be one of those listed. In that instance, speaking the MoreDesk messages with the appropriate voice will get the best results. In the mean time, it is simply entertaining to select voices such as Northern English, English (US) or even Scottish.

Due to limitations in the way eSpeak is implemented, there may be conflicts with any other applications on your system which are also trying to use Speak (e.g. if you have Pluto and it is configured to use eSpeak). These conflicts are not serious but may result in the MoreDesk speach configuration being overridden by the other application, or vice versa.

## Automation Management

Desktop automation allows MoreDesk to perform some useful actions when you enter or leave desktops. There are four main types of action, each can be configured using its own subwindow, described in more detail in the following pages:

- Auto-fetch
  Fetching windows from other desktops
- Auto-open
  Opening and closing filer windows
- Auto-run
  Running and quitting tasks
- Auto-load
  Running or loading files

Each desktop has a list associated with it that tells MoreDesk what actions you want it to perform when you enter or leave that desktop. This list can be edited by opening the automation management window. Select “Automate...” in the MoreDesk iconbar menu or highlight a desktop in the main window and select “Desktop setup...” from the main menu.

How to start automation management

You will then be presented with the automation management widnow. Note the title of the window; this tells you which desktop is being managed (the ‘home’ desktop is 0,0).

The “Manage Desktop” Window

Note: you can also get to the automation window by dragging an application or directory and dropping it into the main window. This will start the automation management process for the desktop that you dropped onto (for an application you will be adding an auto-run event, for a directory you will be adding an auto-open event).

Once this window is open, you can either drag and drop applications, files and directories to it in order to create an action for them or you can use the icons at the top of the window to create new auto-fetch, auto-open, auto-run and auto-load actions. The area in the middle contains a list of actions for the desktop, these can be selected, deselected, reordered and removed.

A special note for the ‘home’ desktop is that when you start MoreDesk, this counts as entering the home desktop. As such, if you start MoreDesk as a part of your boot sequence, you can use automation management of the home desktop to manage which other applications are started when the machine boots. MoreDesk does not consider itself being quit as leaving the home desktop.

There is also a “snapshot” feature which will add an auto-fetch event for every open window in the current desktop, an auto-open event for every open directory in the current desktop, an auto-run event for every application* currently running and an auto-load event for any files which are loaded (into windows in the desktop).

As it is more usually useful to only take snapshots for a particular type of event (e.g. auto-open) at any given time, each of the four subwindows outlined above has its own “snapshot” button for that purpose.

*Not all applications can be added; MoreDesk has to be able to determine the application directory where the application lives. For example, the “Task Manager” application doesn't have a corresponding directory so cannot be associated with an auto-run event.

## The Manage Desktop Window

Below is an overview of how to use the main automation management window.

The “Manage Desktop” Window

## Top panel

- “Auto-fetch”
  Open the auto-fetch subwindow to create a new fetch event.
- “Auto-open”
  Open the auto-open subwindow to create a new open event.
- “Auto-run”
  Open the auto-run subwindow to create a new run event.
- “Auto-load”
  Open the auto-load subwindow to create a new run event.
- Drag to a window which you want to associate with a fetch event.
- Drag to a directory which you want to associate with an open event.
- Drag to a task which you want to associate with a run event.
- Drag to a window for the file you want to associate with a load event.

## Side panel

As you can see in the illustration above, icons in the side panel will be shaded unless it is sensible for them to be used. For example, you must select some events in the list before “Enable” is unshaded and you can only have a single event selected for “Move up” and “Move down” to be unshaded.

- “Edit...”
  Edit the selected event (only one event can be edited at a time).
- “Move up”
  Move an event up the list (top event executes before bottom event).
- “Move down”
  Move an event down the list (bottom event executes after top event).
- “Enable”
  Enabled selected events. These are run when the desktop is entered or left.
- “Disable”
  Disabled selected events. These are never executed.
- “Remove”
  Remove all of the selected events from the list.

## List display

All of the automation events associated with the desktop being managed are listed in this part of the window. You can select events using the mouse, keyboard or menu. You can edit an event by double-clicking on it.

Any changes made to the list will not be fixed unless you click on the “Save” icon (see below).

Hint: drag the scroll bars for the list of events using the right mouse button (Adjust) rather than the left button (Select) so that you can scroll horizontally and vertically at the same time. This is really a RISC OS tip but you may not have known about it!

## Bottom panel

- “Take a snapshot”
  Add all open windows, directories and running tasks (in the current desktop) to the events list.
- “Cancel”
  Close the automation management window and discard any changes which you might have made.
- “Save”
  Save any changes to the events list and close the window.

Taking a snapshot of the current desktop state is much like taking a snapshot in each of the individual automation subwindows and adding all of the results together. However, auto-load events take priority over auto-fetch events so if a window corresponds to a file it will result in an auto-load event, otherwise it will result in an auto-fetch event. It is usually easier to use the snapshot function within the subwindows rather than in this window.

## Auto-fetching Windows

The auto-fetch event is used to force a specified window (or set of windows) to be fetched into a desktop when the desktop is entered. If the specified window is not open, no action is performed.

The “Auto-fetch” Sub-window

Drag the ‘window’ icon from this window onto the window which you want to auto-fetch and the details will be automatically entered into the relevant writeable icons. You can then decide if you also want the auto-fetched window to be moved to the top of the window stack and/or given input focus when you enter the desktop.

Click on the “Add” icon to add the auto-fetch to the list of events associated with the desktop being managed (or to resubmit the event with changes in the case where you are editing a pre-existing auto-fetch event).

Clicking on the “Snapshot” icon will add all windows which are open in the current desktop as auto-fetch events for the desktop which is being managed.

One example of use for auto-fetching is to allow a certain window to follow your movements through some desktops by setting each of the desktops to fetch it. Thus, those desktops can ‘share’ the window.

Another use might be to have certain types of window collected in a desktop, e.g. Zap/StrongEd windows could all be gathered into a single desktop by moving into that desktop. This would be an easy way to ‘garbage collect’ windows which have been left open on other desktops. This is useful to do before shutting the machine down. To do this, leave the window title field blank.

If you only enter a window title and not a task name in this window, the auto-fetch event will fetch all open windows which match that title.

Both the window title and the task name are case-insensitive.

## Auto-opening Directories

Auto-open events allow you to ensure that specified directories are opened in a given desktop (at a specific location and with the required display options). It can also cause these directories to be closed when you leave the desktop.

The “Auto-open” Sub-window

If you drag a directory to MoreDesk, this window will open with a default configuration. If you drag the ‘directory’ from this window and drop it onto an open directory viewer, this window will be filled-in with all of the details for that viewer. This is handy because it will include information such as the position of the window, whether it used “Large icons” and whether it is displaying items sorted “by name”, etc.

You can edit or enter all of this information by hand if you wish. Clicking on the “Add” icon will add the auto-open event to the list for the desktop which is being managed.

The “Snapshot” icon for auto-open events is very useful; when you click it, MoreDesk will add an auto-open event for all directories which are open in the current desktop. That means that next time you boot the machine, you can simply move into that desktop and all of the Filer windows will open in the same place and with the same display options. If you ever change your mind about how you want them to be displayed, you just click the “Snapshot” icon again and “Save” the new information.

One thing to note: if a directory is already open on another desktop when the auto-open event requires it, MoreDesk will simply auto-fetch the directory rather than closing and reopening it. This helps to stop auto-open events from ending up with all of the filer windows being in the wrong stacking order.

The directory name is case-insensitive.

## Auto-running Applications

Auto-run events cause applications to be automatically loaded when you enter a specific desktop. It can also cause them to be quit when you leave the desktop. MoreDesk considers the home desktop to have been entered when you start MoreDesk itself. However, it does not consider the home desktop to have been left when you quit MoreDesk.

The auto-run feature is not intended for running or loading files; it is specifically for starting applications. If you want to ensure that certain files are loaded in certain desktops and that their windows are positioned in certain locations, you should use the auto-load feature.

The “Auto-run” Sub-window

Much like with the auto-open subwindow, if you drag an application to MoreDesk it will add an auto-run event for it to the desktop being managed. Alternatively, you can drag the ‘application’ icon from this window to the application which you want to auto-run.

Both options present a problem to MoreDesk: in the former case, it has to make a guess at what the name of the application will be (as it appears in the list in the Task Manager's “Tasks” window). This can be wrong so you should check it. In the latter case, MoreDesk has to guess where the application directory is (the location of the application on your hard disc) based upon things such as the application's name. This can also be wrong so you should check it.

You will notice an icon next to the application directory writeable icon. This is the “canonicalise” button. By clicking this button, the application's directory name is canonicalised (reduced to it's ‘purest’ form). See below for an example:

“Canonicalising” the application directory

There are pros and cons for canonicalising the application directory name. In its favour, the auto-run event will work correctly even if the application has not yet been ‘seen’ by the filer (e.g. when you've recently rebooted your machine). However, the price you pay for this is that the auto-run event will stop working if you ever 1) move the application or 2) rename your hard disc.

Both the application name and directory are case-insensitive.

## Auto-loading Files

Auto-load events can be used to do two things when you enter a desktop:

1. Run a file (e.g. an obey file, module or a transient utility)
2. Load a file into an editor (and position the editor window)

Running files can be useful if you have a script of actions that you want to take every time a desktop is entered. For example, you might want to set a system variable, play a sound sample or do some specific sequence of actions with WindOpen commands.

Loading files into an editor is useful if you are using a desktop to do some work and you want to preserve your progress so that next time you enter the desktop, you can continue where you left off. This is particularly useful in conjunction with the auto-open events.

The “Auto-load” Sub-window

This window works in just the same way as the other desktop automation subwindows. You can drag a file from a Filer window to MoreDesk in order to add or edit an auto-load event associated with it. Or, you can drag the file icon from this window and drop it onto a file that has been loaded into an editor in order to capture the state of that editor window.

As with auto-run events, you can “canonicalise” the name of the file, which will have the same pros and cons as for auto-run events. The file name is case-insensitive.

The reload option

You can tell MoreDesk to force the file to be loaded even if it is already loaded. This means that MoreDesk will try to load the file even if there is an editor window already open somewhere for the file - i.e. a window with that file's name in the title bar. Where a file is to be run rather than loaded, this doesn't mean much (unless you also happen to have the file loaded into an editor, in which case you want this option to be ticked or the file won't get run).

The close option

It is also possible to ask MoreDesk to close the editor window associated with a file when you leave a desktop. Note: if there are multiple windows open for a given file, only one will be closed (the bottom-most). That may not be the one that MoreDesk caused to load. This will only normally happen if you make a specific decision to load the same file multiple times. If the file is to be run rather than loaded into an editor, this option won't be of any use (unless you also happen to have the file loaded into an editor, in which case that window will be closed - so you should probably leave this option unticked!).

The window position

Finally, you can also specifiy a position for the loaded file to appear on screen. This is optional and can be left blank. When the file is loaded into an editor window, MoreDesk will move the window into the requested position. If the file was already loaded, it will simply ensure that the window is in the correct place. Where a file is run rather than loaded into an editor, the position has no meaning.

Be aware that every time you reenter the desktop, MoreDesk will look through the window stack for the windows you've asked to auto position and ensure that they are repositioned at the co-ordinates you've specified. If you decide to open a new view of a given window (e.g. in Zap using the “new view” ctrl-F4 feature) MoreDesk will only reposition the bottom-most view in the window stack - so be careful to keep the new view(s) higher in your window stack if you want to put them somewhere else or MoreDesk will put them back to the specified co-ordinates on changing back to the original desktop!

If this all sounds a bit complicated, just have a play and you'll soon see what I mean. :)

The format of the position is a space-separated list of OS units, relative to the bottom-left corner of the screen. You can specify the minimum x and y co-ordinates and the maximum x and y co-ordinates of the window's visible area. For example:

100 200 1280 1024

This would place the bottom-left of the visible area of the window 100 OS units to the left and 200 units up from the origin. The top-right of the window's visible area would be positioned 1280 units left and 1024 units up from the origin (not from the bottom-left corner of the window). Note: values can also be negative.

## Run or load?

You are probably wondering how MoreDesk decides whether a file should be run or loaded. It uses exactly the same mechanism as the Filer when you double-click the file, so any auto-load event you have should be thought of as being like you double-clicking that file when you enter the desktop.

In a bit more detail, MoreDesk broadcasts a DataOpen message around all loaded applications to see if any want to load it (into a window, as with an editor). If no application claims the broadcast, the file is run at which point the normal run action for the file is used (which may still load it into an editor, for example with text files). If there is no run action for that file type, you will see an error like: “An application which loads files of this type has not been seen...”. You should ensure that applications which can load/run files in auto-load events have been seen before the event is triggered (possibly by auto-running the application in question).

Note: in order to find a window which represents a file, MoreDesk looks through all open windows that it can see, e.g. that aren't in its Ignore list) from the bottom up for one which has the file's name in its title bar. (MoreDesk also ignores iconised windows, ‘back’ windows and (optionally) ‘pane’ windows.) The file name match is performed using canonicalised file names rather than as an exact match. Some programs (such as some web browsers) don't put the file name in the title bar so MoreDesk will never be able to associate that window with the respective file.

## List of Mouse Controls

The following mouse actions apply at all times when MoreDesk is loaded, not just when the main window is open or has input focus.

Hold down one of the alt keys and move the mouse pointer to the edge of the screen to scroll the desk space in the desired direction by one desktop. E.g. move to the left edge of the screen to move one desktop to the left.

Notice that the mouse pointer moves to the appropriate edge of the new screen. You can do this scrolling even when dragging a window.

The above form of navigation can be disabled from the choices plug-in. Open the iconbar menu, select “Choices...” and click on the tab for “Miscellaneous options” to change this setting.

## Main Window Mouse Controls

Some of these controls apply to clicking on an image of a window (W) in the MoreDesk window, some of them apply to clicking or dragging in the empty spaces (E) and some apply to clicking anywhere in the main window (A):

A) | Alt-select double-click | Select desktop, close main window
A) | Alt-adjust double-click | Select desktop (keep main window open)
W) | Select click | Select the specified window
W) | Adjust click | Toggle selected state of a window
W) | Shift-select click | Pull a window to the front
W) | Shift-adjust click | Push a window to the back
W) | Ctrl-select click | Bring a window to front, give focus
W) | Ctrl-adjust click | Push a window to back, give focus
W) | Shift-ctrl-select click | Iconise a window
W) | Select drag | Drag window(s) without changing order
W) | Adjust drag | Drag window(s) without changing order
E) | Select drag (no window) | Start a window selection dragbox
E) | Adjust drag (no window) | Start a window selection toggle dragbox

## List of Keyboard Shortcuts

The following key presses have an effect when MoreDesk is running, regardless of where the input focus is and whether the MoreDesk main window is open.

Alt-left | Move one desktop to left (close main window)
Alt-right | Move one desktop to right (close main window)
Alt-up | Move up one desktop (close main window)
Alt-down | Move down one desktop (close main window)
Alt-tab | Open the switcher window (or select next window)
Alt-ctrl-tab | Open main window centred, give focus (or close if open)
Alt-Windows | Fetch top-most alert window into current desktop

The alt-cursor form of navigation can be disabled from the choices plug-in. Open the iconbar menu, select “Choices...” and click on the tab for “Miscellaneous options” to change this setting. The alt-tab and alt-ctrl-tab key actions can be swapped by selecting the appropriate option under the ‘Switcher’ tab of the MoreDesk choices.

The miscellaneous configuration options

Attention VirtualAcorn users! It should be noted that VirtualAcorn intercepts the left alt key and tab key combination in order to switch itself between window and full-screen mode. For this reason, MoreDesk will accept either alt key in the above combinations.

The following key presses only have an effect when the MoreDesk main window has input focus.

Up | Move cursor upone desktop
Down | Move cursor down one desktop
Left | Move cursor left one desktop
Right | Move cursor right one desktop
Shift-up | Move selected windows up by one desktop
Shift-down | Move selected windows down by one desktop
Shift-left | Move selected windows one desktop to the left
Shift-right | Move selected windows one desktop to the right
Ctrl-up | Move cursor to top edge of desk space
Ctrl-down | Move cursor to bottom edge of desk space
Ctrl-left | Move cursor to left edge of desk space
Ctrl-right | Move cursor to right edge of desk space
Home | Move cursor to 'home' desktop
Return | Select desktop (leave main window open)
Escape, Ctrl-F2 | Close main window
Ctrl-A | Select all windows
Ctrl-R | Recall any windows which are outside the desk space
Ctrl-Z | Deselect all windows
Ctrl-I | Copy the backdrop image from the highlighted desktop
Ctrl-P | Copy the pinboard from the highlighted desktop
Shift-ctrl-I | Paste a copied backdrop image from the highlighted desktop
Shift-ctrl-P | Paste a copied pinboard to the highlighted desktop
Ctrl-B | Push the selected window(s) to the back of the stack
Ctrl-C | Bring selected window(s) to the centre of the current desktop
Ctrl-D | Select all windows in the highlighted desktop
Ctrl-E | Fetch selected window(s) into the current desktop
Ctrl-F | Bring the selected window(s) to the front of the stack
Ctrl-O | Iconise the selected window(s)
Ctrl-S | Open the automation management window for the selected desktop
Ctrl-X | Close the selected window(s)

The following key presses only have an effect when the main automation management window has input focus.

Up | Move selected event up one position
Down | Move selected event down one position
Return | Save any changes and close window
Escape, Ctrl-F2 | Discard any changes and close window
Ctrl-A | Select all events
Ctrl-D | Disable selected events
Ctrl-E | Enable selected events
Ctrl-F | Add all auto-fetch events to selection
Ctrl-L | Add all auto-load events to selection
Ctrl-O | Add all auto-open events to selection
Ctrl-R | Add all auto-run events to selection
Ctrl-X | Delete selected events
Ctrl-Z | Deselect all events

## Window Statistics

It is possible that you might see a warning from MoreDesk, telling you that there are “Too many open windows”. This situation can be solved by increasing the maximum number of windows that MoreDesk can handle being open at any one time. Go into the MoreDesk choices and increase the ‘Windows‘ value (shown as 100 in the illustration below).

Main window configuration

To help you to make a sensible estimate of what value to increase this setting to, you can access the MoreDesk statistics window by opening the iconbar menu as shown below:

Statistics menu item

The statistics window will tell you the total number of open windows, the number of these which are ‘pane’ windows (only really of interest to programmers), the number which have been iconised (this includes any which are below the Pinboard/backdrop window) and how many windows MoreDesk is ignoring for some reason (e.g. it never displays its own windows).

The figure you are interested in is the total open windows. Once your desktops are in a typical ‘busy’ state, configure MoreDesk to handle at least another 50 windows than the total open windows figure.

Note: these figures are often higher than you might think from looking for open windows yourself - that is because there are often a number of ‘hidden’ windows belonging to various applications which are left open, somewhere way off-screen, in order to catch any hot key events such as pressing Shift+Ctrl+F12 to shut down. You may not be aware that these windows exist but MoreDesk is!

## Pane Windows

A pane window is a special type of window which usually acts as a toolbar or information bar, sitting on top of or next to a ‘parent’ window. When you move the parent, the pane window moves with it.

This can be a problem for virtual desktop managers because pane windows tend not to go where they are told to - they go where their parent window wants them to be.

It is for this reason that MoreDesk ignores all pane windows by default. It only bothers to represent the parent windows in the desk space view and only tells the parent window to move, letting it move any pane windows which are attached to it.

You can change this setting in the MoreDesk configuration so that pane windows are shown in the desk space view. However, you cannot click on pane windows in this view (the click will go to whatever non-pane window is behind it) and you cannot select them.

This option only exists because it gives a slightly more complete view of the desk space than without pane windows.

## Performance Issues

Using the standard pinboard as supplied with RISC OS does present some problems for MoreDesk - it isn't very fast at dealing with being updated on desktop changes.

On an Iyonix, performance is generally pretty good all round. On VirtualRPC it isn't bad but on a StrongARM RISC PC it can feel a little slow. This program hasn't been tested on hardware older than that.

## Backdrop Image

The first step to improving performance is to use a tiled sprite as your backdrop image, rather than a JPEG. This can result in a significant improvement in the speed of switching desktops.

## Pinboard

Pinboard association (as opposed to backdrop image association) is quite expensive for desktop switching time. I suspect this is because the Pinboard is checking every pin icon against the associated object on the hard disc when it is added, which slows things down quite a bit. It also seems to be related to how the pinboard window appears to be redrawn in lots of little rectangles (one per pin icon) rather than all at once.

Because the Pinboard wasn't really designed for this, it doesn't bother caching information or making the reloading of a set of pinboard icons particularly fast.

If this is a real problem on your system, the only option is to disable pinboard association in the MoreDesk choices.

## Other Issues

The main desk space view should quickly on all systems, but you can boost performance of that a little by switching off the “task sprites” option in the MoreDesk choices.

## Command Line Interface

MoreDesk provides some CLI commands which can be used to drive it from the command line. In RISC OS 5, for example, you could assign these commands to one of the hotkeys using the !Configure Keyboard plug-in, so pressing the left ‘Windows’ key (for example) could return you to your ‘home’ desktop.

- MoreDesk_ReadInfo
- MoreDesk_SetDesktop
- MoreDesk_ScrollDesktop
- MoreDesk_Flash
- MoreDesk_Fetch
- MoreDesk_Open
- MoreDesk_Run
- MoreDesk_Load

## *MoreDesk_ReadInfo

Outputs the current dimensions of the total desk space, along with the co-ordinates of the current desktop. For example:

*moredesk_readinfo Desk space is 5 columns of 3 rows Current desktop is -2,1

The ‘home’ desktop is 0,0 (i.e. at the centre of the desk space).

## *MoreDesk_SetDesktop <num>,<num>

Select the specified desktop, given as an x (across) and y (up) co-ordinate. The ‘home’ desktop is 0,0. The desktop to the left is -1,0; to the right is 1,0; above is 0,1 and below is -1,0.

If the specified desktop doesn't exist, the nearest available one is selected. If the current desktop is specified, no action is taken.

## *MoreDesk_ScrollDesktop <num>,<num>

Move the specified number of desktops across and up, relative to the current desktop. For example, to move two desktops to the left, you would use:

*MoreDesk_ScrollDesktop -2,0

If the specified desktop doesn't exist, the nearest available one is selected. If 0,0 is specified, no action is taken.

## *MoreDesk_Flash ...

Syntax:

*MoreDesk_Flash “window title” [-Duration <seconds>] [-Autoclear]

This command raises an alert for the specified window. If multiple windows are open that match (case-insensitive) the window title given, then the top-most window in the window stack is selected.

The duration is specified in seconds and defaults to ten seconds if not present. A duration of zero will clear the alert state on the specified window.

If the -autoclear switch is present, the alert state is cleared automatically by MoreDesk once the required flash duration has been reached.

Note: windows in the current desktop cannot be made to raise an alert via this command. You should use the SWI call instead.

## *MoreDesk_Fetch <title> [<task>] [<switches>]

Syntax:

*MoreDesk_Fetch <title> [<task>] [-toP] [-Focus]

This command is reserved for internal use only.

## *MoreDesk_Open <dir> [<pos>] [<switches>]

Syntax:

*MoreDesk_Open <dir> [<x> <y> [<width> <height>]] ... ... [-Close] [-LI | -SI | -FI] [-SN | -ST | -SD | -SS]

This command is reserved for internal use only.

## *MoreDesk_Run <dir> <task> [<switches>]

Syntax:

*MoreDesk_Run <dir> <task> [-Multi] [-Quit]

This command is reserved for internal use only.

## *MoreDesk_Load <file> [<switches>]

Syntax:

*MoreDesk_Load <file> [<x> <y> [<width> <height>]] ... ... [-Reload] [-Close]

This command is reserved for internal use only.

## MoreDesk: SWI Interface for Programmers

MoreDesk provides some SWI calls which can be used to drive it from your programs. These calls can read the state of MoreDesk, set which desktop is currently being viewed or raise (or clear) a flashing alert for a window.

- SWI MoreDesk_Move (&58740)
- SWI MoreDesk_ReadInfo (&58741)
- SWI MoreDesk_FlashWindow (&58742)

## SWI MoreDesk_Move (&58740)

In...

| R0 | flags word (see below)
| R1 | number of desktop columns
| R2 | number of desktop rows

Out...

| None

This call will either move the current desktop to a specified location (bit zero of R0 is clear on entry) or it will move by the specified offset from the current desktop (bit zero of R0 is set on entry). All other flag bits are reserved and should be zero.

Note: it takes time for the desktop to be changed so you may have to wait before the change is reflected by SWI MoreDesk_ReadInfo.

Bits one to thirty one of R0 are reserved and should be zero.

## SWI MoreDesk_ReadInfo (&58741)

This call will read various bits of useful information about the MoreDesk deskspace and state. Unrecognised values of reason code in R0 on entry will result in an error being returned.

In...

| R0 | reason code (0) - read desk space dimensions

Out...

| R0 | preserved
| R1 | total number of desktop columns
| R2 | total number of desktop rows
| R3 | current desktop column
| R4 | current desktop row

If R0 is 0 on entry, then the call will return the current size of the total desktop space along with the co-ordintes of the active desktop (with 0,0 meaning the 'Home' desktop) so the values of R3 and R4 may be negative on exit.

In...

| R0 | reason code (1) - read desk space limits

Out...

| R0 | preserved
| R1 | number of desktop columns to left of 'home' desktop
| R2 | number of desktop columns to right of 'home' desktop
| R3 | number of desktop rows above 'home' desktop
| R4 | number of desktop rows below 'home' desktop

If R0 is 1 on entry, then the call will return the dimensions of the total desktop space, relative to the 'Home' desktop. This is useful for understanding the active desktop's co-ordinates. The values returned in R1-R4 will never be negative.

This reason code was introduced in MoreDesk module version 1.14, earlier versions of the module will return junk from this call. You must not use this reason code on any version of the MoreDesk module older than 1.14.

In...

| R0 | reason code (2) - return desktop name string
| R1 | desktop row number (may be negative)
| R2 | desktop column number (may be negative)

Out...

| R0 | preserved
| R1 | pointer to zero-ternimated desktop name string (may be NULL)
| R2 | preserved

If R0 is 2 on entry, then the call will return a pointer to the name of the specified desktop, which may be NULL. The desktop is specified by giving its co-ordinates relative to the Home desktop. Invalid desktop co-ordinates will result in a NULL pointer being returned.

This reason code was introduced in MoreDesk module version 1.14, earlier versions of the module will return junk from this call and there was a bug in MoreDesk modules 1.14 and 1.15 which also means this call returns junk. You must not use this reason code on any version of the MoreDesk module older than 1.16.

This SWI contained a bug prior to MoreDesk module version 1.20 which meant that the meaning of registers R1 and R2 on entry was reversed.

In...

| R0 | reason code (3) - return module version number
| R1 | sub-reason code - must be zero

Out...

| R0 | preserved
| R1 | module version number * 100 (e.g. version 1.20 becomes 120)

Return an integer containing the version number of the MoreDesk module, multiplied by 100. For example, MoreDesk module version 1.20 returns the value 120 in R1. This is not the same as the MoreDesk application version number. It is intended that this call be used to determine which (future) features of the MoreDesk module are available.

Future versions of this ReadInfo call may return version information for other parts of MoreDesk by using R1 as the sub-reason code. In this release, only the value zero is supported and all other sub-reason codes will return an error.

This reason code was introduced in MoreDesk module version 1.20, earlier versions of the module will return an error from this SWI.

## SWI MoreDesk_FlashWindow (&58742)

In...

| R0 | flags word. Bit meaning when set: 0 - R1 is a window handle (else pointer to zero-terminated title string) 1 - open the micro view 2 - open the main window (only for very important events) 3 - flash even when window is in current desktop 4 - cancel flash state after flash time Other bits are reserved, should be zero
| R1 | window handle or pointer to zero-terminated title string
| R2 | flash duration (centi-seconds)

Out...

| None

This SWI will start or stop a flash event for the nominated window. A window can be specified using either its title string (which is compared in a case-insensitive manner) or the window handle. Where multiple windows match a given title, the top-most window in the window stack is selected.

A flash event is used to draw the user's attention to a window, usually off-screen. It is cleared automatically by MoreDesk when the flashing window is brought onto the current desktop.

Application programmers can cause flash events to open the MoreDesk micro view, which will flash the desktop corresponding to the one containing the specified window.

The MoreDesk main window view of the entire desk space can be opened when the flast state is set. However, as the main window is usually large and can cause significant distraction to the user, this should only be done if the reason for the flash event is serious (e.g. something has gone wrong).

The flashing event can either automatically clear itself after an elapsed number of seconds or the alert window will stop flashing but remain in a highlighted state until the user switches onto the desktop which contains the flashing window or brings that window into the current desktop.

A window is defined as being in a desktop if the centre of the window's visible extent (i.e. visible area plus scroll bars, title bar, etc.) lies within the bounds of that desktop.

Note: a user can manually close the main or micro windows after a flash event has opened them. This does not affect the flash states.

To cancel a flash event for a specified window, this SWI is called with R2 set to zero. In this case, only bit zero of R0 is significant.

A flash state can be set to continue indefinitely (meaning until the user brings that window onto the current desktop, or the window is closed, or the flash state is specifically cancelled through a call to MoreDesk). To do this, pass -1 in R2.

Note: closed or iconised windows cannot be assigned a flash state. The act of closing or iconising a window will clear its flash state.

This SWI will return the error “Unknown window to flash” if the specified window is not known to MoreDesk (e.g. pane windows are normally ignored).

## Customisation Guide

Much of the MoreDesk customisation can be performed by adjusting the settings in the configuration plug-in. However, there are some advanced features which can only be accessed in other ways.

- Application to Sprite Name Mapping
- Windows and Applications to Ignore
- *Backdrop Syntax String
- Main window colour scheme

## Application to Sprite Name Mapping

Some applications do not make it easy for MoreDesk to decide which iconsprite it should use in the desk space view for any windows which belong to that application. If MoreDesk can't decide, it will use the standard “application” icon sprite.

You can increase the number of applications which MoreDesk knows about by editing the TaskSpr choices file (called !Boot.Choices.MoreDesk.TaskSpr on most systems). This file is a simple list of mappings which contains lines of the following format:

<Task name> <large sprite> [<small sprite>]

Note: if the task name contains spaces, you should enclose it in "quotes".

You can find the application's name by opening the Task Manager window and looking in the lists of “Application tasks” and “Module tasks”. The sprite(s) to use normally can be found by looking at the !Sprites files within the application itself.

If the application doesn't have a small icon sprite, leave that bit blank and MoreDesk will use the large icon sprite scaled-down when it needs to.

7th software are interested in any mappings which you find. Please drop an email to info@7thsoftware.co.uk with any additional task sprite mappings which you use.

## Windows and Applications to Ignore

If you see the error message “One or more windows have been left in an unreachable position”, this is usually caused by windows belonging to some task which are way off-screen. Various applications have an additional window which is deliberately kept off-screen to grab hot keys. These need to be ignored by MoreDesk.

Also, if you have some windows which you'd like to keep on-screen even when you switch desktop, you need to add these windows to the ignore list.

MoreDesk has a configuration file (called !Boot.Choices.MoreDesk.Ignore on most systems) which contains a list of applications and windows which should be ignored by MoreDesk. This list already includes all windows owned by MoreDesk, any window owned by the interactive Help application, the Task Manager's “Grab keys” window, etc.

The ignore list is a plain text file which contains lines of the following format:

<Task name> [<window title>]

Note: if the task name or window title contains spaces, you should enclose it in "quotes".

If, for example, you wanted to ignore a window called “Toolbar” belonging to an appliaction called “Toolbar app”, you might add a line as follows:

"toolbar app" toolbar

If you don't specify a window title, all windows belonging to the specified task will be ignored by MoreDesk.

7th software are interested in any mappings which you find. Please drop an email to info@7thsoftware.co.uk with any additional ignore tasks and windows which you add.

Tip!

To help you to correctly select windows to ignore, you can load the interactive Help application and hover the mouse over the window in the desk space view. The help message includes the window handle, owner task name and window title (an empty string if the window doesn't have a title). The help message also says when the window is a pane window.

Recall windows item

If the window is off the desk space view, you won't be able to see it in the main window. Click the “Recall windows” menu option to try to bring these windows into view.

## *Backdrop Syntax String

In order to parse your ‘PinSetup’ file, MoreDesk has to make assumptions about the syntax of the *Backdrop command. This is believed to be correct at the time of writing but future revisions of the Pinboard may change this. Some versions of RISC OS have changed this command in the recent past.

If you know what you are doing, you can edit the syntax string in the !MoreDesk.Resources.UK.Messages file (it is passed to the OS_ReadArgs SWI). MoreDesk assumes that the first parameter is the pinboard background colour, any of the next three parameters may specify the backdrop image file name and all other parameters are ignored.

## Main Window Colour Configuration

The main window colour scheme is fully configurable in order to help people to set up their display in a way that suits them. You will see more colours in the main window view if you have backdrop association switched off but this is still a useful area to configure even with that setting switched on.

Main window colour configuration

Simply open the MoreDesk choices window and navigate to the Display Colours tab. From there you can select a colour for a number of aspects of the display:

- Current desktop
  The fill colour used to indicate the current desktop.
- Cursor
  The cursor is the highlight around a specific desktop. You position the cursor with either mouse clicks or the cursor keys on your keyboard.
- User redrawn
  A particular type of window (only really of interest to programmers).
- Selected
  The fill colour used to indicate a window has been selected by you.
- Flashing
  The fill colour used to indicate a window has a flashing alert in progress.
- Background
  The main window's background fill colour.
- Grid
  The grid lines on the background which illustrate the divides between desktops.

## Frequently Asked Questions

Here are some of the more common problems which might be seen when using MoreDesk, plus some which you hopefully won't ever see...

- What is the difference between the demo and the full version?
- I found a fault, how do I report it?
- I keep getting warnings about unreachable windows
- A window has the wrong task sprite
- This toolbar doesn't go off screen
- The ArtWorks Toolbox and Info Bar appear on every desktop
- WinEd keeps saying my file has been modified
- Pinboard association options don't work (option is greyed-out)
- Backdrop association options don't work (option is greyed-out)
- My backdrop doesn't match the MoreDesk window
- MoreDesk failed to parse a *Backdrop command
- Backdrop association works but I don’t see them in the main window
- MoreDesk complains that it needs “ChangeFSI”
- My backdrop image is an odd colour in MoreDesk's main window
- MoreDesk said there are too many open windows
- Iconised window doesn't stay with desktop
- I get strange redraw effects when I drag this window
- Error seen when starting a drag operation
- Error seen when finishing a drag operation
- The Task Manager was killed by moving a window

## What is the difference between the demo and the full version?

MoreDesk is available for free as a demonstration version or you can buy the full version which has more features. There are two main differences between the demo and the full version:

1. The demo only allows one other virtual desktop
2. The demo will quit automatically after ten minutes

While the full version of MoreDesk allows you to have upto fourty nine virtual desktops, the demo can only have the ‘home’ desktop plus an optional extra desktop to the right of it. This gives an idea of how you can work on more than one desktop but does not give you the full flexibility or desktop real estate that the full version allows.

The demo version will also quit itself after ten minutes. This is long enough to get a feel for the application and if you haven't, you can always load it again after it has quit.

Aside from those two things, the demonstration version is fully-functional and provides all of the other useful facilities of the full version: the main window, the micro window, the switcher window, desktop automation, flashing alerts and so on.

## I found a fault, how do I report it?

If you find a fault, you can go to the MoreDesk icon on the iconbar and open the main menu. Follow the “Info” menu item to get to the “About this program” window. If you maximise the window, you will see three buttons: “Web site”, “Email” and “Fault”.

Info menu item

Click on the “Fault” button and a template fault report will open in your text editor. Click on the “Email” button to open a new email to 7th software in your email editor. You can copy the template fault report into the email and add your comments.

If, for whatever reason, you cannot get MoreDesk to run, simply send details of your problem to info@7thsoftware.co.uk with details about:

- Which version of MoreDesk you are using
- Which version of RISC OS you are using
- State the nature of the problem, error messages, etc.
- Is the problem repeatable (can you reproduce it on-demand)?

## I keep getting warnings about unreachable windows

Some windows cannot be moved by MoreDesk - often these are the very windows which it is complaining about. When you see the error “One or more windows have been left in an unreachable position” you can click on the ‘Advise’ button to open a list of windows which are causing the problem. These can then be added to the ‘ignore’ list.

When you change screen mode, edit the MoreDesk choices or quit MoreDesk, it will also warn you about any windows which have been left in an unreachable position. You can fetch them back by clicking on the ‘Recall’ button in the warning box, or click on the ‘Advise’ button to open a list of the problem windows.

Alternatively, open the MoreDesk main window and choose “Recall windows” from the menu. Any windows which are currently outside the desk space will be moved onto the nearest edge and selected (highlighted in yellow). You can then see which windows were causing MoreDesk to complain.

If these are windows which you aren't interested in (e.g. the type that some applications leave open off-screen to trap hot key events) you can add the window to the list of those to ignore. See the customisation guide for more information on making MoreDesk ignore these windows in future.

Some applications leave windows in unreachable positions which MoreDesk is unable to do anything about (such as Eureka - its windows don't even have a title). As a last resort, you can set the option in the Main Window choices to disable the warning message.

Disable unreachable window warning

## A window has the wrong task sprite

See the customisation guide.

## This toolbar doesn't go off screen

Some applications (for example: ArtWorks and Thump) create windows and toolbars which have a flag set in a particular way which tells the Wimp that it isn't allowed to go off-screen. When MoreDesk switches desktop, it tries to move windows on- and off-screen but this bit will stop that from working properly.

The only real fix I can think of is to trap when every window is created and manually clear that flag. This would only work for applications loaded after MoreDesk. The downside of that is that people often set that flag for a reason - e.g. if you click on the toggle size icon in the ArtWorks window, you might find that the toolbars are lost off the edges of the screen with my ‘fix’ in place.

Another work-around (which isn't particularly nice) would be to have MoreDesk iconise the ArtWorks window (and toolbars) when you move it into another desktop but this is fraught with problems: it would vanish from the main window view at that point, for one thing.

If you know what you're doing, you might be able to fix the problem program by editing its templates file (if it has one) and setting the “Allow off-screen” window flag bit.

Update: There is a third-party module available which implements the first fix which I describe above: load the “NoBorder” module from Stefan Bellon's home page. This needs to be put somewhere in your boot sequence (e.g. !Boot.Choices.Boot.PreDesk) so that the behaviour of any applications which create these problem windows will be patched.

## The ArtWorks Toolbox and Info Bar appear on every desktop

This fault is related to the issue above about toolbars not going off-screen. However, in the case of ArtWorks, an ArtWorks configuration change can solve the problem.

In order to stop this happening you need to alter the relevant settings within Artworks. To do this, click with Menu over the ArtWorks iconbar icon and select Choices. Next, click on ‘ArtWorks 2’ in the Global Choices window. Then untick the options “Keep Info Bar on screen” and “Keep Toolbox on screen”. Finally, click on Save. This will resolve the issue with the Toolbox and should stop the Info Bar appearing too.

Please note, however, that when an ArtWorks document has the input focus, switching desktops using Alt and an arrow key will mean that the ArtWorks Info Bar will appear in the next desktop. In order to avoid this, you can use another method to switch desktop when ArtWorks has the input focus (e.g. click with Adjust on the MoreDesk icon and click on one of the squares to switch your workspace or hold down the alt key and move the mouse pointer off the edge of the screen).

Thanks to Stewart Brookes for this one.

## WinEd keeps saying my file has been modified

Whenever you move a window which you are editing in WinEd, it will notice the change in position and indicate that the templates file has been modified (by putting an asterisk in the title bar of its templates file window).

In order to change desktop, MoreDesk has to move all open windows - pushing those currently on the desktop into a new position and those required for the new desktop into the right place. This is what causes WinEd to mark the templates file as having been modified.

There isn't really a work-around to this but don't worry too much about it; the file hasn't really been modified!

## Pinboard association options don't work (option is greyed-out)

MoreDesk uses the standard pinboard configuration files, as supplied with newer versions of RISC OS. This file is called ‘Pinboard’ and is created when you open a menu over the pinboard and select “Save”. You should save the pinboard file into your boot sequence, into the Boot$ToBeTasks directory (usually, !Boot.Choices.Boot.Tasks).

If MoreDesk cannot find this file in the boot sequence when it starts, the pinboard association options will be disabled.

## Backdrop association options don't work (option is greyed-out)

MoreDesk uses the standard backdrop configuration files, as supplied with newer versions of RISC OS. This file is called ‘PinSetup’ and is created when you run the “Pinboard Setup” !Configure plug-in, then save the configuration.

If MoreDesk cannot find this file in the boot sequence when it starts, the backdrop association options will be disabled.

## My backdrop doesn't match the MoreDesk window

When backdrop image association is enabled, MoreDesk watches for when the backdrop is changed and updates the backdrop in its desk space view to match. However, if you change your backdrop when MoreDesk isn't running, it will become out-of-step.

The simple fix is to change the backdrop image again, this time while MoreDesk is running and things will get back into sync.

You may also have to do this the first time you enable backdrop association in MoreDesk. Simply open the menu over the MoreDesk main window, select “Backdrop setup...” and click “Set” in the setup window. Your backdrop image should then appear in the MoreDesk main window at the position of the current desktop.

## MoreDesk failed to parse a *Backdrop command

See the customisation guide.

## Backdrop association missing from main window

This sounds like a symptom of MoreDesk failing to parse the Backdrop command from the ‘PinSetup’ file (see above). If you look in your !Boot.Choices.Boot.Tasks.PinSetup file (or similar), you should find the “Backdrop” command.

## MoreDesk complains that it needs “ChangeFSI”

When you change the backdrop for a desktop, MoreDesk creates a small version of the backdrop image which it can use in the main window. It uses the ChangeFSI program to do this, which is supplied with all versions of RISC OS.

If you see this error message, you will need to make sure that the Filer has ‘seen’ ChangeFSI before you start changing backdrops with MoreDesk. The simple way to do this is to open the directory where you have !ChangeFSI. The more complete way is to use the Boot configuration plug-in to ensure that the system “looks at” !ChangeFSI when booting.

## My backdrop image is an odd colour in MoreDesk's main window

MoreDesk uses ChangeFSI to convert your backdrop images into a format which it can use in the main window display. There is a known issue with ChangeFSI when supplied with a 256-colour “new format” sprite which has a palette - the colours come out all wrong in the image it generates.

At present, you will have to avoid using this type of image for your backdrops. If you generated the sprite using the InterGIF program, it's worth noting that there is an option in the “Sprite options” section to “Force new format sprite” which you can switch off in order to produce a sprite which doesn't cause a problem for ChangeFSI.

## MoreDesk said there are too many open windows

To improve performance, MoreDesk sets a fixed limit on the maximum number of open windows that it can deal with. This can be changed in the configuration settings but you will need to re-start MoreDesk in order for the change to take effect.

## Iconised window doesn't stay with desktop

It is not possible for iconised windows to be associated with a particular desktop. So, if you iconise a window in one desktop and then move to another, you will still have the iconised window on your pinboard.

## I get strange redraw effects when I drag this window

Some users have seen an odd effect in the following circumstances:

- Open the MoreDesk main window
- Open anoher window (e.g. Draw is known to do this)
- Hold down the ‘alt’ key
- Select drag the Draw window's title bar onto another desktop
- Keep dragging the window around - it leaves lots of copies of the window behind

The bug is related to select drags (or resizes) of windows with panes soaking up all available processor time (when you drag, the window and its pane are constantly fighting about who is at the top of the window stack) and stopping other things from getting a chance to do anything - such as your pinboard window being able to redraw.

This is due to a WindowManager (Wimp) bug which was fixed in version 4.65. My VirtualAcorn installation used for testing has 4.15 so it exhibits this fault but my Iyonix has 4.94 so it doesn't. (All version numbers are from the Castle RISC OS source tree - RISC OS Ltd versions of the Wimp will no doubt differ.)

Unfortunately, there is nothing which can be done to MoreDesk to address this issue.

## Error seen when starting a drag operation

“The area reserved for relocatable modules is full...”. This error message (or one like it) may be seen when starting a drag operation, usually on a selection of windows. It is caused by DragAnObject attempting to claim memory for a large sprite from the RMA and the call failing. The system will sometimes not recover from this error.

The most likely cause for this error is that the selection of windows to drag includes one or more windows which are a long way off the desk space. Certain applications, like the Task Manager and Thump, create windows which are placed off-screen and only exist so that those applications can see key presses which no other application claimed. These may be accidentally selected when the “Select all” option is used.

It is safer to select all windows by starting a drag box in the bottom corner of the MoreDesk main window and ending the drag in the opposite corner. Arguably, the DragAnObject module should deal with memory more carefully and not crash so badly if the claim fails.

## Error seen when finishing a drag operation

“SWI number out of range in module DragAnObject”. This error message might be seen when finishing a drag operation on a window or selection of windows. It is caused by a broken version of the DragAnObject module. This is known to have been fixed in versions 0.08 and later. It is also known not to be an issue in version 0.03.

## The Task Manager was killed by moving a window

Ever since support for interactive help for menu items was added to the Wimp, the old system for spotting when a window is a menu has been broken. This means that MoreDesk has no way to know if a window is a menu. This is unfortunate because if you manage to select a menu in the MoreDesk main window (which is not as easy as it sounds!) and then try to send it to the back of the window stack (for example) you will probably crash the desktop. There is no known work-around other than for you to not select a menu and then perform an operation upon it!

Some non-menu windows have also been seen to cause this problem (usually a data abort in the Wimp which then goes on to crash a number of other applications). This is being investigated but it is a very rare event. If you do see this crash, please report it, along with details of what window you were dealing with, to info@7thsoftware.co.uk

## Other Virtual Desktop Programs

There is a selection of other RISC OS virtual desktop applications out there, some are commercial and some free. No two are the same and all provide a different set of features. To help compare them, here's the information that I've been able to gather about them.

## Larger

This was a very popular commercial program which provided pinboard and backdrop features before they became standard in the RISC OS releases. It has virtual desktop functions and a window which gives a simple view of the current desktop and the surrounding space. It looks like it experienced quite a bit of feature creep, leaving it with lots of functions which some users may never have used.

The main problems with Larger, as far as I can tell, is that it isn't 32-bit compatible so won't work on newer RISC OS hardware. The virtual desktop view is rather simple and doesn't give you a view of the entire desk space, which feels rather claustrophobic.

## Workspace

By all accounts, this is a popular virtual desktop program. It's free and 32-bit compatible. It doesn't provide a view of the entire desk space and employs a number of rather clunky techniques to try to work-around this shortcoming. Workspace is limited to six desktops.

One feature which MoreDesk does not provide is the ability to assign different screen modes to each desktop. MoreDesk doesn't do this because it would make the view of the entire desk space very difficult to implement. That's probably why Workspace doesn't do it. I felt that the desk space view was more important than the screen mode association stuff.

## WindowMan

This is the virtual desktop manager which I've been using for years. It's free and 32-bit compatible. I had to modify my copy to make it work the way I wanted.

It was the lack of certain features in WindowMan that drove me to write MoreDesk; the lack of a view of the entire desk space, especially one in which you can move windows around, seemed vital to me. Also, pinboard and backdrop association was something I really wanted to see (I hadn't heard of or seen Larger at that point).

## VirtuDesk

MoreDesk does pretty much everything that VirtuDesk does except for the feature in VirtuDesk where you can position your view at any position in the total desktop space. MoreDesk always positions you exactly on the location of a desktop in the grid.

The main window in MoreDesk gives more information about the windows which are open:

- it shows an icon in each to tell you which task owns the window,
- it gives an indication of what window furniture the window has (e.g. scroll bars and title bar)
- it tells you which ones are pane windows (which can also be ignored)
- it tries to colour the windows based upon their workarea background colour

all this helps you to instantly see which window is which in the view. There is also the ‘micro’ view in MoreDesk which is compact and allows very simple selection of alternative desktops via the mouse. This simplicity of operation is on a par with the control window for VirtuDesk.

The most powerful feature of MoreDesk, which isn't in VirtuDesk, is the ability to move windows around (even move selections of windows at one time) in the main window view. You can select a group of windows, drag them into another desktop, bring them to the front or even iconise or close them.

MoreDesk also allows you to have a different backdrop image and set of pinboard icons in each desktop. The main window includes a scaled-down version of your backdrop image for each desktop. This helps you to remember which desktop contains which windows.

MoreDesk also allows windows to be ‘fetched’ into the current desktop (e.g. if the window is already open somewhere but you can't remember where).

The help menu item

Finally, MoreDesk has much more comprehensive help documentation and fully supports the interactive !Help application.

## VDesk

This is a very simple and free virtual desktop manager, much like VirtuDesk. It has a tiny view of the desk space which you can't drag windows around in. It does not provide any pinboard or backdrop association. Is 32-bit compatible.

## Widescreen

I've heard this program mentioned on several occasions but I can't find it or any information about it. I believe it was free and possibly isn't 32-bit compatible.

## Version History

1.00, 22nd Mar 2006

- First release version of MoreDesk.

1.01, 1st Apr 2006

- Re-ordered iconbar menu to fit Castle Technology's guidelines.
- _Config file now uses auto-height for Choices window.
- Fixed backdrop tile rescaling after mode resolution change.

1.02, 10th Apr 2006

- Fixed fault with MoreDesk thinking the Alt key is down when it's not.
- Added the 'Fetch' facility which allows windows to be fetched onto the current desktop.
- Tweak to ConfiX _Config help messages for some icons.
- Recoded some small areas to improve robustness.
- Corrected spelling of 'licence' for UK locale.

1.03, 18th Apr 2006

- Added the micro view window (adjust click on iconbar icon).
- Bug fix: cursor reset and selected windows cleared on main window drag/resize.

1.04, 2nd May 2006

- Added support for ‘flashing’ window and desktop alerts.
- Corrected a help message in the configuration plug-in.
- “Alt plus mouse at screen edge” and “alt plus cursor key” switching of desktops can be disabled from the configuration plug-in.
- Bug fix: MoreDesk could leave an incorrect window stack order on application quit or sometimes when using micro window (with select clicks).
- Select clicks on iconbar icon toggle main window rather than always opening it to the centre of the current desktop.

1.05, 3rd May 2006

- Iconbar icon position is now configurable.
- Documentation improvements - tried to cover various common support issues better.
- Builds text file <Wimp$ScrapDir>.MoreDesk.Ignore with suggestions for tasks and windows to ignore. If you see the error message “One or more windows have been left in an unreachable position”, click on the new “Advise” button to see a list of the windows which it is complaining about.
- Copes with the new format for ‘PinSetup’ files on newer RISC OS Ltd versions of the OS. This should mean that the backdrop images in the main window work correctly on those systems.
- Some changes have been made to the ignore list implementation which might help with a few reported issues which indicate that it might not be working correctly on all systems.

1.06, 10th May 2006

- MoreDesk is now compatible with the A9home.
- Changed central part of the routine which changes desktop to not move windows which are in the 'ignore' list. This allows you to have windows which stay on the screen even when you change desktop by simply adding them to the ignore list.
- Some efficiency improvements relating to ignoring iconised windows.
- Installer improvements: compatible with A9home and better backup policy for old versions of !Routines, !MoreDesk and !ConfiX. Plus it's a bit more robust.

1.07, 11th May 2006

- More changes for A9home compatability. The latest 32-bit RISC OS Ltd release rejects conventional transient utilities. A header has been added to allow MoreDesk and the installer to work correctly on that system.
- Windows which are already in the current desktop are shaded in the ‘Fetch’ menu.

1.08, 25th May 2006

- New feature: ctrl-alt-tab (or alt-tab) switching of windows.
- Improved documentation here and there (e.g. the “Known Issues” page).
- Bug fix: a window could have the wrong background colour or MoreDesk could think a window belonged to the wrong task.
- Bug fix: MoreDesk's own windows could sometimes appear in the main window display.
- Added News ticker (by Darren Salt) to the task to iconsprite mappings and to the ignore list.
- Added Pluto's ‘Spell’ window to the ignore list.
- Corrected a mistake in the installer which could lead to the error “Parameter expansion contains unrecognised characters”.
- Fixed a minor issue with drag icons for moving windows around which crept in during the flashing alerts work.
- Alt key combinations now pay attention to the shift and ctrl modifier keys (e.g. they only work as specified and not with additional, undocumented modifiers).

1.09, 4th June 2006

- The switcher window can be cancelled by pressing the Escape key.
- Left and right cursor keys and the alt-ctrl-tab (or alt-tab) key will now cycle around when reaching the start or end of the window list in the switcher display.
- Fixed a fault which could lead to an unreasonable amount of flickering in the switcher display. It could also lead to the bottom-most open window being missed from the display.
- Zero-terminate the title string in the Iconize message to avoid problems with WimpMon.
- Added task icon mappings for EasiWriter, TechWriter and Artworks (thanks to Stewart Brookes for those).
- Added Searchy to the list of tasks which MoreDesk should ignore.
- Added CallerID, MiniDisc, NeXTBar and MoonTool to the ignore list (thanks to Paul Vigay).
- Got the MoreDesk module version numbering into sync with the RMEnsures in the !Run file.

1.10, 16th September 2006

- Renamed the known and common issues part of the user guide to Frequently Asked Questions (FAQ).
- Added a section on interworking with ArtWorks to the FAQ and an entry in the ignore list for the Toolbar application (thanks to Stewart Brookes for those).
- Added an option to the miscellaneous section of the MoreDesk configuration to allow the start-up banner to be disabled (not available in demo builds).
- Added WimpScroll to the ignore list (thanks to Paul Vigay).
- Added a FAQ entry for some ‘odd’ WinEd behaviour.
- Fixed bug which could only happen if the switcher window's child window somehow gained or lost the caret.
- Fixed a possible interrupt hole in the SRDPq module which might just have caused occasional crashes when quitting or reloading MoreDesk.
- Adjust-clicking on the “Save” button in the MoreDesk choices window, while the MoreDesk main window is open, would result in the choices window getting left behind the main window (usually out of reach). Fixed.
- Eliminated a 256 byte memory leak in *MoreDesk_Flash CLI command.
- You can set a border around the micro window which helps to avoid it closing when you're trying to select a desktop at the edge of the desk space. There is a new tab in the MoreDesk choices window specifically for configuring the micro window.
- The ‘home’ desktop can optionally be highlighted in the micro window for easy navigation.
- The check for windows being stranded outside the total deskspace has been changed to look at the central co-ordinate of the window extent. Also, the recall function now moves windows while preserving their relative offset from their respective desktop origin - i.e. you don't end up with them all shoved up against the edge of the desk space.
- Corrected the spelling of ‘Choices’ in one of the error messages.
- Updated syntax of the *Backdrop command to cope with the changes in the A9home version of the command.

1.11, 8th October 2006

- Fixed this file so that it displays correctly in NetSurf.
- Made the location at which the main window opens configurable. You can specify the horizontal and vertical position from a menu of nine presets.
- Added a configurable feature which allows the top-most flashing alert window (if any) to be fetched into the current desktop by pressing Alt+Windows key (if you don't have Windows keys on your keyboard, you will not be able to access this feature).
- Changed some of the wording in the “Miscellaneous” and “Switcher” sections of the configuration plug-in.
- Modified the message-passing mechanism from the MoreDesk module to the MoreDesk application to eliminate a memory block copy per message. Probably won't make the slightest difference to performance. :)

1.12, 27th October 2006

- Added “Black Hole 2” and “Hermes” to the ignore list, as these are transient windows. Also added pane windows for “Citation 2” to the ignore list (thanks Stewart Brookes).
- Added some more positions to the main window opening position menu. These allow the main window to be opened against the top of the iconbar.
- The micro window will now auto-close when there are no flashing alert windows. This improves interaction with the FlashTop program.
- Fetching a window with the Alt+Windows hot key will now auto-close the micro view window.
- Optimised the fetch code to not do anything in the case where a window is already in the position it needs to be.
- Tweaked the parameters to ChangeFSI so that the desktop background sprites in the main window look fractionally better.
- Fixed a minor bug where changing the desktop background from an image to a plain background would leave the original background image in the MoreDesk main window.
- Spotted a problem with the LocaleRes utility in !MoreDesk.Resources which may have caused problems on the A9home (but no one reported anything).

1.13, 3rd November 2006

- The MoreDesk module now watches for the machine's territory being changed so that it can still get case-insensitive string comparisons right (for example, against window titles).
- Added a “Selection” option to the top of the “Fetch” menu because this is just as good a place for it as the “Selection” menu. Plus this removes the possibility of the Fetch menu going wrong when there are no windows open.
- Added a “Select desktop” option to the main menu. This allows you to select all windows in the highlighted desktop. Handy if you want to transfer all of the windows from some other desktop to the current desktop (i.e. ctrl-D to select them, ctrl-E to fetch them).
- Modified the main window redraw routines to plot the desktop highlight above windows so it can be seen at all times. The cursor position has also been slightly modified to match the desktop grid slightly better.
- MoreDesk now deletes the righthand column of pixels in each tile sprite as it loads because this column usually contains junk, thanks to the way ChangeFSI scales-down images. This results in the main window background looking much neater.
- Updated the Frequently Asked Questions page to include information about problems you might find when using 256-colour new format sprites with an optimised palette as your backdrop image.
- Filer Action windows now have a harddisc icon in the main window display rather than an unknown application icon (for want of a better sprite for Filer Action!).
- When you have backdrop association enabled, the current desktop is now highlighted in the main window view so that you can easily see which desktop is current.
- Added the Geminus “Grab keys” window to the ignore list.
- If your machine happens to have an up time of over 35.5 weeks, you'll find that the start-up banner window works correctly now (i.e. it closes after the correct delay rather than straight away).
- The micro window auto-opens for a short time when you navigate using the alt+cursor keys or alt+mouse-to-screen-edge so you can more easily tell where you are in the desk space. Thanks to Stewart Brookes for the suggestion.

1.14, 28th November 2006

- Re-organised the configuration plug-in layout a litte now that the number of options for the main window view is getting too large for a single tab.
- Added an option to allow main window double-clicks (without the Alt key held down) to change the current desktop.
- Added an option to invert the effect of select- vs adjust-double clicks in the main window. Some people would prefer it to behave like a filer window in that respect. Note: select double-clicking on the current desktop will close the main window rather than be ignored (subject to the two new config options, which change this behaviour slightly).
- Added a massive amount of memory protection (mostly only in the debug builds) and moved almost all of MoreDesk's memory usage from the application slot and RMA into a private dynamic area. This should help to avoid situations where MoreDesk could corrupt another program's memory or where another program corrupts memory belonging to MoreDesk. All indications so far are that there are no areas where MoreDesk is mismanaging memory (e.g. buffer overruns and leaks).
- There is now a statistics window which can be viewed from the iconbar menu which lists information about all currently open windows.
- If you have SysLog installed, MoreDesk will keep a log of any significant errors.
- Moved the Ignore list and Task Sprites mappings out of the application's Messages file and into text files in the the Choices:MoreDesk directory. This will stop new releases of MoreDesk from trampling on user changes when it is installed.
- Added StrongED's ‘StrongED’ window (it catches hot key events) to the ignore list and sorted both the ingore and test sprites lists to make them easier for me to maintain.
- Updated the help documentation to reflect the new Ignore and Task Sprites lists (they also have a simpler format to when they lived in the Messages file).
- Fixed an error in the LocaleRes transient utility header which caused A9home versions to refuse to run.
- Various internal tweaks to the Task Sprites list handling, including a couple of bug fixes which probably didn't affect anyone.
- Improved the help page for the ‘fetch’ function to document what the colour codes for certain windows mean.
- Added a note to the FAQ about Stefan Bellon's NoBorder module, which can help MoreDesk to work better with applications like ArtWorks and Thump.

1.15, 29th March 2007

- Major new feature: desktop automation. This allows MoreDesk to perform some useful functions each time you enter or leave a desktop.
- New feature: micro window can now show an icon for each desktop to give you an indication of which tasks have windows open there.
- When iconising a window, the icon is placed onto the pinboard in at your configured “Iconise to” location rather than to a position directly behind the window's close icon. You can also iconise multiple windows in one go. Finally, when iconising a window which is on another desktop, it is first fetched onto the current desktop so that uniconising doesn't reopen it in an odd location.
- Modified Task Sprites list loading routine to cope with the configuration file being empty.
- If either of the Ignore or Task Sprites files are not found, empty versions are created.
- Drew a new icon for MoreDesk (including a large version for the index page) which hopefully looks a bit nicer.
- Fixed a fault where closing the main window with an Escape keypress before any drag operations had been performed could lead to an error being reported.
- Lots of work on the help pages. They all seem to look fine on Oregano 2, NetSurf, Firefox and Phoenix (Browse).
- Added a description of the differences between the free demo version of MoreDesk and the full version to the FAQ page.
- Changed some of the default configuration.
- Various improvements to the installer.

1.16, 20th August 2007

- Fixed an occasional data abort which was most often visible when navigating deeply nested menu structures, such as a directory tree in !Director.
- Added some more keyboard shortcuts to the desktop automation window and improved its menu.
- Added the Socket Manager's ‘keys’ window to the Ignore list.
- Bug fix: dragging directories/applications to MoreDesk for the desktop automation didn't work in non-debug (i.e. release) builds.
- Bug fix: interactive help for the micro window and the fetch menu could fail with errors.
- Bug fix: interactive help for the statistics window was incorrect.
- Improvement: interactive help for the main window accurately reflects your configuration, not the default behaviour.
- Bug fix: the interactive help support routine in !Routines would raise an error if it failed to find a help message for a given situation. This is not ideal - now it simply doesn't respond to the help request in that case.

1.17, 9th March 2008

- Added the auto-load events to desktop automation. These events can be used to run files when a desktop is entered or load files into an editor (and position the window).
- Significant bug fix: corrected task snapshot function which could lead to data aborts when doing either a task snapshot or global snapshot.
- Implemented a work-around for a really annoying bit of filer window behaviour which meant that sometimes they would stick to the edge of the screen when you change desktop instead of moving off-screen.
- Modified the code for switching desktops to try to eliminate some cases of windows failing to change desktop correctly or windows being arranged into the wrong stacking order.
- Micro window updates more frequently (e.g. when automation causes windows to open if you enter a desktop by right-clicking in the micro window).
- Modified main window redraw code to include an indication of the iconbar location in all desktops, not just the current one.
- Added an option “User” for possible positions to open the main window at. This new option simply means open at the same position as last time - useful if you have a specific position and size for the main window that you like to use. (This option does not remember main window position after MoreDesk is quit.)
- Mode change handling tweaked to only check for unreachable windows if the new screen mode differs in dimensions or eigen values.
- The installer now includes ConfiX version 0.90, which is the current latest revision.
- Updated the version of !Routines which is included with the MoreDesk installer.
- Main window opening position was calculated slightly incorrectly (it didn't always take into account the window furniture). This could lead to bits of the window furniture being unreachable - depending upon the configured opening position.
- Minor bugfix: when backdrop association is switched off, the current desktop is correctly highlighted in the main window view. This wasn't always the case before.

1.18, 9th September 2008

- Modified ConfiX configuration file so main window can scale down to 0.01 or up to 0.50.
- You can now move the selected windows in the MoreDesk main window in desktop-sized increments by pressing shift with the cursor keys.
- Added a configuration option to remove scrollbars from the main window, which makes it more compact.
- Minor bugfix: selecting windows from the main menu “Select task” or “Select desktop” entries correctly affects the shaded state of the “Clear selection” item.
- Configuring “User” as the location for the main window to open at will now cause the window position to be stored (whenever you close the main window) so that it will reopen at the same location, even after quitting and reloading MoreDesk.
- Added support for eSpeak. If you have eSpeak installed, you can configure MoreDesk to speak various bits of information.
- Replaced most of the vector handlers with standard CMHG veneers for possible stability improvement.

1.19, 24th November 2008

- Added a facility to assign names to desktops. Names are displayed in the main window view, interactive help and eSpeak messages when changing desktop.
- Small main window scale factors (where windows don't show furniture) now have an indication of which window has input focus.
- Backdrop setup menu item is now shaded if you open the main menu over any desktop other than the active one.
- Significant increase in the speed of drawing the main window when it is first opened.
- Small performance improvement in background scanning of the stack of open windows.
- Fixed a few areas where there may be small amounts of memory leaked during the application quit procedure.
- Fixed a number of obscure bugs in the logic of whether windows are selected or not and how many are selected.
- Extended the MoreDesk_ReadInfo SWI call with some new reason codes.
- Added more documentation to these help pages and improved the HTML a bit.
- Improved the eSpeak support in the switcher window.
- eSpeak support now speaks to inform about alerts from flashing windows.
- Corrected *Backdrop command syntax to eliminate some reported errors.
- Tiny improvement to the code for reading another task's window title string (which is actually a tricky thing to do).

1.20, 7th December 2008

- Fixed a bug in the SWI MoreDesk_ReadInfo (2) which meant it returned incorrect information.
- Modified the installer to protect against people who go looking around inside it (and end up Filer_Booting things as a result).
- Fixed a bug which could cause MoreDesk to crash with Data Aborts if the eSpeak option is configured to be ‘on’ but eSpeak itself is not loaded.

1.21, 15th November 2009

- Fixed yet another bug in the SWI MoreDesk_ReadInfo (2) which meant it returned incorrect information.
- Fixed a serious crash which could be triggered by using the windows to front/back menu items (although the keypresses never suffered from this problem).
- Fixed a minor issue in the Speak library meaning that trying to run MoreDesk when it is already running would output some messages about "Unknown or missing variable".
- Rebuilt all of the components of MoreDesk and Routines using the latest build environment, toolchain, libraries and headers.
- Modified the installer to backup your MoreDesk choices directory.

1.22, 1st March 2011

- Updated to be ARMv7 safe - so it can run on newer RISC OS platforms (such as Beagle Board, Touch Book, etc).
- References to 7thsoftware.com changed to 7thsoftware.co.uk to reflect change of primary domain.

1.23, 13th October 2012

- Corrected problems in the build environment which led to some items not being ARMv7 safe afterall.

1.24, 29th May 2013

- Fixed SWI MoreDesk_ReadInfo (2) reason code.
- Added SWI MoreDesk_ReadInfo (3) reason code.
- Added option to allow both Alt keys to act as an alternative to the Alt+Windows key combination for fetching windows.
- Modified various default configurations to be more like the way I've really always wanted them.
- Fixed a few bits where the demo build's default configuration had gone stale.
- Now requires !Routines 1.48 or later, which fixes various (potential) bugs.
- Installer does a better job of merging pre-existing saved configuration with the released config.
- The 'Ignore' and 'TaskSpr' lists have been updated.

1.25, 26th June 2013

- Fixed a very long-standing bug where using the close window function on a directory would often result in the parent directory opening.
- Fixed both-alt key behaviour introduced in version 1.24, which didn't quite work as intended.
- Fixed pre-existing alt-key handling bug.
- Micro window is now consistent in where it opens (rather than potentially jumping about).
- Accelerated main window plotting by around 2% (in tests with around 100 open windows @ 0.12 scale).
- Made main window hint for window with input focus a tiny bit clearer.
- Added a configurable highlight in main window for the top-most open window.
- Increased micro window auto-close timeout on desktop change by a second.
- Alt+Windows key-related stuff is all on the same configuration tab now.
- Extended to alt+windows feature with optional fetch top-most window when there's no alert window.
- Tweaked some of the graphics in the configuration window.
- Statistics window now includes count of non-ignored (non-pane) windows in the current desktop (note: the pinboard counts as a window!).

1.26, 24th Oct 2016

- Tweak to !Boot file to set up MoreDesk$Scrap as a macro variable (in case !Scrap is moved under MoreDesk's feet).
- Updated MoreDesk module to support Raspberry Pi 3 (only affects Nut Pi builds.

1.27, 21st Mar 2021

- Released under the CDDL 1.0 Open Source Software licence.
- Rebuilt all components with DDE release 30a from RISC OS Open.
- Updated !ConfiX to version 1.50 from X-Ample.
- Updated !System resources to 2021-03-21 release from RISC OS Open.
- Updated Help documentation to new 7th software design.

## Licence

COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0

1. Definitions.

1.1. "Contributor" means each individual or entity that creates or contributes to the creation of Modifications.

1.2. "Contributor Version" means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor.

1.3. "Covered Software" means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof.

1.4. "Executable" means the Covered Software in any form other than Source Code.

1.5. "Initial Developer" means the individual or entity that first makes Original Software available under this License, which in this case is 7th software Limited, UK company number 09396615.

1.6. "Larger Work" means a work which combines Covered Software or portions thereof with code not governed by the terms of this License.

1.7. "License" means this document.

1.8. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.

1.9. "Modifications" means the Source Code and Executable form of any of the following:

A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications;

B. Any new file that contains any part of the Original Software or previous Modification; or

C. Any new file that is contributed or otherwise made available under the terms of this License.

1.10. "Original Software" means the Source Code and Executable form of computer software code that is originally released under this License.

1.11. "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.

1.12. "Source Code" means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code.

1.13. "You" (or "Your") means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.

2. License Grants.

2.1. The Initial Developer Grant.

Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license:

(a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and

(b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof).

(c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License.

(d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for code that You delete from the Original Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices.

2.2. Contributor Grant.

Conditioned upon Your compliance with Section 3.1 below and
subject to third party intellectual property claims, each
Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license:

(a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and

(b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1) Modifications made by that Contributor (or portions thereof); and (2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).

(c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party.
(d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) for any code that Contributor has deleted from the Contributor Version; (2) for infringements caused by: (i) third party modifications of Contributor Version, or (ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor.

3. Distribution Obligations.

3.1. Availability of Source Code.

Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange.

3.2. Modifications.

The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License.

3.3. Required Notices.

You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer.

3.4. Application of Additional Terms.

You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients' rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.

3.5. Distribution of Executable Versions.

You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipient's rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form under a different license, You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.

3.6. Larger Works.

You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software.

4. Versions of the License.

4.1. New Versions.

Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.

4.2. Effect of New Versions.

You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward.

4.3. Modified Versions.

When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License.

5. DISCLAIMER OF WARRANTY.

COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.

6. TERMINATION.

6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.

6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as "Participant") alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant.

6.3. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination.

7. LIMITATION OF LIABILITY.

UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.

8. U.S. GOVERNMENT END USERS.

The Covered Software is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" (as that term is defined at 48 C.F.R. ¤ 252.227-7014(a)(1)) and "commercial computer software documentation" as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License.

9. MISCELLANEOUS.

This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdiction's conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the losing party responsible for costs, including, without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software.

10. RESPONSIBILITY FOR CLAIMS.

As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.