Low BandWidth X proxy.
lbxproxy [ :<display>] [ -help ] [ -display Display ] [ -motion Number ] [ -terminate | -reset ] [ -reconnect ] [ -I ] [ -nolbx ] [ -nocomp ] [ -nodelta ] [ -notags ] [ -nogfx ] [ -noimage ] [ -nosquish ] [ -nointernsc ] [ -noatomsfile ] [ -atomsfiles File ] [ -nowinattr ] [ -nograbcmap ] [ -norgbfile ] [ -rgbfile Path ] [ -tagcachesize ] [ -zlevel Level ] [ -compstats ] [ -nozeropad ] [ -cheaterrors ] [ -cheatevents ]
The lbxproxy command accepts client connections, multiplexes them over a single connection to the X server, and performs various optimizations on the X protocol to make it faster over low bandwidth and/or high latency connections. Applications that would like to take advantage of the Low Bandwidth extension to X (LBX) must make their connections to an lbxproxy. These applications need to know nothing about LBX, they simply connect to the lbxproxy as if were a regular server.
For authentication/authorization, lbxproxy passes the credentials presented by the client along to the server. Since X clients connect to lbxproxy, it is important that the user's .Xauthority file contain entries with valid keys associated with the network ID of the proxy. lbxproxy does not get involved with how these entries are added to the .Xauthority file. The user is responsible for setting it up.
The lbxproxy program has various flags, all of which are optional.
If :<Display> is specified, the proxy uses the Display port when listening for connections. The display port is an offset from port 6000, identical to the way in which regular X display connections are specified. If no port is specified on the command line, lbxproxy defaults to port 63. If the port that the proxy tries to listen on is in use, the proxy exits with an error message.
At startup, lbxproxy pre-interns a configurable list of atoms. This allows lbxproxy to intern a group of atoms in a single round trip and immediately store the results in its cache. While running, lbxproxy uses heuristics to decide when to delay sending window property data to the server. The heuristics depend on the size of the data, the name of the property, and whether a window manager is running through the same lbxproxy. Atom control is specified in the AtomControl file, set up during installation of lbxproxy, with command line overrides.
The file is a simple text file. There are three forms of lines: comments, length control, and name control. Lines starting with a ! (exclamation point) are treated as comments. A line of the form z length specifies the minimum length in bytes before property data is delayed. A line of the form options atomname controls the given atom, where options is any combination of the following characters: i means the atom should be pre-interned; and w means data for properties with this name should be delayed only if a window manager is also running through the same lbxproxy.
|-atomsfile File||Overrides the default AtomControl file.|
|-cheaterrors||Allows cheating on X protocol for the sake of improved performance. The X protocol guarantees that any replies, events or errors generated by a previous request are sent before those of a later request. This puts substantial restrictions on when lbxproxy can short circuit a request. The -cheaterrors flag allows lbxproxy to violate X protocol rules with respect to errors. Use at your own risk.|
|-cheatevents||The -cheatevents flag allows lbxproxy to violate X protocol rules with respect to events as well as errors. Use at your own risk.|
|-compstats||Reports stream compression statistics every time the proxy resets or receives a SIGHUP signal.|
|-display Display||Specifies the address of the X server supporting the LBX extension. If this flag is not specified, the display is obtained by the DISPLAY environment variable.|
|-help||Prints a brief help message about the command line flags.|
|-I||Causes all remaining arguments to be ignored.|
|-motion Number||Specifies the maximimum Number of events that can be in flight. A limited number of pointer motion events are allowed to be in flight between the server and the proxy at any given time. The default is 8.|
|-noatomsfile||Disables reading of the AtomControl file.|
|-nocomp||Disables stream compression.|
|-nodelta||Disables delta request substitutions.|
|-nogfx||Disables reencoding of graphics requests (not including image related requests).|
|-nograbcmap||Disables colormap grabbing.|
|-noimage||Disables image compression.|
|-nointernsc||Disables short circuiting of InternAtom requests.|
|-nolbx||Disables all LBX optimizations.|
|-norgbfile||Disables color name to RGB resolution in proxy.|
|-nosquish||Disables squishing of X events.|
|-notags||Disables usage of tags.|
|-nowinattr||Disables GetWindowAttributes/GetGeometry grouping into one round trip.|
|-nozeropad||Indicates to not zero out unused pad bytes in X requests, replies, and events.|
|-reconnect||Causes lbxproxy to reset (see -reset) and attempts to reconnect to the server when its connection to the server is broken. The default behavior of lbxproxy is to exit.|
|-rgbfile Path||Specifies an alternate RGB database Path for color name to RGB resolution.|
|-tagcachesize||Sets the size of the proxy's tag cache (in bytes).|
|-[terminate|reset]||The default behavior of lbxproxy is to continue running as usual when it's last client exits. The -terminate option will cause lbxproxy to exit when the last client exits. The -reset option will cause lbxproxy to reset itself when the last client exits. Resetting causes lbxproxy to clean up it's state and reconnect to the server.|
|-zlevel Level||Set the Zlib compression level (used for stream compression). The
default is 9.
1 = worst compression, fastest.
9 = best compression, slowest.