XMX is an X protocol multiplexor-server. It enables people
working on separate machines to see and interact with the same applications at
the same time. It works with existing, unmodified X servers and applications.
WYSIWIS
Xmx creates a virtual X environment that is strictly WYSIWIS
(What You See Is What I See). All participants see exactly the same thing.
Private Work
Xmx provides a shared, nested X-server-in-a-window. Each
virtual root window is under the control of the local user, and may be
resized or iconified independently. Control within the window is described in
the section "Input Control," below.
Mechanism, Not Policy
In keeping with the X Window System philosophy,
xmx imposes no policy on run-time application sharing. Rather, as a
multiplexor-server, xmx provides application sharing services to multiplexor
clients that control xmx via a separate wire protocol, XMCP (X Multiplexor
Control Protocol).
XMCP
X Multiplexor Control Protocol defines a set of application sharing
primitive operations that client programs may apply to xmx, in the same way that
X clients apply the primitive graphic operations supported by the X Protocol.
These primitives include: add/drop a display, change input control and
create/assign telepointers.
Input Control
Individual X Servers are assigned control over shared
applications based on three input "modes": floor, seat and view. Floor mode
causes all user inputs originating from a particular server to be forwarded to
the shared applications interested in them. Seat mode causes all such inputs to
be forwarded to the XMC client. View mode causes all such inputs to be ignored.
There is no restriction on what modes may be assigned to what servers.
Telepointers
Any number of remote telepointers may be defined, separate
from local X Server pointer-cursors. A telepointer may be assigned to any number
of X Servers, after which it dynamically reflects (on all servers except the one
it is responding to at any given moment) the sequential, interleaved movements
of the pointer devices on those machines, irrespective of input modes assigned.
By default, telepointers are displayed exactly as the X Server pointer-cursor
is. A telepointer's color and/or image may be overridden and held constant to
differentiate multiple telepointers. [n.b. not all telepointer features are
currently implemented]
Like an X Server
Xmx implements the standard access control and
authority mechanisms independent of the X Servers to which it connects. Xmx
mimics the command-line and network interfaces of a standard X Server, and may
be substituted for an X server in commands such as xinit(1).
Performance
Xmx was designed to multicast X protocol efficiently. It
short circuits much protocol activity, minimizes internal copying and moves all
data asynchronously. Xmx provides reasonable real-time performance on a local 10
Mb/sec ethernet on 52 UltraSparc-class machines. In most cases, the network is
the performance bottleneck. Like X, xmx uses only reliable duplex sockets
(internet or unix domain). It does not use datagram, broadcast or multicast
services.