Provided by: dxpc_3.9.2-3_amd64 

NAME
dxpc - Differential X Protocol Compressor
RELEASE
3.9.1
SYNOPSIS
dxpc [common] [client | server] [connect]
[common] options are:
-p port_num -f -k -v -s debug_level -l log_file
[client] options (valid for CLIENT process) are:
-i compression_lvl -d display_num -u
[server] options (valid for SERVER process) are:
-D display -b(a|w)
[connect] options are:
hostname -w
DESCRIPTION
dxpc is an X protocol compressor designed to improve the speed of X11 applications run over low-bandwidth
links (such as dialup PPP connections).
dxpc must be run at both ends of a low-bandwidth link. On the host where the real X server is, dxpc runs
in "Server Proxy" mode. On the host at the other end of the link, dxpc runs in "Client Proxy" mode. The
Client Proxy dxpc must be started first. When the Server Proxy dxpc is started, it connects to the
Client Proxy. (Note that versions of dxpc before 3.3.1 used the opposite convention.) If either of the
two communicating dxpc instances is subsequently terminated, the other one automatically shuts down.
The Client Proxy mimics an X server. X client applications connect to the Client Proxy using display
"unix:8" (or "<hostname>:8"; dxpc supports both UNIX domain and TCP sockets). The Client Proxy receives
X requests from the application, compresses them, and sends them to the Server Proxy. The Server Proxy
uncompresses the requests and sends them to the real X server. Similarly, the Server Proxy receives X
events, replies, and errors from the real X server. It compresses these messages and sends them to the
Client Proxy, which uncompresses them and sends them to the client application.
The compression performance of dxpc depends upon the types of X applications being run. For many
applications, dxpc achieves between 3:1 and 6:1 compression of the X protocol traffic.
MODES
dxpc has two modes; the connection mode, which is either listening or connecting; and the X mode, which
is either client or server.
The listening process waits for a connecting process to initiate the TCP connection between the two
processes. The listening process must always be started first. The connecting process initiates the
connection to the listening process. dxpc will run as the connecting process if a hostname argument is
supplied (see connect options, above). Otherwise it will run as the listening process.
The server process is typically located on the same machine as the real X server, and is responsible for
displaying the output of applications. The client process is typically located on the same machine as the
X applications, and is responsible for forwarding the output of those applications to the server process.
By default, dxpc runs as the client process if it is the listening process (due to the lack of a hostname
argument) and the server process if it is the connecting process, but the -w switch reverses this.
For example, the command dxpc myhost.work.com starts dxpc as the connecting process (because a host name
is supplied) and the server process (because it is the connecting process and -w is not supplied). The
command dxpc -w starts dxpc as the listening process (because no hostname is supplied) and the server
process (because it is the listening process, and -w reverses the usual logic).
Options
-b(a|w) This option specifies that any windows created should be created with the BackingStore option
set to Always (-ba) or WhenMapped (-bw), if the application has not set the option itself.
Using the BackingStore option will reduce traffic to repaint exposed regions of the window,
at the cost of extra memory use in the X server itself. (This option is ignored in Client
Proxy mode.)
NOTE: The -ba option can cause Expose events to be sent before the client has mapped its
windows. This can confuse some client programs, notably GNU Emacs version 20.3. The "bug"
in this case is that dxpc shouldn't be setting BackingStore to Always behind the
application's back. Neverless, the option is available, if you want to try it; many client
programs still function fine with it, and it will cause the contents of iconified windows to
be retained.
-d displaynum
This option specifies the number of the X display that dxpc imitates. The default value is
8. (This option is ignored in Server Proxy mode.)
-f This option tells dxpc to fork and run as a daemon process. All subsequent non-error output
is suppressed, including statistics reports. The daemon can be killed by use of the -k
option.
-k This option tells dxpc to read a pid from the lockfile in the user's home directory and then
send a SIGKILL to the old process. It does some error checking to try to ensure that the
file contains a valid pid file (and nothing else). The pidfile will exist only if dxpc was
started with the -f option.
-l This option is used to tell dxpc to write messages and statistics to a logfile. Very useful
with the -f option.
-p portnumber
This option specifies the TCP port number to be used for communication between the Client
Proxy and the Server Proxy. The default value is 4000.
-s(1|2) Print a report on dxpc's compression performance for an X application when the application
exits. In Client Proxy mode, dxpc displays a report on the compression of messages generated
by the X client. In Server Proxy mode, dxpc displays a report on the compression of messages
generated by the X server. The -s1 option yields a simple report that provides the overall
compression ratio. The -s2 option yields a far more detailed report on the compression
ratios achieved for all the individual message types in the X protocol. The -s2 option is
the "hacker option"; most people will probably want the -s1 report instead.
-u -t Normally, dxpc in Client Proxy mode imitates an X display, :8 by default, by listening on
both a UNIX domain socket and a TCP socket. The -u option tells it not to use the UNIX
domain port, and the -t option tells it not to use the TCP port. (These options are ignored
in Server Proxy mode.)
-v This option tells dxpc to print out its version number and copyright message and exit.
-w Use of this option swaps the connection sequence. That is, the client will initiate the
connection to the server. Thus, instead of starting the client like dxpc -f and the server
as dxpc -f workserver, you can start the client as dxpc -w -f homepc and the server as dxpc
-w -f. This option is intended to be useful for people running the client proxy on a machine
behind a firewall.
hostname This argument must be used in Server Proxy mode to tell dxpc the hostname or IP address of
the machine where other dxpc (the one in Client Proxy mode) is running. (Note that the
presence of this argument is what puts dxpc in Server Proxy mode. If this argument is not
used, dxpc runs in Client Proxy mode.)
-D display Specify X host on which to display proxied applications. Defaults to value of the DISPLAY
environment variable.
-i(0..9|99|999)
This option controls bitmap image compression. This option is only valid on the instance
which is accepting connections; usually this is the client, but the -w option will reverse
this, making the -i option valid only on the server. The specified number is the image
compression level; higher levels offer better compression at the cost of greater CPU and
memory utilization (mostly on the client proxy). The actual behavior of each level is given
below.
0 : No compression (except for the very limited compression supported in dxpc 3.7.0). In
other words, behaves like 3.7.0 (but is incompatible with it)
1 : LZO lzo1x_1 compression; very fast, low CPU and memory use, reasonable compression.
2-9: LZO lzo1c_... variant compression algorithms. lzo1c_2 actually seems to be worse than
lzo1x_1...
99: LZO lzo1c_99 algorithm. Slow, but pretty good compression. NB: I have seen a couple of
unexplained crashes when using this level. Not recommended.
999: LZO lzo1x_999 compression. Slow (but fast enough to feed a 128K ISDN link when hosted on
a Pentium II/300 without maxing out the processor), but good compression. This is the default
and recommended value.
EXAMPLES
Assume that you're running a real X server on the console of a local workstation called homepc, and that
you want to run some X applications on a remote system called workserver and have them display on the
console of the local system.
On workserver, run
$ export DISPLAY=homepc:0
$ dxpc -f
$ export DISPLAY=unix:8
On homepc, run
$ export DISPLAY=unix:0
$ dxpc -f workserver
Now on workserver,
$ xterm&
$ xemacs&
etc...
DXPC AND XAUTH
If you use X authorization, with a .Xauthority file on the workstation where your real X server runs,
you'll need to set up a .Xauthority file on the host where the ClientProxy runs. One way to do this is:
Copy your ~/.Xauthority file from the host where the real X server runs to the host where the Client
Proxy runs.
Run
xauth list
to see the authorization keys. There should be one for your real X display. It will look something like
this:
<hostname>/unix:0 MIT-MAGIC-COOKIE-1 <hex string>
On the host where the Client Proxy is located, add a new entry to the .Xauthority file with the display
name of the fake X server (the DISPLAY where the Client Proxy is listening) and all of the other values
from the entry for the real X display. The xauth "add" command can be used, like this:
xauth add <hostname>/unix:8 MIT-MAGIC-COOKIE-1 <hex string>
where <hostname> is the name of the host where the Client Proxy is running and <hex string> has the same
value as the <hex string> obtained for the real X display in step 2. Once you do this, you should be
able to run X clients through dxpc successfully.
TROUBLESHOOTING
Some windows don't appear. This can happen if the -ba option is used, and a client program (such as GNU
Emacs version 20.3) does not request backing store and thus assumes that Expose events imply that the
window has been mapped. Use -bw, or leave out the -b option altogether.
No windows appear. This can happen if you are using a newer version of dxpc with an older one, from
before the client and server roles were changed. A connection can be established between them, but both
sides believe themselves to be the client side, or both sides believe themselves to be the server side.
Make sure you're using the same version of dxpc at both ends of the connection.
AUTHOR
Brian Pane
MAINTAINER
Kevin Vigor (kevin@vigor.nu)
ACKNOWLEDGMENTS
dxpc has adopted many good ideas from the HBX and FHBX systems
(http://www.cs.dartmouth.edu/~jmd/decs/DECSpage.html).
Thanks to all of the users of dxpc who have contributed feedback and suggestions.
SEE ALSO
xauth(1), README file from dxpc distribution
dxpc February 2, 2007 DXPC(1)