The desktop will be both fully persistent and driven by the back-end. Each user will have one or more workspaces with a link to the active workspace. (And that link may point to another user's workspace.) A user must first login. Once that happens, the active workspace is loaded.
The workspace contains "shortcut" rolons, also called desktop wrapper rolons. Some of these rolons are used to place icons on the desktop. These rolons contain positional information as well as a reference to another rolon which identifies the icon.
In addition to icons, a desktop contains windows. These are managed by window rolons which are also located in the workspace. Window rolons manage the position and size of the window, as well as the display mode (maximized/minimized/normal) and type of view. Like Icon rolons, a window also contains a reference to another rolon. This other rolon provides the content to be displayed.
Workspace rolons are just like any other rolons. You can open a window on a user profile and they will be listed (or displayed iconically). You can drag a workspace icon onto your active desktop or open its window.
One operation is available on a workspace rolon which is unique--select as default workspace. Note however that if you select a workspace that you have no write access for, you can not open or close windows, nor even move icons about.
Some minimum of controls are needed on the desktop:
1. a list of the last active workspaces. This gives the user the chance to return to a prior workspace.
2. logoff.
Other things, like preferences, can be handled by opening a window on a workspace.
When a user account is created, an initial workspace is defined and it is made the active workspace.
Icons can be added to the desktop by dragging an icon from an open window.
Windows can be opened by double-clicking on an icon on the desktop or by double-clicking on an icon in another window.