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.
Xmx creates a virtual X environment that is strictly WYSIWIS (What You
See Is What I See). All participants see exactly the same thing.
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).
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.
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
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).
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.