/*
   Copyright (C) 2002-2010 Karl J. Runge <runge@karlrunge.com> 
   All rights reserved.

This file is part of x11vnc.

x11vnc is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.

x11vnc is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with x11vnc; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA
or see <http://www.gnu.org/licenses/>.

In addition, as a special exception, Karl J. Runge
gives permission to link the code of its release of x11vnc with the
OpenSSL project's "OpenSSL" library (or with modified versions of it
that use the same license as the "OpenSSL" library), and distribute
the linked executables.  You must obey the GNU General Public License
in all respects for all of the code used other than "OpenSSL".  If you
modify this file, you may extend this exception to your version of the
file, but you are not obligated to do so.  If you do not wish to do
so, delete this exception statement from your version.
*/

/* -- help.c -- */

#include "x11vnc.h"
#include "xdamage.h"
#include "cursor.h"

/*
 * text printed out under -help option
 */

void print_help(int mode);
void print_license(void);
void xopen_display_fail_message(char *disp);
void nopassword_warning_msg(int gotloc);


void print_help(int mode) {
#if !SKIP_HELP
	char help[] = 
"\n"
"x11vnc: allow VNC connections to real X11 displays. %s\n"
"\n"
"(type \"x11vnc -opts\" to just list the options.)\n"
"\n"
"Typical usage is:\n"
"\n"
"   Run this command in a shell on the remote machine \"far-host\"\n"
"   with X session you wish to view:\n"
"\n"
"       x11vnc -display :0\n"
"\n"
"   Then run this in another window on the machine you are sitting at:\n"
"\n"
"       vncviewer far-host:0\n"
"\n"
"Once x11vnc establishes connections with the X11 server and starts listening\n"
"as a VNC server it will print out a string: PORT=XXXX where XXXX is typically\n"
"5900 (the default VNC server port).  One would next run something like\n"
"this on the local machine: \"vncviewer hostname:N\" where \"hostname\" is\n"
"the name of the machine running x11vnc and N is XXXX - 5900, i.e. usually\n"
"\"vncviewer hostname:0\".\n"
"\n"
"By default x11vnc will not allow the screen to be shared and it will exit\n"
"as soon as the client disconnects.  See -shared and -forever below to override\n"
"these protections.  See the FAQ for details how to tunnel the VNC connection\n"
"through an encrypted channel such as ssh(1).  In brief:\n"
"\n"
"       ssh -t -L 5900:localhost:5900 far-host 'x11vnc -localhost -display :0'\n"
"\n"
"       vncviewer -encodings 'copyrect tight zrle hextile' localhost:0\n"
"\n"
"Also, use of a VNC password (-rfbauth or -passwdfile) is strongly recommended.\n"
"\n"
"For additional info see: http://www.karlrunge.com/x11vnc/\n"
"                    and  http://www.karlrunge.com/x11vnc/faq.html\n"
"\n"
"\n"
"Config file support: if the file $HOME/.x11vncrc exists then each line in\n"
"it is treated as a single command line option.  Disable with -norc.  For\n"
"each option name, the leading character \"-\" is not required.  E.g. a line\n"
"that is either \"forever\" or \"-forever\" may be used and are equivalent.\n"
"Likewise \"wait 100\" or \"-wait 100\" are acceptable and equivalent lines.\n"
"The \"#\" character comments out to the end of the line in the usual way\n"
"(backslash it for a literal).  Leading and trailing whitespace is trimmed off.\n"
"Lines may be continued with a \"\\\" as the last character of a line (it\n"
"becomes a space character).\n"
"\n"
"Options:\n"
"\n"
"-display disp          X11 server display to connect to, usually :0.  The X\n"
"                       server process must be running on same machine and\n"
"                       support MIT-SHM.  Equivalent to setting the DISPLAY\n"
"                       environment variable to \"disp\".\n"
"\n"
"                       See the description below of the \"-display WAIT:...\"\n"
"                       extensions, where alias \"-find\" will find the user's\n"
"                       display automatically, and \"-create\" will create a\n"
"                       Xvfb session if no session is found.\n"
"\n"
"-auth file             Set the X authority file to be \"file\", equivalent to\n"
"                       setting the XAUTHORITY environment variable to \"file\"\n"
"                       before startup.  Same as -xauth file.  See Xsecurity(7),\n"
"                       xauth(1) man pages for more info.\n"
"\n"
"                       Use '-auth guess' to have x11vnc use its -findauth\n"
"                       mechanism (described below) to try to guess the\n"
"                       XAUTHORITY filename and use it.\n"
"\n"
"                       XDM/GDM/KDM: if you are running x11vnc as root and want\n"
"                       to find the XAUTHORITY before anyone has logged into an\n"
"                       X session yet, use: x11vnc -env FD_XDM=1 -auth guess ...\n"
"                       (This will also find the XAUTHORITY if a user is already\n"
"                       logged into the X session.)  When running as root,\n"
"                       FD_XDM=1 will be tried if the initial -auth guess fails.\n"
"\n"
"-N                     If the X display is :N, try to set the VNC display to\n"
"                       also be :N This just sets the -rfbport option to 5900+N\n"
"                       The program will exit immediately if that port is not\n"
"                       available. The -N option only works with normal -display\n"
"                       usage, e.g. :0 or :8, -N is ignored in the -display\n"
"                       WAIT:..., -create, -find, -svc, -redirect, etc modes.\n"
"\n"
"-autoport n            Automatically probe for a free VNC port starting at n.\n"
"                       The default is to start probing at 5900.  Use this to\n"
"                       stay away from other VNC servers near 5900.\n"
"\n"
"-rfbport str           The VNC port to listen on (a LibVNCServer option), e.g.\n"
"                       5900, 5901, etc.  If specified as \"-rfbport PROMPT\"\n"
"                       then the x11vnc -gui is used to prompt the user to\n"
"                       enter the port number.\n"
"\n"
#if X11VNC_IPV6
"-6                     IPv6 listening support.  In addition to IPv4, the\n"
"                       IPv6 address is listened on for incoming connections.\n"
"                       The same port number as IPv4 is used.\n"
"\n"
#if X11VNC_LISTEN6
"                       NOTE:  This x11vnc binary was compiled to have the\n"
"                       \"-6\" IPv6 listening mode ENABLED by default (CPPFLAGS\n"
"                       -DX11VNC_LISTEN6=1).  So to disable IPv6 listening mode\n"
"                       you MUST supply the \"-no6\" option (see below.)\n"
#else
"                       NOTE:  This x11vnc binary was compiled to have\n"
"                       the \"-6\" IPv6 listening mode DISABLED by default\n"
"                       (CPPFLAGS -DX11VNC_LISTEN6=0).\n"
#endif
"\n"
"                       The \"-6\" mode works for both normal connections and\n"
"                       -ssl encrypted ones.  Nearly everything is supported\n"
"                       for the IPv6 case, but there are a few exceptions.\n"
"                       See -stunnel for its IPv6 support.\n"
"\n"
"                       Currently, for absolutely everything to work correctly\n"
"                       the machine may need to have some IPv4 support, at the\n"
"                       least for the loopback interface.  However, for nearly\n"
"                       all usage modes no IPv4 support is required. See -nopiv4.\n"
"\n"
"                       If you have trouble compiling or running in IPv6 mode,\n"
"                       set -DX11VNC_IPV6=0 in CPPFLAGS when configuring to\n"
"                       disable IPv6 support.\n"
"\n"
"-no6                   Disable IPv6 listening support (only useful if the\n"
"                       \"-6\" mode is compiled in to be the default; see the\n"
"                       X11VNC_LISTEN6 description above under \"-6\".)\n"
"\n"
"-noipv6                Do not try to use IPv6 for any listening or connecting\n"
"                       sockets.  This includes both the listening service\n"
"                       port(s) and outgoing connections from -connect,\n"
"                       -connect_or_exit, or -proxy.  Use this if you are having\n"
"                       problems due to IPv6.\n"
"\n"
"-noipv4                Do not try to use IPv4 for any listening or connecting\n"
"                       sockets.  This is mainly for exploring the behavior of\n"
"                       x11vnc on an IPv6-only system, but may have other uses.\n"
"\n"
#endif
"-reopen                If the X server connection is disconnected, try to\n"
"                       reopen the X display (up to one time.)  This is of use\n"
"                       for display managers like GDM (KillInitClients option)\n"
"                       that kill x11vnc just after the user logs into the\n"
"                       X session.  Note: the reopened state may be unstable.\n"
"                       Set X11VNC_REOPEN_DISPLAY=n to reopen n times and\n"
"                       set X11VNC_REOPEN_SLEEP_MAX to the number of seconds,\n"
"                       default 10, to keep trying to reopen the display (once\n"
"                       per second.)\n"
"\n"
"                       Update: as of 0.9.9, x11vnc tries to automatically avoid\n"
"                       being killed by the display manager by delaying creating\n"
"                       windows or using XFIXES.  So you shouldn't need to use\n"
"                       KillInitClients=false as long as you log in quickly\n"
"                       enough (within 45 seconds of connecting.)  You can\n"
"                       disable this by setting X11VNC_AVOID_WINDOWS=never.\n"
"                       You can also set it to the number of seconds to delay.\n"
"\n"
"-reflect host:N        Instead of connecting to and polling an X display,\n"
"                       connect to the remote VNC server host:N and be a\n"
"                       reflector/repeater for it.  This is useful for trying\n"
"                       to manage the case of many simultaneous VNC viewers\n"
"                       (e.g. classroom broadcasting) where, e.g. you put\n"
"                       a repeater on each network switch, etc, to improve\n"
"                       performance by distributing the load and network\n"
"                       traffic.  Implies -shared (use -noshared as a later\n"
"                       option to disable). See the discussion below under\n"
"                       -rawfb vnc:host:N for more details.\n"
"\n"
"-id windowid           Show the X window corresponding to \"windowid\" not\n"
"                       the entire display.  New windows like popup menus,\n"
"                       transient toplevels, etc, may not be seen or may be\n"
"                       clipped.  Disabling SaveUnders or BackingStore in the\n"
"                       X server may help show them.  x11vnc may crash if the\n"
"                       window is initially partially obscured, changes size,\n"
"                       is iconified, etc.  Some steps are taken to avoid this\n"
"                       and the -xrandr mechanism is used to track resizes.  Use\n"
"                       xwininfo(1) to get the window id, or use \"-id pick\"\n"
"                       to have x11vnc run xwininfo(1) for you and extract\n"
"                       the id.  The -id option is useful for exporting very\n"
"                       simple applications (e.g. the current view on a webcam).\n"
"-sid windowid          As -id, but instead of using the window directly it\n"
"                       shifts a root view to it: this shows SaveUnders menus,\n"
"                       etc, although they will be clipped if they extend beyond\n"
"                       the window.\n"
"\n"
"-appshare              Simple application sharing based on the -id/-sid\n"
"                       mechanism.  Every new toplevel window that the\n"
"                       application creates induces a new viewer window via\n"
"                       a reverse connection.  The -id/-sid and -connect\n"
"                       options are required.  Run 'x11vnc -appshare -help'\n"
"                       for more info.\n"
"\n"
#if 0
"-freeze_when_obscured  Probably only of use in -appshare mode: if the -id/-sid\n"
"                       window is partially or fully obscured by other windows,\n"
"                       stop checking for framebuffer updates.  Mouse and\n"
"                       keyboard events are still processed and injected.\n"
"\n"
#endif
"-clip WxH+X+Y          Only show the sub-region of the full display that\n"
"                       corresponds to the rectangle geometry with size WxH and\n"
"                       offset +X+Y.  The VNC display has size WxH (i.e. smaller\n"
"                       than the full display).  This also works for -id/-sid\n"
"                       mode where the offset is relative to the upper left\n"
"                       corner of the selected window.  An example use of this\n"
"                       option would be to split a large (e.g. Xinerama) display\n"
"                       into two parts to be accessed via separate viewers by\n"
"                       running a separate x11vnc on each part.\n"
"\n"
"                       Use '-clip xinerama0' to clip to the first xinerama\n"
"                       sub-screen (if xinerama is active).  xinerama1 for the\n"
"                       2nd sub-screen, etc.  This way you don't need to figure\n"
"                       out the WxH+X+Y of the desired xinerama sub-screen.\n"
"                       screens are sorted in increasing distance from the\n"
"                       (0,0) origin (I.e. not the Xserver's order).\n"
"\n"
"-flashcmap             In 8bpp indexed color, let the installed colormap flash\n"
"                       as the pointer moves from window to window (slow).\n"
"                       Also try the -8to24 option to avoid flash altogether.\n"
"-shiftcmap n           Rare problem, but some 8bpp displays use less than 256\n"
"                       colorcells (e.g. 16-color grayscale, perhaps the other\n"
"                       bits are used for double buffering) *and* also need to\n"
"                       shift the pixels values away from 0, .., ncells.  \"n\"\n"
"                       indicates the shift to be applied to the pixel values.\n"
"                       To see the pixel values set DEBUG_CMAP=1 to print out\n"
"                       a colormap histogram.  Example: -shiftcmap 240\n"
"-notruecolor           For 8bpp displays, force indexed color (i.e. a colormap)\n"
"                       even if it looks like 8bpp TrueColor (rare problem).\n"
"-advertise_truecolor   If the X11 display is indexed color, lie to clients\n"
"                       when they first connect by telling them it is truecolor.\n"
"                       To workaround RealVNC: inPF has colourMap but not 8bpp\n"
"                       Use '-advertise_truecolor reset' to reset client fb too.\n"
"\n"
"-visual n              This option probably does not do what you think.\n"
"                       It simply *forces* the visual used for the framebuffer;\n"
"                       this may be a bad thing... (e.g. messes up colors or\n"
"                       cause a crash). It is useful for testing and for some\n"
"                       workarounds.  n may be a decimal number, or 0x hex.\n"
"                       Run xdpyinfo(1) for the values.  One may also use\n"
"                       \"TrueColor\", etc. see <X11/X.h> for a list.  If the\n"
"                       string ends in \":m\" then for better or for worse\n"
"                       the visual depth is forced to be m.  You may want to\n"
"                       use -noshm when using this option (so XGetImage may\n"
"                       automatically translate the pixel data).\n"
"\n"
"-overlay               Handle multiple depth visuals on one screen, e.g. 8+24\n"
"                       and 24+8 overlay visuals (the 32 bits per pixel are\n"
"                       packed with 8 for PseudoColor and 24 for TrueColor).\n"
"\n"
"                       Currently -overlay only works on Solaris via\n"
"                       XReadScreen(3X11) and IRIX using XReadDisplay(3).\n"
"                       On Solaris there is a problem with image \"bleeding\"\n"
"                       around transient popup menus (but not for the menu\n"
"                       itself): a workaround is to disable SaveUnders\n"
"                       by passing the \"-su\" argument to Xsun (in\n"
"                       /etc/dt/config/Xservers).\n"
"\n"
"                       Use -overlay as a workaround for situations like these:\n"
"                       Some legacy applications require the default visual to\n"
"                       be 8bpp (8+24), or they will use 8bpp PseudoColor even\n"
"                       when the default visual is depth 24 TrueColor (24+8).\n"
"                       In these cases colors in some windows will be incorrect\n"
"                       in x11vnc unless -overlay is used.  Another use of\n"
"                       -overlay is to enable showing the exact mouse cursor\n"
"                       shape (details below).\n"
"\n"
"                       Under -overlay, performance will be somewhat slower\n"
"                       due to the extra image transformations required.\n"
"                       For optimal performance do not use -overlay, but rather\n"
"                       configure the X server so that the default visual is\n"
"                       depth 24 TrueColor and try to have all apps use that\n"
"                       visual (e.g. some apps have -use24 or -visual options).\n"
"-overlay_nocursor      Sets -overlay, but does not try to draw the exact mouse\n"
"                       cursor shape using the overlay mechanism.\n"
"\n"
"-8to24 [opts]          Try this option if -overlay is not supported on your\n"
"                       OS, and you have a legacy 8bpp app that you want to\n"
"                       view on a multi-depth display with default depth 24\n"
"                       (and is 32 bpp) OR have a default depth 8 display with\n"
"                       depth 24 overlay windows for some apps.  This option\n"
"                       may not work on all X servers and hardware (tested\n"
"                       on XFree86/Xorg mga driver and Xsun).  The \"opts\"\n"
"                       string is not required and is described below.\n"
"\n"
"                       This mode enables a hack where x11vnc monitors windows\n"
"                       within 3 levels from the root window.  If it finds\n"
"                       any that are 8bpp it extracts the indexed color\n"
"                       pixel values using XGetImage() and then applies a\n"
"                       transformation using the colormap(s) to create TrueColor\n"
"                       RGB values that it in turn inserts into bits 1-24 of\n"
"                       the framebuffer.  This creates a depth 24 \"view\"\n"
"                       of the display that is then exported via VNC.\n"
"\n"
"                       Conversely, for default depth 8 displays, the depth\n"
"                       24 regions are read by XGetImage() and everything is\n"
"                       transformed and inserted into a depth 24 TrueColor\n"
"                       framebuffer.\n"
"\n"
"                       Note that even if there are *no* depth 24 visuals or\n"
"                       windows (i.e. pure 8bpp), this mode is potentially\n"
"                       an improvement over -flashcmap because it avoids the\n"
"                       flashing and shows each window in the correct color.\n"
"\n"
"                       This method works OK, but may still have bugs and it\n"
"                       does hog resources.  If there are multiple 8bpp windows\n"
"                       using different colormaps, one may have to iconify all\n"
"                       but one for the colors to be correct.\n"
"\n"
"                       There may be painting errors for clipping and switching\n"
"                       between windows of depths 8 and 24.  Heuristics are\n"
"                       applied to try to minimize the painting errors.  One can\n"
"                       also press 3 Alt_L's in a row to refresh the screen\n"
"                       if the error does not repair itself.  Also the option\n"
"                       -fixscreen 8=3.0 or -fixscreen V=3.0 may be used to\n"
"                       periodically refresh the screen at the cost of bandwidth\n"
"                       (every 3 sec for this example).\n"
"\n"
"                       The [opts] string can contain the following settings.\n"
"                       Multiple settings are separated by commas.\n"
"\n"
"                       For for some X servers with default depth 24 a\n"
"                       speedup may be achieved via the option \"nogetimage\".\n"
"                       This enables a scheme were XGetImage() is not used\n"
"                       to retrieve the 8bpp data.  Instead, it assumes that\n"
"                       the 8bpp data is in bits 25-32 of the 32bit X pixels.\n"
"                       There is no requirement that the X server should put\n"
"                       the data there for our poll requests, but some do and\n"
"                       so the extra steps to retrieve it can be skipped.\n"
"                       Tested with mga driver with XFree86/Xorg.  For the\n"
"                       default depth 8 case this option is ignored.\n"
"\n"
"                       To adjust how often XGetImage() is used to poll the\n"
"                       non-default visual regions for changes, use the option\n"
"                       \"poll=t\" where \"t\" is a floating point time.\n"
"                       (default: %.2f)\n"
"\n"
"                       Setting the option \"level2\" will limit the search\n"
"                       for non-default visual windows to two levels from the\n"
"                       root window.  Do this on slow machines where you know\n"
"                       the window manager only imposes one extra window between\n"
"                       the app window and the root window.\n"
"\n"
"                       Also for very slow machines use \"cachewin=t\"\n"
"                       where t is a floating point amount of time to cache\n"
"                       XGetWindowAttributes results.  E.g. cachewin=5.0.\n"
"                       This may lead to the windows being unnoticed for this\n"
"                       amount of time when deiconifying, painting errors, etc.\n"
"\n"
"                       While testing on a very old SS20 these options gave\n"
"                       tolerable response: -8to24 poll=0.2,cachewin=5.0. For\n"
"                       this machine -overlay is supported and gives better\n"
"                       response.\n"
"\n"
"                       Debugging for this mode can be enabled by setting\n"
"                       \"dbg=1\", \"dbg=2\", or \"dbg=3\".\n"
"\n"
"-24to32                Very rare problem: if the framebuffer (X display\n"
"                       or -rawfb) is 24bpp instead of the usual 32bpp, then\n"
"                       dynamically transform the pixels to 32bpp.  This will be\n"
"                       slower, but can be used to work around problems where\n"
"                       VNC viewers cannot handle 24bpp (e.g. \"main: setPF:\n"
"                       not 8, 16 or 32 bpp?\").  See the FAQ for more info.\n"
"\n"
"                       In the case of -rawfb mode, the pixels are directly\n"
"                       modified by inserting a 0 byte to pad them out to 32bpp.\n"
"                       For X displays, a kludge is done that is equivalent to\n"
"                       \"-noshm -visual TrueColor:32\".  (If better performance\n"
"                       is needed for the latter, feel free to ask).\n"
"\n"
"-scale fraction        Scale the framebuffer by factor \"fraction\".  Values\n"
"                       less than 1 shrink the fb, larger ones expand it. Note:\n"
"                       the image may not be sharp and response may be slower.\n"
"                       If \"fraction\" contains a decimal point \".\" it\n"
"                       is taken as a floating point number, alternatively\n"
"                       the notation \"m/n\" may be used to denote fractions\n"
"                       exactly, e.g. -scale 2/3\n"
"\n"
"                       To scale asymmetrically in the horizontal and vertical\n"
"                       directions, specify a WxH geometry to stretch to:\n"
"                       e.g. '-scale 1024x768', or also '-scale 0.9x0.75'\n"
"\n"
"                       Scaling Options: can be added after \"fraction\" via\n"
"                       \":\", to supply multiple \":\" options use commas.\n"
"                       If you just want a quick, rough scaling without\n"
"                       blending, append \":nb\" to \"fraction\" (e.g. -scale\n"
"                       1/3:nb).  No blending is the default for 8bpp indexed\n"
"                       color, to force blending for this case use \":fb\".\n"
"\n"
"                       To disable -scrollcopyrect and -wirecopyrect under\n"
"                       -scale use \":nocr\".  If you need to to enable them use\n"
"                       \":cr\" or specify them explicitly on the command line.\n"
"                       If a slow link is detected, \":nocr\" may be applied\n"
"                       automatically.  Default: %s\n"
"\n"
"                       More esoteric options: for compatibility with vncviewers\n"
"                       the scaled width is adjusted to be a multiple of 4:\n"
"                       to disable this use \":n4\".  \":in\" use interpolation\n"
"                       scheme even when shrinking, \":pad\" pad scaled width\n"
"                       and height to be multiples of scaling denominator\n"
"                       (e.g. 3 for 2/3).\n"
"\n"
"-geometry WxH          Same as -scale WxH\n"
"\n"
"-scale_cursor frac     By default if -scale is supplied the cursor shape is\n"
"                       scaled by the same factor.  Depending on your usage,\n"
"                       you may want to scale the cursor independently of the\n"
"                       screen or not at all.  If you specify -scale_cursor\n"
"                       the cursor will be scaled by that factor.  When using\n"
"                       -scale mode to keep the cursor at its \"natural\" size\n"
"                       use \"-scale_cursor 1\".  Most of the \":\" scaling\n"
"                       options apply here as well.\n"
"\n"
"-viewonly              All VNC clients can only watch (default %s).\n"
"-shared                VNC display is shared, i.e. more than one viewer can\n"
"                       connect at the same time (default %s).\n"
"-once                  Exit after the first successfully connected viewer\n"
"                       disconnects, opposite of -forever. This is the Default.\n"
"-forever               Keep listening for more connections rather than exiting\n"
"                       as soon as the first client(s) disconnect. Same as -many\n"
"\n"
"                       To get the standard non-shared VNC behavior where when\n"
"                       a new VNC client connects the existing VNC client is\n"
"                       dropped use:  -nevershared -forever   This method can\n"
"                       also be used to guard against hung TCP connections that\n"
"                       do not go away.\n"
"\n"
"-loop                  Create an outer loop restarting the x11vnc process\n"
"                       whenever it terminates.  -bg and -inetd are ignored\n"
"                       in this mode (however see -loopbg below).\n"
"\n"
"                       Useful for continuing even if the X server terminates\n"
"                       and restarts (at that moment the process will need\n"
"                       permission to reconnect to the new X server of course).\n"
"\n"
"                       Use, e.g., -loop100 to sleep 100 millisecs between\n"
"                       restarts, etc.  Default is 2000ms (i.e. 2 secs) Use,\n"
"                       e.g. -loop300,5 to sleep 300 ms and only loop 5 times.\n"
"\n"
"                       If -loopbg (plus any numbers) is specified instead,\n"
"                       the \"-bg\" option is implied and the mode approximates\n"
"                       inetd(8) usage to some degree.  In this case when\n"
"                       it goes into the background any listening sockets\n"
"                       (i.e. ports 5900, 5800) are closed, so the next one\n"
"                       in the loop can use them.  This mode will only be of\n"
"                       use if a VNC client (the only client for that process)\n"
"                       is already connected before the process goes into the\n"
"                       background, for example, usage of -display WAIT:..,\n"
"                       -svc, and -connect can make use of this \"poor man's\"\n"
"                       inetd mode.  The default wait time is 500ms in this\n"
"                       mode.  This usage could use useful:  -svc -bg -loopbg\n"
"\n"
"-timeout n             Exit unless a client connects within the first n seconds\n"
"                       after startup.\n"
"\n"
"                       If there have been no connection attempts after n\n"
"                       seconds x11vnc exits immediately.  If a client is\n"
"                       trying to connect but has not progressed to the normal\n"
"                       operating state, x11vnc gives it a few more seconds\n"
"                       to finish and exits if it does not make it to the\n"
"                       normal state.\n"
"\n"
"                       For reverse connections via -connect or -connect_or_exit\n"
"                       a timeout of n seconds will be set for all reverse\n"
"                       connects.  If the connect timeout alarm goes off,\n"
"                       x11vnc will exit immediately.\n"
"\n"
"-sleepin n             At startup sleep n seconds before proceeding (e.g. to\n"
"                       allow redirs and listening clients to start up)\n"
"\n"
"                       If a range is given: '-sleepin min-max', a random value\n"
"                       between min and max is slept. E.g. '-sleepin 0-20' and\n"
"                       '-sleepin 10-30'.  Floats are allowed too.\n"
"\n"
"-inetd                 Launched by inetd(8): stdio instead of listening socket.\n"
"                       Note: if you are not redirecting stderr to a log file\n"
"                       (via shell 2> or -o option) you MUST also specify the -q\n"
"                       option, otherwise the stderr goes to the viewer which\n"
"                       will cause it to abort.  Specifying both -inetd and -q\n"
"                       and no -o will automatically close the stderr.\n"
"\n"
"-tightfilexfer         Enable the TightVNC file transfer extension. Note that\n"
"                       that when the -viewonly option is supplied all file\n"
"                       transfers are disabled.  Also clients that log in\n"
"                       viewonly cannot transfer files.  However, if the remote\n"
"                       control mechanism is used to change the global or\n"
"                       per-client viewonly state the filetransfer permissions\n"
"                       will NOT change.\n"
"\n"
"                       IMPORTANT: please understand if -tightfilexfer is\n"
"                       specified and you run x11vnc as root for, say, inetd\n"
"                       or display manager (gdm, kdm, ...) access and you do\n"
"                       not have it switch users via the -users option, then\n"
"                       VNC Viewers that connect are able to do filetransfer\n"
"                       reads and writes as *root*.\n"
"\n"
"                       Also, tightfilexfer is disabled in -unixpw mode.\n"
"\n"
"-ultrafilexfer         Note: to enable UltraVNC filetransfer and to get it to\n"
"                       work you probably need to supply these LibVNCServer\n"
"                       options: \"-rfbversion 3.6 -permitfiletransfer\"\n"
"                       \"-ultrafilexfer\" is an alias for this combination.\n"
"\n"
"                       IMPORTANT: please understand if -ultrafilexfer is\n"
"                       specified and you run x11vnc as root for, say, inetd\n"
"                       or display manager (gdm, kdm, ...) access and you do\n"
"                       not have it switch users via the -users option, then\n"
"                       VNC Viewers that connect are able to do filetransfer\n"
"                       reads and writes as *root*.\n"
"\n"
"                       Note that sadly you cannot do both -tightfilexfer and\n"
"                       -ultrafilexfer at the same time because the latter\n"
"                       requires setting the version to 3.6 and tightvnc will\n"
"                       not do filetransfer when it sees that version number.\n"
"\n"
"-http                  Instead of using -httpdir (see below) to specify\n"
"                       where the Java vncviewer applet is, have x11vnc try\n"
"                       to *guess* where the directory is by looking relative\n"
"                       to the program location and in standard locations\n"
"                       (/usr/local/share/x11vnc/classes, etc).  Under -ssl or\n"
"                       -stunnel the ssl classes subdirectory is sought.\n"
"-http_ssl              As -http, but force lookup for ssl classes subdir.\n"
"\n"
"                       Note that for HTTPS, single-port Java applet delivery\n"
"                       you can set X11VNC_HTTPS_DOWNLOAD_WAIT_TIME to the\n"
"                       max number of seconds to wait for the applet download\n"
"                       to finish.  The default is 15.\n"
"\n"
"-avahi                 Use the Avahi/mDNS ZeroConf protocol to advertise\n"
"                       this VNC server to the local network. (Related terms:\n"
"                       Rendezvous, Bonjour).  Depending on your setup, you\n"
"                       may need to start avahi-daemon and open udp port 5353\n"
"                       in your firewall.\n"
"\n"
"                       You can set X11VNC_AVAHI_NAME, X11VNC_AVAHI_HOST,\n"
"                       and/or X11VNC_AVAHI_PORT environment variables\n"
"                       to override the default values.  For example:\n"
"                       -env X11VNC_AVAHI_NAME=wally\n"
"\n"
"                       If the avahi API cannot be found at build time, a helper\n"
"                       program like avahi-publish(1) or dns-sd(1) will be tried\n"
"\n"
"-mdns                  Same as -avahi.\n"
"-zeroconf              Same as -avahi.\n"
"\n"
"-connect string        For use with \"vncviewer -listen\" reverse connections.\n"
"                       If \"string\" has the form \"host\" or \"host:port\"\n"
"                       the connection is made once at startup.\n"
"\n"
"                       Use commas for a list of host's and host:port's.\n"
"                       E.g. -connect host1,host2 or host1:0,host2:5678.\n"
"                       Note that to reverse connect to multiple hosts at the\n"
"                       same time you will likely need to also supply: -shared\n"
"\n"
"                       Note that unlike most vnc servers, x11vnc will require a\n"
"                       password for reverse as well as for forward connections.\n"
"                       (provided password auth has been enabled, -rfbauth, etc)\n"
"                       If you do not want to require a password for reverse\n"
"                       connections set X11VNC_REVERSE_CONNECTION_NO_AUTH=1 in\n"
"                       your environment before starting x11vnc.\n"
"\n"
"                       If \"string\" contains \"/\" it is instead interpreted\n"
"                       as a file to periodically check for new hosts.\n"
"                       The first line is read and then the file is truncated.\n"
"                       Be careful about the location of this file if x11vnc\n"
"                       is running as root (e.g. via gdm(1), etc).\n"
"\n"
"\n"
"                       Repeater mode: Some services provide an intermediate\n"
"                       \"vnc repeater\": http://www.uvnc.com/addons/repeater.html\n"
"                       (and also http://koti.mbnet.fi/jtko/ for linux port)\n"
"                       that acts as a proxy/gateway.  Modes like these require\n"
"                       an initial string to be sent for the reverse connection\n"
"                       before the VNC protocol is started.  Here are the ways\n"
"                       to do this:\n"
"\n"
"                         -connect pre=some_string+host:port\n"
"                         -connect pre128=some_string+host:port\n"
"                         -connect repeater=ID:1234+host:port\n"
"                         -connect repeater=23.45.67.89::5501+host:port\n"
"\n"
"                       SSVNC notation is also supported:\n"
"\n"
"                         -connect repeater://host:port+ID:1234\n"
"\n"
"                       As with normal -connect usage, if the repeater port is\n"
"                       not supplied 5500 is assumed.\n"
"\n"
"                       The basic idea is between the special tag, e.g. \"pre=\"\n"
"                       and \"+\" is the pre-string to be sent.  Note that in\n"
"                       this case host:port is the repeater server, NOT the\n"
"                       vnc viewer.  Somehow the pre-string tells the repeater\n"
"                       server how to find the vnc viewer and connect you to it.\n"
"\n"
"                       In the case pre=some_string+host:port, \"some_string\"\n"
"                       is simply sent. In the case preNNN=some_string+host:port\n"
"                       \"some_string\" is sent in a null padded buffer of\n"
"                       length NNN.  repeater= is the same as pre250=, this is\n"
"                       the ultravnc repeater buffer size.\n"
"\n"
"                       Strings like \"\\n\" and \"\\r\", etc. are expanded to\n"
"                       newline and carriage return.  \"\\c\" is expanded to\n"
"                       \",\" since the connect string is comma separated.\n"
"\n"
"                       See also the -proxy option below for additional ways\n"
"                       to plumb reverse connections.\n"
"\n"
"                       Reverse SSL: using -connect in -ssl mode makes x11vnc\n"
"                       act as an SSL client (initiates SSL connection) rather\n"
"                       than an SSL server.  The idea is x11vnc might be\n"
"                       connecting to stunnel on the viewer side with the\n"
"                       viewer in listening mode.  If you do not want this\n"
"                       behavior, use -env X11VNC_DISABLE_SSL_CLIENT_MODE=1.\n"
"                       With this the viewer side can act as the SSL client\n"
"                       as it normally does for forward connections.\n"
"\n"
"                       Reverse SSL Repeater mode:  This will work, but note\n"
"                       that if the VNC Client does any sort of a 'Fetch Cert'\n"
"                       action before connecting, then the Repeater will\n"
"                       likely drop the connection and both sides will need\n"
"                       to restart.  Consider the use of -connect_or_exit\n"
"                       and -loop300,2 to have x11vnc reconnect once to the\n"
"                       repeater after the fetch.  You will probably also want\n"
"                       to supply -sslonly to avoid x11vnc thinking the delay\n"
"                       in response means the connection is VeNCrypt.  The env\n"
"                       var X11VNC_DISABLE_SSL_CLIENT_MODE=1 discussed above\n"
"                       may also be useful (i.e. the viewer can do a forward\n"
"                       connection as it normally does.)\n"
"\n"
"                       IPv6: as of x11vnc 0.9.10 the -connect option should\n"
"                       connect to IPv6 hosts properly.  If there are problems\n"
"                       you can disable IPv6 by setting -DX11VNC_IPV6=0\n"
"                       in CPPFLAGS when configuring.  If there problems\n"
"                       connecting to IPv6 hosts consider a relay like the\n"
"                       included inet6to4 script or the -proxy option.\n"
"\n"
"-connect_or_exit str   As with -connect, except if none of the reverse\n"
"                       connections succeed, then x11vnc shuts down immediately\n"
"\n"
"                       An easier to type alias for this option is '-coe'\n"
"\n"
"                       By the way, if you do not want x11vnc to listen on\n"
"                       ANY interface use -rfbport 0  which is handy for the\n"
"                       -connect_or_exit mode.\n"
"\n"
"-proxy string          Use proxy in string (e.g. host:port) as a proxy for\n"
"                       making reverse connections (-connect or -connect_or_exit\n"
"                       options).\n"
"\n"
"                       Web proxies are supported, but note by default most of\n"
"                       them only support destination connections to ports 443\n"
"                       or 563, so this might not be very useful (the viewer\n"
"                       would need to listen on that port or the router would\n"
"                       have to do a port redirection).\n"
"\n"
"                       A web proxy may be specified by either \"host:port\"\n"
"                       or \"http://host:port\" (the port is required even if\n"
"                       it is the common choices 80 or 8080)\n"
"\n"
"                       SOCKS4, SOCKS4a, and SOCKS5 are also supported.\n"
"                       SOCKS proxies normally do not have restrictions on the\n"
"                       destination port number.\n"
"\n"
"                       Use a format like this: socks://host:port or\n"
"                       socks5://host:port.  Note that ssh -D does not support\n"
"                       SOCKS4a, so use socks5://.  For socks:// SOCKS4 is used\n"
"                       on a numerical IP and \"localhost\", otherwise SOCKS4a\n"
"                       is used (and so the proxy tries to do the DNS lookup).\n"
"\n"
"                       An experimental mode is \"-proxy http://host:port/...\"\n"
"                       Note the \"/\" after the port that distinguishes it from\n"
"                       a normal web proxy.  The port must be supplied even if\n"
"                       it is the default 80.  For this mode a GET is done to\n"
"                       the supplied URL with the string host=H&port=P appended.\n"
"                       H and P will be the -connect reverse connect host\n"
"                       and port.  Use the string \"__END__\" to disable the\n"
"                       appending.  The basic idea here is that maybe some cgi\n"
"                       script provides the actual viewer hookup and tunnelling.\n"
"                       How to actually achieve this within cgi, php, etc. is\n"
"                       not clear...  A custom web server or apache module\n"
"                       would be straight-forward.\n"
"\n"
"                       Another experimental mode is \"-proxy ssh://user@host\"\n"
"                       in which case a SSH tunnel is used for the proxying.\n"
"                       \"user@\" is not needed unless your unix username is\n"
"                       different on \"host\".  For a non-standard SSH port\n"
"                       use ssh://user@host:port.  If proxies are chained (see\n"
"                       next paragraph) then the ssh one must be the first one.\n"
"                       If ssh-agent is not active, then the ssh password needs\n"
"                       to be entered in the terminal where x11vnc is running.\n"
"                       Examples:\n"
"\n"
"                         -connect localhost:0 -proxy ssh://me@friends-pc:2222\n"
"\n"
"                         -connect snoopy:0 -proxy ssh://ssh.company.com\n"
"\n"
"                       Multiple proxies may be chained together in case one\n"
"                       needs to ricochet off of a number of hosts to finally\n"
"                       reach the VNC viewer.  Up to 3 may be chained, separate\n"
"                       them by commas in the order they are to be connected to.\n"
"                       E.g.:  http://host1:port1,socks5://host2:port2 or three\n"
"                       like:  first,second,third\n"
"\n"
"                       IPv6: as of x11vnc 0.9.10 the -proxy option should\n"
"                       connect to IPv6 hosts properly.  If there are problems\n"
"                       you can disable IPv6 by setting -DX11VNC_IPV6=0\n"
"                       in CPPFLAGS when configuring.  If there problems\n"
"                       connecting to IPv6 hosts consider a relay like the\n"
"                       included inet6to4 script.\n"
"\n"
"-vncconnect            Monitor the VNC_CONNECT X property set by the standard\n"
"-novncconnect          VNC program vncconnect(1).  When the property is\n"
"                       set to \"host\" or \"host:port\" establish a reverse\n"
"                       connection.  Using xprop(1) instead of vncconnect may\n"
"                       work (see the FAQ).  The -remote control mechanism uses\n"
"                       X11VNC_REMOTE channel, and this option disables/enables\n"
"                       it as well.  Default: %s\n"
"\n"
"                       To use different names for these X11 properties (e.g. to\n"
"                       have separate communication channels for multiple\n"
"                       x11vnc's on the same display) set the VNC_CONNECT or\n"
"                       X11VNC_REMOTE env. vars. to the string you want, for\n"
"                       example: -env X11VNC_REMOTE=X11VNC_REMOTE_12345\n"
"                       Both sides of the channel must use the same unique name.\n"
"                       The same can be done for the internal X11VNC_TICKER\n"
"                       property (heartbeat and timestamp) if desired.\n"
"\n"
"-allow host1[,host2..] Only allow client connections from hosts matching\n"
"                       the comma separated list of hostnames or IP addresses.\n"
"                       Can also be a numerical IP prefix, e.g. \"192.168.100.\"\n"
"                       to match a simple subnet, for more control build\n"
"                       LibVNCServer with libwrap support (See the FAQ).  If the\n"
"                       list contains a \"/\" it instead is a interpreted\n"
"                       as a file containing addresses or prefixes that is\n"
"                       re-read each time a new client connects.  Lines can be\n"
"                       commented out with the \"#\" character in the usual way.\n"
"\n"
"                       -allow applies in -ssl mode, but not in -stunnel mode.\n"
"\n"
"                       IPv6: as of x11vnc 0.9.10 a host can be specified\n"
"                       in IPv6 numerical format, e.g. 2001:4860:b009::93.\n"
"\n"
"-localhost             Basically the same as \"-allow 127.0.0.1\".\n"
"\n"
"                       Note: if you want to restrict which network interface\n"
"                       x11vnc listens on, see the -listen option below.\n"
"                       E.g. \"-listen localhost\" or \"-listen 192.168.3.21\".\n"
"                       As a special case, the option \"-localhost\" implies\n"
"                       \"-listen localhost\".\n"
"\n"
"                       A rare case, but for non-localhost -listen usage, if\n"
"                       you use the remote control mechanism (-R) to change\n"
"                       the -listen interface you may need to manually adjust\n"
"                       the -allow list (and vice versa) to avoid situations\n"
"                       where no connections (or too many) are allowed.\n"
"\n"
"                       If you do not want x11vnc to listen on ANY interface\n"
"                       (evidently you are using -connect or -connect_or_exit,\n"
"                       or plan to use remote control: -R connect:host), use\n"
"                       -rfbport 0\n"
"\n"
"                       IPv6: if IPv6 is supported, this option automatically\n"
"                       implies the IPv6 loopback address '::1' as well.\n"
"\n"
"-unixsock str          Listen on the unix socket (AF_UNIX) 'str'\n"
"                       for connections.  This mode is for either local\n"
"                       connections or a tunnel endpoint where one wants the\n"
"                       file permission of the unix socket file to determine\n"
"                       what can connect to it.  (This currently requires an\n"
"                       edit to libvnserver/rfbserver.c: comment out lines 310\n"
"                       and 311, 'close(sock)' and 'return NULL' in rfbserver.c\n"
"                       after the setsockopt() call.) Note that to disable all\n"
"                       tcp listening ports specify '-rfbport 0' and should be\n"
"                       useful with this mode.  Example:\n"
"                           mkdir ~/s; chmod 700 ~/s;\n"
"                           x11vnc -unixsock ~/s/mysock -rfbport 0 ...\n"
"                       The SSVNC unix vncviewer can connect to unix sockets.\n"
"\n"
#if X11VNC_IPV6
"-listen6 str           When in IPv6 listen mode \"-6\", listen only on the\n"
"                       network interface with address \"str\".  It also works\n"
"                       for link scope addresses (fe80::219:dbff:fee5:3f92%%eth0)\n"
"                       and IPv6 hostname strings (e.g. ipv6.google.com.)\n"
"                       Use LibVNCServer -listen option for the IPv4 interface.\n"
"\n"
#endif
"-nolookup              Do not use gethostbyname() or gethostbyaddr() to look up\n"
"                       host names or IP numbers.  Use this if name resolution\n"
"                       is incorrectly set up and leads to long pauses as name\n"
"                       lookups time out, etc.\n"
"\n"
"-input string          Fine tuning of allowed user input.  If \"string\" does\n"
"                       not contain a comma \",\" the tuning applies only to\n"
"                       normal clients.  Otherwise the part before \",\" is\n"
"                       for normal clients and the part after for view-only\n"
"                       clients.  \"K\" is for Keystroke input, \"M\" for\n"
"                       Mouse-motion input, \"B\" for Button-click input, \"C\"\n"
"                       is for Clipboard input, and \"F\" is for File transfer\n"
"                       (ultravnc only).  Their presence in the string enables\n"
"                       that type of input.  E.g. \"-input M\" means normal\n"
"                       users can only move the mouse and  \"-input KMBCF,M\"\n"
"                       lets normal users do anything and enables view-only\n"
"                       users to move the mouse.  This option is ignored when\n"
"                       a global -viewonly is in effect (all input is discarded\n"
"                       in that case).\n"
"\n"
"-grabkbd               When VNC viewers are connected, attempt to the grab\n"
"                       the keyboard so a (non-malicious) user sitting at the\n"
"                       physical display is not able to enter keystrokes.\n"
"                       This method uses XGrabKeyboard(3X11) and so it is\n"
"                       not secure and does not rule out the person at the\n"
"                       physical display injecting keystrokes by flooding the\n"
"                       server with them, grabbing the keyboard himself, etc.\n"
"                       Some degree of cooperation from the person at the\n"
"                       display is assumed.  This is intended for remote\n"
"                       help-desk or educational usage modes.\n"
"\n"
"                       Note: on some recent (12/2010) X servers and/or\n"
"                       desktops, -grabkbd no longer works: it prevents the\n"
"                       window manager from resizing windows and similar things.\n"
"                       Try -ungrabboth below (might not work.)\n"
"\n"
"-grabptr               As -grabkbd, but for the mouse pointer using\n"
"                       XGrabPointer(3X11).  Unfortunately due to the way the X\n"
"                       server works, the mouse can still be moved around by the\n"
"                       user at the physical display, but he will not be able to\n"
"                       change window focus with it.  Also some window managers\n"
"                       that call XGrabServer(3X11) for resizes, etc, will\n"
"                       act on the local user's input.  Again, some degree of\n"
"                       cooperation from the person at the display is assumed.\n"
"\n"
"-ungrabboth            Whenever there is any input (either keyboard or\n"
"                       pointer), ungrab *both* the keyboard and the pointer\n"
"                       while injecting the synthetic input.  This is to allow\n"
"                       window managers, etc. a chance to grab.\n"
"\n"
"-grabalways            Apply both -grabkbd and -grabptr even when no VNC\n"
"                       viewers are connected.  If you only want one of them,\n"
"                       use the -R remote control to turn the other back on,\n"
"                       e.g. -R nograbptr.\n"
"\n"
#ifdef ENABLE_GRABLOCAL
"-grablocal n           If it appears that a user sitting at the physical\n"
"                       display has injected a keystroke or mouse event ignore\n"
"                       any VNC client inputs for the next n seconds.  The idea\n"
"                       is that during a demonstration, etc, the local user\n"
"                       will not be interrupted by viewers accidentally moving\n"
"                       the mouse, etc.  The detection of local user input is\n"
"                       approximate and so at times gives unexpected results.\n"
"\n"
#endif
"-viewpasswd string     Supply a 2nd password for view-only logins.  The -passwd\n"
"                       (full-access) password must also be supplied.\n"
"\n"
"-passwdfile filename   Specify the LibVNCServer password via the first line\n"
"                       of the file \"filename\" (instead of via -passwd on\n"
"                       the command line where others might see it via ps(1)).\n"
"\n"
"                       See the descriptions below for how to supply multiple\n"
"                       passwords, view-only passwords, to specify external\n"
"                       programs for the authentication, and other features.\n"
"\n"
"                       If the filename is prefixed with \"rm:\" it will be\n"
"                       removed after being read.  Perhaps this is useful in\n"
"                       limiting the readability of the file.  In general, the\n"
"                       password file should not be readable by untrusted users\n"
"                       (BTW: neither should the VNC -rfbauth file: it is NOT\n"
"                       encrypted, only obscured with a fixed key).\n"
"\n"
"                       If the filename is prefixed with \"read:\" it will\n"
"                       periodically be checked for changes and reread.  It is\n"
"                       guaranteed to be reread just when a new client connects\n"
"                       so that the latest passwords will be used.\n"
"\n"
"                       If \"filename\" is prefixed with \"cmd:\" then the\n"
"                       string after the \":\" is run as an external command:\n"
"                       the output of the command will be interpreted as if it\n"
"                       were read from a password file (see below).  If the\n"
"                       command does not exit with 0, then x11vnc terminates\n"
"                       immediately.  To specify more than 1000 passwords this\n"
"                       way set X11VNC_MAX_PASSWDS before starting x11vnc.\n"
"                       The environment variables are set as in -accept.\n"
"\n"
"                       Note that due to the VNC protocol only the first 8\n"
"                       characters of a password are used (DES key).\n"
"\n"
"                       If \"filename\" is prefixed with \"custom:\" then a\n"
"                       custom password checker is supplied as an external\n"
"                       command following the \":\". The command will be run\n"
"                       when a client authenticates.  If the command exits with\n"
"                       0 the client is accepted, otherwise it is rejected.\n"
"                       The environment variables are set as in -accept.\n"
"\n"
"                       The standard input to the custom command will be a\n"
"                       decimal digit \"len\" followed by a newline. \"len\"\n"
"                       specifies the challenge size and is usually 16 (the\n"
"                       VNC spec).  Then follows len bytes which is the random\n"
"                       challenge string that was sent to the client. This is\n"
"                       then followed by len more bytes holding the client's\n"
"                       response (i.e. the challenge string encrypted via DES\n"
"                       with the user password in the standard situation).\n"
"\n"
"                       The \"custom:\" scheme can be useful to implement\n"
"                       dynamic passwords or to implement methods where longer\n"
"                       passwords and/or different encryption algorithms\n"
"                       are used.  The latter will require customizing the VNC\n"
"                       client as well.  One could create an MD5SUM based scheme\n"
"                       for example.\n"
"\n"
"                       File format for -passwdfile:\n"
"\n"
"                       If multiple non-blank lines exist in the file they are\n"
"                       all taken as valid passwords.  Blank lines are ignored.\n"
"                       Password lines may be \"commented out\" (ignored) if\n"
"                       they begin with the character \"#\" or the line contains\n"
"                       the string \"__SKIP__\".  Lines may be annotated by use\n"
"                       of the \"__COMM__\" string: from it to the end of the\n"
"                       line is ignored.  An empty password may be specified\n"
"                       via the \"__EMPTY__\" string on a line by itself (note\n"
"                       your viewer might not accept empty passwords).\n"
"\n"
"                       If the string \"__BEGIN_VIEWONLY__\" appears on a\n"
"                       line by itself, the remaining passwords are used for\n"
"                       viewonly access.  For compatibility, as a special case\n"
"                       if the file contains only two password lines the 2nd\n"
"                       one is automatically taken as the viewonly password.\n"
"                       Otherwise the \"__BEGIN_VIEWONLY__\" token must be\n"
"                       used to have viewonly passwords.  (tip: make the 3rd\n"
"                       and last line be \"__BEGIN_VIEWONLY__\" to have 2\n"
"                       full-access passwords)\n"
"\n"
"-showrfbauth filename  Print to the screen the obscured VNC password kept in\n"
"                       the rfbauth file \"filename\" and then exit.\n"
"\n"
"-unixpw [list]         Use Unix username and password authentication.  x11vnc\n"
"                       will use the su(1) program to verify the user's\n"
"                       password.  [list] is an optional comma separated list\n"
"                       of allowed Unix usernames.  If the [list] string begins\n"
"                       with the character \"!\" then the entire list is taken\n"
"                       as an exclude list.  See below for per-user options\n"
"                       that can be applied.\n"
"\n"
"                       A familiar \"login:\" and \"Password:\" dialog is\n"
"                       presented to the user on a black screen inside the\n"
"                       vncviewer.  The connection is dropped if the user fails\n"
"                       to supply the correct password in 3 tries or does not\n"
"                       send one before a 45 second timeout.  Existing clients\n"
"                       are view-only during this period.\n"
"\n"
"                       If the first character received is \"Escape\" then the\n"
"                       unix username will not be displayed after \"login:\"\n"
"                       as it is typed.  This could be of use for VNC viewers\n"
"                       that automatically type the username and password.\n"
"\n"
"                       Since the detailed behavior of su(1) can vary from\n"
"                       OS to OS and for local configurations, test the mode\n"
"                       before deployment to make sure it is working properly.\n"
"                       x11vnc will attempt to be conservative and reject a\n"
"                       login if anything abnormal occurs.\n"
"\n"
"                       One case to note: FreeBSD and the other BSD's by\n"
"                       default it is impossible for the user running x11vnc to\n"
"                       validate his *own* password via su(1) (commenting out\n"
"                       the pam_self.so entry in /etc/pam.d/su eliminates this\n"
"                       behavior).  So the x11vnc login will always *FAIL* for\n"
"                       this case (even when the correct password is supplied).\n"
"\n"
"                       A possible workaround for this on *BSD would be to\n"
"                       start x11vnc as root with the \"-users +nobody\" option\n"
"                       to immediately switch to user nobody where the su'ing\n"
"                       will proceed normally.\n"
"\n"
"                       Another source of potential problems are PAM modules\n"
"                       that prompt for extra info, e.g. password aging modules.\n"
"                       These logins will fail as well even when the correct\n"
"                       password is supplied.\n"
"\n"
"                       **IMPORTANT**: to prevent the Unix password being sent\n"
"                       in *clear text* over the network, one of two schemes\n"
"                       will be enforced: 1) the -ssl builtin SSL mode, or 2)\n"
"                       require both -localhost and -stunnel be enabled.\n"
"\n"
"                       Method 1) ensures the traffic is encrypted between\n"
"                       viewer and server.  A PEM file will be required, see the\n"
"                       discussion under -ssl below (under some circumstances\n"
"                       a temporary one can be automatically generated).\n"
"\n"
"                       Method 2) requires the viewer connection to appear\n"
"                       to come from the same machine x11vnc is running on\n"
"                       (e.g. from a ssh -L port redirection).  And that the\n"
"                       -stunnel SSL mode be used for encryption over the\n"
"                       network. (see the description of -stunnel below).\n"
"\n"
"                       Note: as a convenience, if you ssh(1) in and start\n"
"                       x11vnc it will check if the environment variable\n"
"                       SSH_CONNECTION is set and appears reasonable.  If it\n"
"                       does, then the -ssl or -stunnel requirement will be\n"
"                       dropped since it is assumed you are using ssh for the\n"
"                       encrypted tunnelling.  -localhost is still enforced.\n"
"                       Use -ssl or -stunnel to force SSL usage even if\n"
"                       SSH_CONNECTION is set.\n"
"\n"
"                       To override the above restrictions you can set\n"
"                       environment variables before starting x11vnc:\n"
"\n"
"                       Set UNIXPW_DISABLE_SSL=1 to disable requiring either\n"
"                       -ssl or -stunnel (as under SSH_CONNECTION.)  Evidently\n"
"                       you will be using a different method to encrypt the\n"
"                       data between the vncviewer and x11vnc: perhaps ssh(1)\n"
"                       or an IPSEC VPN. -localhost is still enforced (however,\n"
"                       see the next paragraph.)\n"
"\n"
"                       Set UNIXPW_DISABLE_LOCALHOST=1 to disable the -localhost\n"
"                       requirement in -unixpw modes.  One should never do this\n"
"                       (i.e. allow the Unix passwords to be sniffed on the\n"
"                       network.)  This also disables the localhost requirement\n"
"                       for reverse connections (see below.)\n"
"\n"
"                       Note that use of -localhost with ssh(1) (and no -unixpw)\n"
"                       is roughly the same as requiring a Unix user login\n"
"                       (since a Unix password or the user's public key\n"
"                       authentication is used by sshd on the machine where\n"
"                       x11vnc runs and only local connections from that machine\n"
"                       are accepted).\n"
"\n"
"                       Regarding reverse connections (e.g. -R connect:host\n"
"                       and -connect host), when the -localhost constraint is\n"
"                       in effect then reverse connections can only be used\n"
"                       to connect to the same machine x11vnc is running on\n"
"                       (default port 5500).  Please use a ssh or stunnel port\n"
"                       redirection to the viewer machine to tunnel the reverse\n"
"                       connection over an encrypted channel.\n"
"\n"
"                       In -inetd mode the Method 1) will be enforced (not\n"
"                       Method 2).  With -ssl in effect reverse connections\n"
"                       are disabled.  If you override this via env. var, be\n"
"                       sure to also use encryption from the viewer to inetd.\n"
"                       Tip: you can also have your own stunnel spawn x11vnc\n"
"                       in -inetd mode (thereby bypassing inetd).  See the FAQ\n"
"                       for details.\n"
"\n"
"                       The user names in the comma separated [list] may have\n"
"                       per-user options after a \":\", e.g. \"fred:opts\"\n"
"                       where \"opts\" is a \"+\" separated list of\n"
"                       \"viewonly\", \"fullaccess\", \"input=XXXX\", or\n"
"                       \"deny\", e.g. \"karl,wally:viewonly,boss:input=M\".\n"
"                       For \"input=\" it is the K,M,B,C described under -input.\n"
"\n"
"                       If an item in the list is \"*\" that means those\n"
"                       options apply to all users.  It ALSO implies all users\n"
"                       are allowed to log in after supplying a valid password.\n"
"                       Use \"deny\" to explicitly deny some users if you use\n"
"                       \"*\" to set a global option.  If [list] begins with the\n"
"                       \"!\" character then \"*\" is ignored for checking if\n"
"                       the user is allowed, but the option values associated\n"
"                       with it do apply as normal.\n"
"\n"
"                       There are also some utilities for checking passwords\n"
"                       if [list] starts with the \"%%\" character.  See the\n"
"                       quick_pw() function for more details.  Description:\n"
"                       \"%%-\" or \"%%stdin\" means read one line from stdin.\n"
"                       \"%%env\" means it is in $UNIXPW env var.  A leading\n"
"                       \"%%/\" or \"%%.\" means read the first line from the\n"
"                       filename that follows after the %% character. %% by\n"
"                       itself means prompt for the username and password.\n"
"                       Otherwise: %%user:pass   E.g. -unixpw %%fred:swordfish\n"
"                       For the other cases user:pass is read from the indicated\n"
"                       source.  If the password is correct 'Y user' is printed\n"
"                       and the program exit code is 0.  If the password is\n"
"                       incorrect it prints 'N user' and the exit code is 1.\n"
"                       If there is some other error the exit code is 2.\n"
"                       This feature enables x11vnc to be a general unix user\n"
"                       password checking tool; it could be used from scripts\n"
"                       or other programs.  These %% password checks also apply\n"
"                       to the -unixpw_nis and -unixpw_cmd options.\n"
"\n"
"                       For the %% password check, if the env. var. UNIXPW_CMD\n"
"                       is set to a command then it is run as the user (assuming\n"
"                       the password is correct.)  The output of the command is\n"
"                       not printed, the program or script must manage that by\n"
"                       some other means.  The exit code of x11vnc will depend\n"
"                       on the exit code of the command that is run.\n"
"\n"
"                       Use -nounixpw to disable unixpw mode if it was enabled\n"
"                       earlier in the cmd line (e.g. -svc mode)\n"
"\n"
"-unixpw_nis [list]     As -unixpw above, however do not use su(1) but rather\n"
"                       use the traditional getpwnam(3) + crypt(3) method to\n"
"                       verify passwords. All of the above -unixpw options and\n"
"                       constraints apply.\n"
"\n"
"                       This mode requires that the encrypted passwords be\n"
"                       readable.  Encrypted passwords stored in /etc/shadow\n"
"                       will be inaccessible unless x11vnc is run as root.\n"
"\n"
"                       This is called \"NIS\" mode simply because in most\n"
"                       NIS setups user encrypted passwords are accessible\n"
"                       (e.g. \"ypcat passwd\") by an ordinary user and so that\n"
"                       user can authenticate ANY user.\n"
"\n"
"                       NIS is not required for this mode to work (only that\n"
"                       getpwnam(3) return the encrypted password is required),\n"
"                       but it is unlikely it will work (as an ordinary user)\n"
"                       for most modern environments unless NIS is available.\n"
"                       On the other hand, when x11vnc is run as root it will\n"
"                       be able to to access /etc/shadow even if NIS is not\n"
"                       available (note running as root is often done when\n"
"                       running x11vnc from inetd and xdm/gdm/kdm).\n"
"\n"
"                       Looked at another way, if you do not want to use the\n"
"                       su(1) method provided by -unixpw (i.e. su_verify()), you\n"
"                       can run x11vnc as root and use -unixpw_nis.  Any users\n"
"                       with passwords in /etc/shadow can then be authenticated.\n"
"\n"
"                       In -unixpw_nis mode, under no circumstances is x11vnc's\n"
"                       user password verifying function based on su called\n"
"                       (i.e. the function su_verify() that runs /bin/su\n"
"                       in a pseudoterminal to verify passwords.)  However,\n"
"                       if -unixpw_nis is used in conjunction with the -find\n"
"                       and -create -display WAIT:... modes then, if x11vnc is\n"
"                       running as root, /bin/su may be called externally to\n"
"                       run the find or create commands.\n"
"\n"
"-unixpw_cmd cmd        As -unixpw above, however do not use su(1) but rather\n"
"                       run the externally supplied command \"cmd\".  The first\n"
"                       line of its stdin will be the username and the second\n"
"                       line the received password.  If the command exits\n"
"                       with status 0 (success) the VNC user will be accepted.\n"
"                       It will be rejected for any other return status.\n"
"\n"
"                       Dynamic passwords and non-unix passwords, e.g. LDAP,\n"
"                       can be implemented this way by providing your own custom\n"
"                       helper program.  Note that the remote viewer is given 3\n"
"                       tries to enter the correct password, and so the program\n"
"                       may be called in a row that many (or more) times.\n"
"\n"
"                       If a list of allowed users is needed to limit who can\n"
"                       log in, use -unixpw [list] in addition to this option.\n"
"\n"
"                       In FINDDISPLAY and FINDCREATEDISPLAY modes the \"cmd\"\n"
"                       will also be run with the RFB_UNIXPW_CMD_RUN env. var.\n"
"                       non-empty and set to the corresponding display\n"
"                       find/create command.  The first two lines of input are\n"
"                       the username and passwd as in the normal case described\n"
"                       above.  To support FINDDISPLAY and FINDCREATEDISPLAY,\n"
"                       \"cmd\" should run the requested command as the user\n"
"                       (and most likely refusing to run it if the password is\n"
"                       not correct.)  Here is an example script (note it has\n"
"                       a hardwired bogus password \"abc\"!)\n"
"\n"
"                         #!/bin/sh\n"
"                         # Example x11vnc -unixpw_cmd script.\n"
"                         # Read the first two lines of stdin (user and passwd)\n"
"                         read user\n"
"                         read pass\n"
"                         \n"
"                         debug=0\n"
"                         if [ $debug = 1 ]; then\n"
"                         	echo \"user: $user\" 1>&2\n"
"                         	echo \"pass: $pass\" 1>&2\n"
"                         	env | egrep -i 'rfb|vnc' 1>&2\n"
"                         fi\n"
"                         \n"
"                         # Check if the password is valid.\n"
"                         # (A real example would use ldap lookup, etc!)\n"
"                         if [ \"X$pass\" != \"Xabc\" ]; then\n"
"                         	exit 1	# incorrect password\n"
"                         fi\n"
"                         \n"
"                         if [ \"X$RFB_UNIXPW_CMD_RUN\" = \"X\" ]; then\n"
"                         	exit 0	# correct password\n"
"                         else\n"
"                         	# Run the requested command (finddisplay)\n"
"                         	if [ $debug = 1 ]; then\n"
"                         		echo \"run: $RFB_UNIXPW_CMD_RUN\" 1>&2\n"
"                         	fi\n"
"                         	exec /bin/su - \"$user\" -c \"$RFB_UNIXPW_CMD_RUN\"\n"
"                         fi\n"
"\n"
"                       In -unixpw_cmd mode, under no circumstances is x11vnc's\n"
"                       user password verifying function based on su called\n"
"                       (i.e. the function su_verify() that runs /bin/su in a\n"
"                       pseudoterminal to verify passwords.)  It is up to the\n"
"                       supplied unixpw_cmd to do user switching if desired\n"
"                       and if it has the permissions to do so.\n"
"\n"
"-find                  Find the user's display using FINDDISPLAY. This\n"
"                       is an alias for \"-display WAIT:cmd=FINDDISPLAY\".\n"
"\n"
"                       Note: if a -display occurs later on the command line\n"
"                       it will override the -find setting.\n"
"\n"
"                       For this and the next few options see -display WAIT:...\n"
"                       below for all of the details.\n"
"\n"
"-finddpy               Run the FINDDISPLAY program, print out the found\n"
"                       display (if any) and exit.  Output is like: DISPLAY=:0.0\n"
"                       DISPLAY=:0.0,XPID=12345 or DISPLAY=:0.0,VT=7.  XPID is\n"
"                       the process ID of the found X server.  VT is the Linux\n"
"                       virtual terminal of the X server.\n"
"-listdpy               Have the FINDDISPLAY program list all of your displays\n"
"                       (i.e. all the X displays on the local machine that you\n"
"                       have access rights to).  x11vnc then exits.\n"
"\n"
"-findauth [disp]       Apply the -find/-finddpy heuristics to try to guess\n"
"                       the XAUTHORITY file for DISPLAY 'disp'.  If 'disp'\n"
"                       is not supplied, then the value in the -display on\n"
"                       the cmdline is used; failing that $DISPLAY is used;\n"
"                       and failing that \":0\" is used.  x11vnc then exits.\n"
"\n"
"                       If nothing is printed out, that means no XAUTHORITY was\n"
"                       found for 'disp'; i.e. failure.  If \"XAUTHORITY=\"\n"
"                       is printed out, that means use the default (i.e. do\n"
"                       not set XAUTHORITY).  If \"XAUTHORITY=/path/to/file\"\n"
"                       is printed out, then use that file.\n"
"\n"
"                       XDM/GDM/KDM: if you are running x11vnc as root and want\n"
"                       to find the XAUTHORITY before anyone has logged into an\n"
"                       X session yet, use: x11vnc -env FD_XDM=1 -findauth ...\n"
"                       (This will also find the XAUTHORITY if a user is already\n"
"                       logged into the X session.)  When running as root,\n"
"                       FD_XDM=1 will be tried if the initial -findauth fails.\n"
"\n"
"-create                First try to find the user's display using FINDDISPLAY,\n"
"                       if that doesn't succeed create an X session via the\n"
"                       FINDCREATEDISPLAY method.  This is an alias for\n"
"                       \"-display WAIT:cmd=FINDCREATEDISPLAY-Xvfb\".\n"
"\n"
"                       Note: if a -display occurs later on the command line\n"
"                       it will override the -create setting.\n"
"\n"
"                       SSH NOTE: for both -find and -create you can (should!)\n"
"                       add the \"-localhost\" option to force SSH tunnel access.\n"
"\n"
"-xdummy                As in -create, except Xdummy instead of Xvfb.\n"
"-xvnc                  As in -create, except Xvnc instead of Xvfb.\n"
"-xvnc_redirect         As in -create, except Xvnc.redirect instead of Xvfb.\n"
"-xdummy_xvfb           Sets WAIT:cmd=FINDCREATEDISPLAY-Xdummy,Xvfb\n"
"\n"
"-create_xsrv str       Sets WAIT:cmd=FINDCREATEDISPLAY-<str>  Can be on cmdline\n"
"                       after anything that sets WAIT:.. and other things\n"
"                       (e.g. -svc, -xdmsvc) to adjust the X server list.\n"
"                       Example: -svc ... -create_xsrv Xdummy,X\n"
"\n"
"-svc                   Terminal services mode based on SSL access.  Alias for\n"
"                       -display WAIT:cmd=FINDCREATEDISPLAY-Xvfb -unixpw -users\n"
"                       unixpw= -ssl SAVE   Also \"-service\".\n"
"\n"
"                       Note: if a -display, -unixpw, -users, or -ssl occurs\n"
"                       later on the command line it will override the -svc\n"
"                       setting.\n"
"\n"
"-svc_xdummy            As -svc except Xdummy instead of Xvfb.\n"
"-svc_xvnc              As -svc except Xvnc instead of Xvfb.\n"
"-svc_xdummy_xvfb       As -svc with Xdummy,Xvfb.\n"
"\n"
"-xdmsvc                Display manager Terminal services mode based on SSL.\n"
"                       Alias for -display WAIT:cmd=FINDCREATEDISPLAY-Xvfb.xdmcp\n"
"                       -unixpw -users unixpw= -ssl SAVE  Also \"-xdm_service\".\n"
"\n"
"                       Note: if a -display, -unixpw, -users, or -ssl occurs\n"
"                       later on the command line it will override the -xdmsvc\n"
"                       setting.\n"
"\n"
"                       To create a session a user will have to first log in\n"
"                       to the -unixpw dialog and then log in again to the\n"
"                       XDM/GDM/KDM prompt.  Subsequent re-connections will\n"
"                       only require the -unixpw password.  See the discussion\n"
"                       under -display WAIT:... for more details about XDM,\n"
"                       etc configuration.\n"
"\n"
"                       Remember to enable XDMCP in the xdm-config, gdm.conf,\n"
"                       or kdmrc configuration file.  See -display WAIT: for\n"
"                       more info.\n"
"\n"
"-sshxdmsvc             Display manager Terminal services mode based on SSH.\n"
"                       Alias for -display WAIT:cmd=FINDCREATEDISPLAY-Xvfb.xdmcp\n"
"                       -localhost.\n"
"\n"
"                       The -localhost option constrains connections to come\n"
"                       in via a SSH tunnel (which will require a login).\n"
"                       To create a session a user will also have to log into\n"
"                       the XDM GDM KDM prompt. Subsequent re-connections will\n"
"                       only only require the SSH login.  See the discussion\n"
"                       under -display WAIT:... for more details about XDM,\n"
"                       etc configuration.\n"
"\n"
"                       Remember to enable XDMCP in the xdm-config, gdm.conf,\n"
"                       or kdmrc configuration file.  See -display WAIT: for\n"
"                       more info.\n"
"\n"
"-unixpw_system_greeter Present a \"Press 'Escape' for System Greeter\" option\n"
"                       to the connecting VNC client in combined -unixpw\n"
"                       and xdmcp FINDCREATEDISPLAY modes (e.g. -xdmsvc).\n"
"\n"
"                       Normally in a -unixpw mode the VNC client must\n"
"                       supply a valid username and password to gain access.\n"
"                       However, if -unixpw_system_greeter is supplied AND\n"
"                       the FINDCREATEDISPLAY command matches 'xdmcp', then\n"
"                       the user has the option to press Escape and then get a\n"
"                       XDM/GDM/KDM login/greeter panel instead. They will then\n"
"                       supply a username and password directly to the greeter.\n"
"\n"
"                       Otherwise, in xdmcp FINDCREATEDISPLAY mode the user\n"
"                       must supply his username and password TWICE.  First to\n"
"                       the initial unixpw login dialog, and second to the\n"
"                       subsequent XDM/GDM/KDM greeter.  Note that if the user\n"
"                       re-connects and supplies his username and password in\n"
"                       the unixpw dialog the xdmcp greeter is skipped and\n"
"                       he is connected directly to his existing X session.\n"
"                       So the -unixpw_system_greeter option avoids the extra\n"
"                       password at X session creation time.\n"
"\n"
"                       Example:  x11vnc -xdmsvc -unixpw_system_greeter\n"
"                       See -unixpw and -display WAIT:... for more info.\n"
"\n"
"                       The special options after a colon at the end of the\n"
"                       username (e.g. user:solid) described under -display\n"
"                       WAIT: are also applied in this mode if they are typed\n"
"                       in before the user hits Escape.  The username is ignored\n"
"                       but the colon options are not.\n"
"\n"
"                       The default message is 2 lines in a small font, set\n"
"                       the env. var. X11VNC_SYSTEM_GREETER1=true for a 1 line\n"
"                       message in a larger font.\n"
"\n"
"                       If the user pressed Escape the FINDCREATEDISPLAY command\n"
"                       will be run with the env. var. X11VNC_XDM_ONLY=1.\n"
"\n"
"                       Remember to enable XDMCP in the xdm-config, gdm.conf,\n"
"                       or kdmrc configuration file.  See -display WAIT: for\n"
"                       more info.\n"
"\n"
"-redirect port         As in FINDCREATEDISPLAY-Xvnc.redirect mode except\n"
"                       redirect immediately (i.e. without X session finding\n"
"                       or creation) to a VNC server listening on port. You\n"
"                       can also supply host:port to redirect to a different\n"
"                       machine.\n"
"\n"
"                       If 0 <= port < 200 it is taken as a VNC display (5900 is\n"
"                       added to get the actual port), if port < 0 then -port\n"
"                       is used.\n"
"\n"
"                       Probably the only reason to use the -redirect option\n"
"                       is in conjunction with SSL support, e.g. -ssl SAVE.\n"
"                       This provides an easy way to add SSL encryption to a VNC\n"
"                       server that does not support SSL (e.g. Xvnc or vnc.so)\n"
"                       In fact, the protocol does not even need to be VNC,\n"
"                       and so \"-rfbport port1 -ssl SAVE -redirect host:port2\"\n"
"                       can act as a replacement for stunnel(1).\n"
"\n"
"                       This mode only allows one redirected connection.\n"
"                       The -forever option does not apply.  Use -inetd or\n"
"                       -loop for persistent service.\n"
"\n"
"-display WAIT:...      A special usage mode for the normal -display option.\n"
"                       Useful with -unixpw, but can be used independently\n"
"                       of it.  If the display string begins with WAIT: then\n"
"                       x11vnc waits until a VNC client connects before opening\n"
"                       the X display (or -rawfb device).\n"
"\n"
"                       This could be useful for delaying opening the display\n"
"                       for certain usage modes (say if x11vnc is started at\n"
"                       boot time and no X server is running or users logged\n"
"                       in yet).\n"
"\n"
"                       If the string is, e.g. WAIT:0.0 or WAIT:1, i.e. \"WAIT\"\n"
"                       in front of a normal X display, then that indicated\n"
"                       display is used.\n"
"\n"
"                       One can also insert a geometry between colons, e.g.\n"
"                       WAIT:1280x1024:... to set the size of the display the\n"
"                       VNC client first attaches to since some VNC viewers\n"
"                       will not automatically adjust to a new framebuffer size.\n"
"\n"
"                       A more interesting case is like this:\n"
"\n"
"                            WAIT:cmd=/usr/local/bin/find_display\n"
"\n"
"                       in which case the command after \"cmd=\" is run to\n"
"                       dynamically work out the DISPLAY and optionally the\n"
"                       XAUTHORITY data.  The first line of the command output\n"
"                       must be of the form DISPLAY=<xdisplay>.  On Linux\n"
"                       if the virtual terminal is known append \",VT=n\" to\n"
"                       this string and the chvt(1) program will also be run.\n"
"                       Any remaining output is taken as XAUTHORITY data.\n"
"                       It can be either of the form XAUTHORITY=<file> or raw\n"
"                       xauthority data for the display. For example;\n"
"\n"
"                            xauth extract - $DISPLAY\"\n"
"\n"
"                       NOTE: As specified in the previous paragraph, you can\n"
"                       supply your own WAIT:cmd=... program or script, BUT\n"
"                       there are two very useful *BUILT-IN* ones: FINDDISPLAY\n"
"                       (alias -find above) and FINDCREATEDISPLAY (alias -create\n"
"                       above.)  Most people use these instead of creating\n"
"                       their own script.  Read the following (especially the\n"
"                       BUILT-IN modes sections) to see how to configure these\n"
"                       two useful builtin -display WAIT: modes.\n"
"\n"
"                       In the case of -unixpw (and -unixpw_nis only if x11vnc\n"
"                       is running as root), then the cmd= command is run\n"
"                       as the user who just authenticated via the login and\n"
"                       password prompt.\n"
"\n"
"                       In the case of -unixpw_cmd, the commands will also be\n"
"                       run as the logged-in user, as long as the user-supplied\n"
"                       helper program supports RFB_UNIXPW_CMD_RUN (see the\n"
"                       -unixpw_cmd option.)\n"
"\n"
"                       Also in the case of -unixpw, the user logging in can\n"
"                       place a colon at the end of her username and supply\n"
"                       a few options: scale=, scale_cursor= (or sc=), solid\n"
"                       (or so), id=, clear_mods (or cm), clear_keys (or\n"
"                       ck), clear_all (or ca), repeat, speeds= (or sp=),\n"
"                       readtimeout= (or rd=), viewonly (or vo), nodisplay=\n"
"                       (or nd=), rotate= (or ro=), or noncache (or nc),\n"
"                       all separated by commas if there is more than one.\n"
"                       After the user logs in successfully, these options will\n"
"                       be applied to the VNC screen.  For example,\n"
"\n"
"                          login: fred:scale=3/4,sc=1,repeat\n"
"                          Password: ...\n"
"\n"
"                          login: runge:sp=modem,rd=120,solid\n"
"\n"
"                       for convenience m/n implies scale= e.g. fred:3/4  If you\n"
"                       type and enter your password incorrectly, to retrieve\n"
"                       your long \"login:\" line press the Up arrow once\n"
"                       (before typing anything else).\n"
"\n"
"                       Most of these colon options only apply to the builtin\n"
"                       FINDDISPLAY and FINDCREATEDISPLAY modes, but note\n"
"                       that they are passed to the extrenal command in the\n"
"                       environment as well and so could be used.\n"
"\n"
"                       In the login panel, press F1 to get a list of the\n"
"                       available options that you can add after the username.\n"
"\n"
"                       Another option is \"geom=WxH\" or \"geom=WxHxD\" (or\n"
"                       ge=). This only has an effect in FINDCREATEDISPLAY\n"
"                       mode when a virtual X server such as Xvfb is going\n"
"                       to be created.  It sets the width and height of\n"
"                       the new display, and optionally the color depth as\n"
"                       well.\n"
"\n"
"                       You can also supply \"gnome\", \"kde\", \"twm\",\n"
"                       \"fvwm\", \"mwm\", \"dtwm\", \"wmaker\", \"xfce\",\n"
"                       \"lxde\", \"enlightenment\", \"Xsession\", or\n"
"                       \"failsafe\" (same as \"xterm\") to have the created\n"
"                       display use that mode for the user session.\n"
"\n"
"                       Specify \"tag=...\" to set the unique FD_TAG desktop\n"
"                       session tag described below.  Note: this option will\n"
"                       be ignored if the FD_TAG env. var. is already set or\n"
"                       if the viewer-side supplied value is not completely\n"
"                       composed of alphanumeric or '_' or '-' characters.\n"
"\n"
"                       User preferences file: Instead of having the user type\n"
"                       in geom=WxH,... etc. every time he logs in to find\n"
"                       or create his X session, if you set FD_USERPREFS to\n"
"                       a string that does not contain the \"/\" character,\n"
"                       then the user's home directory is prepended to that\n"
"                       string and if the file exists its first line is read\n"
"                       and appended to any options he supplied at the login:\n"
"                       prompt.  For example -env FD_USERPREFS=.x11vnc_create\n"
"                       and the user put \"geom=1600x1200\" in his\n"
"                       ~/.x11vnc_create file.\n"
"\n"
"                       To disable the option setting set the environment\n"
"                       variable X11VNC_NO_UNIXPW_OPTS=1 before starting x11vnc.\n"
"                       To set any other options, the user can use the gui\n"
"                       (x11vnc -gui connect) or the remote control method\n"
"                       (x11vnc -R opt:val) during his VNC session.\n"
"\n"
"                       So we see the combination of -display WAIT:cmd=... and\n"
"                       -unixpw allows automatic pairing of an unix\n"
"                       authenticated VNC user with his desktop.  This could\n"
"                       be very useful on SunRays and also any system where\n"
"                       multiple users share a given machine.  The user does\n"
"                       not need to remember special ports or passwords set up\n"
"                       for his desktop and VNC.\n"
"\n"
"                       A nice way to use WAIT:cmd=... is out of inetd(8)\n"
"                       (it automatically forks a new x11vnc for each user).\n"
"                       You can have the x11vnc inetd spawned process run as,\n"
"                       say, root or nobody.  When run as root (for either inetd\n"
"                       or display manager), you can also supply the option\n"
"                       \"-users unixpw=\" to have the x11vnc process switch to\n"
"                       the user as well.  Note: there will be a 2nd SSL helper\n"
"                       process that will not switch, but it is only encoding\n"
"                       and decoding the encrypted stream at that point.\n"
"\n"
"                       BUILT-IN modes:\n"
"\n"
"                       -- Automatic Finding of User X Sessions --\n"
"\n"
"                       As a special case, WAIT:cmd=FINDDISPLAY will run a\n"
"                       script that works on most Unixes to determine a user's\n"
"                       DISPLAY variable and xauthority data (see who(1)).\n"
"\n"
"                       NOTE: The option \"-find\" is an alias for this mode.\n"
"\n"
"                       To have this default script printed to stdout (e.g. for\n"
"                       customization) run with WAIT:cmd=FINDDISPLAY-print To\n"
"                       have the script run to print what display it would find\n"
"                       use \"-finddpy\" or WAIT:cmd=FINDDISPLAY-run\n"
"\n"
"                       The standard script runs xdpyinfo(1) run on potential\n"
"                       displays.  If your X server(s) have a login greeter\n"
"                       that exclusively grabs the Xserver, then xdpyinfo\n"
"                       blocks forever and this mode will not work.  See\n"
"                       www.karlrunge.com/x11vnc/faq.html#faq-display-manager\n"
"                       for how to disable this for dtgreet on Solaris and\n"
"                       possibly for other greeters.\n"
"\n"
"                       In -find/cmd=FINDDISPLAY mode, if you set FD_XDM=1,\n"
"                       e.g. 'x11vnc -env FD_XDM=1 -find ...' and x11vnc is\n"
"                       running as root (e.g. inetd) then it will try to find\n"
"                       the XAUTHORITY file of a running XDM/GDM/KDM login\n"
"                       greeter (i.e. no user has logged into an X session yet.)\n"
"\n"
"                       As another special case, WAIT:cmd=HTTPONCE will allow\n"
"                       x11vnc to service one http request and then exit.\n"
"                       This is usually done in -inetd mode to run on, say,\n"
"                       port 5800 and allow the Java vncviewer to be downloaded\n"
"                       by client web browsers.  For example:\n"
"\n"
"                        5815 stream tcp nowait root /usr/sbin/tcpd /.../x11vnc \\\n"
"                          -inetd -q -http_ssl -prog /.../x11vnc \\\n"
"                          -display WAIT:cmd=HTTPONCE\n"
"\n"
"                       Where /.../x11vnc is the full path to x11vnc.\n"
"                       It is used in the Apache SSL-portal example (see FAQ).\n"
"\n"
"                       In this mode you can set X11VNC_SKIP_DISPLAY to a\n"
"                       comma separated list of displays (e.g. \":0,:1\") to\n"
"                       ignore in the finding process.  The \":\" is optional.\n"
"                       Ranges n-m e.g. 0-20 can also be supplied. This string\n"
"                       can also be set by the connecting user via \"nd=\"\n"
"                       using \"+\" instead of \",\"  If \"nd=all\" or you set\n"
"                       X11VNC_SKIP_DISPLAY=all then all display finding fails\n"
"                       as if you set X11VNC_FINDDISPLAY_ALWAYS_FAILS=1 (below.)\n"
"\n"
"                       On some systems lsof(1) can be very slow.  Set the\n"
"                       env. var. FIND_DISPLAY_NO_LSOF=1 to skip using lsof to\n"
"                       try to find the Linux VT the X server is running on.\n"
"                       set FIND_DISPLAY_NO_VT_FIND=1 to avoid looking at all.\n"
"\n"
"                       -- Automatic Creation of User X Sessions --\n"
"\n"
"                       An interesting option is WAIT:cmd=FINDCREATEDISPLAY\n"
"                       that is like FINDDISPLAY in that is uses the same method\n"
"                       to find an existing display.  However, if it does not\n"
"                       find one it will try to *start* up an X server session\n"
"                       for the user.  This is the only time x11vnc tries to\n"
"                       actually start up an X server.\n"
"\n"
"                       NOTE: The option \"-create\" is an alias for this mode.\n"
"\n"
"                       It will start looking for an open display number at :20\n"
"                       Override via X11VNC_CREATE_STARTING_DISPLAY_NUMBER=n\n"
"                       By default 80 X displays are allowed (i.e. going to :99)\n"
"                       Override via X11VNC_CREATE_MAX_DISPLAYS=n\n"
"\n"
"                       For its heuristics, the create display script sets\n"
"                       LC_ALL=C so that command output is uniform.  By default\n"
"                       it will try to restore LC_ALL right before starting the\n"
"                       user session.  However, if you don't mind it keeping\n"
"                       LC_ALL=C set the env. var.: X11VNC_CREATE_LC_ALL_C_OK=1\n"
"\n"
"                       By default FINDCREATEDISPLAY will try Xvfb and then\n"
"                       Xdummy:\n"
"\n"
"                       The Xdummy wrapper is part of the x11vnc source code\n"
"                       (x11vnc/misc/Xdummy)  It should be available in PATH\n"
"                       and have run \"Xdummy -install\" once to create the\n"
"                       shared library.  Xdummy only works on Linux.  As of\n"
"                       12/2009 it no longer needs to be run as root, and the\n"
"                       default is to not run as root.  In some circumstances\n"
"                       permissions may require running it as root, in these\n"
"                       cases specify FD_XDUMMY_RUN_AS_ROOT=1, this is the same\n"
"                       as supplying -root to the Xdummy cmdline.\n"
"\n"
"                       Xvfb is available on most platforms and does not\n"
"                       require root.\n"
"\n"
"                       An advantage of Xdummy over Xvfb is that Xdummy supports\n"
"                       RANDR dynamic screen resizing.\n"
"\n"
"                       When x11vnc exits (i.e. user disconnects) the X\n"
"                       server session stays running in the background.\n"
"                       The FINDDISPLAY will find it directly next time.\n"
"                       The user must exit the X session in the usual way for\n"
"                       it to terminate (or kill the X server process if all\n"
"                       else fails).\n"
"\n"
"                       To troubleshoot the FINDCREATEDISPLAY mechanism,\n"
"                       set the following env. var. to an output log file,\n"
"                       e.g -env CREATE_DISPLAY_OUTPUT=/tmp/mydebug.txt\n"
"\n"
"                       So this is a somewhat odd mode for x11vnc in that it\n"
"                       will start up and poll virtual X servers!  This can\n"
"                       be used from, say, inetd(8) to provide a means of\n"
"                       definitely getting a desktop (either real or virtual)\n"
"                       on the machine.  E.g. a desktop service:\n"
"\n"
"                         5900 stream tcp nowait root /usr/sbin/tcpd /.../x11vnc\n"
"                          -inetd -q -http -ssl SAVE -unixpw -users unixpw=\\\n"
"                          -passwd secret -prog /.../x11vnc \\\n"
"                          -display WAIT:cmd=FINDCREATEDISPLAY\n"
"\n"
"                       Where /.../x11vnc is the full path to x11vnc.\n"
"\n"
"                       See the -svc/-service option alias above.\n"
"\n"
"                       If for some reason you do not want x11vnc to ever\n"
"                       try to find an existing display set the env. var\n"
"                       X11VNC_FINDDISPLAY_ALWAYS_FAILS=1 (also -env ...)\n"
"                       This is the same as setting X11VNC_SKIP_DISPLAY=all or\n"
"                       supplying \"nd=all\" after \"username:\"\n"
"\n"
"                       Use WAIT:cmd=FINDCREATEDISPLAY-print to print out the\n"
"                       script that is used for this.\n"
"\n"
"                       You can specify the preferred X server order via e.g.,\n"
"                       WAIT:cmd=FINDCREATEDISPLAY-Xdummy,Xvfb,X  and/or leave\n"
"                       out ones you do not want.  The the case \"X\" means try\n"
"                       to start up a real, hardware X server using xinit(1)\n"
"                       or startx(1).  If there is already an X server running\n"
"                       the X case may only work on Linux (see startx(1)).\n"
"\n"
"                       \"Xvnc\" will start up a VNC X server (real-\n"
"                       or tight-vnc, e.g. use if Xvfb is not available).\n"
"                       \"Xsrv\" will start up the server program in the\n"
"                       variable \"FD_XSRV\" if it is non-empty. You can make\n"
"                       this be a wrapper script if you like (it must handle :N,\n"
"                       -geometry, and -depth and other X server options).\n"
"\n"
"                       You can set the environment variable FD_GEOM (or\n"
"                       X11VNC_CREATE_GEOM) to WxH or WxHxD to set the width\n"
"                       and height and optionally the color depth of the\n"
"                       created display.  You can also set FD_SESS to be the\n"
"                       session (short name of the windowmanager: kde, gnome,\n"
"                       twm, failsafe, etc.). FD_OPTS contains extra options\n"
"                       to pass to the X server. You can also set FD_PROG to\n"
"                       be the full path to the session/windowmanager program.\n"
"\n"
"                       More FD tricks:  FD_CUPS=port or FD_CUPS=host:port\n"
"                       will set the cups printing environment.  Similarly for\n"
"                       FD_ESD=port or FD_ESD=host:port for esddsp sound\n"
"                       redirection.  Set FD_EXTRA to a command to be run a\n"
"                       few seconds after the X server starts up.  Set FD_TAG\n"
"                       to be a unique name for the session, it is set as an\n"
"                       X property, that makes FINDDISPLAY only find sessions\n"
"                       with that tag value.\n"
"\n"
"                       Set FD_XDMCP_IF to the network interface that the\n"
"                       display manager is running on; default is 'localhost'\n"
"                       but you may need to set it to '::1' on some IPv6 only\n"
"                       systems or misconfigured display managers.\n"
"\n"
"                       If you want the FINDCREATEDISPLAY session to contact an\n"
"                       XDMCP login manager (xdm/gdm/kdm) on the same machine,\n"
"                       then use \"Xvfb.xdmcp\" instead of \"Xvfb\", etc.\n"
"                       The user will have to supply his username and password\n"
"                       one more time (but he gets to select his desktop type\n"
"                       so that can be useful).  For this to work, you will\n"
"                       need to enable localhost XDMCP (udp port 177) for the\n"
"                       display manager.  This seems to be:\n"
"\n"
"                        for gdm in gdm.conf:   Enable=true in section [xdmcp]\n"
"                        for kdm in kdmrc:      Enable=true in section [Xdmcp]\n"
"                        for xdm in xdm-config: DisplayManager.requestPort: 177\n"
"\n"
"                       See the shorthand options above \"-svc\", \"-xdmsvc\"\n"
"                       and \"-sshxdmsvc\" that specify the above options for\n"
"                       some useful cases.\n"
"\n"
"                       If you set the env. var WAITBG=1 x11vnc will go into\n"
"                       the background once listening in wait mode.\n"
"\n"
"                       Another special mode is FINDCREATEDISPLAY-Xvnc.redirect,\n"
"                       (or FINDDISPLAY-Xvnc.redirect).  In this case it will\n"
"                       start up Xvnc as above if needed, but instead of\n"
"                       polling it in its normal way, it simply does a socket\n"
"                       redirection of the connected VNC viewer to the Xvnc.\n"
"\n"
"                       So in Xvnc.redirect x11vnc does no VNC but merely\n"
"                       transfers the data back and forth.  This should be\n"
"                       faster then x11vnc's polling method, but not as fast\n"
"                       as connecting directly to the Xvnc with the VNC Viewer.\n"
"                       The idea here is to take advantage of x11vnc's display\n"
"                       finding/creating scheme, SSL, and perhaps a few others.\n"
"                       Most of x11vnc's options do not apply in this mode.\n"
"\n"
"                       Xvnc.redirect should also work for the vnc.so X server\n"
"                       module for the h/w display however it will work only\n"
"                       for finding the display and the user must already be\n"
"                       logged into the X console.\n"
"\n"
"-vencrypt mode         The VeNCrypt extension to the VNC protocol allows\n"
"                       encrypted SSL/TLS connections.  If the -ssl mode is\n"
"                       enabled, then VeNCrypt is enabled as well BY DEFAULT\n"
"                       (they both use a SSL/TLS tunnel, only the protocol\n"
"                       handshake is a little different.)\n"
"\n"
"                       To control when and how VeNCrypt is used, specify the\n"
"                       mode string.  If mode is \"never\", then VeNCrypt is\n"
"                       not used.  If mode is \"support\" (the default) then\n"
"                       VeNCrypt is supported.  If mode is \"only\", then the\n"
"                       similar and older ANONTLS protocol is not simultaneously\n"
"                       supported.  x11vnc's normal SSL mode (vncs://) will be\n"
"                       supported under -ssl unless you set mode to \"force\".\n"
"\n"
"                       If mode is prefixed with \"nodh:\", then Diffie Hellman\n"
"                       anonymous key exchange is disabled.  If mode is prefixed\n"
"                       with \"nox509:\", then X509 key exchange is disabled.\n"
"\n"
"                       To disable all Anonymous Diffie-Hellman access\n"
"                       (susceptible to Man-In-The-Middle attack) you will need\n"
"                       to supply \"-vencrypt nodh:support -anontls never\"\n"
"                       or \"-vencrypt nodh:only\"\n"
"\n"
"                       If mode is prefixed with \"newdh:\", then new Diffie\n"
"                       Hellman parameters are generated for each connection\n"
"                       (this can be time consuming: 1-60 secs; see -dhparams\n"
"                       below for a faster way) rather than using the\n"
"                       fixed values in the program.  Using fixed, publicly\n"
"                       known values is not known to be a security problem.\n"
"                       This setting applies to ANONTLS as well.\n"
"\n"
"                       Long example: -vencrypt newdh:nox509:support\n"
"\n"
"                       Also, if mode is prefixed with \"plain:\", then\n"
"                       if -unixpw mode is active the VeNCrypt \"*Plain\"\n"
"                       username+passwd method is enabled for Unix logins.\n"
"                       Otherwise in -unixpw mode the normal login panel is\n"
"                       provided.\n"
"\n"
"                       You *MUST* supply the -ssl option for VeNCrypt to\n"
"                       be active.  The -vencrypt option only fine-tunes its\n"
"                       operation.\n"
"\n"
"-anontls mode          The ANONTLS extension to the VNC protocol allows\n"
"                       encrypted SSL/TLS connections.  If the -ssl mode is\n"
"                       enabled, then ANONTLS is enabled as well BY DEFAULT\n"
"                       (they both use a SSL/TLS tunnel, only the protocol\n"
"                       handshake is a little different.)\n"
"\n"
"                       ANONTLS is an older SSL/TLS mode introduced by vino.\n"
"\n"
"                       It is referred to as 'TLS' for its registered VNC\n"
"                       security-type name, but we use the more descriptive\n"
"                       'ANONTLS' here because it provides only Anonymous\n"
"                       Diffie-Hellman encrypted connections, and hence no\n"
"                       possibility for certificate authentication.\n"
"\n"
"                       To control when and how ANONTLS is used, specify the\n"
"                       mode string.  If mode is \"never\", then ANONTLS is not\n"
"                       used.  If mode is \"support\" (the default) then ANONTLS\n"
"                       is supported.  If mode is \"only\", then the similar\n"
"                       VeNCrypt protocol is not simultaneously supported.\n"
"                       x11vnc's normal SSL mode (vncs://) will be supported\n"
"                       under -ssl unless you set mode to \"force\".\n"
"\n"
"                       If mode is prefixed with \"newdh:\", then new Diffie\n"
"                       Hellman parameters are generated for each connection\n"
"                       (this can be time consuming: 1-60 secs; see -dhparams\n"
"                       below for a faster way) rather than using the\n"
"                       fixed values in the program.  Using fixed, publicly\n"
"                       known values is not known to be a security problem.\n"
"                       This setting applies to VeNCrypt as well.  See the\n"
"                       description of \"plain:\" under -vencrypt.\n"
"\n"
"                       Long example: -anontls newdh:plain:support\n"
"\n"
"                       You *MUST* supply the -ssl option for ANONTLS to\n"
"                       be active.  The -anontls option only fine-tunes its\n"
"                       operation.\n"
"\n"
"-sslonly               Same as: \"-vencrypt never -anontls never\"  i.e. it\n"
"                       disables the VeNCrypt and ANONTLS encryption methods\n"
"                       and only allows standard SSL tunneling.  You must also\n"
"                       supply the -ssl ... option (see below.)\n"
"\n"
"\n"
"-dhparams file         For some operations a set of Diffie Hellman parameters\n"
"                       (prime and generator) is needed.  If so, use the\n"
"                       parameters in \"file\". In particular, the VeNCrypt and\n"
"                       ANONTLS anonymous DH mode need them.  By default a\n"
"                       fixed set is used. If you do not want to do that you\n"
"                       can specify \"newdh:\" to the -vencrypt and -anontls\n"
"                       options to generate a new set each session.  If that\n"
"                       is too slow for you, use -dhparams file to a set you\n"
"                       created manually via \"openssl dhparam -out file 1024\"\n"
"\n"
"-nossl                 Disable the -ssl option (see below). Since -ssl is off\n"
"                       by default -nossl would only be used on the commandline\n"
"                       to unset any *earlier* -ssl option (or -svc...)\n"
"\n"
"-ssl [pem]             Use the openssl library (www.openssl.org) to provide a\n"
"                       built-in encrypted SSL/TLS tunnel between VNC viewers\n"
"                       and x11vnc.  This requires libssl support to be\n"
"                       compiled into x11vnc at build time.  If x11vnc is not\n"
"                       built with libssl support it will exit immediately when\n"
"                       -ssl is prescribed.  See the -stunnel option below for\n"
"                       an alternative.\n"
"\n"
"                       The VNC Viewer-side needs to support SSL/TLS as well.\n"
"                       See this URL and also the discussion below for\n"
"                       ideas on how to enable SSL support for the viewer:\n"
"                       http://www.karlrunge.com/x11vnc/faq.html#faq-ssl-tun\n"
"                       nel-viewers .  x11vnc provides an SSL enabled Java\n"
"                       viewer applet in the classes/ssl directory (-http or\n"
"                       -httpdir options.)  The SSVNC viewer package supports\n"
"                       SSL tunnels too.\n"
"\n"
"                       If the VNC Viewer supports VeNCrypt or ANONTLS (vino's\n"
"                       encryption mode) they are also supported by the -ssl\n"
"                       mode (see the -vencrypt and -anontls options for more\n"
"                       info; use -sslonly to disable both of them.)\n"
"\n"
"                       Use \"-ssl /path/to/mycert.pem\" to specify an SSL\n"
"                       certificate file in PEM format to use to identify and\n"
"                       provide a key for this server.  See openssl(1) for more\n"
"                       info about PEMs and the -sslGenCert and \"-ssl SAVE\"\n"
"                       options below for how to create them.\n"
"\n"
"                       The connecting VNC viewer SSL tunnel can (at its option)\n"
"                       authenticate this server if it has the public key part\n"
"                       of the certificate (or a common certificate authority,\n"
"                       CA, is a more sophisticated way to verify this server's\n"
"                       cert, see -sslGenCA below).  This authentication is\n"
"                       done to prevent Man-In-The-Middle attacks.  Otherwise,\n"
"                       if the VNC viewer simply accepts this server's key\n"
"                       WITHOUT verification, the traffic is protected from\n"
"                       passive sniffing on the network, but *NOT* from\n"
"                       Man-In-The-Middle attacks. There are hacker tools\n"
"                       like dsniff/webmitm and cain that implement SSL\n"
"                       Man-In-The-Middle attacks.\n"
"\n"
"                       If [pem] is empty or the string \"SAVE\" then the\n"
"                       openssl(1) command must be available to generate the\n"
"                       certificate the first time.  A self-signed certificate\n"
"                       is generated (see -sslGenCA and -sslGenCert for use\n"
"                       of a Certificate Authority.)  It will be saved to the\n"
"                       file ~/.vnc/certs/server.pem.  On subsequent calls if\n"
"                       that file already exists it will be used directly.\n"
"\n"
"                       Use \"SAVE_NOPROMPT\" to avoid being prompted to\n"
"                       protect the generated key with a passphrase.  However in\n"
"                       -inetd and -bg modes there will be no prompting for a\n"
"                       passphrase in either case.\n"
"\n"
"                       If [pem] is \"SAVE_PROMPT\" the server.pem certificate\n"
"                       will be created based on your answers to its prompts for\n"
"                       all info such as OrganizationalName, CommonName, etc.\n"
"\n"
"                       Use \"SAVE-<string>\" and \"SAVE_PROMPT-<string>\"\n"
"                       to refer to the file ~/.vnc/certs/server-<string>.pem\n"
"                       instead (it will be generated if it does not already\n"
"                       exist).  E.g. \"SAVE-charlie\" will store to the file\n"
"                       ~/.vnc/certs/server-charlie.pem\n"
"\n"
"                       Examples: x11vnc -ssl SAVE -display :0 ...\n"
"                                 x11vnc -ssl SAVE-someother -display :0 ...\n"
"\n"
"                       If [pem] is \"TMP\" and the openssl(1) utility\n"
"                       command exists in PATH, then a temporary, self-signed\n"
"                       certificate will be generated for this session.  If\n"
"                       openssl(1) cannot be used to generate a temporary\n"
"                       certificate x11vnc exits immediately.  The temporary\n"
"                       cert will be discarded when x11vnc exits.\n"
"\n"
"                       If successful in using openssl(1) to generate a\n"
"                       temporary certificate in \"SAVE\" or \"TMP\" creation\n"
"                       modes, the public part of it will be displayed to stderr\n"
"                       (e.g. one could copy it to the client-side to provide\n"
"                       authentication of the server to VNC viewers.)\n"
"\n"
"                       NOTE: In \"TMP\" mode, unless you safely copy the\n"
"                       public part of the temporary Cert to the viewer for\n"
"                       authenticate *every time* (unlikely...), then only\n"
"                       passive sniffing attacks are prevented and you are\n"
"                       still open to Man-In-The-Middle attacks.  This is\n"
"                       why the default \"SAVE\" mode is preferred (and more\n"
"                       sophisticated CA mode too).  Only with saved keys AND\n"
"                       the VNC viewer authenticating them (via the public\n"
"                       certificate), are Man-In-The-Middle attacks prevented.\n"
"\n"
"                       If [pem] is \"ANON\" then the Diffie-Hellman anonymous\n"
"                       key exchange method is used.  In this mode there\n"
"                       are *no* SSL certificates and so it is not possible\n"
"                       to authenticate either the VNC server or VNC client.\n"
"                       Thus only passive network sniffing attacks are avoided:\n"
"                       the \"ANON\" method is susceptible to Man-In-The-Middle\n"
"                       attacks.  \"ANON\" is not recommended; instead use\n"
"                       a SSL PEM you created or the default \"SAVE\" method.\n"
"\n"
"                       See -ssldir below to use a directory besides the\n"
"                       default ~/.vnc/certs\n"
"\n"
"                       If your x11vnc binary was not compiled with OpenSSL\n"
"                       library support, use of the -ssl option will induce an\n"
"                       immediate failure and exit.  For such binaries, consider\n"
"                       using the -stunnel option for SSL encrypted connections.\n"
"\n"
"                       Misc Info: In temporary cert creation mode \"TMP\", set\n"
"                       the env. var. X11VNC_SHOW_TMP_PEM=1 to have x11vnc print\n"
"                       out the entire certificate, including the PRIVATE KEY\n"
"                       part, to stderr.  There are better ways to get/save this\n"
"                       info.  See \"SAVE\" above and \"-sslGenCert\" below.\n"
"\n"
"-ssltimeout n          Set SSL read timeout to n seconds.  In some situations\n"
"                       (i.e. an iconified viewer in Windows) the viewer stops\n"
"                       talking and the connection is dropped after the default\n"
"                       timeout (25s for about the first minute, 43200s later).\n"
"                       Set to zero to poll forever.  Set to a negative value\n"
"                       to use the builtin setting.\n"
"\n"
"                       Note that this value does NOT apply to the *initial* ssl\n"
"                       init connection.  The default timeout for that is 20sec.\n"
"                       Use -env SSL_INIT_TIMEOUT=n to modify it.\n"
"\n"
"-sslnofail             Exit at the first SSL connection failure. Useful when\n"
"                       scripting SSL connections (e.g. x11vnc is started via\n"
"                       ssh) and you do not want x11vnc waiting around for more\n"
"                       connections, tying up ports, etc.\n"
"\n"
"-ssldir dir            Use \"dir\" as an alternate ssl certificate and key\n"
"                       management toplevel directory.  The default is\n"
"                       ~/.vnc/certs\n"
"\n"
"                       This directory is used to store server and other\n"
"                       certificates and keys and also other materials.  E.g. in\n"
"                       the simplest case, \"-ssl SAVE\" will store the x11vnc\n"
"                       server cert in dir/server.pem\n"
"\n"
"                       Use of alternate directories via -ssldir allows you to\n"
"                       manage multiple VNC Certificate Authority (CA) keys.\n"
"                       Another use is if ~/.vnc/cert is on an NFS share you\n"
"                       might want your certificates and keys to be on a local\n"
"                       filesystem to prevent network snooping (for example\n"
"                       -ssldir /var/lib/x11vnc-certs).\n"
"\n"
"                       -ssldir affects nearly all of the other -ssl* options,\n"
"                       e.g. -ssl SAVE, -sslGenCert, etc..\n"
"\n"
"-sslverify path        For either of the -ssl or -stunnel modes, use \"path\"\n"
"                       to provide certificates to authenticate incoming VNC\n"
"                       *Client* connections (normally only the server is\n"
"                       authenticated in SSL.)  This can be used as a method\n"
"                       to replace standard password authentication of clients.\n"
"\n"
"                       If \"path\" is a directory it contains the client (or CA)\n"
"                       certificates in separate files.  If path is a file,\n"
"                       it contains one or more certificates. See special tokens\n"
"                       below.  These correspond to the \"CApath = dir\" and\n"
"                       \"CAfile = file\" stunnel options.  See the stunnel(8)\n"
"                       manpage for details.\n"
"\n"
"                       Examples:\n"
"                              x11vnc -ssl -sslverify ~/my.crt\n"
"                              x11vnc -ssl -sslverify ~/my_pem_dir/\n"
"\n"
"                       Note that if path is a directory, it must contain\n"
"                       the certs in separate files named like <HASH>.0, where\n"
"                       the value of <HASH> is found by running the command\n"
"                       \"openssl x509 -hash -noout -in file.crt\". Evidently\n"
"                       one uses <HASH>.1 if there is a collision...\n"
"\n"
"                       The the key-management utility \"-sslCertInfo HASHON\"\n"
"                       and \"-sslCertInfo HASHOFF\" will create/delete these\n"
"                       hashes for you automatically (via symlink) in the HASH\n"
"                       subdirs it manages.  Then you can point -sslverify to\n"
"                       the HASH subdir.\n"
"\n"
"                       Special tokens: in -ssl mode, if \"path\" is not a file or\n"
"                       a directory, it is taken as a comma separated list of\n"
"                       tokens that are interpreted as follows:\n"
"\n"
"                       If a token is \"CA\" that means load the CA/cacert.pem\n"
"                       file from the ssl directory.  If a token is \"clients\"\n"
"                       then all the files clients/*.crt in the ssl directory\n"
"                       are loaded.  Otherwise the file clients/token.crt\n"
"                       is attempted to be loaded.  As a kludge, use a token\n"
"                       like ../server-foo to load a server cert if you find\n"
"                       that necessary.\n"
"\n"
"                       Use -ssldir to use a directory different from the\n"
"                       ~/.vnc/certs default.\n"
"\n"
"                       Note that if the \"CA\" cert is loaded you do not need\n"
"                       to load any of the certs that have been signed by it.\n"
"                       You will need to load any additional self-signed certs\n"
"                       however.\n"
"\n"
"                       Examples:\n"
"                              x11vnc -ssl -sslverify CA\n"
"                              x11vnc -ssl -sslverify self:fred,self:jim\n"
"                              x11vnc -ssl -sslverify CA,clients\n"
"\n"
"                       Usually \"-sslverify CA\" is the most effective.\n"
"                       See the -sslGenCA and -sslGenCert options below for\n"
"                       how to set up and manage the CA framework.\n"
"\n"
"\n"
"\n"
"                       NOTE: the following utilities, -sslGenCA, -sslGenCert,\n"
"                       -sslEncKey, -sslCertInfo, and -sslCRL are provided for\n"
"                       completeness, but for casual usage they are overkill.\n"
"\n"
"                       They provide VNC Certificate Authority (CA) key creation\n"
"                       and server / client key generation and signing.  So they\n"
"                       provide a basic Public Key management framework for\n"
"                       VNC-ing with x11vnc. (note that they require openssl(1)\n"
"                       be installed on the system)\n"
"\n"
"                       However, the simplest usage mode, \"-ssl TMP\" (where\n"
"                       x11vnc automatically generates its own, self-signed,\n"
"                       temporary key and the VNC viewers always accept it,\n"
"                       e.g. accepting via a dialog box) is probably safe enough\n"
"                       for most scenarios.  CA management is not needed.\n"
"\n"
"                       To protect against Man-In-The-Middle attacks the \"TMP\"\n"
"                       mode can be improved by using \"-ssl SAVE\" (same as\n"
"                       \"-ssl\", i.e. the default) to have x11vnc create a\n"
"                       longer term self-signed certificate, and then (safely)\n"
"                       copy the corresponding public key cert to the desired\n"
"                       client machines (care must be taken the private key part\n"
"                       is not stolen; you will be prompted for a passphrase).\n"
"\n"
"                       So keep in mind no CA key creation or management\n"
"                       (-sslGenCA and -sslGenCert) is needed for either of\n"
"                       the above two common usage modes.\n"
"\n"
"                       One might want to use -sslGenCA and -sslGenCert\n"
"                       if you had a large number of VNC client and server\n"
"                       workstations.  That way the administrator could generate\n"
"                       a single CA key with -sslGenCA and distribute its\n"
"                       certificate part to all of the workstations.\n"
"\n"
"                       Next, he could create signed VNC server keys\n"
"                       (-sslGenCert server ...) for each workstation or user\n"
"                       that then x11vnc would use to authenticate itself to\n"
"                       any VNC client that has the CA cert.\n"
"\n"
"                       Optionally, the admin could also make it so the\n"
"                       VNC clients themselves are authenticated to x11vnc\n"
"                       (-sslGenCert client ...)  For this -sslverify would be\n"
"                       pointed to the CA cert (and/or self-signed certs).\n"
"\n"
"                       x11vnc will be able to use all of these cert and\n"
"                       key files.  On the VNC client side, they will need to\n"
"                       be \"imported\" somehow.  Web browsers have \"Manage\n"
"                       Certificates\" actions as does the Java applet plugin\n"
"                       Control Panel.  stunnel can also use these files (see\n"
"                       the ss_vncviewer example script in the FAQ and SSVNC.)\n"
"\n"
"-sslCRL path           Set the Certificate Revocation Lists (CRL) to \"path\".\n"
"                       This setting applies for both -ssl and -stunnel modes.\n"
"\n"
"                       If path is a file, the file contains one or more CRLs\n"
"                       in PEM format.  If path is a directory, it contains\n"
"                       hash named files of CRLs in the usual OpenSSL manner.\n"
"                       See the OpenSSL and stunnel(8) documentation for\n"
"                       more info.\n"
"\n"
"                       This option only applies if -sslverify has been\n"
"                       supplied: it checks for revocation along the\n"
"                       certificate chain used to verify the VNC client.\n"
"                       The -sslCRL setting will be ignored when -sslverify is\n"
"                       not specified.\n"
"\n"
"                       Note that if a CRL's expiration date has passed, all\n"
"                       SSL connections will fail regardless of if they are\n"
"                       related to the subject of the CRL or not.\n"
"\n"
"                       Only rarely will one's x11vnc -ssl infrastructure be so\n"
"                       large that this option would be useful (since normally\n"
"                       maintaining the contents of the -sslverify file or\n"
"                       directory should be enough.)  However, when using\n"
"                       x11vnc with a Certificate Authority (see -sslGenCA)\n"
"                       to authenticate Clients via SSL/TLS, the -sslCRL option\n"
"                       can be useful to revoke users' certs whose private SSL\n"
"                       keys were lost or stolen (e.g. laptop.)  This way a new\n"
"                       CA cert+key does not need to be created and new signed\n"
"                       client keys generated and distributed to all users.\n"
"\n"
"                       To create a CRL file with revoked certificates the\n"
"                       commands 'openssl ca -revoke ...' and 'openssl ca\n"
"                       -gencrl ...' are useful.  (Run them in ~/.vnc/certs)\n"
"\n"
"-sslGenCA [dir]        Generate your own Certificate Authority private key,\n"
"                       certificate, and other files in directory [dir].\n"
"                       x11vnc then exits.\n"
"\n"
"                       If [dir] is not supplied, a -ssldir setting is used,\n"
"                       or otherwise ~/.vnc/certs is used.\n"
"\n"
"                       This command also creates directories where server and\n"
"                       client certs and keys will be stored.  The openssl(1)\n"
"                       program must be installed on the system and available\n"
"                       in PATH.\n"
"\n"
"                       After the CA files and directories are created the\n"
"                       x11vnc command exits; the VNC server is not run.\n"
"\n"
"                       You will be prompted for information to put into the CA\n"
"                       certificate.  The info does not have to be accurate just\n"
"                       as long as clients accept the cert for VNC connections.\n"
"                       You will also need to supply a passphrase of at least\n"
"                       4 characters for the CA private key.\n"
"\n"
"                       Once you have generated the CA you can distribute\n"
"                       its certificate part, [dir]/CA/cacert.pem, to other\n"
"                       workstations where VNC viewers will be run.  One will\n"
"                       need to \"import\" this certificate in the applications,\n"
"                       e.g. Web browser, Java applet plugin, stunnel, etc.\n"
"                       Next, you can create and sign keys using the CA with\n"
"                       the -sslGenCert option below.\n"
"\n"
"                       Examples:\n"
"                                x11vnc -sslGenCA\n"
"                                x11vnc -sslGenCA  ~/myCAdir\n"
"                                x11vnc -ssldir ~/myCAdir -sslGenCA\n"
"\n"
"                       (the last two lines are equivalent)\n"
"\n"
"-sslGenCert type name  Generate a VNC server or client certificate and private\n"
"                       key pair signed by the CA created previously with\n"
"                       -sslGenCA.  The openssl(1) program must be installed\n"
"                       on the system and available in PATH.\n"
"\n"
"                       After the Certificate is generated x11vnc exits; the\n"
"                       VNC server is not run.\n"
"\n"
"                       The type of key to be generated is the string \"type\".\n"
"                       It is either \"server\" (i.e. for use by x11vnc) or\n"
"                       \"client\" (for a VNC viewer).  Note that typically\n"
"                       only \"server\" is used: the VNC clients authenticate\n"
"                       themselves by a non-public-key method (e.g. VNC or\n"
"                       unix password).  \"type\" is required.\n"
"\n"
"                       An arbitrary default name you want to associate with\n"
"                       the key is supplied by the \"name\" string.  You can\n"
"                       change it at the various prompts when creating the key.\n"
"                       \"name\" is optional.\n"
"\n"
"                       If name is left blank for clients keys then \"nobody\"\n"
"                       is used.  If left blank for server keys, then the\n"
"                       primary server key: \"server.pem\" is created (this\n"
"                       is the saved one referenced by \"-ssl SAVE\" when the\n"
"                       server is started)\n"
"\n"
"                       If \"name\" begins with the string \"self:\" then\n"
"                       a self-signed certificate is created instead of one\n"
"                       signed by your CA key.\n"
"\n"
"                       If \"name\" begins with the string \"req:\" then only a\n"
"                       key (.key) and a certificate signing *request* (.req)\n"
"                       are generated.  You can then send the .req file to\n"
"                       an external CA (even a professional one, e.g. Thawte)\n"
"                       and then combine the .key and the received cert into\n"
"                       the .pem file with the same basename.\n"
"\n"
"                       The distinction between \"server\" and \"client\" is\n"
"                       simply the choice of output filenames and sub-directory.\n"
"                       This makes it so the -ssl SAVE-name option can easily\n"
"                       pick up the x11vnc PEM file this option generates.\n"
"                       And similarly makes it easy for the -sslverify option\n"
"                       to pick up your client certs.\n"
"\n"
"                       There is nothing special about the filename or directory\n"
"                       location of either the \"server\" and \"client\" certs.\n"
"                       You can rename the files or move them to wherever\n"
"                       you like.\n"
"\n"
"                       Precede this option with -ssldir [dir] to use a\n"
"                       directory other than the default ~/.vnc/certs You will\n"
"                       need to run -sslGenCA on that directory first before\n"
"                       doing any -sslGenCert key creation.\n"
"\n"
"                       Note you cannot recreate a cert with exactly the same\n"
"                       distiguished name (DN) as an existing one.  To do so,\n"
"                       you will need to edit the [dir]/CA/index.txt file to\n"
"                       delete the line.\n"
"\n"
"                       Similar to -sslGenCA, you will be prompted to fill\n"
"                       in some information that will be recorded in the\n"
"                       certificate when it is created.\n"
"\n"
"                       Tip: if you know the fully-qualified hostname other\n"
"                       people will be connecting to, you can use that as the\n"
"                       CommonName \"CN\" to avoid some applications (e.g. web\n"
"                       browsers and java plugin) complaining that it does not\n"
"                       match the hostname.\n"
"\n"
"                       You will also need to supply the CA private key\n"
"                       passphrase to unlock the private key created from\n"
"                       -sslGenCA.  This private key is used to sign the server\n"
"                       or client certificate.\n"
"\n"
"                       The \"server\" certs can be used by x11vnc directly by\n"
"                       pointing to them via the -ssl [pem] option.  The default\n"
"                       file will be ~/.vnc/certs/server.pem.  This one would\n"
"                       be used by simply typing -ssl SAVE.  The pem file\n"
"                       contains both the certificate and the private key.\n"
"                       server.crt file contains the cert only.\n"
"\n"
"                       The \"client\" cert + private key file will need\n"
"                       to be copied and imported into the VNC viewer\n"
"                       side applications (Web browser, Java plugin,\n"
"                       stunnel, etc.)  Once that is done you can delete the\n"
"                       \"client\" private key file on this machine since\n"
"                       it is only needed on the VNC viewer side.  The,\n"
"                       e.g. ~/.vnc/certs/clients/<name>.pem contains both\n"
"                       the cert and private key.  The <name>.crt contains the\n"
"                       certificate only.\n"
"\n"
"                       NOTE: It is very important to know one should\n"
"                       generate new keys with a passphrase.  Otherwise if an\n"
"                       untrusted user steals the key file he could use it to\n"
"                       masquerade as the x11vnc server (or VNC viewer client).\n"
"                       You will be prompted whether to encrypt the key with\n"
"                       a passphrase or not.  It is recommended that you do.\n"
"                       One inconvenience to a passphrase is that it must\n"
"                       be typed in EVERY time x11vnc or the client app is\n"
"                       started up.\n"
"\n"
"                       Examples:\n"
"\n"
"                               x11vnc -sslGenCert server\n"
"                               x11vnc -ssl SAVE -display :0 ...\n"
"\n"
"                       and then on viewer using ss_vncviewer stunnel wrapper\n"
"                       (see the FAQ):\n"

"                               ss_vncviewer -verify ./cacert.crt hostname:0\n"
"\n"
"                       (this assumes the cacert.crt cert from -sslGenCA\n"
"                       was safely copied to the VNC viewer machine where\n"
"                       ss_vncviewer is run)\n"
"\n"
"                       Example using a name:\n"
"\n"
"                               x11vnc -sslGenCert server charlie\n"
"                               x11vnc -ssl SAVE-charlie -display :0 ...\n"
"\n"
"                       Example for a client certificate (rarely used):\n"
"\n"
"                               x11vnc -sslGenCert client roger\n"
"                               scp ~/.vnc/certs/clients/roger.pem somehost:.\n"
"                               rm  ~/.vnc/certs/clients/roger.pem\n"
"\n"
"                       x11vnc is then started with the option -sslverify\n"
"                       ~/.vnc/certs/clients/roger.crt (or simply -sslverify\n"
"                       roger), and on the viewer user on somehost could do\n"
"                       for example:\n"
"\n"
"                               ss_vncviewer -mycert ./roger.pem hostname:0\n"
"\n"
"                       If you set the env. var REQ_ARGS='...' it will be\n"
"                       passed to openssl req(1).  A common use would be\n"
"                       REQ_ARGS='-days 1095' to bump up the expiration date\n"
"                       (3 years in this case).\n"
"\n"
"-sslEncKey pem         Utility to encrypt an existing PEM file with a\n"
"                       passphrase you supply when prompted.  For that key to be\n"
"                       used (e.g. by x11vnc) the passphrase must be supplied\n"
"                       each time.\n"
"\n"
"                       The \"SAVE\" notation described under -ssl applies as\n"
"                       well. (precede this option with -ssldir [dir] to refer\n"
"                       a directory besides the default ~/.vnc/certs)\n"
"\n"
"                       The openssl(1) program must be installed on the system\n"
"                       and available in PATH.  After the Key file is encrypted\n"
"                       the x11vnc command exits; the VNC server is not run.\n"
"\n"
"                       Examples:\n"
"                               x11vnc -sslEncKey /path/to/foo.pem\n"
"                               x11vnc -sslEncKey SAVE\n"
"                               x11vnc -sslEncKey SAVE-charlie\n"
"\n"
"-sslCertInfo pem       Prints out information about an existing PEM file.\n"
"                       In addition the public certificate is also printed.\n"
"                       The openssl(1) program must be in PATH. Basically the\n"
"                       command \"openssl x509 -text\" is run on the pem.\n"
"\n"
"                       After the info is printed the x11vnc command exits;\n"
"                       the VNC server is not run.\n"
"\n"
"                       The \"SAVE\" notation described under -ssl applies\n"
"                       as well.\n"
"\n"
"                       Using  \"LIST\" will give a list of all certs being\n"
"                       managed (in the ~/.vnc/certs dir, use -ssldir to refer\n"
"                       to another dir).  \"ALL\" will print out the info for\n"
"                       every managed key (this can be very long).  Giving a\n"
"                       client or server cert shortname will also try a lookup\n"
"                       (e.g. -sslCertInfo charlie).  Use \"LISTL\" or \"LL\"\n"
"                       for a long (ls -l style) listing.\n"
"\n"
"                       Using \"HASHON\" will create subdirs [dir]/HASH and\n"
"                       [dir]/HASH with OpenSSL hash filenames (e.g. 0d5fbbf1.0)\n"
"                       symlinks pointing up to the corresponding *.crt file.\n"
"                       ([dir] is ~/.vnc/certs or one given by -ssldir.)\n"
"                       This is a useful way for other OpenSSL applications\n"
"                       (e.g. stunnel) to access all of the certs without\n"
"                       having to concatenate them.  x11vnc will not use them\n"
"                       unless you specifically reference them.  \"HASHOFF\"\n"
"                       removes these HASH subdirs.\n"
"\n"
"                       The LIST, LISTL, LL, ALL, HASHON, HASHOFF words can\n"
"                       also be lowercase, e.g. \"list\".\n"
"\n"
"-sslDelCert pem        Prompts you to delete all .crt .pem .key .req files\n"
"                       associated with [pem].  x11vnc then exits. \"SAVE\"\n"
"                       and lookups as in -sslCertInfo apply as well.\n"
"\n"
"-sslScripts            Prints out both the 'genCA' and 'genCert' x11vnc\n"
"                       openssl wrapper scripts for you to examine, modify, etc.\n"
"                       The scripts are printed to stdout and then the x11vnc\n"
"                       program exits.\n"
"\n"
"\n"
"-stunnel [pem]         Use the stunnel(8) (stunnel.mirt.net) to provide an\n"
"                       encrypted SSL tunnel between viewers and x11vnc.\n"
"\n"
"                       This external tunnel method was implemented prior to the\n"
"                       integrated -ssl encryption described above.  It still\n"
"                       works well and avoids the requirement of linking with\n"
"                       the OpenSSL libraries.  This mode requires stunnel\n"
"                       to be installed on the system and available via PATH\n"
"                       (n.b. stunnel is often installed in sbin directories).\n"
"                       Version 4.x of stunnel is assumed (but see -stunnel3\n"
"                       below.)\n"
"\n"
"                       [pem] is optional, use \"-stunnel /path/to/stunnel.pem\"\n"
"                       to specify a PEM certificate file to pass to stunnel.\n"
"                       See the -ssl option for more info on certificate files.\n"
"\n"
"                       Whether or not your stunnel has its own certificate\n"
"                       depends on your stunnel configuration; stunnel often\n"
"                       generates one at install time.  See your stunnel\n"
"                       documentation for details.  In any event, if you want to\n"
"                       use this certificate you must supply the full path to it\n"
"                       as [pem].  Note: the file may only be readable by root.\n"
"\n"
"                       [pem] may also be the special strings \"TMP\", \"SAVE\",\n"
"                       and \"SAVE...\" as described in the -ssl option.\n"
"                       If [pem] is not supplied, \"SAVE\" is assumed.\n"
"\n"
"                       Note that the VeNCrypt, ANONTLS, and \"ANON\" modes\n"
"                       are not supported in -stunnel mode.\n"
"\n"
"                       stunnel is started up as a child process of x11vnc and\n"
"                       any SSL connections stunnel receives are decrypted and\n"
"                       sent to x11vnc over a local socket.  The strings\n"
"                       \"The SSL VNC desktop is ...\" and \"SSLPORT=...\"\n"
"                       are printed out at startup to indicate this.\n"
"\n"
"                       The -localhost option is enforced by default to avoid\n"
"                       people routing around the SSL channel.  Use -env\n"
"                       STUNNEL_DISABLE_LOCALHOST=1 to disable this security\n"
"                       requirement.\n"
"\n"
"                       Set -env STUNNEL_DEBUG=1 for more debugging printout.\n"
"\n"
"                       Set -env STUNNEL_PROG=xxx to the full path of stunnel\n"
"                       program you want to be used (e.g. /usr/bin/stunnel4).\n"
"\n"
"                       Set -env STUNNEL_LISTEN=xxx to the address of the\n"
"                       network interface to listen on (the default is to listen\n"
"                       on all interfaces), e.g. STUNNEL_LISTEN=192.168.1.100.\n"
"\n"
"                       A simple way to add IPv6 support is STUNNEL_LISTEN=::\n"
"\n"
"                       Your VNC viewer will also need to be able to connect\n"
"                       via SSL.  Unfortunately not too many do this.  See the\n"
"                       information about SSL viewers under the -ssl option.\n"
"                       The x11vnc project's SSVNC is an option.\n"
"\n"
"                       Also, in the x11vnc distribution, patched TightVNC\n"
"                       and UltraVNC Java applet jar files are provided in\n"
"                       the classes/ssl directory that do SSL connections.\n"
"                       Enable serving them with the -http, -http_ssl, or\n"
"                       -httpdir (see the option descriptions for more info.)\n"
"\n"
"                       Note that for the Java viewer applet usage the\n"
"                       \"?PORT=xxxx\" in the various URLs printed at startup\n"
"                       will need to be supplied to the web browser to connect\n"
"                       properly.\n"
"\n"
"                       Currently the automatic \"single port\" HTTPS mode of\n"
"                       -ssl is not fully supported in -stunnel mode.  However,\n"
"                       it can be emulated via:\n"
"\n"
"                         %% x11vnc -stunnel -http_ssl -http_oneport ...\n"
"\n"
"                       In general, it is also not too difficult to set up\n"
"                       an stunnel or other SSL tunnel on the viewer side.\n"
"                       A simple example on Unix using stunnel 3.x is:\n"
"\n"
"                         %% stunnel -c -d localhost:5901 -r remotehost:5900\n"
"                         %% vncviewer localhost:1\n"
"\n"
"                       For Windows, stunnel has been ported to it and there\n"
"                       are probably other such tools available.  See the FAQ\n"
"                       and SSVNC for more examples.\n"
"\n"
"-stunnel3  [pem]       Use version 3.x stunnel command line syntax instead of\n"
"                       version 4.x.  The -http/-httpdir Java applet serving\n"
"                       is currently not available in this mode.\n"
"\n"
"-enc cipher:keyfile    Use symmetric encryption with cipher \"cipher\"\n"
"                       and secret key data in \"keyfile\".  If keyfile is\n"
"                       pw=<string> then \"string\" is used as the key data.\n"
"\n"
"                       NOTE: It is recommended that you use SSL via the -ssl\n"
"                       option instead of this option because SSL is well\n"
"                       understood and takes great care to establish unique\n"
"                       session keys and is more compatible with other software.\n"
"                       Use this option if you do not want to deal with SSL\n"
"                       certificates for authentication and do not want to\n"
"                       use SSH but want some encryption for your VNC session.\n"
"                       Or if you must interface with a symmetric key tunnel\n"
"                       that you do not have control over.\n"
"\n"
"                       Note that this mode will NOT work with the UltraVNC DSM\n"
"                       plugins because they alter the RFB protocol in addition\n"
"                       to tunnelling with the symmetric cipher (an unfortunate\n"
"                       choice of implementation...)\n"
"\n"
"                       cipher can be one of:  arc4, aesv2, aes-cfb, blowfish,\n"
"                       aes256, or 3des.  See the OpenSSL documentation for\n"
"                       more info.  The keysize is 128 bits (except for aes256).\n"
"                       Here is one way to make a keyfile with that many bits:\n"
"\n"
"                            dd if=/dev/random of=./my.key bs=16 count=1\n"
"\n"
"                       you will need to securely share this key with the other\n"
"                       side of the VNC connection (See SSVNC for examples).\n"
"\n"
"                       Example:  -enc blowfish:./my.key\n"
"                       Example:  -enc blowfish:pw=swordfish\n"
"\n"
"                       By default 16 bytes of random salt followed by 16 bytes\n"
"                       of random initialization vector are sent at the very\n"
"                       beginning of the stream.  The other side must read these\n"
"                       and initialize their cipher with them.  These values\n"
"                       make the session key unique (without them the security\n"
"                       is minimal).  Similarly, the other side must send us\n"
"                       its random salt and IV with those same lengths.\n"
"\n"
"                       The salt and key data are combined to create a session\n"
"                       key using an md5 hash as described in EVP_BytesToKey(3).\n"
"\n"
"                       The exact call is: EVP_BytesToKey(Cipher, EVP_md5(),\n"
"                       salt, keydata, len, 1, keystr, NULL);  where salt is\n"
"                       the random data as described above, and keydata is the\n"
"                       shared secret key data.  keystr is the resulting session\n"
"                       key.  The cipher is then seeded with keystr and uses\n"
"                       the random initialization vector as its first block.\n"
"\n"
"                       To modify the amount of random salt and initialization\n"
"                       vector use cipher@n,m where n is the salt length and\n"
"                       m the initialization vector length.  E.g.\n"
"\n"
"                                 -enc aes-cfb@8,16:./my.key\n"
"\n"
"                       It is not a good idea to set either one to zero,\n"
"                       although you may be forced to if the other side of the\n"
"                       tunnel is not under your control.\n"
"\n"
"                       To skip the salt and EVP_BytesToKey MD5 entirely (no\n"
"                       hashing is done: the keydata is directly inserted into\n"
"                       the cipher) specify \"-1\" for the salt, e.g.\n"
"\n"
"                                 -enc blowfish@-1,16:./my.key\n"
"\n"
"                       The message digest can also be changed to something\n"
"                       besides the default MD5.  Use cipher@md+n,m where \"md\"\n"
"                       can be one of sha, sha1, md5, or ripe.  For example:\n"
"\n"
"                                 -enc arc4@sha+8,16:./my.key\n"
"\n"
"                       The SSVNC vnc viewer project supplies a symmetric\n"
"                       encryption tool named \"ultravnc_dsm_helper\" that can\n"
"                       be used on the viewer side.  For example:\n"
"\n"
"                       ssvncviewer exec='ultravnc_dsm_helper arc4 my.key 0 h:p'\n"
"\n"
"                       where h:p is the hostname and port of the x11vnc server.\n"
"                       ultravnc_dsm_helper may also be used standalone to\n"
"                       provide a symmetric encryption tunnel for any viewer\n"
"                       or server (VNC or otherwise.) The cipher (1st arg)\n"
"                       is basically the same syntax as we use above.\n"
"\n"
"                       Also see the 'Non-Ultra DSM' SSVNC option for the\n"
"                       'UltraVNC DSM Encryption Plugin' advanced option.\n"
"\n"
"                       For both ways of using the viewer, you can specify the\n"
"                       salt,ivec sizes (in GUI or, e.g. arc4@8,16).\n"
"\n"
"-https [port]          Use a special, separate HTTPS port (-ssl and\n"
"                       -stunnel modes only) for HTTPS Java viewer applet\n"
"                       downloading. I.e. not 5900 and not 5800 (the defaults.)\n"
"\n"
"                       BACKGROUND: In -ssl mode, it turns out you can use the\n"
"                       single VNC port (e.g. 5900) for both VNC and HTTPS\n"
"                       connections. (HTTPS is used to retrieve a SSL-aware\n"
"                       VncViewer.jar applet that is provided with x11vnc).\n"
"                       Since both use SSL the implementation was extended to\n"
"                       detect if HTTP traffic (i.e. GET) is taking place and\n"
"                       handle it accordingly.  The URL would be, e.g.:\n"
"\n"
"                       https://mymachine.org:5900/\n"
"\n"
"                       This is convenient for firewalls, etc, because only one\n"
"                       port needs to be allowed in.  However, this heuristic\n"
"                       adds a few seconds delay to each connection and can be\n"
"                       unreliable (especially if the user takes much time to\n"
"                       ponder the Certificate dialogs in his browser, Java VM,\n"
"                       or VNC Viewer applet.  That's right 3 separate \"Are\n"
"                       you sure you want to connect?\" dialogs!)\n"
"\n"
"                       END OF BACKGROUND.\n"
"\n"
"                       USAGE: So use the -https option to provide a separate,\n"
"                       more reliable HTTPS port that x11vnc will listen on.  If\n"
"                       [port] is not provided (or is 0), one is autoselected.\n"
"                       The URL to use is printed out at startup.\n"
"\n"
"                       The SSL Java applet directory is specified via the\n"
"                       -httpdir option.  If not supplied, -https will try\n"
"                       to guess the directory as though the -http option\n"
"                       was supplied.\n"
"\n"
"-httpsredir [port]     In -ssl mode with the Java applet retrieved via HTTPS,\n"
"                       when the HTML file containing applet parameters\n"
"                       ('index.vnc' or 'proxy.vnc') is sent do NOT set the\n"
"                       applet PORT parameter to the actual VNC port but set it\n"
"                       to \"port\" instead.  If \"port\" is not supplied, then\n"
"                       the port number is guessed from the Host: HTTP header.\n"
"\n"
"                       This is useful when an incoming TCP connection\n"
"                       redirection is performed by a router/gateway/firewall\n"
"                       from one port to an internal machine where x11vnc is\n"
"                       listening on a different port. The Java applet needs to\n"
"                       connect to the firewall/router port, not the VNC port\n"
"                       on the internal workstation. For example, one could\n"
"                       redir from mygateway.com:443 to workstation:5900.\n"
"\n"
"                       This spares the user from having to type in\n"
"                       https://mygateway.com/?PORT=443 into their web\n"
"                       browser. Note that port 443 is the default https port;\n"
"                       other ports must be explicitly indicated, for example:\n"
"                       https://mygateway.com:8000/?PORT=8000.  To avoid having\n"
"                       to include the PORT= in the browser URL, simply supply\n"
"                       \"-httpsredir\" to x11vnc.\n"
"\n"
"                       This option does not work in -stunnel mode.\n"
"\n"
"                       More tricks: set the env var X11VNC_EXTRA_HTTPS_PARAMS\n"
"                       to be extra URL parameters to use.  This way you do\n"
"                       not need to specify extra PARAMS in the index.vnc file.\n"
"                       E.g. x11vnc -env X11VNC_EXTRA_HTTPS_PARAMS='?GET=1' ...\n"
"\n"
"                       If you do not want to expose the non-SSL HTTP port to\n"
"                       the network (i.e. you just want the single VNC/HTTPS\n"
"                       port, e.g. 5900, open for connections) then specify the\n"
"                       option -env X11VNC_HTTP_LISTEN_LOCALHOST=1  This way\n"
"                       the connection to the LibVNCServer httpd server will\n"
"                       only be available on localhost (note that in -ssl mode,\n"
"                       HTTPS requests are redirected from SSL to the non-SSL\n"
"                       LibVNCServer HTTP server.)\n"
"\n"
"-http_oneport          For UN-encrypted connections mode (i.e. no -ssl,\n"
"                       -stunnel, or -enc options), allow the Java VNC Viewer\n"
"                       applet to be downloaded thru the VNC port via HTTP.\n"
"\n"
"                       That is to say, you can use a single port for Java\n"
"                       applet viewer connections by using a URL in your web\n"
"                       browser like this, for example:\n"
"\n"
"                       http://hostname:5900\n"
"\n"
"                       The regular, two-port mode, URL http://hostname:5800\n"
"                       will continue to work as well.\n"
"\n"
"                       As mentioned above, this mode will NOT work with\n"
"                       the -ssl, -stunnel, or -enc encryption options.\n"
"                       Note that is it equivalent to '-enc none' (i.e. it\n"
"                       uses the same detection mechanism as for HTTPS, but\n"
"                       with no encryption.)\n"
"\n"
"                       HTTPS single-port is on by default in -ssl encrypted\n"
"                       mode (and -enc too), so you only need -http_oneport\n"
"                       when doing non-SSL encrypted connections.\n"
"\n"
"                       This mode could also be useful for SSH tunnels since\n"
"                       it means only one port needs to be redirected.\n"
"\n"
"                       The -httpsredir option may also be useful for this\n"
"                       mode when using an SSH tunnel as well as for router\n"
"                       port redirections.\n"
"\n"
"                       Note that the -env X11VNC_HTTP_LISTEN_LOCALHOST=1\n"
"                       option described above under -httpsredir applies for\n"
"                       the LibVNCServer httpd server in all cases (ssl or not.)\n"
"\n"
"-ssh user@host:disp    Create a remote listening port on machine \"host\"\n"
"                       via a SSH tunnel using the -R rport:localhost:lport\n"
"                       method. lport will be the local x11vnc listening port,\n"
"                       so a connection to rport (5900+disp) on \"host\"\n"
"                       will reach x11vnc.  E.g. fred@snoopy.com:0\n"
"\n"
"                       This could be useful if a firewall/router prevents\n"
"                       incoming connections to the x11vnc machine, but\n"
"                       the ssh machine \"host\" can be reached by the VNC\n"
"                       viewer. \"user@\" is not needed unless the remote unix\n"
"                       username differs from the current one.\n"
"\n"
"                       By default the remote sshd is usually configured to\n"
"                       listen only on localhost for rport, so the viewer may\n"
"                       need to ssh -L redir to \"host\" as well (See SSVNC to\n"
"                       automate this).  The sshd setting GatewayPorts enables\n"
"                       listening on all interfaces for rport; viewers can\n"
"                       reach it more easily.\n"
"\n"
"                       \"disp\" is the VNC display for the remote SSH side,\n"
"                       e.g. 0 corresponds to port 5900, etc.  If disp is\n"
"                       greater than 200 the value is used as the port.  Use a\n"
"                       negative value to force a low port, e.g. host:-80 will\n"
"                       use port 80.\n"
"\n"
"                       If ssh-agent is not active, then the ssh password needs\n"
"                       to be entered in the terminal where x11vnc is running.\n"
"\n"
"                       By default the remote ssh will issue a 'sleep 300' to\n"
"                       wait for the incoming connection for 5 mins.  To modify\n"
"                       this use user@host:disp+secs.\n"
"\n"
"                       If the remote SSH server is on a non-standard port\n"
"                       (i.e. not 22) use user@host:port:disp+secs.\n"
"\n"
"                       Note that the ssh process MAY NOT be killed when\n"
"                       x11vnc exits.  It tries by looking at ps(1) output.\n"
"\n"
"-usepw                 If no other password method was supplied on the command\n"
"                       line, first look for ~/.vnc/passwd and if found use it\n"
"                       with -rfbauth; next, look for ~/.vnc/passwdfile and\n"
"                       use it with -passwdfile; otherwise, prompt the user\n"
"                       for a password to create ~/.vnc/passwd and use it with\n"
"                       the -rfbauth option.  If none of these succeed x11vnc\n"
"                       exits immediately.\n"
"\n"
"-storepasswd pass file Store password \"pass\" as the VNC password in the\n"
"                       file \"file\".  Once the password is stored the\n"
"                       program exits.  Use the password via \"-rfbauth file\"\n"
"\n"
"                       If called with no arguments, \"x11vnc -storepasswd\",\n"
"                       the user is prompted for a password and it is stored\n"
"                       in the file ~/.vnc/passwd.  Called with one argument,\n"
"                       that will be the file to store the prompted password in.\n"
"\n"
"-nopw                  Disable the big warning message when you use x11vnc\n"
"                       without some sort of password.\n"
"\n"
"-accept string         Run a command (possibly to prompt the user at the\n"
"                       X11 display) to decide whether an incoming client\n"
"                       should be allowed to connect or not.  \"string\" is\n"
"                       an external command run via system(3) or some special\n"
"                       cases described below.  Be sure to quote \"string\"\n"
"                       if it contains spaces, shell characters, etc.  If the\n"
"                       external command returns 0 the client is accepted,\n"
"                       otherwise the client is rejected.  See below for an\n"
"                       extension to accept a client view-only.\n"
"\n"
"                       If x11vnc is running as root (say from inetd(8) or from\n"
"                       display managers xdm(1), gdm(1), etc), think about the\n"
"                       security implications carefully before supplying this\n"
"                       option (likewise for the -gone option).\n"
"\n"
"                       Environment: The RFB_CLIENT_IP environment variable will\n"
"                       be set to the incoming client IP number and the port\n"
"                       in RFB_CLIENT_PORT (or -1 if unavailable).  Similarly,\n"
"                       RFB_SERVER_IP and RFB_SERVER_PORT (the x11vnc side\n"
"                       of the connection), are set to allow identification\n"
"                       of the tcp virtual circuit.  The x11vnc process\n"
"                       id will be in RFB_X11VNC_PID, a client id number in\n"
"                       RFB_CLIENT_ID, and the number of other connected clients\n"
"                       in RFB_CLIENT_COUNT.  RFB_MODE will be \"accept\".\n"
"                       RFB_STATE will be PROTOCOL_VERSION, SECURITY_TYPE,\n"
"                       AUTHENTICATION, INITIALISATION, NORMAL, or UNKNOWN\n"
"                       indicating up to which state the client has achieved.\n"
"                       RFB_LOGIN_VIEWONLY will be 0, 1, or -1 (unknown).\n"
"                       RFB_USERNAME, RFB_LOGIN_TIME, and RFB_CURRENT_TIME may\n"
"                       also be set.\n"
"\n"
"                       If \"string\" is \"popup\" then a builtin popup window\n"
"                       is used.  The popup will time out after 120 seconds,\n"
"                       use \"popup:N\" to modify the timeout to N seconds\n"
"                       (use 0 for no timeout).\n"
"\n"
"                       In the case of \"popup\" and when the -unixpw option\n"
"                       is specified, then a *second* window will be popped\n"
"                       up after the user successfully logs in via his UNIX\n"
"                       password.  This time the user will be identified as\n"
"                       UNIX:username@hostname, the \"UNIX:\" prefix indicates\n"
"                       which user the viewer logged as via -unixpw.  The first\n"
"                       popup is only for whether to allow him to even *try*\n"
"                       to login via unix password.\n"
"\n"
"                       If \"string\" is \"xmessage\" then an xmessage(1)\n"
"                       invocation is used for the command.  xmessage must be\n"
"                       installed on the machine for this to work.\n"
"\n"
"                       Both \"popup\" and \"xmessage\" will present an option\n"
"                       for accepting the client \"View-Only\" (the client\n"
"                       can only watch).  This option will not be presented if\n"
"                       -viewonly has been specified, in which case the entire\n"
"                       display is view only.\n"
"\n"
"                       If the user supplied command is prefixed with something\n"
"                       like \"yes:0,no:*,view:3 mycommand ...\" then this\n"
"                       associates the numerical command return code with\n"
"                       the actions: accept, reject, and accept-view-only,\n"
"                       respectively.  Use \"*\" instead of a number to indicate\n"
"                       the default action (in case the command returns an\n"
"                       unexpected value).  E.g. \"no:*\" is a good choice.\n"
"\n"
"                       Note that x11vnc blocks while the external command\n"
"                       or popup is running (other clients may see no updates\n"
"                       during this period).  So a person sitting a the physical\n"
"                       display is needed to respond to an popup prompt. (use\n"
"                       a 2nd x11vnc if you lock yourself out).\n"
"\n"
"                       More -accept tricks: use \"popupmouse\" to only allow\n"
"                       mouse clicks in the builtin popup to be recognized.\n"
"                       Similarly use \"popupkey\" to only recognize\n"
"                       keystroke responses.  These are to help avoid the\n"
"                       user accidentally accepting a client by typing or\n"
"                       clicking. All 3 of the popup keywords can be followed\n"
"                       by +N+M to supply a position for the popup window.\n"
"                       The default is to center the popup window.\n"
"-afteraccept string    As -accept, except to run a user supplied command after\n"
"                       a client has been accepted and authenticated. RFB_MODE\n"
"                       will be set to \"afteraccept\" and the other RFB_*\n"
"                       variables are as in -accept.  Unlike -accept, the\n"
"                       command return code is not interpreted by x11vnc.\n"
"                       Example: -afteraccept 'killall xlock &'\n"
"-gone string           As -accept, except to run a user supplied command when\n"
"                       a client goes away (disconnects).  RFB_MODE will be\n"
"                       set to \"gone\" and the other RFB_* variables are as\n"
"                       in -accept.  The \"popup\" actions apply as well.\n"
"                       Unlike -accept, the command return code is not\n"
"                       interpreted by x11vnc.  Example: -gone 'xlock &'\n"
"\n"
"-users list            If x11vnc is started as root (say from inetd(8) or from\n"
"                       display managers xdm(1), gdm(1), etc), then as soon\n"
"                       as possible after connections to the X display are\n"
"                       established try to switch to one of the users in the\n"
"                       comma separated \"list\".  If x11vnc is not running as\n"
"                       root this option is ignored.\n"
"\n"
"                       Why use this option?  In general it is not needed since\n"
"                       x11vnc is already connected to the X display and can\n"
"                       perform its primary functions.  The option was added\n"
"                       to make some of the *external* utility commands x11vnc\n"
"                       occasionally runs work properly.  In particular under\n"
"                       GNOME and KDE to implement the \"-solid color\" feature\n"
"                       external commands (gconftool-2 and dcop) unfortunately\n"
"                       must be run as the user owning the desktop session.\n"
"                       Since this option switches userid it also affects the\n"
"                       userid used to run the processes for the -accept and\n"
"                       -gone options.  It also affects the ability to read\n"
"                       files for options such as -connect, -allow, and -remap\n"
"                       and also the ultra and tight filetransfer feature if\n"
"                       enabled.  Note that the -connect file is also sometimes\n"
"                       written to.\n"
"\n"
"                       So be careful with this option since in some situations\n"
"                       its use can decrease security.\n"
"\n"
"                       In general the switch to a user will only take place\n"
"                       if the display can still be successfully opened as that\n"
"                       user (this is primarily to try to guess the actual owner\n"
"                       of the session). Example: \"-users fred,wilma,betty\".\n"
"                       Note that a malicious local user \"barney\" by\n"
"                       quickly using \"xhost +\" when logging in may possibly\n"
"                       get the x11vnc process to switch to user \"fred\".\n"
"                       What happens next?\n"
"\n"
"                       Under display managers it may be a long time before\n"
"                       the switch succeeds (i.e. a user logs in).  To instead\n"
"                       make it switch immediately regardless if the display\n"
"                       can be reopened prefix the username with the \"+\"\n"
"                       character. E.g. \"-users +bob\" or \"-users +nobody\".\n"
"\n"
"                       The latter (i.e. switching immediately to user\n"
"                       \"nobody\") is the only obvious use of the -users option\n"
"                       that increases security.\n"
"\n"
"                       Use the following notation to associate a group with\n"
"                       a user: user1.group1,user2.group2,...  Note that\n"
"                       initgroups(2) will still be called first to try to\n"
"                       switch to ALL of a user's groups (primary and additional\n"
"                       groups).  Only if that fails or it is not available\n"
"                       then the single group specified as above (or the user's\n"
"                       primary group if not specified) is switched to with\n"
"                       setgid(2).  Use -env X11VNC_SINGLE_GROUP=1 to prevent\n"
"                       trying initgroups(2) and only switch to the single\n"
"                       group.  This sort of setting is only really needed to\n"
"                       make the ultra or tight filetransfer permissions work\n"
"                       properly. This format applies to any comma separated list\n"
"                       of users, even the special \"=\" modes described below.\n"
"\n"
"                       In -unixpw mode, if \"-users unixpw=\" is supplied\n"
"                       then after a user authenticates himself via the\n"
"                       -unixpw mechanism, x11vnc will try to switch to that\n"
"                       user as though \"-users +username\" had been supplied.\n"
"                       If you want to limit which users this will be done for,\n"
"                       provide them as a comma separated list after \"unixpw=\"\n"
"                       Groups can also be specified as described above.\n"
"\n"
"                       Similarly, in -ssl mode, if \"-users sslpeer=\" is\n"
"                       supplied then after an SSL client authenticates with his\n"
"                       cert (the -sslverify option is required for this) x11vnc\n"
"                       will extract a UNIX username from the \"emailAddress\"\n"
"                       field (username@hostname.com) of the \"Subject\" of the\n"
"                       x509 SSL cert and then try to switch to that user as\n"
"                       though \"-users +username\" had been supplied.  If you\n"
"                       want to limit which users this will be done for, provide\n"
"                       them as a comma separated list after \"sslpeer=\".\n"
"                       Set the env. var X11VNC_SSLPEER_CN to use the Common\n"
"                       Name (normally a hostname) instead of the Email field.\n"
"\n"
"                       NOTE: for sslpeer= mode the x11vnc administrator must\n"
"                       take care that any client certs he adds to -sslverify\n"
"                       have the intended UNIX username in the \"emailAddress\"\n"
"                       field of the cert.  Otherwise a user may be able to\n"
"                       log in as another.  This command can be of use in\n"
"                       checking: \"openssl x509 -text -in file.crt\", see the\n"
"                       \"Subject:\" line.  Also, along with the normal RFB_*\n"
"                       env. vars. (see -accept) passed to external cmd=\n"
"                       commands, RFB_SSL_CLIENT_CERT will be set to the\n"
"                       client's x509 certificate string.\n"
"\n"
"                       The sslpeer= mode can aid finding X sessions via the\n"
"                       FINDDISPLAY and FINDCREATEDISPLAY mechanisms.\n"
"\n"
"                       To immediately switch to a user *before* connections\n"
"                       to the X display are made or any files opened use the\n"
"                       \"=\" character: \"-users =bob\".  That user needs to\n"
"                       be able to open the X display and any files of course.\n"
"\n"
"                       The special user \"guess=\" means to examine the utmpx\n"
"                       database (see who(1)) looking for a user attached to\n"
"                       the display number (from DISPLAY or -display option)\n"
"                       and try him/her.  To limit the list of guesses, use:\n"
"                       \"-users guess=bob,betty\".\n"
"\n"
"                       Even more sinister is the special user \"lurk=\"\n"
"                       that means to try to guess the DISPLAY from the utmpx\n"
"                       login database as well.  So it \"lurks\" waiting for\n"
"                       anyone to log into an X session and then connects to it.\n"
"                       Specify a list of users after the = to limit which users\n"
"                       will be tried.  To enable a different searching mode, if\n"
"                       the first user in the list is something like \":0\" or\n"
"                       \":0-2\" that indicates a range of DISPLAY numbers that\n"
"                       will be tried (regardless of whether they are in the\n"
"                       utmpx database) for all users that are logged in.  Also\n"
"                       see the \"-display WAIT:...\" functionality.  Examples:\n"
"                       \"-users lurk=\" and also \"-users lurk=:0-1,bob,mary\"\n"
"\n"
"                       Be especially careful using the \"guess=\" and \"lurk=\"\n"
"                       modes.  They are not recommended for use on machines\n"
"                       with untrustworthy local users.\n"
"\n"
"-noshm                 Do not use the MIT-SHM extension for the polling.\n"
"                       Remote displays can be polled this way: be careful this\n"
"                       can use large amounts of network bandwidth.  This is\n"
"                       also of use if the local machine has a limited number\n"
"                       of shm segments and -onetile is not sufficient.\n"
"-flipbyteorder         Sometimes needed if remotely polled host has different\n"
"                       endianness.  Ignored unless -noshm is set.\n"
"-onetile               Do not use the new copy_tiles() framebuffer mechanism,\n"
"                       just use 1 shm tile for polling.  Limits shm segments\n"
"                       used to 3.\n"
"\n"
"                       To disable any automatic shm reduction set the\n"
"                       env. var. X11VNC_NO_LIMIT_SHM.\n"
"\n"
"-solid [color]         To improve performance, when VNC clients are connected\n"
"                       try to change the desktop background to a solid color.\n"
"                       The [color] is optional: the default color is \"cyan4\".\n"
"                       For a different one specify the X color (rgb.txt name,\n"
"                       e.g. \"darkblue\" or numerical \"#RRGGBB\").\n"
"\n"
"                       Currently this option only works on GNOME, KDE, CDE,\n"
"                       XFCE, and classic X (i.e. with the background image\n"
"                       on the root window).  The \"gconftool-2\", \"dcop\"\n"
"                       and \"xfconf-query\" external commands are run for\n"
"                       GNOME, KDE, and XFCE respectively.  This also works\n"
"                       on native MacOSX.  (There is no color selection for\n"
"                       MacOSX or XFCE.)  Other desktops won't work, (send\n"
"                       us the corresponding commands if you find them).\n"
"                       If x11vnc is running as root (inetd(8) or gdm(1)),\n"
"                       the -users option may be needed for GNOME, KDE, XFCE.\n"
"                       If x11vnc guesses your desktop incorrectly, you can\n"
"                       force it by prefixing color with \"gnome:\", \"kde:\",\n"
"                       \"cde:\", \"xfce:\", or \"root:\".\n"
"\n"
"                       Update: -solid no longer works on KDE4.\n"
"\n"
"                       This mode works in a limited way on the Mac OS X Console\n"
"                       with one color ('kelp') using the screensaver writing\n"
"                       to the background.  Look in \"~/Library/Screen Savers\"\n"
"                       for VncSolidColor.png to change the color.\n"
"\n"
"-blackout string       Black out rectangles on the screen. \"string\" is a\n"
"                       comma separated list of WxH+X+Y type geometries for\n"
"                       each rectangle.  If one of the items on the list is the\n"
"                       string \"noptr\" the mouse pointer will not be allowed\n"
"                       to go into a blacked out region.\n"
"-xinerama              If your screen is composed of multiple monitors\n"
"-noxinerama            glued together via XINERAMA, and that screen is\n"
"                       not a rectangle this option will try to guess the\n"
"                       areas to black out (if your system has libXinerama).\n"
"                       default: %s\n"
"\n"
"                       In general, we have noticed on XINERAMA displays you may\n"
"                       need to use the \"-xwarppointer\" option if the mouse\n"
"                       pointer misbehaves and it is enabled by default. Use\n"
"                       \"-noxwarppointer\" if you do not want this.\n"
"\n"
"-xtrap                 Use the DEC-XTRAP extension for keystroke and mouse\n"
"                       input insertion.  For use on legacy systems, e.g. X11R5,\n"
"                       running an incomplete or missing XTEST extension.\n"
"                       By default DEC-XTRAP will be used if XTEST server grab\n"
"                       control is missing, use -xtrap to do the keystroke and\n"
"                       mouse insertion via DEC-XTRAP as well.\n"
"\n"
"-xrandr [mode]         If the display supports the XRANDR (X Resize, Rotate\n"
"                       and Reflection) extension, and you expect XRANDR events\n"
"                       to occur to the display while x11vnc is running, this\n"
"                       options indicates x11vnc should try to respond to\n"
"                       them (as opposed to simply crashing by assuming the\n"
"                       old screen size).  See the xrandr(1) manpage and run\n"
"                       'xrandr -q' for more info.  [mode] is optional and\n"
"                       described below.\n"
"\n"
"                       Since watching for XRANDR events and trapping errors\n"
"                       increases polling overhead, only use this option if\n"
"                       XRANDR changes are expected.  For example on a rotatable\n"
"                       screen PDA or laptop, or using a XRANDR-aware Desktop\n"
"                       where you resize often.  It is best to be viewing with a\n"
"                       vncviewer that supports the NewFBSize encoding, since it\n"
"                       knows how to react to screen size changes.  Otherwise,\n"
"                       LibVNCServer tries to do so something reasonable for\n"
"                       viewers that cannot do this (portions of the screen\n"
"                       may be clipped, unused, etc).\n"
"\n"
"                       Note: the default now is to check for XRANDR events, but\n"
"                       do not trap every X call that may fail due to resize.\n"
"                       If a resize event is received, the full -xrandr mode\n"
"                       is enabled.  To disable even checking for events supply:\n"
"                       -noxrandr.\n"
"\n"
"                       \"mode\" defaults to \"resize\", which means create a\n"
"                       new, resized, framebuffer and hope all viewers can cope\n"
"                       with the change.  \"newfbsize\" means first disconnect\n"
"                       all viewers that do not support the NewFBSize VNC\n"
"                       encoding, and then resize the framebuffer.  \"exit\"\n"
"                       means disconnect all viewer clients, and then terminate\n"
"                       x11vnc.\n"
"\n"
"-rotate string         Rotate and/or flip the framebuffer view exported by VNC.\n"
"                       This transformation is independent of XRANDR and is\n"
"                       done in software in main memory and so may be slower.\n"
"                       This mode could be useful on a handheld with portrait or\n"
"                       landscape modes that do not correspond to the scanline\n"
"                       order of the actual framebuffer.  \"string\" can be:\n"
"\n"
"                             x     flip along x-axis\n"
"                             y     flip along y-axis\n"
"                            xy     flip along x- and y-axes\n"
"                           +90     rotate 90 degrees clockwise\n"
"                           -90     rotate 90 degrees counter-clockwise\n"
"                          +90x     rotate 90 degrees CW, then flip along x\n"
"                          +90y     rotate 90 degrees CW, then flip along y\n"
"\n"
"                       these give all possible rotations and reflections.\n"
"\n"
"                       Aliases: same as xy:  yx, +180, -180, 180\n"
"                                same as -90: +270, 270\n"
"                                same as +90: 90, (ditto for 90x, 90y)\n"
"\n"
"                       Like -scale, this transformation is applied at the very\n"
"                       end of any chain of framebuffer transformations and so\n"
"                       any options with geometries, e.g. -blackout, -clip, etc.\n"
"                       are relative to the original X (or -rawfb) framebuffer,\n"
"                       not the final one sent to VNC viewers.\n"
"\n"
"                       If you do not want the cursor shape to be rotated\n"
"                       prefix \"string\" with \"nc:\", e.g. \"nc:+90\",\n"
"                       \"nc:xy\", etc.\n"
"\n"
"-padgeom WxH           Whenever a new vncviewer connects, the framebuffer is\n"
"                       replaced with a fake, solid black one of geometry WxH.\n"
"                       Shortly afterwards the framebuffer is replaced with the\n"
"                       real one.  This is intended for use with vncviewers\n"
"                       that do not support NewFBSize and one wants to make\n"
"                       sure the initial viewer geometry will be big enough\n"
"                       to handle all subsequent resizes (e.g. under -xrandr,\n"
"                       -remote id:windowid, rescaling, etc.)\n"
"\n"
"                       In -unixpw mode this sets the size of the login screen.\n"
"                       Use \"once:WxH\" it ignore padgeom after the login\n"
"                       screen is set up.\n"
"\n"
"-o logfile             Write stderr messages to file \"logfile\" instead of to\n"
"                       the terminal.  Same as \"-logfile file\".  To append\n"
"                       to the file use \"-oa file\" or \"-logappend file\".\n"
"                       If \"logfile\" contains the string \"%%VNCDISPLAY\"\n"
"                       it is expanded to the vnc display (the name may need\n"
"                       to be guessed at.)  \"%%HOME\" works too.\n"
"\n"
"-flag file             Write the \"PORT=NNNN\" (e.g. PORT=5900) string to\n"
"                       \"file\" in addition to stdout.  This option could be\n"
"                       useful by wrapper script to detect when x11vnc is ready.\n"
"\n"
"-rmflag file           Remove \"file\" at exit to signal when x11vnc is done.\n"
"                       The file is created at startup if it does not already\n"
"                       exist or if \"file\" is prefixed with \"create:\".\n"
"                       If the file is created, the x11vnc PID is placed in\n"
"                       the file.  Otherwise the files contents is not changed.\n"
"                       Use prefix \"nocreate:\" to prevent creation.\n"
"\n"
"-rc filename           Use \"filename\" instead of $HOME/.x11vncrc for rc file.\n"
"-norc                  Do not process any .x11vncrc file for options.\n"
"\n"
"-env VAR=VALUE         Set the environment variable 'VAR' to value 'VALUE'\n"
"                       at x11vnc startup.  This is a convenience utility to\n"
"                       avoid shell script wrappers, etc. to set the env. var.\n"
"                       You may specify as many of these as needed on the\n"
"                       command line.\n"
"-prog /path/to/x11vnc  Set the full path to the x11vnc program for cases when\n"
"                       it cannot be determined from argv[0] (e.g. tcpd/inetd)\n"
"\n"
"-h, -help              Print this help text.\n"
"-?, -opts              Only list the x11vnc options.\n"
"-V, -version           Print program version and last modification date.\n"
"-license               Print out license information.  Same as -copying and\n"
"                       -warranty.\n"
"\n"
"-dbg                   Instead of exiting after cleaning up, run a simple\n"
"                       \"debug crash shell\" when fatal errors are trapped.\n"
"\n"
"-q, -quiet             Be quiet by printing less informational output to\n"
"                       stderr. (use -noquiet to undo an earlier -quiet.)\n"
"\n"
"                       The -quiet option does not eliminate all informational\n"
"                       output, it only reduces it.  It is ignored in most\n"
"                       auxiliary usage modes, e.g. -storepasswd.  To eliminate\n"
"                       all output use: 2>/dev/null 1>&2, etc.\n"
"\n"
"-v, -verbose           Print out more information to stderr.\n"
"\n"
"-bg                    Go into the background after screen setup.  Messages to\n"
"                       stderr are lost unless -o logfile is used.  Something\n"
"                       like this could be useful in a script:\n"
"                        port=`ssh -t $host \"x11vnc -display :0 -bg\" | grep PORT`\n"
"                        port=`echo \"$port\" | sed -e 's/PORT=//'`\n"
"                        port=`expr $port - 5900`\n"
"                        vncviewer $host:$port\n"
"\n"
"-modtweak              Option -modtweak automatically tries to adjust the AltGr\n"
"-nomodtweak            and Shift modifiers for differing language keyboards\n"
"                       between client and host.  Otherwise, only a single key\n"
"                       press/release of a Keycode is simulated (i.e. ignoring\n"
"                       the state of the modifiers: this usually works for\n"
"                       identical keyboards).  Also useful in resolving cases\n"
"                       where a Keysym is bound to multiple keys (e.g. \"<\" + \">\"\n"
"                       and \",\" + \"<\" keys).  Default: %s\n"
"\n"
"                       If you are having trouble with with keys and -xkb or\n"
"                       -noxkb, and similar things don't help, try -nomodtweak.\n"
"\n"
"                       On some HP-UX systems it is been noted that they have\n"
"                       an odd keymapping where a single keycode will have a\n"
"                       keysym, e.g. \"#\", up to three times.  You can check\n"
"                       via \"xmodmap -pk\" or the -dk option.  The failure\n"
"                       is when you try to type \"#\" it yields \"3\".  If you\n"
"                       see this problem try setting the environment variable\n"
"                       MODTWEAK_LOWEST=1 to see if it helps.\n"
"\n"
"-xkb                   When in modtweak mode, use the XKEYBOARD extension (if\n"
"-noxkb                 the X display supports it) to do the modifier tweaking.\n"
"                       This is powerful and should be tried if there are still\n"
"                       keymapping problems when using -modtweak by itself.\n"
"                       The default is to check whether some common keysyms,\n"
"                       e.g. !, @, [, are only accessible via -xkb mode and if\n"
"                       so then automatically enable the mode.  To disable this\n"
"                       automatic detection use -noxkb.\n"
"\n"
"                       When -xkb mode is active you can set these env. vars.\n"
"                       They apply only when there is ambiguity as to which\n"
"                       key to choose (i.e the mapping is not one-to-one).\n"
"                       NOKEYHINTS=1: for up ascii keystrokes do not use score\n"
"                       hints saved when the key was pressed down. NOANYDOWN=1:\n"
"                       for up keystrokes do not resort to searching through\n"
"                       keys that are currently pressed down.  KEYSDOWN=N:\n"
"                       remember the last N keys press down for tie-breaking\n"
"                       when an up keystroke comes in.\n"
"\n"
"-capslock              When in -modtweak (the default) or -xkb mode,\n"
"                       if a keysym in the range A-Z comes in check the X\n"
"                       server to see if the Caps_Lock is set.  If it is do\n"
"                       not artificially press Shift to generate the keysym.\n"
"                       This will enable the CapsLock key to behave correctly\n"
"                       in some circumstances: namely *both* the VNC viewer\n"
"                       machine and the x11vnc X server are in the CapsLock\n"
"                       on state.  If one side has CapsLock on and the other\n"
"                       off and the keyboard is not behaving as you think it\n"
"                       should you should correct the CapsLock states (hint:\n"
"                       pressing CapsLock inside and outside of the viewer can\n"
"                       help toggle them both to the correct state).  However,\n"
"                       for best results do not use this option, but rather\n"
"                       *only* enable CapsLock on the VNC viewer side (i.e. by\n"
"                       pressing CapsLock outside of the viewer window, also\n"
"                       -skip_lockkeys below).  Also try -nomodtweak for a\n"
"                       possible workaround.\n"
"\n"
"-skip_lockkeys         Have x11vnc ignore all Caps_Lock, Shift_Lock, Num_Lock,\n"
"-noskip_lockkeys       Scroll_Lock keysyms received from viewers.  The idea is\n"
"                       you press Caps_Lock on the VNC Viewer side but that does\n"
"                       not change the lock state in the x11vnc-side X server.\n"
"                       Nevertheless your capitalized letters come in over\n"
"                       the wire and are applied correctly to the x11vnc-side\n"
"                       X server.  Note this mode probably won't do what you\n"
"                       want in -nomodtweak mode.  Also, a kludge for KP_n\n"
"                       digits is always done in this mode: they are mapped to\n"
"                       regular digit keysyms.  See also -capslock above.\n"
"                       The default is -noskip_lockkeys.\n"
"\n"
"-skip_keycodes string  Ignore the comma separated list of decimal keycodes.\n"
"                       Perhaps these are keycodes not on your keyboard but\n"
"                       your X server thinks exist.  Currently only applies\n"
"                       to -xkb mode.  Use this option to help x11vnc in the\n"
"                       reverse problem it tries to solve: Keysym -> Keycode(s)\n"
"                       when ambiguities exist (more than one Keycode per\n"
"                       Keysym).  Run 'xmodmap -pk' to see your keymapping.\n"
"                       Example: \"-skip_keycodes 94,114\"\n"
"-sloppy_keys           Experimental option that tries to correct some\n"
"                       \"sloppy\" key behavior.  E.g. if at the viewer you\n"
"                       press Shift+Key but then release the Shift before\n"
"                       Key that could give rise to extra unwanted characters\n"
"                       (usually only between keyboards of different languages).\n"
"                       Only use this option if you observe problems with\n"
"                       some keystrokes.\n"
"-skip_dups             Some VNC viewers send impossible repeated key events,\n"
"-noskip_dups           e.g. key-down, key-down, key-up, key-up all for the same\n"
"                       key, or 20 downs in a row for the same modifier key!\n"
"                       Setting -skip_dups means to skip these duplicates and\n"
"                       just process the first event. Note: some VNC viewers\n"
"                       assume they can send down's without the corresponding\n"
"                       up's and so you should not set this option for\n"
"                       these viewers (symptom: some keys do not autorepeat)\n"
"                       Default: %s\n"
"-add_keysyms           If a Keysym is received from a VNC viewer and that\n"
"-noadd_keysyms         Keysym does not exist in the X server, then add the\n"
"                       Keysym to the X server's keyboard mapping on an unused\n"
"                       key.  Added Keysyms will be removed periodically and\n"
"                       also when x11vnc exits.  Default: %s\n"
"-clear_mods            At startup and exit clear the modifier keys by sending\n"
"                       KeyRelease for each one. The Lock modifiers are skipped.\n"
"                       Used to clear the state if the display was accidentally\n"
"                       left with any pressed down.\n"
"-clear_keys            As -clear_mods, except try to release ANY pressed key.\n"
"                       Note that this option and -clear_mods can interfere\n"
"                       with a person typing at the physical keyboard.\n"
"-clear_all             As -clear_keys, except try to release any CapsLock,\n"
"                       NumLock, etc. locks as well.\n"
"\n"
"-remap string          Read Keysym remappings from file named \"string\".\n"
"                       Format is one pair of Keysyms per line (can be name\n"
"                       or hex value) separated by a space.  If no file named\n"
"                       \"string\" exists, it is instead interpreted as this\n"
"                       form: key1-key2,key3-key4,...  See <X11/keysymdef.h>\n"
"                       header file for a list of Keysym names, or use xev(1).\n"
"\n"
"                       To map a key to a button click, use the fake Keysyms\n"
"                       \"Button1\", ..., etc. E.g: \"-remap Super_R-Button2\"\n"
"                       (useful for pasting on a laptop)\n"
"\n"
"                       I use these if the machine I am viewing from does not\n"
"                       have a scrollwheel or I don't like using the one it has:\n"
"\n"
"                              -remap Super_R-Button4,Menu-Button5\n"
"                              -remap KP_Add-Button4,KP_Enter-Button5\n"
"\n"
"                       the former would be used on a PC, the latter on a\n"
"                       MacBook.  This way those little used keys can be used\n"
"                       to generate bigger hops than the Up and Down arrows\n"
"                       provide.  One can scroll through text or web pages more\n"
"                       quickly this way (especially if x11vnc scroll detection\n"
"                       is active.)\n"
"\n"
"                       Use Button44, Button12, etc. for multiple clicks.\n"
"\n"
"                       To disable a keysym (i.e. make it so it will not be\n"
"                       injected), remap it to \"NoSymbol\" or \"None\".\n"
"\n"
"                       Dead keys: \"dead\" (or silent, mute) keys are keys that\n"
"                       do not produce a character but must be followed by a 2nd\n"
"                       keystroke.  This is often used for accenting characters,\n"
"                       e.g. to put \"`\" on top of \"a\" by pressing the dead\n"
"                       key and then \"a\".  Note that this interpretation\n"
"                       is not part of core X11, it is up to the toolkit or\n"
"                       application to decide how to react to the sequence.\n"
"                       The X11 names for these keysyms are \"dead_grave\",\n"
"                       \"dead_acute\", etc.  However some VNC viewers send the\n"
"                       keysyms \"grave\", \"acute\" instead thereby disabling\n"
"                       the accenting.  To work around this -remap can be used.\n"
"                       For example \"-remap grave-dead_grave,acute-dead_acute\"\n"
"                       As a convenience, \"-remap DEAD\" applies these remaps:\n"
"\n"
"                               g     grave-dead_grave\n"
"                               a     acute-dead_acute\n"
"                               c     asciicircum-dead_circumflex\n"
"                               t     asciitilde-dead_tilde\n"
"                               m     macron-dead_macron\n"
"                               b     breve-dead_breve\n"
"                               D     abovedot-dead_abovedot\n"
"                               d     diaeresis-dead_diaeresis\n"
"                               o     degree-dead_abovering\n"
"                               A     doubleacute-dead_doubleacute\n"
"                               r     caron-dead_caron\n"
"                               e     cedilla-dead_cedilla\n"
"\n"
"                       If you just want a subset use the first letter\n"
"                       label, e.g. \"-remap DEAD=ga\" to get the first two.\n"
"                       Additional remaps may also be supplied via commas,\n"
"                       e.g.  \"-remap DEAD=ga,Super_R-Button2\".  Finally,\n"
"                       \"DEAD=missing\" means to apply all of the above as\n"
"                       long as the left hand member is not already in the\n"
"                       X11 keymap.\n"
"\n"
"-norepeat              Option -norepeat disables X server key auto repeat when\n"
"-repeat                VNC clients are connected and VNC keyboard input is\n"
"                       not idle for more than 5 minutes.  This works around a\n"
"                       repeating keystrokes bug (triggered by long processing\n"
"                       delays between key down and key up client events:\n"
"                       either from large screen changes or high latency).\n"
"                       Default: %s\n"
"\n"
"                       You can set the env. var. X11VNC_IDLE_TIMEOUT to the\n"
"                       number of idle seconds you want (5min = 300secs).\n"
"\n"
"                       Note: your VNC viewer side will likely do autorepeating,\n"
"                       so this is no loss unless someone is simultaneously at\n"
"                       the real X display.\n"
"\n"
"                       Use \"-norepeat N\" to set how many times norepeat will\n"
"                       be reset if something else (e.g. X session manager)\n"
"                       undoes it.  The default is 2.  Use a negative value\n"
"                       for unlimited resets.\n"
"\n"
"-nofb                  Ignore video framebuffer: only process keyboard and\n"
"                       pointer.  Intended for use with Win2VNC and x2vnc\n"
"                       dual-monitor setups.\n"
"-nobell                Do not watch for XBell events. (no beeps will be heard)\n"
"                       Note: XBell monitoring requires the XKEYBOARD extension.\n"
"-nosel                 Do not manage exchange of X selection/cutbuffer between\n"
"                       VNC viewers and the X server at all.\n"
"-noprimary             Do not poll the PRIMARY selection for changes to send\n"
"                       back to clients.  (PRIMARY is still set on received\n"
"                       changes, however).\n"
"-nosetprimary          Do not set the PRIMARY selection for changes received\n"
"                       from VNC clients.\n"
"-noclipboard           Do not poll the CLIPBOARD selection for changes to send\n"
"                       back to clients.  (CLIPBOARD is still set on received\n"
"                       changes, however).\n"
"-nosetclipboard        Do not set the CLIPBOARD selection for changes\n"
"                       received from VNC clients.\n"
"-seldir string         If direction string is \"send\", only send the selection\n"
"                       to viewers, and if it is \"recv\" only receive it from\n"
"                       viewers.  To work around apps setting the selection\n"
"                       too frequently and messing up the other end.  You can\n"
"                       actually supply a comma separated list of directions,\n"
"                       including \"debug\" to turn on debugging output.\n"
"\n"
"-cursor [mode]         Sets how the pointer cursor shape (little icon at the\n"
"-nocursor              mouse pointer) should be handled.  The \"mode\" string\n"
"                       is optional and is described below.  The default\n"
"                       is to show some sort of cursor shape(s).  How this\n"
"                       is done depends on the VNC viewer and the X server.\n"
"                       Use -nocursor to disable cursor shapes completely.\n"
"\n"
"                       Some VNC viewers support the TightVNC CursorPosUpdates\n"
"                       and CursorShapeUpdates extensions (cuts down on\n"
"                       network traffic by not having to send the cursor image\n"
"                       every time the pointer is moved), in which case these\n"
"                       extensions are used (see -nocursorshape and -nocursorpos\n"
"                       below to disable).  For other viewers the cursor shape\n"
"                       is written directly to the framebuffer every time the\n"
"                       pointer is moved or changed and gets sent along with\n"
"                       the other framebuffer updates.  In this case, there\n"
"                       will be some lag between the vnc viewer pointer and\n"
"                       the remote cursor position.\n"
"\n"
"                       If the X display supports retrieving the cursor shape\n"
"                       information from the X server, then the default is\n"
"                       to use that mode.  On Solaris this can be done with\n"
"                       the SUN_OVL extension using -overlay (see also the\n"
"                       -overlay_nocursor option).  A similar overlay scheme\n"
"                       is used on IRIX.  Xorg (e.g. Linux) and recent Solaris\n"
"                       Xsun servers support the XFIXES extension to retrieve\n"
"                       the exact cursor shape from the X server.  If XFIXES\n"
"                       is present it is preferred over Overlay and is used by\n"
"                       default (see -noxfixes below).  This can be disabled\n"
"                       with -nocursor, and also some values of the \"mode\"\n"
"                       option below.\n"
"\n"
"                       Note that under XFIXES cursors with transparency (alpha\n"
"                       channel) will usually not be exactly represented and one\n"
"                       may find Overlay preferable.  See also the -alphacut\n"
"                       and -alphafrac options below as fudge factors to try\n"
"                       to improve the situation for cursors with transparency\n"
"                       for a given theme.\n"
"\n"
"                       The \"mode\" string can be used to fine-tune the\n"
"                       displaying of cursor shapes.  It can be used the\n"
"                       following ways:\n"
"\n"
"                       \"-cursor arrow\" - just show the standard arrow\n"
"                       nothing more or nothing less.\n"
"\n"
"                       \"-cursor none\" - same as \"-nocursor\"\n"
"\n"
"                       \"-cursor X\" - when the cursor appears to be on the\n"
"                       root window, draw the familiar X shape.  Some desktops\n"
"                       such as GNOME cover up the root window completely,\n"
"                       and so this will not work, try \"X1\", etc, to try to\n"
"                       shift the tree depth.  On high latency links or slow\n"
"                       machines there will be a time lag between expected and\n"
"                       the actual cursor shape.\n"
"\n"
"                       \"-cursor some\" - like \"X\" but use additional\n"
"                       heuristics to try to guess if the window should have\n"
"                       a windowmanager-like resizer cursor or a text input\n"
"                       I-beam cursor.  This is a complete hack, but may be\n"
"                       useful in some situations because it provides a little\n"
"                       more feedback about the cursor shape.\n"
"\n"
"                       \"-cursor most\" - try to show as many cursors as\n"
"                       possible.  Often this will only be the same as \"some\"\n"
"                       unless the display has overlay visuals or XFIXES\n"
"                       extensions available.  On Solaris and IRIX if XFIXES\n"
"                       is not available, -overlay mode will be attempted.\n"
"\n"
"-cursor_drag           Show cursor shape changes even when the mouse is being\n"
"                       dragged with a mouse button down.  This is useful if you\n"
"                       want to be able to see Drag-and-Drop cursor icons, etc.\n"
"\n"
"-arrow n               Choose an alternate \"arrow\" cursor from a set of\n"
"                       some common ones.  n can be 1 to %d.  Default is: %d\n"
"                       Ignored when in XFIXES cursor-grabbing mode.\n"
"\n"
"-noxfixes              Do not use the XFIXES extension to draw the exact cursor\n"
"                       shape even if it is available.\n"
"\n"
"                       Note: To work around a crash in Xorg 1.5 and later\n"
"                       some people needed to use -noxfixes.  The Xorg crash\n"
"                       occurred right after a Display Manager (e.g. GDM) login.\n"
"                       Starting with x11vnc 0.9.9 it tries to automatically\n"
"                       avoid using XFIXES until it is sure a window manager\n"
"                       is running.  See the -reopen option for more info and\n"
"                       how to use X11VNC_AVOID_WINDOWS=never to disable it.\n"
"\n"
"-alphacut n            When using the XFIXES extension for the cursor shape,\n"
"                       cursors with transparency will not usually be displayed\n"
"                       exactly (but opaque ones will).  This option sets n as\n"
"                       a cutoff for cursors that have transparency (\"alpha\n"
"                       channel\" with values ranging from 0 to 255) Any cursor\n"
"                       pixel with alpha value less than n becomes completely\n"
"                       transparent.  Otherwise the pixel is completely opaque.\n"
"                       Default %d\n"
"\n"
"-alphafrac fraction    With the threshold in -alphacut some cursors will become\n"
"                       almost completely transparent because their alpha values\n"
"                       are not high enough.  For those cursors adjust the\n"
"                       alpha threshold until fraction of the non-zero alpha\n"
"                       channel pixels become opaque.  Default %.2f\n"
"-alpharemove           By default, XFIXES cursors pixels with transparency have\n"
"                       the alpha factor multiplied into the RGB color values\n"
"                       (i.e. that corresponding to blending the cursor with a\n"
"                       black background).  Specify this option to remove the\n"
"                       alpha factor. (useful for light colored semi-transparent\n"
"                       cursors).\n"
"-noalphablend          In XFIXES mode do not send cursor alpha channel data\n"
"                       to LibVNCServer.  The default is to send it.  The\n"
"                       alphablend effect will only be visible in -nocursorshape\n"
"                       mode or for clients with cursorshapeupdates turned\n"
"                       off. (However there is a hack for 32bpp with depth 24,\n"
"                       it uses the extra 8 bits to store cursor transparency\n"
"                       for use with a hacked vncviewer that applies the\n"
"                       transparency locally.  See the FAQ for more info).\n"
"\n"
"-nocursorshape         Do not use the TightVNC CursorShapeUpdates extension\n"
"                       even if clients support it.  See -cursor above.\n"
"-cursorpos             Option -cursorpos enables sending the X cursor position\n"
"-nocursorpos           back to all vnc clients that support the TightVNC\n"
"                       CursorPosUpdates extension.  Other clients will be able\n"
"                       to see the pointer motions. Default: %s\n"
"-xwarppointer          Move the pointer with XWarpPointer(3X) instead of\n"
"-noxwarppointer        the XTEST extension.  Use this as a workaround\n"
"                       if the pointer motion behaves incorrectly, e.g.\n"
"                       on touchscreens or other non-standard setups.\n"
"\n"
"                       It is also sometimes needed on XINERAMA displays and is\n"
"                       enabled by default if XINERAMA is found to be active.\n"
"                       To prevent this, use -noxwarppointer.\n"
"\n"
"-always_inject         Even if there is no displacement (dx = dy = 0) for a\n"
"                       VNC mouse event force the pointer to the indicated x,y\n"
"                       position anyway.  Recent (2009) gui toolkits (gnome)\n"
"                       have problems with x11vnc's original mouse input\n"
"                       injection method.  So x11vnc's mouse input injection\n"
"                       method has been modified.  To regain the OLD behavior\n"
"                       use this option: -always_inject.  Then x11vnc will\n"
"                       always force positioning the mouse to the x,y position\n"
"                       even if that position has not changed since the previous\n"
"                       VNC input event.\n"
"\n"
"                       The first place this problem was noticed was in gnome\n"
"                       terminal: if you pressed and released mouse button 3, a\n"
"                       menu was posted and then its first element 'New Terminal\n"
"                       Window' was activated.  This was because x11vnc injected\n"
"                       the mouse position twice: once on ButtonPress and again\n"
"                       on ButtonRelease.  The toolkit interpreted the 2nd one\n"
"                       as mouse motion even though the mouse hadn't moved.\n"
"                       So now by default x11vnc tries to avoid injecting the\n"
"                       2nd one.\n"
"\n"
"                       Note that with the new default x11vnc will be oblivious\n"
"                       to applications moving the pointer (warping) or the\n"
"                       user at the physical display moving it.  So it might,\n"
"                       e.g., inject ButtonRelease at the wrong position.\n"
"                       If this (or similar scenarios) causes problems in your\n"
"                       environment, specify -always_inject for the old method.\n"
"\n"
"-buttonmap string      String to remap mouse buttons.  Format: IJK-LMN, this\n"
"                       maps buttons I -> L, etc., e.g.  -buttonmap 13-31\n"
"\n"
"                       Button presses can also be mapped to keystrokes: replace\n"
"                       a button digit on the right of the dash with :<sym>:\n"
"                       or :<sym1>+<sym2>: etc. for multiple keys. For example,\n"
"                       if the viewing machine has a mouse-wheel (buttons 4 5)\n"
"                       but the x11vnc side does not, these will do scrolls:\n"
"                              -buttonmap 12345-123:Prior::Next:\n"
"                              -buttonmap 12345-123:Up+Up+Up::Down+Down+Down:\n"
"\n"
"                       See <X11/keysymdef.h> header file for a list of Keysyms,\n"
"                       or use the xev(1) program.  Note: mapping of button\n"
"                       clicks to Keysyms may not work if -modtweak or -xkb is\n"
"                       needed for the Keysym.\n"
"\n"
"                       If you include a modifier like \"Shift_L\" the\n"
"                       modifier's up/down state is toggled, e.g. to send\n"
"                       \"The\" use :Shift_L+t+Shift_L+h+e: (the 1st one is\n"
"                       shift down and the 2nd one is shift up). (note: the\n"
"                       initial state of the modifier is ignored and not reset)\n"
"                       To include button events use \"Button1\", ... etc.\n"
"\n"
"                       -buttonmap currently does not work on MacOSX console\n"
"                       or in -rawfb mode.\n"
"\n"
"                       Workaround: use -buttonmap IJ...-LM...=n to limit the\n"
"                       number of mouse buttons to n, e.g. 123-123=3.  This will\n"
"                       prevent x11vnc from crashing if the X server reports\n"
"                       there are 5 buttons (4/5 scroll wheel), but there are\n"
"                       only really 3.\n"
"\n"
"-nodragging            Do not update the display during mouse dragging events\n"
"                       (mouse button held down).  Greatly improves response on\n"
"                       slow setups, but you lose all visual feedback for drags,\n"
"                       text selection, and some menu traversals.  It overrides\n"
"                       any -pointer_mode setting.\n"
"\n"
#ifndef NO_NCACHE
"-ncache n              Client-side caching scheme.  Framebuffer memory \"n\"\n"
"                       (an integer) times that of the full display is allocated\n"
"                       below the actual framebuffer to cache screen contents\n"
"                       for rapid retrieval.  So a W x H frambuffer is expanded\n"
"                       to a W x (n+1)*H one.  Use 0 to disable.\n"
"\n"
"                       The \"n\" is actually optional, the default is 10.\n"
"\n"
"                       For this and the other -ncache* options below you can\n"
"                       abbreviate \"-ncache\" with \"-nc\".  Also, \"-nonc\"\n"
"                       is the same as \"-ncache 0\"\n"
"\n"
"                       This is an experimental option, currently implemented in\n"
"                       an awkward way in that in the VNC Viewer you can see the\n"
"                       pixel cache contents if you scroll down, etc.  So you\n"
"                       will have to set things up so you can't see that region.\n"
"                       If this method is successful, the changes required for\n"
"                       clients to do this less awkwardly will be investigated.\n"
"\n"
"                       The SSVNC viewer does a good job at automatically hiding\n"
"                       the pixel cache region.  Or use SSVNC's -ycrop option\n"
"                       to explicitly hide the region.\n"
"\n"
"                       Note that this mode consumes a huge amount of memory,\n"
"                       both on the x11vnc server side and on the VNC Viewer\n"
"                       side.  If n=2 then the amount of RAM used is roughly\n"
"                       tripled for both x11vnc and the VNC Viewer.  As a rule\n"
"                       of thumb, note that 1280x1024 at depth 24 is about 5MB\n"
"                       of pixel data.\n"
"\n"
"                       For reasonable response when cycling through 4 to 6\n"
"                       large (e.g. web browser) windows a value n of 6 to 12\n"
"                       is recommended. (that's right: ~10X more memory...)\n"
"\n"
"                       Because of the way window backingstore and saveunders\n"
"                       are implemented, n must be even.  It will be incremented\n"
"                       by 1 if it is not.\n"
"\n"
"                       This mode also works for native MacOS X, but may not\n"
"                       be as effective as the X version.  This is due to a\n"
"                       number of things, one is the drop-shadow compositing\n"
"                       that leaves extra areas that need to be repaired (see\n"
"                       -ncache_pad).  Another is the window iconification\n"
"                       animations need to be avoided (see -macicontime).\n"
"                       It appears the that the 'Scale' animation mode gives\n"
"                       better results than the 'Genie' one.  Also, window event\n"
"                       detection not as accurate as the X version.\n"
"\n"
"-ncache_cr             In -ncache mode, try to do copyrect opaque window\n"
"                       moves/drags instead of wireframes (this can induce\n"
"                       painting errors).  The wireframe will still be used when\n"
"                       moving a window whose save-unders has not yet been set\n"
"                       or has been invalidated.\n"
"\n"
"                       Some VNC Viewers provide better response than others\n"
"                       with this option.  On Unix, realvnc viewer gives\n"
"                       smoother drags than tightvnc viewer.  Response may also\n"
"                       be choppy if the server side machine is too slow.\n"
"\n"
"                       Sometimes on very slow modem connections, this actually\n"
"                       gives an improvement because no pixel data at all\n"
"                       (not even the box animation) is sent during the drag.\n"
"\n"
"-ncache_no_moveraise   In -ncache mode, do not assume that moving a window\n"
"                       will cause the window manager to raise it to the top\n"
"                       of the stack.  The default is to assume it does, and\n"
"                       so at the beginning of any wireframe, etc, window moves\n"
"                       the window will be pushed to top in the VNC viewer.\n"
"\n"
"-ncache_no_dtchange    In -ncache mode, do not try to guess when the desktop\n"
"                       (viewport) changes to another one (i.e. another\n"
"                       workarea).  The default is to try to guess and when\n"
"                       detected try to make the transistion more smoothly.\n"
"\n"
"-ncache_no_rootpixmap  In -ncache mode, do not try to snapshot the desktop\n"
"                       background to use in guessing or reconstructing window\n"
"                       save-unders.\n"
"\n"
"-ncache_keep_anims     In -ncache mode, do not try to disable window\n"
"                       manager animations and other effects (that usually\n"
"                       degrade ncache performance or cause painting errors).\n"
"                       The default is to try to disable them on KDE (but not\n"
"                       GNOME) when VNC clients are connected.\n"
"\n"
"                       For other window managers or desktops that provide\n"
"                       animations, effects, compositing, translucency,\n"
"                       etc. that interfere with the -ncache method you will\n"
"                       have to disable them manually.\n"
"\n"
"-ncache_old_wm         In -ncache mode, enable some heuristics for old style\n"
"                       window managers such as fvwm and twm.\n"
"\n"
"-ncache_pad n          In -ncache mode, pad each window with n pixels for the\n"
"                       caching rectangles.  This can be used to try to improve\n"
"                       the situation with dropshadows or other compositing\n"
"                       (e.g. MacOS X window manager), although it could make\n"
"                       things worse.  The default is 0 on Unix and 24 on\n"
"                       MacOS X.\n"
"-debug_ncache          Turn on debugging and profiling output under -ncache.\n"
"\n"
#endif
"-wireframe [str]       Try to detect window moves or resizes when a mouse\n"
"-nowireframe           button is held down and show a wireframe instead of\n"
"                       the full opaque window.  This is based completely on\n"
"                       heuristics and may not always work: it depends on your\n"
"                       window manager and even how you move things around.\n"
"                       See -pointer_mode below for discussion of the \"bogging\n"
"                       down\" problem this tries to avoid.\n"
"                       Default: %s\n"
"\n"
"                       Shorter aliases:  -wf [str]  and -nowf\n"
"\n"
"                       The value \"str\" is optional and, of course, is\n"
"                       packed with many tunable parameters for this scheme:\n"
"\n"
"                       Format: shade,linewidth,percent,T+B+L+R,mod,t1+t2+t3+t4\n"
"                       Default: %s\n"
"\n"
"                       If you leave nothing between commas: \",,\" the default\n"
"                       value is used.  If you don't specify enough commas,\n"
"                       the trailing parameters are set to their defaults.\n"
"\n"
"                       \"shade\" indicate the \"color\" for the wireframe,\n"
"                       usually a greyscale: 0-255, however for 16 and 32bpp you\n"
"                       can specify an rgb.txt X color (e.g. \"dodgerblue\") or\n"
"                       a value > 255 is treated as RGB (e.g. red is 0xff0000).\n"
"                       \"linewidth\" sets the width of the wireframe in pixels.\n"
"                       \"percent\" indicates to not apply the wireframe scheme\n"
"                       to windows with area less than this percent of the\n"
"                       full screen.\n"
"\n"
"                       \"T+B+L+R\" indicates four integers for how close in\n"
"                       pixels the pointer has to be from the Top, Bottom, Left,\n"
"                       or Right edges of the window to consider wireframing.\n"
"                       This is a speedup to quickly exclude a window from being\n"
"                       wireframed: set them all to zero to not try the speedup\n"
"                       (scrolling and selecting text will likely be slower).\n"
"\n"
"                       \"mod\" specifies if a button down event in the\n"
"                       interior of the window with a modifier key (Alt, Shift,\n"
"                       etc.) down should indicate a wireframe opportunity.\n"
"                       It can be \"0\" or \"none\" to skip it, \"1\" or \"all\"\n"
"                       to apply it to any modifier, or \"Shift\", \"Alt\",\n"
"                       \"Control\", \"Meta\", \"Super\", or \"Hyper\" to only\n"
"                       apply for that type of modifier key.\n"
"\n"
"                       \"t1+t2+t3+t4\" specify four floating point times in\n"
"                       seconds: t1 is how long to wait for the pointer to move,\n"
"                       t2 is how long to wait for the window to start moving\n"
"                       or being resized (for some window managers this can be\n"
"                       rather long), t3 is how long to keep a wireframe moving\n"
"                       before repainting the window. t4 is the minimum time\n"
"                       between sending wireframe \"animations\".  If a slow\n"
"                       link is detected, these values may be automatically\n"
"                       changed to something better for a slow link.\n"
"\n"
"-nowireframelocal      By default, mouse motion and button presses of a\n"
"                       user sitting at the LOCAL display are monitored for\n"
"                       wireframing opportunities (so that the changes will be\n"
"                       sent efficiently to the VNC clients).  Use this option\n"
"                       to disable this behavior.\n"
"\n"
"-wirecopyrect mode     Since the -wireframe mechanism evidently tracks moving\n"
"-nowirecopyrect        windows accurately, a speedup can be obtained by\n"
"                       telling the VNC viewers to locally copy the translated\n"
"                       window region.  This is the VNC CopyRect encoding:\n"
"                       the framebuffer update doesn't need to send the actual\n"
"                       new image data.\n"
"\n"
"                       Shorter aliases:  -wcr [mode]  and -nowcr\n"
"\n"
"                       \"mode\" can be \"never\" (same as -nowirecopyrect)\n"
"                       to never try the copyrect, \"top\" means only do it if\n"
"                       the window was not covered by any other windows, and\n"
"                       \"always\" means to translate the orginally unobscured\n"
"                       region (this may look odd as the remaining pieces come\n"
"                       in, but helps on a slow link).  Default: \"%s\"\n"
"\n"
"                       Note: there can be painting errors or slow response\n"
"                       when using -scale so you may want to disable CopyRect\n"
"                       in this case \"-wirecopyrect never\" on the command\n"
"                       line or by remote-control.  Or you can also use the\n"
"                       \"-scale xxx:nocr\" scale option.\n"
"\n"
"-debug_wireframe       Turn on debugging info printout for the wireframe\n"
"                       heuristics.  \"-dwf\" is an alias.  Specify multiple\n"
"                       times for more output.\n"
"\n"
"-scrollcopyrect mode   Like -wirecopyrect, but use heuristics to try to guess\n"
"-noscrollcopyrect      if a window has scrolled its contents (either vertically\n"
"                       or horizontally).  This requires the RECORD X extension\n"
"                       to \"snoop\" on X applications (currently for certain\n"
"                       XCopyArea and XConfigureWindow X protocol requests).\n"
"                       Examples: Hitting <Return> in a terminal window when the\n"
"                       cursor was at the bottom, the text scrolls up one line.\n"
"                       Hitting <Down> arrow in a web browser window, the web\n"
"                       page scrolls up a small amount.  Or scrolling with a\n"
"                       scrollbar or mouse wheel.\n"
"\n"
"                       Shorter aliases:  -scr [mode]  and -noscr\n"
"\n"
"                       This scheme will not always detect scrolls, but when\n"
"                       it does there is a nice speedup from using the VNC\n"
"                       CopyRect encoding (see -wirecopyrect).  The speedup\n"
"                       is both in reduced network traffic and reduced X\n"
"                       framebuffer polling/copying.  On the other hand, it may\n"
"                       induce undesired transients (e.g. a terminal cursor\n"
"                       being scrolled up when it should not be) or other\n"
"                       painting errors (window tearing, bunching-up, etc).\n"
"                       These are automatically repaired in a short period\n"
"                       of time.  If this is unacceptable disable the feature\n"
"                       with -noscrollcopyrect.\n"
"\n"
"                       Screen clearing kludges:  for testing at least, there\n"
"                       are some \"magic key sequences\" (must be done in less\n"
"                       than 1 second) to aid repairing painting errors that\n"
"                       may be seen when using this mode:\n"
"\n"
"                       3 Alt_L's   in a row: resend whole screen,\n"
"                       4 Alt_L's   in a row: reread and resend whole screen,\n"
"                       3 Super_L's in a row: mark whole screen for polling,\n"
"                       4 Super_L's in a row: reset RECORD context,\n"
"                       5 Super_L's in a row: try to push a black screen\n"
"\n"
"                       note: Alt_L is the Left \"Alt\" key (a single key)\n"
"                       Super_L is the Left \"Super\" key (Windows flag).\n"
"                       Both of these are modifier keys, and so should not\n"
"                       generate characters when pressed by themselves.  Also,\n"
"                       your VNC viewer may have its own refresh hot-key\n"
"                       or button.\n"
"\n"
"                       \"mode\" can be \"never\" (same as -noscrollcopyrect)\n"
"                       to never try the copyrect, \"keys\" means to try it\n"
"                       in response to keystrokes only, \"mouse\" means to\n"
"                       try it in response to mouse events only, \"always\"\n"
"                       means to do both. Default: \"%s\"\n"
"\n"
"                       Note: there can be painting errors or slow response\n"
"                       when using -scale so you may want to disable CopyRect\n"
"                       in this case \"-scrollcopyrect never\" on the command\n"
"                       line or by remote-control.  Or you can also use the\n"
"                       \"-scale xxx:nocr\" scale option.\n"
"\n"
"-scr_area n            Set the minimum area in pixels for a rectangle\n"
"                       to be considered for the -scrollcopyrect detection\n"
"                       scheme.  This is to avoid wasting the effort on small\n"
"                       rectangles that would be quickly updated the normal way.\n"
"                       E.g. suppose an app updated the position of its skinny\n"
"                       scrollbar first and then shifted the large panel\n"
"                       it controlled.  We want to be sure to skip the small\n"
"                       scrollbar and get the large panel. Default: %d\n"
"\n"
"-scr_skip list         Skip scroll detection for applications matching\n"
"                       the comma separated list of strings in \"list\".\n"
"                       Some applications implement their scrolling in\n"
"                       strange ways where the XCopyArea, etc, also applies\n"
"                       to invisible portions of the window: if we CopyRect\n"
"                       those areas it looks awful during the scroll and\n"
"                       there may be painting errors left after the scroll.\n"
"                       Soffice.bin is the worst known offender.\n"
"\n"
"                       Use \"##\" to denote the start of the application class\n"
"                       (e.g. \"##XTerm\") and \"++\" to denote the start\n"
"                       of the application instance name (e.g. \"++xterm\").\n"
"                       The string your list is matched against is of the form\n"
"                       \"^^WM_NAME##Class++Instance<same-for-any-subwindows>\"\n"
"                       The \"xlsclients -la\" command will provide this info.\n"
"\n"
"                       If a pattern is prefixed with \"KEY:\" it only applies\n"
"                       to Keystroke generated scrolls (e.g. Up arrow).  If it\n"
"                       is prefixed with \"MOUSE:\" it only applies to Mouse\n"
"                       induced scrolls (e.g. dragging on a scrollbar).\n"
"                       Default: %s\n"
"\n"
"-scr_inc list          Opposite of -scr_skip: this list is consulted first\n"
"                       and if there is a match the window will be monitored\n"
"                       via RECORD for scrolls irrespective of -scr_skip.\n"
"                       Use -scr_skip '*' to skip anything that does not match\n"
"                       your -scr_inc.  Use -scr_inc '*' to include everything.\n"
"\n"
"-scr_keys list         For keystroke scroll detection, only apply the RECORD\n"
"                       heuristics to the comma separated list of keysyms in\n"
"                       \"list\".  You may find the RECORD overhead for every\n"
"                       one of your keystrokes disrupts typing too much, but you\n"
"                       don't want to turn it off completely with \"-scr mouse\"\n"
"                       and -scr_parms does not work or is too confusing.\n"
"\n"
"                       The listed keysyms can be numeric or the keysym\n"
"                       names in the <X11/keysymdef.h> header file or from the\n"
"                       xev(1) program.  Example: \"-scr_keys Up,Down,Return\".\n"
"                       One probably wants to have application specific lists\n"
"                       (e.g. for terminals, etc) but that is too icky to think\n"
"                       about for now...\n"
"\n"
"                       If \"list\" begins with the \"-\" character the list\n"
"                       is taken as an exclude list: all keysyms except those\n"
"                       list will be considered.  The special string \"builtin\"\n"
"                       expands to an internal list of keysyms that are likely\n"
"                       to cause scrolls.  BTW, by default modifier keys,\n"
"                       Shift_L, Control_R, etc, are skipped since they almost\n"
"                       never induce scrolling by themselves.\n"
"\n"
"-scr_term list         Yet another cosmetic kludge.  Apply shell/terminal\n"
"                       heuristics to applications matching comma separated\n"
"                       list (same as for -scr_skip/-scr_inc).  For example an\n"
"                       annoying transient under scroll detection is if you\n"
"                       hit Enter in a terminal shell with full text window,\n"
"                       the solid text cursor block will be scrolled up.\n"
"                       So for a short time there are two (or more) block\n"
"                       cursors on the screen.  There are similar scenarios,\n"
"                       (e.g. an output line is duplicated).\n"
"\n"
"                       These transients are induced by the approximation of\n"
"                       scroll detection (e.g. it detects the scroll, but not\n"
"                       the fact that the block cursor was cleared just before\n"
"                       the scroll).  In nearly all cases these transient errors\n"
"                       are repaired when the true X framebuffer is consulted\n"
"                       by the normal polling.  But they are distracting, so\n"
"                       what this option provides is extra \"padding\" near the\n"
"                       bottom of the terminal window: a few extra lines near\n"
"                       the bottom will not be scrolled, but rather updated\n"
"                       from the actual X framebuffer.  This usually reduces\n"
"                       the annoying artifacts.  Use \"none\" to disable.\n"
"                       Default: \"%s\"\n"
"\n"
"-scr_keyrepeat lo-hi   If a key is held down (or otherwise repeats rapidly) and\n"
"                       this induces a rapid sequence of scrolls (e.g. holding\n"
"                       down an Arrow key) the \"scrollcopyrect\" detection\n"
"                       and overhead may not be able to keep up.  A time per\n"
"                       single scroll estimate is performed and if that estimate\n"
"                       predicts a sustainable scrollrate of keys per second\n"
"                       between \"lo\" and \"hi\" then repeated keys will be\n"
"                       DISCARDED to maintain the scrollrate. For example your\n"
"                       key autorepeat may be 25 keys/sec, but for a large\n"
"                       window or slow link only 8 scrolls per second can be\n"
"                       sustained, then roughly 2 out of every 3 repeated keys\n"
"                       will be discarded during this period. Default: \"%s\"\n"
"\n"
"-scr_parms string      Set various parameters for the scrollcopyrect mode.\n"
"                       The format is similar to that for -wireframe and packed\n"
"                       with lots of parameters:\n"
"\n"
"                       Format: T+B+L+R,t1+t2+t3,s1+s2+s3+s4+s5\n"
"                       Default: %s\n"
"\n"
"                       If you leave nothing between commas: \",,\" the default\n"
"                       value is used.  If you don't specify enough commas,\n"
"                       the trailing parameters are set to their defaults.\n"
"\n"
"                       \"T+B+L+R\" indicates four integers for how close in\n"
"                       pixels the pointer has to be from the Top, Bottom, Left,\n"
"                       or Right edges of the window to consider scrollcopyrect.\n"
"                       If -wireframe overlaps it takes precedence.  This is a\n"
"                       speedup to quickly exclude a window from being watched\n"
"                       for scrollcopyrect: set them all to zero to not try\n"
"                       the speedup (things like selecting text will likely\n"
"                       be slower).\n"
"\n"
"                       \"t1+t2+t3\" specify three floating point times in\n"
"                       seconds that apply to scrollcopyrect detection with\n"
"                       *Keystroke* input: t1 is how long to wait after a key\n"
"                       is pressed for the first scroll, t2 is how long to keep\n"
"                       looking after a Keystroke scroll for more scrolls.\n"
"                       t3 is how frequently to try to update surrounding\n"
"                       scrollbars outside of the scrolling area (0.0 to\n"
"                       disable)\n"
"\n"
"                       \"s1+s2+s3+s4+s5\" specify five floating point times\n"
"                       in seconds that apply to scrollcopyrect detection with\n"
"                       *Mouse* input: s1 is how long to wait after a mouse\n"
"                       button is pressed for the first scroll, s2 is how long\n"
"                       to keep waiting for additional scrolls after the first\n"
"                       Mouse scroll was detected.  s3 is how frequently to\n"
"                       try to update surrounding scrollbars outside of the\n"
"                       scrolling area (0.0 to disable).  s4 is how long to\n"
"                       buffer pointer motion (to try to get fewer, bigger\n"
"                       mouse scrolls). s5 is the maximum time to spend just\n"
"                       updating the scroll window without updating the rest\n"
"                       of the screen.\n"
"\n"
"-fixscreen string      Periodically \"repair\" the screen based on settings\n"
"                       in \"string\".  Hopefully you won't need this option,\n"
"                       it is intended for cases when the -scrollcopyrect or\n"
"                       -wirecopyrect features leave too many painting errors,\n"
"                       but it can be used for any scenario.  This option\n"
"                       periodically performs costly operations and so\n"
"                       interactive response may be reduced when it is on.\n"
"                       You can use 3 Alt_L's (the Left \"Alt\" key) taps in\n"
"                       a row (as described under -scrollcopyrect) instead to\n"
"                       manually request a screen repaint when it is needed.\n"
"\n"
"                       \"string\" is a comma separated list of one or more of\n"
"                       the following: \"V=t\", \"C=t\", \"X=t\", and \"8=t\".\n"
"                       In these \"t\" stands for a time in seconds (it is\n"
"                       a floating point even though one should usually use\n"
"                       values > 2 to avoid wasting resources).  V sets how\n"
"                       frequently the entire screen should be sent to viewers\n"
"                       (it is like the 3 Alt_L's).  C sets how long to wait\n"
"                       after a CopyRect to repaint the full screen.  X sets\n"
"                       how frequently to reread the full X11 framebuffer from\n"
"                       the X server and push it out to connected viewers.\n"
"                       Use of X should be rare, please report a bug if you\n"
"                       find you need it. 8= applies only for -8to24 mode: it\n"
"                       sets how often the non-default visual regions of the\n"
"                       screen (e.g. 8bpp windows) are refreshed.  Examples:\n"
"                       -fixscreen V=10 -fixscreen C=10\n"
"\n"
"-debug_scroll          Turn on debugging info printout for the scroll\n"
"                       heuristics.  \"-ds\" is an alias.  Specify it multiple\n"
"                       times for more output.\n"
"\n"
"-noxrecord             Disable any use of the RECORD extension.  This is\n"
"                       currently used by the -scrollcopyrect scheme and to\n"
"                       monitor X server grabs.\n"
"\n"
"-grab_buster           Some of the use of the RECORD extension can leave a\n"
"-nograb_buster         tiny window for XGrabServer deadlock.  This is only if\n"
"                       the whole-server grabbing application expects mouse or\n"
"                       keyboard input before releasing the grab.  It is usually\n"
"                       a window manager that does this.  x11vnc takes care to\n"
"                       avoid the problem, but if caught x11vnc will freeze.\n"
"                       Without -grab_buster, the only solution is to go the\n"
"                       physical display and give it some input to satisfy the\n"
"                       grabbing app.  Or manually kill and restart the window\n"
"                       manager if that is feasible.  With -grab_buster, x11vnc\n"
"                       will fork a helper thread and if x11vnc appears to be\n"
"                       stuck in a grab after a period of time (20-30 sec) then\n"
"                       it will inject some user input: button clicks, Escape,\n"
"                       mouse motion, etc to try to break the grab.  If you\n"
"                       experience a lot of grab deadlock, please report a bug.\n"
"\n"
"-debug_grabs           Turn on debugging info printout with respect to\n"
"                       XGrabServer() deadlock for -scrollcopyrect mode.\n"
"\n"
"-debug_sel             Turn on debugging info printout with respect to\n"
"                       PRIMARY, CLIPBOARD, and CUTBUFFER0 selections.\n"
"\n"
"-pointer_mode n        Various pointer motion update schemes. \"-pm\" is\n"
"                       an alias.  The problem is pointer motion can cause\n"
"                       rapid changes on the screen: consider the rapid\n"
"                       changes when you drag a large window around opaquely.\n"
"                       Neither x11vnc's screen polling and vnc compression\n"
"                       routines nor the bandwidth to the vncviewers can keep\n"
"                       up these rapid screen changes: everything will bog down\n"
"                       when dragging or scrolling.  So a scheme has to be used\n"
"                       to \"eat\" much of that pointer input before re-polling\n"
"                       the screen and sending out framebuffer updates. The\n"
"                       mode number \"n\" can be 0 to %d and selects one of\n"
"                       the schemes desribed below.\n"
"\n"
"                       Note that the -wireframe and -scrollcopyrect modes\n"
"                       complement -pointer_mode by detecting (and improving)\n"
"                       certain periods of \"rapid screen change\".\n"
"\n"
"                       n=0: does the same as -nodragging. (all screen polling\n"
"                       is suspended if a mouse button is pressed.)\n"
"\n"
"                       n=1: was the original scheme used to about Jan 2004:\n"
"                       it basically just skips -input_skip keyboard or pointer\n"
"                       events before repolling the screen.\n"
"\n"
"                       n=2 is an improved scheme: by watching the current rate\n"
"                       of input events it tries to detect if it should try to\n"
"                       \"eat\" additional pointer events before continuing.\n"
"\n"
"                       n=3 is basically a dynamic -nodragging mode: it detects\n"
"                       when the mouse motion has paused and then refreshes\n"
"                       the display.\n"
"\n"
"                       n=4 attempts to measures network rates and latency,\n"
"                       the video card read rate, and how many tiles have been\n"
"                       changed on the screen.  From this, it aggressively tries\n"
"                       to push screen \"frames\" when it decides it has enough\n"
"                       resources to do so.  NOT FINISHED.\n"
"\n"
"                       The default n is %d. Note that modes 2, 3, 4 will skip\n"
"                       -input_skip keyboard events (but it will not count\n"
"                       pointer events).  Also note that these modes are not\n"
"                       available in -threads mode which has its own pointer\n"
"                       event handling mechanism.\n"
"\n"
"                       To try out the different pointer modes to see which\n"
"                       one gives the best response for your usage, it is\n"
"                       convenient to use the remote control function, for\n"
"                       example \"x11vnc -R pm:4\" or the tcl/tk gui (Tuning ->\n"
"                       pointer_mode -> n).\n"
"\n"
"-input_skip n          For the pointer handling when non-threaded: try to\n"
"                       read n user input events before scanning display. n < 0\n"
"                       means to act as though there is always user input.\n"
"                       Default: %d\n"
"\n"
"-allinput              Have x11vnc read and process all available client input\n"
"                       before proceeding.\n"
"\n"
"-input_eagerly         Similar to -allinput but use the handleEventsEagerly\n"
"                       mechanism built into LibVNCServer.\n"
"\n"
"-speeds rd,bw,lat      x11vnc tries to estimate some speed parameters that\n"
"                       are used to optimize scheduling (e.g. -pointer_mode\n"
"                       4, -wireframe, -scrollcopyrect) and other things.\n"
"                       Use the -speeds option to set these manually.\n"
"                       The triple \"rd,bw,lat\" corresponds to video h/w\n"
"                       read rate in MB/sec, network bandwidth to clients in\n"
"                       KB/sec, and network latency to clients in milliseconds,\n"
"                       respectively.  If a value is left blank, e.g. \"-speeds\n"
"                       ,100,15\", then the internal scheme is used to estimate\n"
"                       the empty value(s).\n"
"\n"
"                       Typical PC video cards have read rates of 5-10 MB/sec.\n"
"                       If the framebuffer is in main memory instead of video\n"
"                       h/w (e.g. SunRay, shadowfb, dummy driver, Xvfb), the\n"
"                       read rate may be much faster.  \"x11perf -getimage500\"\n"
"                       can be used to get a lower bound (remember to factor\n"
"                       in the bytes per pixel).  It is up to you to estimate\n"
"                       the network bandwith and latency to clients.  For the\n"
"                       latency the ping(1) command can be used.\n"
"\n"
"                       For convenience there are some aliases provided,\n"
"                       e.g. \"-speeds modem\".  The aliases are: \"modem\" for\n"
"                       6,4,200; \"dsl\" for 6,100,50; and \"lan\" for 6,5000,1\n"
"\n"
"-wmdt string           For some features, e.g. -wireframe and -scrollcopyrect,\n"
"                       x11vnc has to work around issues for certain window\n"
"                       managers or desktops (currently kde and xfce).\n"
"                       By default it tries to guess which one, but it can\n"
"                       guess incorrectly.  Use this option to indicate which\n"
"                       wm/dt.  \"string\" can be \"gnome\", \"kde\", \"cde\",\n"
"                       \"xfce\", or \"root\" (classic X wm).  Anything else\n"
"                       is interpreted as \"root\".\n"
"\n"
"-debug_pointer         Print debugging output for every pointer event.\n"
"-debug_keyboard        Print debugging output for every keyboard event.\n"
"                       Same as -dp and -dk, respectively.  Use multiple\n"
"                       times for more output.\n"
"\n"
"-defer time            Time in ms to delay sending updates to connected clients\n"
"                       (deferUpdateTime)  Default: %d\n"
"\n"
"-wait time             Time in ms to pause between screen polls.  Used to cut\n"
"                       down on load.  Default: %d\n"
"\n"
"-extra_fbur n          Perform extra FrameBufferUpdateRequests checks to\n"
"                       try to be in better sync with the client's requests.\n"
"                       What this does is perform extra polls of the client\n"
"                       socket at critical times (before '-defer' and '-wait'\n"
"                       calls.)  The default is n=1.  Set to a larger number to\n"
"                       insert more checks or set to n=0 to disable.  A downside\n"
"                       of these extra calls is that more mouse input may be\n"
"                       processed than desired.\n"
"\n"
"-wait_ui factor        Factor by which to cut the -wait time if there\n"
"                       has been recent user input (pointer or keyboard).\n"
"                       Improves response, but increases the load whenever you\n"
"                       are moving the mouse or typing.  Default: %.2f\n"
"-setdefer n            When the -wait_ui mechanism cuts down the wait time ms,\n"
"                       set the defer time to the same ms value. n=1 to enable,\n"
"                       0 to disable, and -1 to set defer to 0 (no delay).\n"
"                       Similarly, 2 and -2 indicate 'urgent_update' mode should\n"
"                       be used to push the updates even sooner.  Default: 1\n"
"-nowait_bog            Do not detect if the screen polling is \"bogging down\"\n"
"                       and sleep more.  Some activities with no user input can\n"
"                       slow things down a lot: consider a large terminal window\n"
"                       with a long build running in it continuously streaming\n"
"                       text output.  By default x11vnc will try to detect this\n"
"                       (3 screen polls in a row each longer than 0.25 sec with\n"
"                       no user input), and sleep up to 1.5 secs to let things\n"
"                       \"catch up\".  Use this option to disable that detection.\n"
"-slow_fb time          Floating point time in seconds to delay all screen\n"
"                       polling.  For special purpose usage where a low frame\n"
"                       rate is acceptable and desirable, but you want the\n"
"                       user input processed at the normal rate so you cannot\n"
"                       use -wait.\n"
"-xrefresh time         Floating point time in seconds to indicate how often to\n"
"                       do the equivalent of xrefresh(1) to force all windows\n"
"                       (in the viewable area if -id, -sid, or -clip is used)\n"
"                       to repaint themselves.  Use this only if applications\n"
"                       misbehave by not repainting themselves properly.\n"
"                       See also -noxdamage.\n"
"-nap                   Monitor activity and if it is low take longer naps\n"
"-nonap                 between screen polls to really cut down load when idle.\n"
"                       Default: %s\n"
"-sb time               Time in seconds after NO activity (e.g. screen blank)\n"
"                       to really throttle down the screen polls (i.e. sleep\n"
"                       for about 1.5 secs). Use 0 to disable.  Default: %d\n"
"                       Set the env. var. X11VNC_SB_FACTOR to scale it.\n"
"\n"
"-readtimeout n         Set LibVNCServer rfbMaxClientWait to n seconds. On\n"
"                       slow links that take a long time to paint the first\n"
"                       screen LibVNCServer may hit the timeout and drop the\n"
"                       connection.  Default: %d seconds.\n"
"-ping n                Send a 1x1 framebuffer update to all clients every n\n"
"                       seconds (e.g. to try to keep a network connection alive)\n"
"\n"
"-nofbpm                If the system supports the FBPM (Frame Buffer Power\n"
"-fbpm                  Management) extension (i.e. some Sun systems), then\n"
"                       prevent the video h/w from going into a reduced power\n"
"                       state when VNC clients are connected.\n"
"\n"
"                       FBPM capable video h/w save energy when the workstation\n"
"                       is idle by going into low power states (similar to DPMS\n"
"                       for monitors).  This interferes with x11vnc's polling\n"
"                       of the framebuffer data.\n"
"\n"
"                       \"-nofbpm\" means prevent FBPM low power states whenever\n"
"                       VNC clients are connected, while \"-fbpm\" means to not\n"
"                       monitor the FBPM state at all.  See the xset(1) manpage\n"
"                       for details.  -nofbpm is basically the same as running\n"
"                       \"xset fbpm force on\" periodically.  Default: %s\n"
"\n"
"-nodpms                If the system supports the DPMS (Display Power Management\n"
"-dpms                  Signaling) extension, then prevent the monitor from\n"
"                       going into a reduced power state when VNC clients\n"
"                       are connected.\n"
"\n"
"                       DPMS reduced power monitor states are a good thing\n"
"                       and you normally want the power down to take place\n"
"                       (usually x11vnc has no problem exporting the display in\n"
"                       this state).  You probably only want to use \"-nodpms\"\n"
"                       to work around problems with Screen Savers kicking\n"
"                       on in DPMS low power states.  There is known problem\n"
"                       with kdesktop_lock on KDE where the screen saver keeps\n"
"                       kicking in every time user input stops for a second\n"
"                       or two.  Specifying \"-nodpms\" works around it.\n"
"\n"
"                       \"-nodpms\" means prevent DPMS low power states whenever\n"
"                       VNC clients are connected, while \"-dpms\" means to not\n"
"                       monitor the DPMS state at all.  See the xset(1) manpage\n"
"                       for details.  -nodpms is basically the same as running\n"
"                       \"xset dpms force on\" periodically.  Default: %s\n"
"\n"
"-forcedpms             If the system supports the DPMS (Display Power\n"
"                       Management Signaling) extension, then try to keep the\n"
"                       monitor in a powered off state.  This is to prevent\n"
"                       nosey people at the physical display from viewing what\n"
"                       is on the screen.  Be sure to lock the screen before\n"
"                       disconnecting.\n"
"\n"
"                       This method is far from bullet proof, e.g. suppose\n"
"                       someone attaches a non-DPMS monitor, or loads the\n"
"                       machine so that there is a gap of time before x11vnc\n"
"                       restores the powered off state?  On many machines if\n"
"                       he floods it with keyboard and mouse input he can see\n"
"                       flashes of what is on the screen before the DPMS off\n"
"                       state is reestablished.  For this to work securely\n"
"                       there would need to be support in the X server to do\n"
"                       this exactly rather than approximately with DPMS.\n"
"\n"
"-clientdpms            As -forcedpms but only when VNC clients are connected.\n"
"\n"
"-noserverdpms          The UltraVNC ServerInput extension is supported.\n"
"                       This allows the VNC viewer to click a button that will\n"
"                       cause the server (x11vnc) to try to disable keyboard\n"
"                       and mouse input at the physical display and put the\n"
"                       monitor in dpms powered off state.  Use this option to\n"
"                       skip powering off the monitor.\n"
"\n"
"-noultraext            Disable the following UltraVNC extensions: SingleWindow\n"
"                       and ServerInput.  The others managed by LibVNCServer\n"
"                       (textchat, 1/n scaling, rfbEncodingUltra) are not.\n"
"\n"
"-chatwindow            Place a local UltraVNC chat window on the X11 display\n"
"                       that x11vnc is polling.  That way the person on the VNC\n"
"                       viewer-side can chat with the person at the physical\n"
"                       X11 console. (e.g. helpdesk w/o telephone)\n"
"\n"
"                       For this to work the SSVNC package (version 1.0.21 or\n"
"                       later) MUST BE installed on the system where x11vnc runs\n"
"                       and the 'ssvnc' command must be available in $PATH.\n"
"                       The ssvncviewer is used as a chat window helper.\n"
"                       See http://www.karlrunge.com/x11vnc/ssvnc.html\n"
"\n"
"                       This option implies '-rfbversion 3.6' so as to trick\n"
"                       UltraVNC viewers, otherwise they assume chat is not\n"
"                       available.  To specify a different rfbversion, place\n"
"                       it after the -chatwindow option on the cmdline.\n"
"\n"
"                       See also the remote control 'chaton' and 'chatoff'\n"
"                       actions.  These can also be set from the tkx11vnc GUI.\n"
"\n"
"-noxdamage             Do not use the X DAMAGE extension to detect framebuffer\n"
"                       changes even if it is available.  Use -xdamage if your\n"
"                       default is to have it off.\n"
"\n"
"                       x11vnc's use of the DAMAGE extension: 1) significantly\n"
"                       reduces the load when the screen is not changing much,\n"
"                       and 2) detects changed areas (small ones by default)\n"
"                       more quickly.\n"
"\n"
"                       Currently the DAMAGE extension is overly conservative\n"
"                       and often reports large areas (e.g. a whole terminal\n"
"                       or browser window) as damaged even though the actual\n"
"                       changed region is much smaller (sometimes just a few\n"
"                       pixels).  So heuristics were introduced to skip large\n"
"                       areas and use the damage rectangles only as \"hints\"\n"
"                       for the traditional scanline polling.  The following\n"
"                       tuning parameters are introduced to adjust this\n"
"                       behavior:\n"
"\n"
"-xd_area A             Set the largest DAMAGE rectangle area \"A\" (in\n"
"                       pixels: width * height) to trust as truly damaged:\n"
"                       the rectangle will be copied from the framebuffer\n"
"                       (slow) no matter what.  Set to zero to trust *all*\n"
"                       rectangles. Default: %d\n"
"-xd_mem f              Set how long DAMAGE rectangles should be \"remembered\",\n"
"                       \"f\" is a floating point number and is in units of the\n"
"                       scanline repeat cycle time (%d iterations).  The default\n"
"                       (%.1f) should give no painting problems. Increase it if\n"
"                       there are problems or decrease it to live on the edge\n"
"                       (perhaps useful on a slow machine).\n"
"\n"
"-sigpipe string        Broken pipe (SIGPIPE) handling.  \"string\" can be\n"
"                       \"ignore\" or \"exit\".  For \"ignore\" LibVNCServer\n"
"                       will handle the abrupt loss of a client and continue,\n"
"                       for \"exit\" x11vnc will cleanup and exit at the 1st\n"
"                       broken connection.\n"
"\n"
"                       This option is not really needed since LibVNCServer\n"
"                       is doing the correct thing now for quite some time.\n"
"                       However, for convenience you can use it to ignore other\n"
"                       signals, e.g. \"-sigpipe ignore:HUP,INT,TERM\" in case\n"
"                       that would be useful for some sort of application.\n"
"                       You can also put \"exit:..\" in the list to have x11vnc\n"
"                       cleanup on the listed signals. \"-sig\" is an alias\n"
"                       for this option if you don't like the 'pipe'. Example:\n"
"                       -sig ignore:INT,TERM,exit:USR1\n"
"\n"
"-threads               Whether or not to use the threaded LibVNCServer\n"
"-nothreads             algorithm [rfbRunEventLoop] if libpthread is available.\n"
"                       In this mode new threads (one for input and one\n"
"                       for output) are created to handle each new client.\n"
"                       Default: %s.\n"
"\n"
"                       Thread stability is much improved in version 0.9.8.\n"
"\n"
"                       Multiple clients in threaded mode should be stable\n"
"                       for the ZRLE encoding on all platforms.  The Tight and\n"
"                       Zlib encodings are currently only stable on Linux for\n"
"                       multiple clients.  Compile with -DTLS=__thread if your\n"
"                       OS and compiler and linker support it.\n"
"\n"
"                       For resizes (randr, etc.) set this env. var. to the number\n"
"                       of milliseconds to sleep: X11VNC_THREADS_NEW_FB_SLEEP\n"
"                       at various places in the do_new_fb() action.  This is to\n"
"                       let various activities settle.  Default is about 500ms.\n"
"\n"
"                       Multiple clients in threaded mode could yield better\n"
"                       performance for 'class-room' broadcasting usage; also in\n"
"                       -appshare broadcast mode.  See also the -reflect option.\n"
"\n"
"-fs f                  If the fraction of changed tiles in a poll is greater\n"
"                       than f, the whole screen is updated.  Default: %.2f\n"
"-gaps n                Heuristic to fill in gaps in rows or cols of n or\n"
"                       less tiles.  Used to improve text paging.  Default: %d\n"
"-grow n                Heuristic to grow islands of changed tiles n or wider\n"
"                       by checking the tile near the boundary.  Default: %d\n"
"-fuzz n                Tolerance in pixels to mark a tiles edges as changed.\n"
"                       Default: %d\n"
"-debug_tiles           Print debugging output for tiles, fb updates, etc.\n"
"\n"
"-snapfb                Instead of polling the X display framebuffer (fb)\n"
"                       for changes, periodically copy all of X display fb\n"
"                       into main memory and examine that copy for changes.\n"
"                       (This setting also applies for non-X -rawfb modes).\n"
"                       Under some circumstances this will improve interactive\n"
"                       response, or at least make things look smoother, but in\n"
"                       others (most!) it will make the response worse.  If the\n"
"                       video h/w fb is such that reading small tiles is very\n"
"                       slow this mode could help.  To keep the \"framerate\"\n"
"                       up the screen size x bpp cannot be too large.  Note that\n"
"                       this mode is very wasteful of memory I/O resources\n"
"                       (it makes full screen copies even if nothing changes).\n"
"                       It may be of use in video capture-like applications,\n"
"                       webcams, or where window tearing is a problem.\n"
"\n"
"-rawfb string          Instead of polling X, poll the memory object specified\n"
"                       in \"string\".\n"
"\n"
"                       For file polling, to memory map mmap(2) a file use:\n"
"                       \"map:/path/to/a/file@WxHxB\", with framebuffer Width,\n"
"                       Height, and Bits per pixel.  \"mmap:...\" is the\n"
"                       same.\n"
"\n"
"                       If there is trouble with mmap, use \"file:/...\"\n"
"                       for slower lseek(2) based reading.\n"
"\n"
"                       Use \"snap:...\" to imply -snapfb mode and the \"file:\"\n"
"                       access (this is for unseekable devices that only provide\n"
"                       the fb all at once, e.g. a video camera provides the\n"
"                       whole frame).\n"
"\n"
"                       For shared memory segments string is of the form:\n"
"                       \"shm:N@WxHxB\" which specifies a shmid N and with\n"
"                       WxHxB as above.  See shmat(1) and ipcs(1)\n"
"\n"
"                       If you do not supply a type \"map\" is assumed if\n"
"                       the file exists (see the next paragraphs for some\n"
"                       exceptions to this.)\n"
"\n"
"                       If string is \"setup:cmd\", then the command \"cmd\"\n"
"                       is run and the first line from it is read and used\n"
"                       as \"string\".  This allows initializing the device,\n"
"                       determining WxHxB, etc. These are often done as root\n"
"                       so take care.\n"
"\n"
"                       If the string begins with \"video\", see the VIDEO4LINUX\n"
"                       discussion below where the device may be queried for\n"
"                       (and possibly set) the framebuffer parameters.\n"
"\n"
"                       If the string begins with \"console\", \"/dev/fb\",\n"
"                       \"fb\", or \"vt\", see the LINUX CONSOLE discussion\n"
"                       below where the framebuffer device is opened and\n"
"                       keystrokes (and possibly mouse events) are inserted\n"
"                       into the console.\n"
"\n"
"                       If the string begins with \"vnc\", see the VNC HOST\n"
"                       discussion below where the framebuffer is taken as that\n"
"                       of another remote VNC server.\n"
"\n"
"                       Optional suffixes are \":R/G/B\" and \"+O\" to specify\n"
"                       red, green, and blue masks (in hex) and an offset into\n"
"                       the memory object.  If the masks are not provided x11vnc\n"
"                       guesses them based on the bpp (if the colors look wrong,\n"
"                       you need to provide the masks.)\n"
"\n"
"                       Another optional suffix is the Bytes Per Line which in\n"
"                       some cases is not WxB/8.  Specify it as WxHxB-BPL\n"
"                       e.g. 800x600x16-2048.  This could be a normal width\n"
"                       1024 at 16bpp fb, but only width 800 shows up.\n"
"\n"
"                       So the full format is: mode:file@WxHxB:R/G/B+O-BPL\n"
"\n"
"                       Examples:\n"
"                           -rawfb shm:210337933@800x600x32:ff/ff00/ff0000\n"
"                           -rawfb map:/dev/fb0@1024x768x32\n"
"                           -rawfb map:/tmp/Xvfb_screen0@640x480x8+3232\n"
"                           -rawfb file:/tmp/my.pnm@250x200x24+37\n"
"                           -rawfb file:/dev/urandom@128x128x8\n"
"                           -rawfb snap:/dev/video0@320x240x24 -24to32\n"
"                           -rawfb video0\n"
"                           -rawfb video -pipeinput VID\n"
"                           -rawfb console\n"
"                           -rawfb vt2\n"
"                           -rawfb vnc:somehost:0\n"
"\n"
"                       (see ipcs(1) and fbset(1) for the first two examples)\n"
"\n"
"                       In general all user input is discarded by default (see\n"
"                       the -pipeinput option for how to use a helper program\n"
"                       to insert).  Most of the X11 (screen, keyboard, mouse)\n"
"                       options do not make sense and many will cause this\n"
"                       mode to crash, so please think twice before setting or\n"
"                       changing them in a running x11vnc.\n"
"\n"
"                       If you DO NOT want x11vnc to close the X DISPLAY in\n"
"                       rawfb mode, prepend a \"+\" e.g. +file:/dev/fb0...\n"
"                       Keeping the display open enables the default\n"
"                       remote-control channel, which could be useful.\n"
"                       Alternatively, if you specify -noviewonly, then the\n"
"                       mouse and keyboard input are STILL sent to the X\n"
"                       display, this usage should be very rare, i.e. doing\n"
"                       something strange with /dev/fb0.\n"
"\n"
"                       If the device is not \"seekable\" (e.g. webcam) try\n"
"                       reading it all at once in full snaps via the \"snap:\"\n"
"                       mode (note: this is a resource hog).  If you are using\n"
"                       file: or map: AND the device needs to be reopened for\n"
"                       *every* snapfb snapshot, set the environment variable:\n"
"                       SNAPFB_RAWFB_RESET=1 as well.\n"
"\n"
"                       If you want x11vnc to dynamically transform a 24bpp\n"
"                       rawfb to 32bpp (note that this will be slower) also\n"
"                       supply the -24to32 option.  This would be useful for,\n"
"                       say, a video camera that delivers the pixel data as\n"
"                       24bpp packed RGB.  This is the default under \"video\"\n"
"                       mode if the bpp is 24.\n"
"\n"
"                       Normally the bits per pixel, B, is 8, 16, or 32 (or\n"
"                       rarely 24), however there is also some support for\n"
"                       B < 8 (e.g. old graphics displays 4 bpp or 1 bpp).\n"
"                       In this case you certainly must supply the masks as\n"
"                       well: WxHxB:R/G/B.  The pixels will be padded out to\n"
"                       8 bpp using depth 8 truecolor.  The scheme currently\n"
"                       does not work with snap fb (ask if interested.) B=1\n"
"                       monochrome example: file:/dev/urandom@128x128x1:1/1/1\n"
"                       Some other like this are 128x128x2:3/3/3 128x128x4:7/7/7\n"
"\n"
"                       For B < 8 framebuffers you can also set the env. var\n"
"                       RAWFB_CGA=1 to try a CGA mapping for B=4 (e.g. linux\n"
"                       vga16fb driver.)  Note with low bpp and/or resolution\n"
"                       VGA and VGA16 modes on the Linux console one's attempt\n"
"                       to export them via x11vnc can often be thwarted due to\n"
"                       special color palettes, pixel packings, and even video\n"
"                       painting buffering.  OTOH, often experimenting with the\n"
"                       RGB masks can yield something recognizable.\n"
"\n"
"                       VIDEO4LINUX: on Linux some attempt is made to handle\n"
"                       video devices (webcams or TV tuners) automatically.\n"
"                       The idea is the WxHxB will be extracted from the\n"
"                       device itself.  So if you do not supply \"@WxHxB...\n"
"                       parameters x11vnc will try to determine them.  It first\n"
"                       tries the v4l API if that support has been compiled in.\n"
"                       Otherwise it will run the v4l-info(1) external program\n"
"                       if it is available.\n"
"\n"
"                       The simplest examples are \"-rawfb video\" and \"-rawfb\n"
"                       video1\" which imply the device file /dev/video and\n"
"                       /dev/video1, respectively.  You can also supply the\n"
"                       /dev if you like, e.g. \"-rawfb /dev/video0\"\n"
"\n"
"                       Since the video capture device framebuffer usually\n"
"                       changes continuously (e.g. brightness fluctuations),\n"
"                       you may want to use the -wait, -slow_fb, or -defer\n"
"                       options to lower the \"framerate\" to cut down on\n"
"                       network VNC traffic.\n"
"\n"
"                       A more sophisticated video device scheme allows\n"
"                       initializing the device's settings using:\n"
"\n"
"                           -rawfb video:<settings>\n"
"\n"
"                       The prefix could also be, as above, e.g. \"video1:\" to\n"
"                       specify the device file.  The v4l API must be available\n"
"                       for this to work.  Otherwise, you will need to try\n"
"                       to initialize the device with an external program,\n"
"                       e.g. xawtv, spcaview, and hope they persist when x11vnc\n"
"                       re-opens the device.\n"
"\n"
"                       <settings> is a comma separated list of key=value pairs.\n"
"                       The device's brightness, color, contrast, and hue can\n"
"                       be set to percentages, e.g. br=80,co=50,cn=44,hu=60.\n"
"\n"
"                       The device filename can be set too if needed (if it\n"
"                       does not start with \"video\"), e.g. fn=/dev/qcam.\n"
"\n"
"                       The width, height and bpp of the framebuffer can be\n"
"                       set via, e.g., w=160,h=120,bpp=16.\n"
"\n"
"                       Related to the bpp above, the pixel format can be set\n"
"                       via the fmt=XXX, where XXX can be one of: GREY, HI240,\n"
"                       RGB555, RGB565, RGB24, and RGB32 (with bpp 8, 8, 16, 16,\n"
"                       24, and 32 respectively).  See http://www.linuxtv.org\n"
"                       for more info (V4L api).\n"
"\n"
"                       For TV/rf tuner cards one can set the tuning mode\n"
"                       via tun=XXX where XXX can be one of PAL, NTSC, SECAM,\n"
"                       or AUTO.\n"
"\n"
"                       One can switch the input channel by the inp=XXX setting,\n"
"                       where XXX is the name of the input channel (Television,\n"
"                       Composite1, S-Video, etc).  Use the name that is in the\n"
"                       information about the device that is printed at startup.\n"
"\n"
"                       For input channels with tuners (e.g. Television) one\n"
"                       can change which station is selected by the sta=XXX\n"
"                       setting.  XXX is the station number.  Currently only\n"
"                       the ntsc-cable-us (US cable) channels are built into\n"
"                       x11vnc.  See the -freqtab option below to supply one\n"
"                       from xawtv. If XXX is greater than 500, then it is\n"
"                       interpreted as a raw frequency in KHz.\n"
"\n"
"                       Example:\n"
"\n"
"                       -rawfb video:br=80,w=320,h=240,fmt=RGB32,tun=NTSC,sta=47\n"
"\n"
"                       one might need to add inp=Television too for the input\n"
"                       channel to be TV if the card doesn't come up by default\n"
"                       in that one.\n"
"\n"
"                       Note that not all video capture devices will support\n"
"                       all of the above settings.\n"
"\n"
"                       See the -pipeinput VID option below for a way to control\n"
"                       the settings through the VNC Viewer via keystrokes.\n"
"                       As a shortcut, if the string begins \"Video..\" instead\n"
"                       of \"video..\" then -pipeinput VID is implied.\n"
"\n"
"                       As above, if you specify a \"@WxHxB...\" after the\n"
"                       <settings> string they are used verbatim: the device\n"
"                       is not queried for the current values.  Otherwise the\n"
"                       device will be queried.\n"
"\n"
"                       LINUX CONSOLE:  The following describes some ways to\n"
"                       view and possibly interact with the Linux text/graphics\n"
"                       console (i.e. not X11 XFree86/Xorg)\n"
"\n"
"                       Note: If the LibVNCServer LinuxVNC program is on your\n"
"                       system you may want to use that instead of the following\n"
"                       method because it will be faster and more accurate\n"
"                       for the Linux text console and includes mouse support.\n"
"                       There is, however, the basic LinuxVNC functionality in\n"
"                       x11vnc if you replace \"console\" with \"vt\" in the\n"
"                       examples below.\n"
"\n"
"                       If the rawfb string begins with \"console\" the\n"
"                       framebuffer device /dev/fb0 is opened and /dev/tty0 is\n"
"                       opened too.  The latter is used to inject keystrokes\n"
"                       (not all are supported, but the basic ones are).\n"
"                       You will need to be root to inject keystrokes, but\n"
"                       not necessarily to open /dev/fb0.  /dev/tty0 refers to\n"
"                       the active VT, to indicate one explicitly, use, e.g.,\n"
"                       \"console2\" for /dev/tty2, etc. by indicating the\n"
"                       specific VT number.\n"
"\n"
"                       For the Linux framebuffer device, /dev/fb0, (fb1,\n"
"                       etc) to be enabled the appropriate kernel drivers must\n"
"                       be loaded.  E.g. vesafb or vga16fb and also by setting\n"
"                       the boot parameter vga=0x301 (or 0x314, 0x317, etc.)\n"
"                       (The vga=... method is the preferred way; set your\n"
"                       machines up that way.)  Otherwise there will be a\n"
"                       'No such device' error.  You can also load a Linux\n"
"                       framebuffer driver specific to your make of video card\n"
"                       for more functionality.  Once the machine is booted one\n"
"                       can often 'modprobe' the fb driver as root to obtain\n"
"                       a framebuffer device.\n"
"\n"
"                       If you cannot get /dev/fb0 working on Linux, try\n"
"                       using the LinuxVNC emulation mode by \"-rawfb vtN\"\n"
"                       where N = 1, ... 6 is the Linux Virtual Terminal (aka\n"
"                       virtual console) you wish to view, e.g. \"-rawfb vt2\".\n"
"                       Unlike /dev/fb mode, it need not be the active Virtual\n"
"                       Terminal.  Note that this mode can only show text and\n"
"                       not graphics.  x11vnc polls the text in /dev/vcsaN\n"
"\n"
"                       Set the env. var. RAWFB_VCSA_BW=1 to disable colors in\n"
"                       the \"vtN\" mode (i.e. black and white only.)  If you\n"
"                       do not prefer the default 16bpp set RAWFB_VCSA_BPP to\n"
"                       8 or 32.  If you need to tweak the rawfb parameters by\n"
"                       using the 'console_guess' string printed at startup,\n"
"                       be sure to indicate the snap: method.\n"
"\n"
"                       uinput: If the Linux version appears to be 2.6\n"
"                       or later and the \"uinput\" module appears to be\n"
"                       present (modprobe uinput), then the uinput method\n"
"                       will be used instead of /dev/ttyN.  uinput allows\n"
"                       insertion of BOTH keystrokes and mouse input and so it\n"
"                       preferred when accessing graphical (e.g. QT-embedded)\n"
"                       linux console apps.  It also provides more accurate\n"
"                       keystroke insertion.  See -pipeinput UINPUT below for\n"
"                       more information on this mode; you will have to use\n"
"                       -pipeinput if you want to tweak any UINPUT parameters.\n"
"                       You may also want to also use the -nodragging and\n"
"                       -cursor none options.  Use \"console0\", etc  or\n"
"                       -pipeinput CONSOLE to force the /dev/ttyN method.\n"
"\n"
"                       Note you can change the Linux VT remotely using the\n"
"                       chvt(1) command to make the one you want be the active\n"
"                       one (e.g. 'chvt 3').  Sometimes switching out and back\n"
"                       corrects the framebuffer's graphics state.  For the\n"
"                       \"-rawfb vtN\" mode there is no need to switch the VT's.\n"
"\n"
"                       To skip input injecting entirely use \"consolex\"\n"
"                       or \"vtx\".\n"
"\n"
"                       The string \"/dev/fb0\" (1, etc.) can be used instead\n"
"                       of \"console\".  This can be used to specify a different\n"
"                       framebuffer device, e.g. /dev/fb1.  As a shortcut the\n"
"                       \"/dev/\" can be dropped.  If the name is something\n"
"                       nonstandard, use \"console:/dev/foofb\"\n"
"\n"
"                       If you do not want x11vnc to guess the framebuffer's\n"
"                       WxHxB and masks automatically (sometimes the kernel\n"
"                       gives incorrect information), specify them with a @WxHxB\n"
"                       (and optional :R/G/B masks) at the end of the string.\n"
"\n"
"                       Examples:\n"
"                           -rawfb console\n"
"                           -rawfb /dev/fb0           (same)\n"
"                           -rawfb console3           (force /dev/tty3)\n"
"                           -rawfb consolex           (no keystrokes or mouse)\n"
"                           -rawfb console:/dev/nonstd\n"
"                           -rawfb console -pipeinput UINPUT:accel=4.0\n"
"                           -rawfb vt3                (/dev/tty3 w/o /dev/fb0)\n"
"\n"
"                       VNC HOST: if the -rawfb string is of the form\n"
"                       \"vnc:host:N\" then the VNC display \"N\" on the remote\n"
"                       VNC server \"host\" is connected to (i.e. x11vnc acts as\n"
"                       a VNC client itself) and that framebuffer is exported.\n"
"\n"
"                       This mode is really only of use if you are trying\n"
"                       to improve performance in the case of many (e.g. >\n"
"                       10) simultaneous VNC viewers, and you try a divide\n"
"                       and conquer scheme to reduce bandwidth and improve\n"
"                       responsiveness.  (However, another user found this mode\n"
"                       useful to export a demo display through a slow link:\n"
"                       then multiple demo viewers connected to the reflecting\n"
"                       x11vnc on the fast side of the link, and so avoided\n"
"                       all of the demo viewers going through the slow link.)\n"
"\n"
"                       For example, if there will be 64 simultaneous VNC\n"
"                       viewers this can lead to a lot of redundant VNC traffic\n"
"                       to and from the server host:N, extra CPU usage,\n"
"                       and all viewers response can be reduced by having\n"
"                       to wait for writes to the slowest client to finish.\n"
"                       However, if you set up 8 reflectors/repeaters started\n"
"                       with option -rawfb vnc:host:N, then there are only\n"
"                       8 connections to host:N.  Each repeater then handles\n"
"                       8 vnc viewer connections thereby spreading the load\n"
"                       around.  In classroom broadcast usage, try to put the\n"
"                       repeaters on different switches.  This mode is the same\n"
"                       as -reflect host:N.  Replace \"host:N\" by \"listen\"\n"
"                       or \"listen:port\" for a reverse connection.\n"
"\n"
"                       Overall performance will not be as good as a single\n"
"                       direct connection because, among other things,\n"
"                       there is an additional level of framebuffer polling\n"
"                       and pointer motion can still induce many changes per\n"
"                       second that must be propagated.  Tip: if the remote VNC\n"
"                       is x11vnc doing wireframing, or an X display that does\n"
"                       wireframing that gives much better response than opaque\n"
"                       window dragging.  Consider the -nodragging option if\n"
"                       the problem is severe.\n"
"\n"
"                       The env. var. X11VNC_REFLECT_PASSWORD can be set to\n"
"                       the password needed to log into the vnc host server, or\n"
"                       to \"file:path_to_file\" to indicate a file containing\n"
"                       the password as its first line.\n"
"\n"
"                       To set the pixel format that x11vnc requests as a VNC\n"
"                       CLIENT set the env. vars: X11VNC_REFLECT_bitsPerSample\n"
"                       X11VNC_REFLECT_samplesPerPixel, and\n"
"                       X11VNC_REFLECT_bytesPerPixel; the defaults are 8, 3, 4.\n"
"                       2, 3, 1 would give a low color mode.  See the function\n"
"                       rfbGetClient() in libvncclient for more info.\n"
"\n"
"                       The VNC HOST mode implies -shared.  Use -noshared as\n"
"                       a subsequent cmdline option to disable sharing.\n"
"\n"
"-freqtab file          For use with \"-rawfb video\" for TV tuner devices to\n"
"                       specify station frequencies.  Instead of using the built\n"
"                       in ntsc-cable-us mapping of station number to frequency,\n"
"                       use the data in file.  For stations that are not\n"
"                       numeric, e.g. SE20, they are placed above the highest\n"
"                       numbered station in the order they are found.  Example:\n"
"                       \"-freqtab /usr/X11R6/share/xawtv/europe-west.list\"\n"
"                       You can make your own freqtab by copying the xawtv\n"
"                       format.\n"
"\n"
"-pipeinput cmd         This option lets you supply an external command in\n"
"                       \"cmd\" that x11vnc will pipe all of the user input\n"
"                       events to in a simple format.  In -pipeinput mode by\n"
"                       default x11vnc will not process any of the user input\n"
"                       events.  If you prefix \"cmd\" with \"tee:\" it will\n"
"                       both send them to the pipe command and process them.\n"
"                       For a description of the format run \"-pipeinput\n"
"                       tee:/bin/cat\".  Another prefix is \"reopen\" which\n"
"                       means to reopen pipe if it exits.  Separate multiple\n"
"                       prefixes with commas.\n"
"\n"
"                       In combination with -rawfb one might be able to\n"
"                       do amusing things (e.g. control non-X devices).\n"
"                       To facilitate this, if -rawfb is in effect then the\n"
"                       value is stored in X11VNC_RAWFB_STR for the pipe command\n"
"                       to use if it wants. Do 'env | grep X11VNC' for more.\n"
"\n"
"                       Built-in pipeinput modes (no external program required):\n"
"\n"
"                       If cmd is \"VID\" and you are using the -rawfb for a\n"
"                       video capture device, then an internal list of keyboard\n"
"                       mappings is used to set parameters of the video.\n"
"                       The mappings are:\n"
"\n"
"                         \"B\" and \"b\" adjust the brightness up and down.\n"
"                         \"H\" and \"h\" adjust the hue.\n"
"                         \"C\" and \"c\" adjust the colour.\n"
"                         \"N\" and \"n\" adjust the contrast.\n"
"                         \"S\" and \"s\" adjust the size of the capture screen.\n"
"                         \"I\" and \"i\" cycle through input channels.\n"
"                         Up and Down arrows adjust the station (if a tuner)\n"
"                         F1, F2, ..., F6 will switch the video capture pixel\n"
"                         format to HI240, RGB565, RGB24, RGB32, RGB555, and\n"
"                         GREY respectively.  See -rawfb video for details.\n"
"\n"
"                       If cmd is \"CONSOLE\" or \"CONSOLEn\" where n\n"
"                       is a Linux console number, then the linux console\n"
"                       keystroke insertion to /dev/ttyN (see -rawfb console)\n"
"                       is performed.\n"
"\n"
"                       If cmd begins with \"UINPUT\" then the Linux uinput\n"
"                       module is used to insert both keystroke and mouse events\n"
"                       to the Linux console (see -rawfb above).  This usually\n"
"                       is the /dev/input/uinput device file (you may need to\n"
"                       create it with \"mknod /dev/input/uinput c 10 223\"\n"
"                       and insert the module with \"modprobe uinput\".\n"
"\n"
"                       The UINPUT mode currently only does US keyboards (a\n"
"                       scan code option may be added), and not all keysyms\n"
"                       are supported.  But it is probably more accurate than\n"
"                       the \"CONSOLE\" method.\n"
"\n"
"                       You may want to use the options -cursor none and\n"
"                       -nodragging in this mode.\n"
"\n"
"                       Additional tuning options may be supplied via:\n"
"                       UINPUT:opt1,opt2,... (a comma separated list). If an\n"
"                       option begins with \"/\" it is taken as the uinput\n"
"                       device file.\n"
"                       \n"
"                       Which uinput is injected can be controlled by an option\n"
"                       string made of the characters \"K\", \"M\", and \"B\"\n"
"                       (see the -input option), e.g. \"KM\" allows keystroke\n"
"                       and motion but not button clicks.\n"
"\n"
"                       A UINPUT option of the form: accel=f, or accel=fx+fy\n"
"                       sets the mouse motion \"acceleration\".  This is used\n"
"                       to correct raw mouse relative motion into how much the\n"
"                       application cursor moves (x11vnc has no control over,\n"
"                       or knowledge of how the windowing application interprets\n"
"                       the raw mouse motions).  Typically the acceleration\n"
"                       for an X display is 2 (see xset \"m\" option).  \"f\"\n"
"                       is a floating point number, e.g. 3.0.  Use \"fx+fy\"\n"
"                       if you need to supply different corrections for x and y.\n"
"\n"
"                       Note: the default acceleration is 2.0 since it seems\n"
"                       both X and qt-embedded often (but not always) use\n"
"                       this value.\n"
"\n"
"                       Even with a correct accel setting the mouse position\n"
"                       will get out of sync (probably due to a mouse\n"
"                       \"threshold\" setting where the acceleration doe not\n"
"                       apply, set xset(1)).  The option reset=N sets the\n"
"                       number of ms (default 150) after which the cursor is\n"
"                       attempted to be reset (by forcing the mouse to (0,\n"
"                       0) via small increments and then back out to (x, y)\n"
"                       in 1 jump), This correction seems to be needed but can\n"
"                       cause jerkiness or unexpected behavior with menus, etc.\n"
"                       Use reset=0 to disable.\n"
"\n"
"                       If you set the env. var X11VNC_UINPUT_THRESHOLDS then\n"
"                       the thresh=n mode will be enabled.  It is currently\n"
"                       not working well.  If |dx| <= thresh and |dy| < thresh\n"
"                       no acceleration is applied.  Use \"thresh=+n\" |dx| +\n"
"                       |dy| < thresh to be used instead (X11?)\n"
"\n"
"                       Example:\n"
"                           -pipeinput UINPUT:accel=4.0 -cursor none\n"
"\n"
"                       If the uinput device has an absolute pointer (as opposed\n"
"                       to a normal mouse that is a relative pointer) you can\n"
"                       specify the option \"abs\".  Note that a touchpad\n"
"                       on a laptop is an absolute device to some degree.\n"
"                       This (usually) avoids all the problems with mouse\n"
"                       acceleration.  If x11vnc has trouble deducing the\n"
"                       size of the device, use \"abs=WxH\".  Furthermore,\n"
"                       if the device is a touchscreen (assumed to have an\n"
"                       absolute pointer) use \"touch\" or \"touch=WxH\".\n"
"                       For touchscreens, when a mouse button is pressed,\n"
"                       a pressure increase is injected, and when the button\n"
"                       is released a pressure of zero is injected.\n"
"\n"
"                       If touch has been set, use \"touch_always=1\" to\n"
"                       indicate whenever the mouse moves with no button\n"
"                       pressed, a touch event of zero pressure should be\n"
"                       sent anyway.  Also use \"btn_touch=1\" to indicate a\n"
"                       BTN_TOUCH keystroke press or release should be sent\n"
"                       instead of a pressure change.  Set \"dragskip=n\" to\n"
"                       skip n dragged mouse touches (with pressure applied)\n"
"                       before injecting one.  To indicate the pressure that\n"
"                       should be sent when there is a button click for a\n"
"                       touchscreen device, specify pressure=n, e.g. n=5. The\n"
"                       default is n=1.\n"
"\n"
"                       If a touch screen is being used (\"touch\" above)\n"
"                       and it is having its input processed by tslib, you can\n"
"                       specify the tslib calibration file via tslib_cal=<file>.\n"
"                       For example, tslib_cal=/etc/pointercal.  To get accurate\n"
"                       or even usable positioning this is required when tslib\n"
"                       is in use.\n"
"\n"
"                       The Linux uinput mechanism can be bypassed and one can\n"
"                       write input events DIRECTLY to the devices instead.\n"
"                       To do this, specify one or more of the following\n"
"                       for the input classes: direct_rel=<device>\n"
"                       direct_abs=<device> direct_btn=<device> or\n"
"                       direct_key=<device>.  The <device> file is usually\n"
"                       something like /dev/input/event1 but you can specify\n"
"                       any device file or pipe.  You must specify each one\n"
"                       of the above classes even if they correspond to the\n"
"                       same device file (rel/abs and btn are often the same.)\n"
"                       Look at the file /proc/bus/input/devices to get an idea\n"
"                       what is available and the device filenames.  Note:\n"
"                       The /dev/input/mouse* devices do not seem to work,\n"
"                       use the corresponding /dev/input/event* file instead.\n"
"                       Any input class not directly specified as above will be\n"
"                       handled via the uinput mechanism.  To disable creating a\n"
"                       uinput device (and thereby discarding unhandled input),\n"
"                       specify \"nouinput\".\n"
"\n"
"                       Examples:\n"
"\n"
"                         -pipeinput UINPUT:direct_abs=/dev/input/event1\n"
"\n"
"                       this was used on a qtmoko Neo freerunner (armel):\n"
"\n"
"                         -pipeinput UINPUT:touch,tslib_cal=/etc/pointercal,\n"
"                          direct_abs=/dev/input/event1,nouinput,dragskip=4\n"
"\n"
"                       (where the long line has been split into two.)\n"
"\n"
"                       You can set the env. var X11VNC_UINPUT_DEBUG=1 or higher\n"
"                       to get debugging output for UINPUT mode.\n"
"\n"
"-macnodim              For the native MacOSX server, disable dimming. \n"
"-macnosleep            For the native MacOSX server, disable display sleep.\n"
"-macnosaver            For the native MacOSX server, disable screensaver.\n"
"-macnowait             For the native MacOSX server, do not wait for the\n"
"                       user to switch back to his display.\n"
"-macwheel n            For the native MacOSX server, set the mouse wheel\n"
"                       speed to n (default 5).\n"
"-macnoswap             For the native MacOSX server, do not swap mouse\n"
"                       buttons 2 and 3.\n"
"-macnoresize           For the native MacOSX server, do not resize or reset\n"
"                       the framebuffer even if it is detected that the screen\n"
"                       resolution or depth has changed.\n"
"-maciconanim n         For the native MacOSX server, set n to the number\n"
"                       of milliseconds that the window iconify/deiconify\n"
"                       animation takes.  In -ncache mode this value will be\n"
"                       used to skip the animation if possible. (default 400)\n"
"-macmenu               For the native MacOSX server, in -ncache client-side\n"
"                       caching mode, try to cache pull down menus (not perfect\n"
"                       because they have animated fades, etc.)\n"
"-macuskbd              For the native MacOSX server, use the original\n"
"                       keystroke insertion code based on a US keyboard.\n"
"-macnoopengl           For the native MacOSX server, do not use OpenGL for\n"
"                       screen capture, but rather use the original, deprecated\n"
"                       raw memory access method: addr = CGDisplayBaseAddress().\n"
"-macnorawfb            For the native MacOSX server, disable the raw memory\n"
"                       address screen capture method.\n"
"\n"
"                       MACOSX NOTE: There are some deprecated MacOSX interfaces\n"
"                       to inject keyboard and mouse events and the raw memory\n"
"                       access method is deprecated as well (however, OpenGL\n"
"                       will be preferred if available because it is faster.)\n"
"                       One can force not using any deprecated interfaces at\n"
"                       compile time by setting -DX11VNC_MACOSX_NO_DEPRECATED=1\n"
"                       in CPPFLAGS.  Or to turn them off one by one:\n"
"                       -DX11VNC_MACOSX_NO_DEPRECATED_LOCALEVENTS=1,\n"
"                       -DX11VNC_MACOSX_NO_DEPRECATED_POSTEVENTS=1 or\n"
"                       -DX11VNC_MACOSX_NO_DEPRECATED_FRAMEBUFFER=1\n"
"                       At run time, for testing and workarounds, one can\n"
"                       disable them by using:\n"
"                       -env X11VNC_MACOSX_NO_DEPRECATED=1\n"
"                       -env X11VNC_MACOSX_NO_DEPRECATED_LOCALEVENTS=1\n"
"                       -env X11VNC_MACOSX_NO_DEPRECATED_POSTEVENTS=1 or\n"
"                       -env X11VNC_MACOSX_NO_DEPRECATED_FRAMEBUFFER=1\n"
"                       Note: When doing either of these for the mouse input\n"
"                       not everything works currently, e.g. double clicks and\n"
"                       wireframing.  Also, screen resolution and pixel depth\n"
"                       changes will not be automatically detected unless the\n"
"                       deprecated framebuffer interfaces are allowed.\n"
"\n"
"                       Conversely, if you are compiling on an\n"
"                       older machine that does not have some of\n"
"                       the newer interfaces, you may need to specify\n"
"                       -DX11VNC_MACOSX_NO_CGEVENTCREATESCROLLWHEELEVENT\n"
"                       -DX11VNC_MACOSX_NO_CGEVENTCREATEMOUSEEVENT or\n"
"                       -DX11VNC_MACOSX_NO_CGEVENTCREATEKEYBOARDEVENT.  Use\n"
"                       -DX11VNC_MACOSX_USE_GETMAINDEVICE to regain the very\n"
"                       old QuickDraw GetMainDevice() interface (rare...)\n"
"\n"
"-gui [gui-opts]        Start up a simple tcl/tk gui based on the remote\n"
"                       control options -remote/-query described below.\n"
"                       Requires the \"wish\" program to be installed on the\n"
"                       machine.  \"gui-opts\" is not required: the default\n"
"                       is to start up both the full gui and x11vnc with the\n"
"                       gui showing up on the X display in the environment\n"
"                       variable DISPLAY.\n"
"\n"
"                       \"gui-opts\" can be a comma separated list of items.\n"
"                       Currently there are these types of items: 1) a gui\n"
"                       mode, a 2) gui \"simplicity\", 3) the X display the\n"
"                       gui should display on, 4) a \"tray\" or \"icon\" mode,\n"
"                       and 5) a gui geometry.\n"
"\n"
"                       1) The gui mode can be \"start\", \"conn\", or \"wait\"\n"
"                       \"start\" is the default mode above and is not required.\n"
"                       \"conn\" means do not automatically start up x11vnc,\n"
"                       but instead just try to connect to an existing x11vnc\n"
"                       process.  \"wait\" means just start the gui and nothing\n"
"                       else (you will later instruct the gui to start x11vnc\n"
"                       or connect to an existing one.)\n"
"\n"
"                       2) The gui simplicity is off by default (a power-user\n"
"                       gui with all options is presented) To start with\n"
"                       something less daunting supply the string \"simple\"\n"
"                       (\"ez\" is an alias for this).  Once the gui is\n"
"                       started you can toggle between the two with \"Misc ->\n"
"                       simple_gui\".\n"
"\n"
"                       3) Note the possible confusion regarding the potentially\n"
"                       two different X displays: x11vnc polls one, but you\n"
"                       may want the gui to appear on another.  For example, if\n"
"                       you ssh in and x11vnc is not running yet you may want\n"
"                       the gui to come back to you via your ssh redirected X\n"
"                       display (e.g. localhost:10).\n"
"\n"
"                       If you do not specify a gui X display in \"gui-opts\"\n"
"                       then the DISPLAY environment variable and -display\n"
"                       option are tried (in that order).  Regarding the x11vnc\n"
"                       X display the gui will try to communication with, it\n"
"                       first tries -display and then DISPLAY.  For example,\n"
"                       \"x11vnc -display :0 -gui otherhost:0\", will remote\n"
"                       control an x11vnc polling :0 and display the gui on\n"
"                       otherhost:0 The \"tray/icon\" mode below reverses this\n"
"                       preference, preferring to display on the x11vnc display.\n"
"\n"
"                       4) When \"tray\" or \"icon\" is specified, the gui\n"
"                       presents itself as a small icon with behavior typical\n"
"                       of a \"system tray\" or \"dock applet\".  The color\n"
"                       of the icon indicates status (connected clients) and\n"
"                       there is also a balloon status.  Clicking on the icon\n"
"                       gives a menu from which properties, etc, can be set and\n"
"                       the full gui is available under \"Advanced\".  To be\n"
"                       fully functional, the gui mode should be \"start\"\n"
"                       (the default).\n"
"\n"
"                       Note that tray or icon mode will imply the -forever\n"
"                       x11vnc option (if the x11vnc server is started along\n"
"                       with the gui) unless -connect or -connect_or_exit has\n"
"                       been specified.  So x11vnc (and the tray/icon gui)\n"
"                       will wait for more connections after the first client\n"
"                       disconnects.  If you want only one viewer connection\n"
"                       include the -once option.\n"
"\n"
"                       For \"icon\" the gui just a small standalone window.\n"
"                       For \"tray\" it will attempt to embed itself in the\n"
"                       \"system tray\" if possible. If \"=setpass\" is appended then\n"
"                       at startup the X11 user will be prompted to set the\n"
"                       VNC session password.  If =<hexnumber> is appended\n"
"                       that icon will attempt to embed itself in the window\n"
"                       given by hexnumber.  Use =noadvanced to disable the\n"
"                       full gui. (To supply more than one, use \"+\" sign).\n"
"                       E.g. -gui tray=setpass and -gui icon=0x3600028\n"
"\n"
"                       Other modes: \"full\", the default and need not be\n"
"                       specified.  \"-gui none\", do not show a gui, useful\n"
"                       to override a ~/.x11vncrc setting, etc.\n"
"\n"
"                       5) When \"geom=+X+Y\" is specified, that geometry\n"
"                       is passed to the gui toplevel.  This is the icon in\n"
"                       icon/tray mode, or the full gui otherwise.  You can\n"
"                       also specify width and height, i.e. WxH+X+Y, but it\n"
"                       is not recommended.  In \"tray\" mode the geometry is\n"
"                       ignored unless the system tray manager does not seem\n"
"                       to be running.  One could imagine using something like\n"
"                       \"-gui tray,geom=+4000+4000\" with a display manager\n"
"                       to keep the gui invisible until someone logs in...\n"
"\n"
"                       More icon tricks, \"icon=minimal\" gives an icon just\n"
"                       with the VNC display number.  You can also set the font\n"
"                       with \"iconfont=...\".  The following could be useful:\n"
"                       \"-gui icon=minimal,iconfont=5x8,geom=24x10+0-0\"\n"
"\n"
"                       General examples of the -gui option: \"x11vnc -gui\",\n"
"                       \"x11vnc -gui ez\" \"x11vnc -gui localhost:10\",\n"
"                       \"x11vnc -gui conn,host:0\", \"x11vnc -gui tray,ez\"\n"
"                       \"x11vnc -gui tray=setpass\"\n"
"\n"
"                       If you do not intend to start x11vnc from the gui\n"
"                       (i.e. just remote control an existing one), then the\n"
"                       gui process can run on a different machine from the\n"
"                       x11vnc server as long as X permissions, etc. permit\n"
"                       communication between the two.\n"
"\n"
"                       FONTS: On some systems the tk fonts can be too small,\n"
"                       jagged, or otherwise unreadable.  There are 4 env vars\n"
"                       you can set to be the tk font you prefer:\n"
"\n"
"                       X11VNC_FONT_BOLD   main font for menus and buttons.\n"
"                       X11VNC_FONT_FIXED  font for fixed width text.\n"
"\n"
"                       X11VNC_FONT_BOLD_SMALL  tray icon font.\n"
"                       X11VNC_FONT_REG_SMALL   tray icon menu font.\n"
"\n"
"                       The last two only apply for the tray icon mode.\n"
"\n"
"                       Here are some examples:\n"
"\n"
"                       -env X11VNC_FONT_BOLD='Helvetica -16 bold'\n"
"                       -env X11VNC_FONT_FIXED='Courier -14'\n"
"                       -env X11VNC_FONT_REG_SMALL='Helvetica -12'\n"
"\n"
"                       You can put the lines like the above (without the\n"
"                       quotes) in your ~/.x11vncrc file to avoid having to\n"
"                       specify them on the x11vnc command line.\n"
"\n"
"-remote command        Remotely control some aspects of an already running\n"
"                       x11vnc server.  \"-R\" and \"-r\" are aliases for\n"
"                       \"-remote\".  After the remote control command is\n"
"                       sent to the running server the 'x11vnc -remote ...'\n"
"                       x11vnc command exits.  You can often use the -query\n"
"                       command (see below) to see if the x11vnc server\n"
"                       processed your -remote command.\n"
"\n"
"                       The default communication channel is that of X\n"
"                       properties (specifically X11VNC_REMOTE), and so this\n"
"                       command must be run with correct settings for DISPLAY\n"
"                       and possibly XAUTHORITY to connect to the X server\n"
"                       and set the property.  Alternatively, use the -display\n"
"                       and -auth options to set them to the correct values.\n"
"                       The running server cannot use the -novncconnect option\n"
"                       because that disables the communication channel.\n"
"                       See below for alternate channels.\n"
"\n"
"                       For example: 'x11vnc -remote stop' (which is the same as\n"
"                       'x11vnc -R stop') will close down the x11vnc server.\n"
"                       'x11vnc -R shared' will enable shared connections, and\n"
"                       'x11vnc -R scale:3/4' will rescale the desktop.\n"
"\n"
"                       To use a different name for the X11 property (e.g. to\n"
"                       have separate communication channels for multiple\n"
"                       x11vnc's on the same display) set the X11VNC_REMOTE\n"
"                       environment variable to the string you want, for\n"
"                       example: -env X11VNC_REMOTE=X11VNC_REMOTE_12345\n"
"                       Both sides of the channel must use the same unique name.\n"
"\n"
"                       To run a bunch of commands in a sequence use something\n"
"                       like: x11vnc -R 'script:firstcmd;secondcmd;...'\n"
"\n"
"                       Use x11vnc -R script:file=/path/to/file to read commands\n"
"                       from a file (can be multi-line and use the comment '#'\n"
"                       character in the normal way.  The ';' separator must\n"
"                       still be used to separate each command.)\n"
"\n"
"                       To not try to contact another x11vnc process and instead\n"
"                       just run the command (or query) directly, prefix the\n"
"                       command with the string \"DIRECT:\"\n"
"\n"
"                       The following -remote/-R commands are supported:\n"
"\n"
"                       stop            terminate the server, same as \"quit\"\n"
"                                       \"exit\" or \"shutdown\".\n"
"                       ping            see if the x11vnc server responds.\n"
"                                       return is: ans=ping:<display>\n"
"                       ping:mystring   as above, but use your own unique string.\n"
"                                       return is: ans=ping:mystring:<xdisplay>\n"
"                       blacken         try to push a black fb update to all\n"
"                                       clients (due to timings a client\n"
"                                       could miss it). Same as \"zero\", also\n"
"                                       \"zero:x1,y1,x2,y2\" for a rectangle.\n"
"                       refresh         send the entire fb to all clients.\n"
"                       reset           recreate the fb, polling memory, etc.\n"
/* ext. cmd. */
"                       id:windowid     set -id window to \"windowid\". empty\n"
"                                       or \"root\" to go back to root window\n"
"                       sid:windowid    set -sid window to \"windowid\"\n"
"                       id_cmd:cmd      cmds: raise, lower, map, unmap, iconify,\n"
"                                       move:dXdY, resize:dWdH, geom:WxH+X+Y. dX\n"
"                                       dY, dW, and dH must have a leading \"+\"\n"
"                                       or \"-\" e.g.: move:-30+10 resize:+20+35\n"
"                                       also: wm_delete, wm_name:string and\n"
"                                       icon_name:string. Also id_cmd:win=N:cmd\n"
"                       waitmapped      wait until subwin is mapped.\n"
"                       nowaitmapped    do not wait until subwin is mapped.\n"
"                       clip:WxH+X+Y    set -clip mode to \"WxH+X+Y\"\n"
"                       flashcmap       enable  -flashcmap mode.\n"
"                       noflashcmap     disable -flashcmap mode.\n"
"                       shiftcmap:n     set -shiftcmap to n.\n"
"                       notruecolor     enable  -notruecolor mode.\n"
"                       truecolor       disable -notruecolor mode.\n"
"                       overlay         enable  -overlay mode (if applicable).\n"
"                       nooverlay       disable -overlay mode.\n"
"                       overlay_cursor  in -overlay mode, enable cursor drawing.\n"
"                       overlay_nocursor disable cursor drawing. same as\n"
"                                        nooverlay_cursor.\n"
"                       8to24           enable  -8to24 mode (if applicable).\n"
"                       no8to24         disable -8to24 mode.\n"
"                       8to24_opts:str  set the -8to24 opts to \"str\".\n"
"                       24to32          enable  -24to32 mode (if applicable).\n"
"                       no24to32        disable -24to32 mode.\n"
"                       visual:vis      set -visual to \"vis\"\n"
"                       scale:frac      set -scale to \"frac\"\n"
"                       scale_cursor:f  set -scale_cursor to \"f\"\n"
"                       viewonly        enable  -viewonly mode.\n"
/* access view,share,forever */
"                       noviewonly      disable -viewonly mode.\n"
"                       shared          enable  -shared mode.\n"
"                       noshared        disable -shared mode.\n"
"                       forever         enable  -forever mode.\n"
"                       noforever       disable -forever mode.\n"
"                       timeout:n       reset -timeout to n, if there are\n"
"                                       currently no clients, exit unless one\n"
"                                       connects in the next n secs.\n"
"                       tightfilexfer   enable  filetransfer for NEW clients.\n"
"                       notightfilexfer disable filetransfer for NEW clients.\n"
"                       ultrafilexfer   enable  filetransfer for clients.\n"
"                       noultrafilexfer disable filetransfer for clients.\n"
"                       rfbversion:n.m  set -rfbversion for new clients.\n"
/* access */
"                       http            enable  http client connections.\n"
"                       nohttp          disable http client connections.\n"
"                       deny            deny any new connections, same as \"lock\"\n"
"                       nodeny          allow new connections, same as \"unlock\"\n"
"                       avahi           enable  avahi service advertising.\n"
"                       noavahi         disable avahi service advertising.\n"
"                       mdns            enable  avahi service advertising.\n"
"                       nomdns          disable avahi service advertising.\n"
"                       zeroconf        enable  avahi service advertising.\n"
"                       nozeroconf      disable avahi service advertising.\n"
/* access, filename */
"                       connect:host    do reverse connection to host, \"host\"\n"
"                                       may be a comma separated list of hosts\n"
"                                       or host:ports.  See -connect.  Passwords\n"
"                                       required as with fwd connections.\n"
"                                       See X11VNC_REVERSE_CONNECTION_NO_AUTH=1\n"
"                       disconnect:host disconnect any clients from \"host\"\n"
"                                       same as \"close:host\".  Use host\n"
"                                       \"all\" to close all current clients.\n"
"                                       If you know the client internal hex ID,\n"
"                                       e.g. 0x3 (returned by \"-query clients\"\n"
"                                       and RFB_CLIENT_ID) you can use that too.\n"
"                       proxy:host:port set reverse connection proxy (empty to\n"
"                                       disable).\n"
/* access */
"                       allowonce:host  For the next connection only, allow\n"
"                                       connection from \"host\". In -ssl mode\n"
"                                       two connections are allowed (i.e. Fetch\n"
"                                       Cert) unless X11VNC_NO_SSL_ALLOW_TWICE=1\n"
/* access */
"                       allow:hostlist  set -allow list to (comma separated)\n"
"                                       \"hostlist\". See -allow and -localhost.\n"
"                                       Do not use with -allow /path/to/file\n"
"                                       Use \"+host\" to add a single host, and\n"
"                                       use \"-host\" to delete a single host\n"
"                       localhost       enable  -localhost mode\n"
"                       nolocalhost     disable -localhost mode\n"
"                       listen:str      set -listen to str, empty to disable.\n"
"                       noipv6          enable  -noipv6 mode.\n"
"                       ipv6            disable -noipv6 mode.\n"
"                       noipv4          enable  -noipv4 mode.\n"
"                       ipv4            disable -noipv4 mode.\n"
"                       6               enable  -6 IPv6 listening mode.\n"
"                       no6             disable -6 IPv6 listening mode.\n"
"                       lookup          disable -nolookup mode.\n"
"                       nolookup        enable  -nolookup mode.\n"
"                       lookup          disable -nolookup mode.\n"
"                       input:str       set -input to \"str\", empty to disable.\n"
"                       grabkbd         enable  -grabkbd mode.\n"
"                       nograbkbd       disable -grabkbd mode.\n"
"                       grabptr         enable  -grabptr mode.\n"
"                       nograbptr       disable -grabptr mode.\n"
"                       grabalways      enable  -grabalways mode.\n"
"                       nograbalways    disable -grabalways mode.\n"
"                       grablocal:n     set -grablocal to n.\n"
"                       client_input:str set the K, M, B -input on a per-client\n"
"                                       basis.  select which client as for\n"
"                                       disconnect, e.g. client_input:host:MB\n"
"                                       or client_input:0x2:K\n"
/* ext. cmd. */
"                       accept:cmd      set -accept \"cmd\" (empty to disable).\n"
"                       afteraccept:cmd set -afteraccept (empty to disable).\n"
"                       gone:cmd        set -gone \"cmd\" (empty to disable).\n"
"                       noshm           enable  -noshm mode.\n"
"                       shm             disable -noshm mode (i.e. use shm).\n"
"                       flipbyteorder   enable -flipbyteorder mode, you may need\n"
"                                       to set noshm for this to do something.\n"
"                       noflipbyteorder disable -flipbyteorder mode.\n"
"                       onetile         enable  -onetile mode. (you may need to\n"
"                                       set shm for this to do something)\n"
"                       noonetile       disable -onetile mode.\n"
/* ext. cmd. */
"                       solid           enable  -solid mode\n"
"                       nosolid         disable -solid mode.\n"
"                       solid_color:color set -solid color (and apply it).\n"
"                       blackout:str    set -blackout \"str\" (empty to disable).\n"
"                                       See -blackout for the form of \"str\"\n"
"                                       (basically: WxH+X+Y,...)\n"
"                                       Use \"+WxH+X+Y\" to append a single\n"
"                                       rectangle use \"-WxH+X+Y\" to delete one\n"
"                       xinerama        enable  -xinerama mode. (if applicable)\n"
"                       noxinerama      disable -xinerama mode.\n"
"                       xtrap           enable  -xtrap input mode(if applicable)\n"
"                       noxtrap         disable -xtrap input mode.\n"
"                       xrandr          enable  -xrandr mode. (if applicable)\n"
"                       noxrandr        disable -xrandr mode.\n"
"                       xrandr_mode:mode set the -xrandr mode to \"mode\".\n"
"                       rotate:mode     set the -rotate mode to \"mode\".\n"
"                       padgeom:WxH     set -padgeom to WxH (empty to disable)\n"
"                                       If WxH is \"force\" or \"do\" the padded\n"
"                                       geometry fb is immediately applied.\n"
"                       quiet           enable  -quiet mode.\n"
"                       noquiet         disable -quiet mode.\n"
"                       modtweak        enable  -modtweak mode.\n"
"                       nomodtweak      enable  -nomodtweak mode.\n"
"                       xkb             enable  -xkb modtweak mode.\n"
"                       noxkb           disable -xkb modtweak mode.\n"
"                       capslock        enable  -capslock mode.\n"
"                       nocapslock      disable -capslock mode.\n"
"                       skip_lockkeys   enable  -skip_lockkeys mode.\n"
"                       noskip_lockkeys disable -skip_lockkeys mode.\n"
"                       skip_keycodes:str enable -xkb -skip_keycodes \"str\".\n"
"                       sloppy_keys     enable  -sloppy_keys mode.\n"
"                       nosloppy_keys   disable -sloppy_keys mode.\n"
"                       skip_dups       enable  -skip_dups mode.\n"
"                       noskip_dups     disable -skip_dups mode.\n"
"                       add_keysyms     enable -add_keysyms mode.\n"
"                       noadd_keysyms   stop adding keysyms. those added will\n"
"                                       still be removed at exit.\n"
"                       clear_mods      enable  -clear_mods mode and clear them.\n"
"                       noclear_mods    disable -clear_mods mode.\n"
"                       clear_keys      enable  -clear_keys mode and clear them.\n"
"                       noclear_keys    disable -clear_keys mode.\n"
"                       clear_locks     do the clear_locks action.\n"
"                       clear_all       do the clear_all action.\n"
"                       keystate        have x11vnc print current keystate.\n"
/* filename */
"                       remap:str       set -remap \"str\" (empty to disable).\n"
"                                       See -remap for the form of \"str\"\n"
"                                       (basically: key1-key2,key3-key4,...)\n"
"                                       Use \"+key1-key2\" to append a single\n"
"                                       keymapping, use \"-key1-key2\" to delete.\n"
"                       norepeat        enable  -norepeat mode.\n"
"                       repeat          disable -norepeat mode.\n"
"                       nofb            enable  -nofb mode.\n"
"                       fb              disable -nofb mode.\n"
"                       bell            enable  bell (if supported).\n"
"                       nobell          disable bell.\n"
"                       sendbell        ring the bell now.\n"
"                       nosel           enable  -nosel mode.\n"
"                       sel             disable -nosel mode.\n"
"                       noprimary       enable  -noprimary mode.\n"
"                       primary         disable -noprimary mode.\n"
"                       nosetprimary    enable  -nosetprimary mode.\n"
"                       setprimary      disable -nosetprimary mode.\n"
"                       noclipboard     enable  -noclipboard mode.\n"
"                       clipboard       disable -noclipboard mode.\n"
"                       nosetclipboard  enable  -nosetclipboard mode.\n"
"                       setclipboard    disable -nosetclipboard mode.\n"
"                       seldir:str      set -seldir to \"str\"\n"
"                       resend_cutbuffer resend the most recent CUTBUFFER0 copy\n"
"                       resend_clipboard resend the most recent CLIPBOARD copy\n"
"                       resend_primary   resend the most recent PRIMARY copy\n"
"                       cursor:mode     enable  -cursor \"mode\".\n"
"                       show_cursor     enable  showing a cursor.\n"
"                       noshow_cursor   disable showing a cursor. (same as\n"
"                                       \"nocursor\")\n"
"                       cursor_drag     enable  cursor changes during drag.\n"
"                       nocursor_drag   disable cursor changes during drag.\n"
"                       arrow:n         set -arrow to alternate n.\n"
"                       xfixes          enable  xfixes cursor shape mode.\n"
"                       noxfixes        disable xfixes cursor shape mode.\n"
"                       alphacut:n      set -alphacut to n.\n"
"                       alphafrac:f     set -alphafrac to f.\n"
"                       alpharemove     enable  -alpharemove mode.\n"
"                       noalpharemove   disable -alpharemove mode.\n"
"                       alphablend      disable -noalphablend mode.\n"
"                       noalphablend    enable  -noalphablend mode.\n"
"                       cursorshape     disable -nocursorshape mode.\n"
"                       nocursorshape   enable  -nocursorshape mode.\n"
"                       cursorpos       disable -nocursorpos mode.\n"
"                       nocursorpos     enable  -nocursorpos mode.\n"
"                       xwarp           enable  -xwarppointer mode.\n"
"                       noxwarp         disable -xwarppointer mode.\n"
"                       always_inject   enable  -always_inject mode.\n"
"                       noalways_inject disable -always_inject mode.\n"
"                       buttonmap:str   set -buttonmap \"str\", empty to disable\n"
"                       dragging        disable -nodragging mode.\n"
"                       nodragging      enable  -nodragging mode.\n"
"                       ncache          reenable -ncache mode.\n"
"                       noncache        disable  -ncache mode.\n"
"                       ncache_size:n   set -ncache size to n.\n"
"                       ncache_cr       enable  -ncache_cr mode.\n"
"                       noncache_cr     disable -ncache_cr mode.\n"
"                       ncache_no_moveraise     enable  no_moveraise mode.\n"
"                       noncache_no_moveraise   disable no_moveraise mode.\n"
"                       ncache_no_dtchange      enable  ncache_no_dtchange mode.\n"
"                       noncache_no_dtchange    disable ncache_no_dtchange mode.\n"
"                       ncache_old_wm           enable  ncache_old_wm mode.\n"
"                       noncache_old_wm         disable ncache_old_wm mode.\n"
"                       ncache_no_rootpixmap    enable  ncache_no_rootpixmap.\n"
"                       noncache_no_rootpixmap  disable ncache_no_rootpixmap.\n"
"                       ncache_reset_rootpixmap recheck the root pixmap, ncrp\n"
"                       ncache_keep_anims       enable  ncache_keep_anims.\n"
"                       noncache_keep_anims     disable ncache_keep_anims.\n"
"                       ncache_pad:n    set -ncache_pad to n.\n"
"                       wireframe       enable  -wireframe mode. same as \"wf\"\n"
"                       nowireframe     disable -wireframe mode. same as \"nowf\"\n"
"                       wireframe:str   enable  -wireframe mode string.\n"
"                       wireframe_mode:str enable  -wireframe mode string.\n"
"                       wireframelocal  enable  wireframelocal. same as \"wfl\"\n"
"                       nowireframe     disable wireframelocal. same as \"nowfl\"\n"
"                       wirecopyrect:str set -wirecopyrect string. same as \"wcr:\"\n"
"                       scrollcopyrect:str set -scrollcopyrect string. same \"scr\"\n"
"                       noscrollcopyrect disable -scrollcopyrect mode. \"noscr\"\n"
"                       scr_area:n      set -scr_area to n\n"
"                       scr_skip:list   set -scr_skip to \"list\"\n"
"                       scr_inc:list    set -scr_inc to \"list\"\n"
"                       scr_keys:list   set -scr_keys to \"list\"\n"
"                       scr_term:list   set -scr_term to \"list\"\n"
"                       scr_keyrepeat:str set -scr_keyrepeat to \"str\"\n"
"                       scr_parms:str   set -scr_parms parameters.\n"
"                       fixscreen:str   set -fixscreen to \"str\".\n"
"                       noxrecord       disable all use of RECORD extension.\n"
"                       xrecord         enable  use of RECORD extension.\n"
"                       reset_record    reset RECORD extension (if avail.)\n"
"                       pointer_mode:n  set -pointer_mode to n. same as \"pm\"\n"
"                       input_skip:n    set -input_skip to n.\n"
"                       allinput        enable  use of -allinput mode.\n"
"                       noallinput      disable use of -allinput mode.\n"
"                       input_eagerly   enable  use of -input_eagerly mode.\n"
"                       noinput_eagerly disable use of -input_eagerly mode.\n"
"                       ssltimeout:n    set -ssltimeout to n.\n"
"                       speeds:str      set -speeds to str.\n"
"                       wmdt:str        set -wmdt to str.\n"
"                       debug_pointer   enable  -debug_pointer, same as \"dp\"\n"
"                       nodebug_pointer disable -debug_pointer, same as \"nodp\"\n"
"                       debug_keyboard   enable  -debug_keyboard, same as \"dk\"\n"
"                       nodebug_keyboard disable -debug_keyboard, same as \"nodk\"\n"
"                       keycode:n       inject keystroke 'keycode' (xmodmap -pk)\n"
"                       keycode:n,down  inject 'keycode' (down=0,1)\n"
"                       keysym:str      inject keystroke 'keysym' (number/name)\n"
"                       keysym:str,down inject 'keysym' (down=0,1)\n"
"                       ptr:x,y,mask    inject pointer event x, y, button-mask\n"
"                       fakebuttonevent:button,down direct XTestFakeButtonEvent.\n"
"                       sleep:t         sleep floating point time t.\n"
"                       get_xprop:p     get X property named 'p'.\n"
"                       set_xprop:p:val set X property named 'p' to 'val'.\n"
"                                       p -> id=NNN:p for hex/dec window id.\n"
"                       wininfo:id      get info about X window id.  use 'root'\n"
"                                       for root window, use +id for children.\n"
"                       grab_state      get state of pointer and keyboard grab.\n"
"                       pointer_pos     print XQueryPointer x,y cursor position.\n"
"                       pointer_x       print XQueryPointer x cursor position.\n"
"                       pointer_y       print XQueryPointer y cursor position.\n"
"                       pointer_same    print XQueryPointer ptr on same screen.\n"
"                       pointer_root    print XQueryPointer curr ptr rootwin.\n"
"                       pointer_mask    print XQueryPointer button and mods mask\n"
"                       mouse_x         print x11vnc's idea of cursor position.\n"
"                       mouse_y         print x11vnc's idea of cursor position.\n"
"                       noop            do nothing.\n"
"                       defer:n         set -defer to n ms,same as deferupdate:n\n"
"                       wait:n          set -wait to n ms.\n"
"                       extra_fbur:n    set -extra_fbur to n.\n"
"                       wait_ui:f       set -wait_ui factor to f.\n"
"                       setdefer:n      set -setdefer to -2,-1,0,1, or 2.\n"
"                       wait_bog        disable -nowait_bog mode.\n"
"                       nowait_bog      enable  -nowait_bog mode.\n"
"                       slow_fb:f       set -slow_fb to f seconds.\n"
"                       xrefresh:f      set -xrefresh to f seconds.\n"
"                       readtimeout:n   set read timeout to n seconds.\n"
"                       nap             enable  -nap mode.\n"
"                       nonap           disable -nap mode.\n"
"                       sb:n            set -sb to n s, same as screen_blank:n\n"
"                       fbpm            disable -nofbpm mode.\n"
"                       nofbpm          enable  -nofbpm mode.\n"
"                       dpms            disable -nodpms mode.\n"
"                       nodpms          enable  -nodpms mode.\n"
"                       forcedpms       enable  -forcedpms mode.\n"
"                       noforcedpms     disable -forcedpms mode.\n"
"                       clientdpms      enable  -clientdpms mode.\n"
"                       noclientdpms    disable -clientdpms mode.\n"
"                       noserverdpms    enable  -noserverdpms mode.\n"
"                       serverdpms      disable -noserverdpms mode.\n"
"                       noultraext      enable  -noultraext mode.\n"
"                       ultraext        disable -noultraext mode.\n"
"                       chatwindow      enable  local chatwindow mode.\n"
"                       nochatwindow    disable local chatwindow mode.\n"
"                       chaton          begin chat using local window.\n"
"                       chatoff         end   chat using local window.\n"
"                       xdamage         enable  xdamage polling hints.\n"
"                       noxdamage       disable xdamage polling hints.\n"
"                       xd_area:A       set -xd_area max pixel area to \"A\"\n"
"                       xd_mem:f        set -xd_mem remembrance to \"f\"\n"
"                       fs:frac         set -fs fraction to \"frac\", e.g. 0.5\n"
"                       gaps:n          set -gaps to n.\n"
"                       grow:n          set -grow to n.\n"
"                       fuzz:n          set -fuzz to n.\n"
"                       snapfb          enable  -snapfb mode.\n"
"                       nosnapfb        disable -snapfb mode.\n"
"                       rawfb:str       set -rawfb mode to \"str\".\n"
"                       uinput_accel:f  set uinput_accel to f.\n"
"                       uinput_thresh:n set uinput_thresh to n.\n"
"                       uinput_reset:n  set uinput_reset to n ms.\n"
"                       uinput_always:n set uinput_always to 1/0.\n"
"                       progressive:n   set LibVNCServer -progressive slice\n"
"                                       height parameter to n.\n"
"                       desktop:str     set -desktop name to str for new clients.\n"
"                       rfbport:n       set -rfbport to n.\n"
"                       macnosaver      enable  -macnosaver mode.\n"
"                       macsaver        disable -macnosaver mode.\n"
"                       macnowait       enable  -macnowait  mode.\n"
"                       macwait         disable -macnowait  mode.\n"
"                       macwheel:n      set -macwheel to n.\n"
"                       macnoswap       enable  -macnoswap mouse button mode.\n"
"                       macswap         disable -macnoswap mouse button mode.\n"
"                       macnoresize     enable  -macnoresize mode.\n"
"                       macresize       disable -macnoresize mode.\n"
"                       maciconanim:n   set -maciconanim to n.\n"
"                       macmenu         enable  -macmenu  mode.\n"
"                       macnomenu       disable -macmenu  mode.\n"
"                       macuskbd        enable  -macuskbd mode.\n"
"                       macnouskbd      disable -macuskbd mode.\n"
/* access */
"                       httpport:n      set -httpport to n.\n"
"                       httpdir:dir     set -httpdir to dir (and enable http).\n"
"                       enablehttpproxy   enable  -enablehttpproxy mode.\n"
"                       noenablehttpproxy disable -enablehttpproxy mode.\n"
"                       alwaysshared     enable  -alwaysshared mode.\n"
"                       noalwaysshared   disable -alwaysshared mode.\n"
"                                        (may interfere with other options)\n"
"                       nevershared      enable  -nevershared mode.\n"
"                       nonevershared    disable -nevershared mode.\n"
"                                        (may interfere with other options)\n"
"                       dontdisconnect   enable  -dontdisconnect mode.\n"
"                       nodontdisconnect disable -dontdisconnect mode.\n"
"                                        (may interfere with other options)\n"
"                       debug_xevents   enable  debugging X events.\n"
"                       nodebug_xevents disable debugging X events.\n"
"                       debug_xdamage   enable  debugging X DAMAGE mechanism.\n"
"                       nodebug_xdamage disable debugging X DAMAGE mechanism.\n"
"                       debug_wireframe enable   debugging wireframe mechanism.\n"
"                       nodebug_wireframe disable debugging wireframe mechanism.\n"
"                       debug_scroll    enable  debugging scrollcopy mechanism.\n"
"                       nodebug_scroll  disable debugging scrollcopy mechanism.\n"
"                       debug_tiles     enable  -debug_tiles\n"
"                       nodebug_tiles   disable -debug_tiles\n"
"                       debug_grabs     enable  -debug_grabs\n"
"                       nodebug_grabs   disable -debug_grabs\n"
"                       debug_sel       enable  -debug_sel\n"
"                       nodebug_sel     disable -debug_sel\n"
"                       debug_ncache    enable  -debug_ncache\n"
"                       nodebug_ncache  disable -debug_ncache\n"
"                       dbg             enable  -dbg crash shell\n"
"                       nodbg           disable -dbg crash shell\n"
"\n"
"                       noremote        disable the -remote command processing,\n"
"                                       it cannot be turned back on.\n"
"\n"
"                       bcx_xattach:str  This remote control command is for\n"
"                       use with the BARCO xattach program or the x2x program.\n"
"                       Both of these programs are for 'pointer and keyboard'\n"
"                       sharing between separate X displays.  In general the\n"
"                       two displays are usually nearby, e.g. on the same desk,\n"
"                       and this allows the user to share a single pointer and\n"
"                       keyboard between them.  The user moves the mouse to\n"
"                       an edge and then the mouse pointer appears to 'jump'\n"
"                       to the other display screen.  Thus it emulates what a\n"
"                       single X server would do for two screens (e.g. :0.0 and\n"
"                       :0.1) The illusion of a single Xserver with multiple\n"
"                       screens is achieved by forwarding events to the 2nd\n"
"                       one via the XTEST extension.\n"
"\n"
"                       What the x11vnc bcx_xattach command does is to perform\n"
"                       some pointer movements to try to INDUCE xattach/x2x\n"
"                       to 'jump' to the other display.  In what follows the\n"
"                       'master' display refers to the one that when it has\n"
"                       'focus' it is basically doing nothing besides watching\n"
"                       for the mouse to go over an edge.  The 'slave'\n"
"                       display refers to the one to which the mouse and\n"
"                       keyboard is redirected to once an edge in the master\n"
"                       has been crossed.  Note that the x11vnc executing the\n"
"                       bcx_xattach command MUST be the one connected to the\n"
"                       *master* display.\n"
"\n"
"                       Also note that when input is being redirected (via\n"
"                       XTEST) from the master display to the slave display,\n"
"                       the master display's pointer and keyboard are *grabbed*\n"
"                       by xattach/x2x.  x11vnc can use this info to verify that\n"
"                       the master/slave mode change has taken place correctly.\n"
"                       If you specify the \"ifneeded\" option (see below)\n"
"                       and the initial grab state is that of the desired\n"
"                       final state, then no pointer movements are injected\n"
"                       and \"DONE,GRAB_OK\" is returned.\n"
"\n"
"                       \"str\" must contain one of \"up\", \"down\", \"left\",\n"
"                       or \"right\" to indicate the direction of the 'jump'.\n"
"                       \"str\" must also contain one of \"master_to_slave\"\n"
"                       or \"slave_to_master\" to indicate the type of mode\n"
"                       change induced by the jump.  Use \"M2S\" and \"S2M\"\n"
"                       as shorter aliases.\n"
"\n"
"                       \"str\" may be a \"+\" separated list of additional\n"
"                       tuning options.  The \"shift=n\" option indicates an\n"
"                       offset shift position away from (0,0) (default 20).\n"
"                       \"final=x+y\" specifies the final position of the cursor\n"
"                       at the end of the normal move sequence; default 30+30.\n"
"                       \"extra_move=x+y\" means to do one more pointer move\n"
"                       after \"final\" to x+y.  \"dt=n\" sets the sleep time\n"
"                       in milliseconds between pointer moves (default: 40ms)\n"
"                       \"retry=n\" specifies the maximum number of retries if\n"
"                       the grab state change fails. \"ifneeded\" means to not\n"
"                       apply the pointer movements if the initial grab state is\n"
"                       that of the desired final state. \"nograbcheck\" means\n"
"                       to not check if the grab state changed as expected and\n"
"                       only apply the pointer movements (default is to check\n"
"                       the grab states.)\n"
"\n"
"                       If you do not specify \"up\", etc., to bcx_xattach\n"
"                       nothing will be attempted and the command returns\n"
"                       the string FAIL,NO_DIRECTION_SPECIFIED.  If you do\n"
"                       not specify \"master_to_slave\" or \"M2S\", etc., to\n"
"                       bcx_xattach nothing will be attempted and the command\n"
"                       returns the string FAIL,NO_MODE_CHANGE_SPECIFIED.\n"
"\n"
"                       Otherwise, the returned string will contain \"DONE\".\n"
"                       It will be \"DONE,GRAB_OK\" if the grab state changed\n"
"                       as expected (or if \"ifneeded\" was supplied and\n"
"                       the initial grab state was already the desired\n"
"                       one.)  If the initial grab state was incorrect,\n"
"                       but the final grab state was correct then it is\n"
"                       \"DONE,GRAB_FAIL_INIT\".  If the initial grab state\n"
"                       was correct, but the final grab state was incorrect\n"
"                       then it is \"DONE,GRAB_FAIL_FINAL\".  If both are\n"
"                       incorrect it will be \"DONE,GRAB_FAIL\".  Under grab\n"
"                       failure the string will be followed by \":p1,k1-p2,k2\"\n"
"                       where  p1,k1 indicates the initial pointer and keyboard\n"
"                       grab states and p2,k2 the final ones. If GRAB_FAIL or\n"
"                       GRAB_FAIL_FINAL occurs, the action will be retried up\n"
"                       to 3 times; trying to reset the state and sleeping a\n"
"                       bit between each try.  Set retry=n to adjust the number\n"
"                       of retries, zero to disable retries.\n"
"\n"
"                       Examples:\n"
"                           -R bcx_xattach:down+M2S\n"
"                           -R bcx_xattach:up+S2M\n"
"                           -R bcx_xattach:up+S2M+nograbcheck+dt=30\n"
"                           -R bcx_xattach:down+M2S+extra_move=100+100\n"
"\n"
"                       or use -Q instead of -R to retrieve the result text.\n"
"\n"
"                       End of the bcx_xattach:str description.\n"
"\n"
"                       The vncconnect(1) command from standard VNC\n"
"                       distributions may also be used if string is prefixed\n"
"                       with \"cmd=\" E.g. 'vncconnect cmd=stop'.  Under some\n"
"                       circumstances xprop(1) can used if it supports -set\n"
"                       (see the FAQ).\n"
"\n"
"                       If \"-connect /path/to/file\" has been supplied to the\n"
"                       running x11vnc server then that file can be used as a\n"
"                       communication channel (this is the only way to remote\n"
"                       control one of many x11vnc's polling the same X display)\n"
"                       Simply run: 'x11vnc -connect /path/to/file -remote ...'\n"
"                       or you can directly write to the file via something\n"
"                       like: \"echo cmd=stop > /path/to/file\", etc.\n"
"\n"
"-query variable        Like -remote, except just query the value of\n"
"                       \"variable\".  \"-Q\" is an alias for \"-query\".\n"
"                       Multiple queries can be done by separating variables\n"
"                       by commas, e.g. -query var1,var2. The results come\n"
"                       back in the form ans=var1:value1,ans=var2:value2,...\n"
"                       to the standard output.  If a variable is read-only,\n"
"                       it comes back with prefix \"aro=\" instead of \"ans=\".\n"
"\n"
"                       Some -remote commands are pure actions that do not make\n"
"                       sense as variables, e.g. \"stop\" or \"disconnect\", in\n"
"                       these cases the value returned is \"N/A\".  To direct a\n"
"                       query straight to the X11VNC_REMOTE property or connect\n"
"                       file use \"qry=...\" instead of \"cmd=...\"\n"
"\n"
"                       ans= stop quit exit shutdown ping resend_cutbuffer\n"
"                       resend_clipboard resend_primary blacken zero refresh\n"
"                       reset close disconnect id_cmd id sid waitmapped\n"
"                       nowaitmapped clip flashcmap noflashcmap shiftcmap\n"
"                       truecolor notruecolor overlay nooverlay overlay_cursor\n"
"                       overlay_yescursor nooverlay_nocursor nooverlay_cursor\n"
"                       nooverlay_yescursor overlay_nocursor 8to24 no8to24\n"
"                       8to24_opts 24to32 no24to32 visual scale scale_cursor\n"
"                       viewonly noviewonly shared noshared forever noforever\n"
"                       once timeout tightfilexfer notightfilexfer ultrafilexfer\n"
"                       noultrafilexfer rfbversion deny lock nodeny unlock avahi\n"
"                       mdns zeroconf noavahi nomdns nozeroconf connect proxy\n"
"                       allowonce allow noipv6 ipv6 noipv4 ipv4 no6 6 localhost\n"
"                       nolocalhost listen lookup nolookup accept afteraccept\n"
"                       gone shm noshm flipbyteorder noflipbyteorder onetile\n"
"                       noonetile solid_color solid nosolid blackout xinerama\n"
"                       noxinerama xtrap noxtrap xrandr noxrandr xrandr_mode\n"
"                       rotate padgeom quiet q noquiet modtweak nomodtweak xkb\n"
"                       noxkb capslock nocapslock skip_lockkeys noskip_lockkeys\n"
"                       skip_keycodes sloppy_keys nosloppy_keys skip_dups\n"
"                       noskip_dups add_keysyms noadd_keysyms clear_mods\n"
"                       noclear_mods clear_keys noclear_keys clear_all\n"
"                       clear_locks keystate remap repeat norepeat fb nofb bell\n"
"                       nobell sendbell sel nosel primary noprimary setprimary\n"
"                       nosetprimary clipboard noclipboard setclipboard\n"
"                       nosetclipboard seldir cursorshape nocursorshape\n"
"                       cursorpos nocursorpos cursor_drag nocursor_drag cursor\n"
"                       show_cursor noshow_cursor nocursor arrow xfixes noxfixes\n"
"                       xdamage noxdamage xd_area xd_mem alphacut alphafrac\n"
"                       alpharemove noalpharemove alphablend noalphablend\n"
"                       xwarppointer xwarp noxwarppointer noxwarp always_inject\n"
"                       noalways_inject buttonmap dragging nodragging ncache_cr\n"
"                       noncache_cr ncache_no_moveraise noncache_no_moveraise\n"
"                       ncache_no_dtchange noncache_no_dtchange\n"
"                       ncache_no_rootpixmap noncache_no_rootpixmap\n"
"                       ncache_reset_rootpixmap ncrp ncache_keep_anims\n"
"                       noncache_keep_anims ncache_old_wm noncache_old_wm\n"
"                       ncache_pad ncache noncache ncache_size debug_ncache\n"
"                       nodebug_ncache wireframe_mode wireframe wf nowireframe\n"
"                       nowf wireframelocal wfl nowireframelocal nowfl\n"
"                       wirecopyrect wcr nowirecopyrect nowcr scr_area\n"
"                       scr_skip scr_inc scr_keys scr_term scr_keyrepeat\n"
"                       scr_parms scrollcopyrect scr noscrollcopyrect\n"
"                       noscr fixscreen noxrecord xrecord reset_record\n"
"                       pointer_mode pm input_skip allinput noallinput\n"
"                       input_eagerly noinput_eagerly input grabkbd nograbkbd\n"
"                       grabptr nograbptr grabalways nograbalways grablocal\n"
"                       client_input ssltimeout speeds wmdt debug_pointer dp\n"
"                       nodebug_pointer nodp debug_keyboard dk nodebug_keyboard\n"
"                       nodk keycode keysym ptr fakebuttonevent sleep get_xprop\n"
"                       set_xprop wininfo bcx_xattach deferupdate defer\n"
"                       setdefer extra_fbur wait_ui wait_bog nowait_bog\n"
"                       slow_fb xrefresh wait readtimeout nap nonap sb\n"
"                       screen_blank fbpm nofbpm dpms nodpms clientdpms\n"
"                       noclientdpms forcedpms noforcedpms noserverdpms\n"
"                       serverdpms noultraext ultraext chatwindow nochatwindow\n"
"                       chaton chatoff fs gaps grow fuzz snapfb nosnapfb\n"
"                       rawfb uinput_accel uinput_thresh uinput_reset\n"
"                       uinput_always progressive rfbport http nohttp httpport\n"
"                       httpdir enablehttpproxy noenablehttpproxy alwaysshared\n"
"                       noalwaysshared nevershared noalwaysshared dontdisconnect\n"
"                       nodontdisconnect desktop debug_xevents nodebug_xevents\n"
"                       debug_xevents debug_xdamage nodebug_xdamage\n"
"                       debug_xdamage debug_wireframe nodebug_wireframe\n"
"                       debug_wireframe debug_scroll nodebug_scroll debug_scroll\n"
"                       debug_tiles dbt nodebug_tiles nodbt debug_tiles\n"
"                       debug_grabs nodebug_grabs debug_sel nodebug_sel dbg\n"
"                       nodbg macnosaver macsaver nomacnosaver macnowait macwait\n"
"                       nomacnowait macwheel macnoswap macswap nomacnoswap\n"
"                       macnoresize macresize nomacnoresize maciconanim macmenu\n"
"                       macnomenu nomacmenu macuskbd nomacuskbd noremote\n"
"\n"
"                       aro=  noop display vncdisplay icon_mode autoport\n"
"                       loop loopbg desktopname guess_desktop guess_dbus\n"
"                       http_url auth xauth users rootshift clipshift scale_str\n"
"                       scaled_x scaled_y scale_numer scale_denom scale_fac_x\n"
"                       scale_fac_y scaling_blend scaling_nomult4 scaling_pad\n"
"                       scaling_interpolate inetd privremote unsafe safer nocmds\n"
"                       passwdfile unixpw unixpw_nis unixpw_list ssl ssl_pem\n"
"                       sslverify stunnel stunnel_pem https httpsredir usepw\n"
"                       using_shm logfile o flag rmflag rc norc h help V version\n"
"                       lastmod bg sigpipe threads readrate netrate netlatency\n"
"                       pipeinput clients client_count pid ext_xtest ext_xtrap\n"
"                       ext_xrecord ext_xkb ext_xshm ext_xinerama ext_overlay\n"
"                       ext_xfixes ext_xdamage ext_xrandr rootwin num_buttons\n"
"                       button_mask mouse_x mouse_y grab_state pointer_pos\n"
"                       pointer_x pointer_y pointer_same pointer_root\n"
"                       pointer_mask bpp depth indexed_color dpy_x dpy_y wdpy_x\n"
"                       wdpy_y off_x off_y cdpy_x cdpy_y coff_x coff_y rfbauth\n"
"                       passwd viewpasswd\n"
"\n"
"-QD variable           Just like -query variable, but returns the default\n"
"                       value for that parameter (no running x11vnc server\n"
"                       is consulted)\n"
"\n"
"-sync                  By default -remote commands are run asynchronously, that\n"
"                       is, the request is posted and the program immediately\n"
"                       exits.  Use -sync to have the program wait for an\n"
"                       acknowledgement from the x11vnc server that command was\n"
"                       processed (somehow).  On the other hand -query requests\n"
"                       are always processed synchronously because they have\n"
"                       to wait for the answer.\n"
"\n"
"                       Also note that if both -remote and -query requests are\n"
"                       supplied on the command line, the -remote is processed\n"
"                       first (synchronously: no need for -sync), and then\n"
"                       the -query request is processed in the normal way.\n"
"                       This allows for a reliable way to see if the -remote\n"
"                       command was processed by querying for any new settings.\n"
"                       Note however that there is timeout of a few seconds\n"
"                       (see the next paragraph) so if the x11vnc takes longer\n"
"                       than that to process the requests the requester will\n"
"                       think that a failure has taken place.\n"
"\n"
"                       The default is to wait 3.5 seconds.  Or if cmd=stop\n"
"                       only 1.0 seconds.  If cmd matches 'script:' then it\n"
"                       will wait up to 10.0 seconds.  Set X11VNC_SYNC_TIMEOUT\n"
"                       to the number of seconds you want it to wait.\n"
"\n"
"-query_retries str     If a query fails to get a response from an x11vnc\n"
"                       server, retry up to n times.  \"str\" is specified as\n"
"                       n[:t][/match]  Optionally the delay between tries may\n"
"                       be specified by \"t\" a floating point time (default\n"
"                       0.5 seconds.)  Note: the response is not checked for\n"
"                       validity or whether it corresponds to the query sent.\n"
"                       The query \"ping:mystring\" may be used to help uniquely\n"
"                       identify the query.  Optionally, a matching string after\n"
"                       a \"/\" will be used to check the result text.  Up to\n"
"                       n retries will take place until the matching string is\n"
"                       found in the output text.  If the match string is never\n"
"                       found the program's exit code is 1; if the match is\n"
"                       found it exits with 0.  Note that there may be stdout\n"
"                       printed for each retry (i.e. multiple lines printed\n"
"                       out to stdout.)\n"
"                       Example: -query_retries 4:1.5/grab_state\n"
"\n"
"-remote_prefix str     Enable a remote-control communication channel for\n"
"                       connected VNC clients.  str is a non-empty string. If a\n"
"                       VNC client sends rfbCutText having the prefix \"str\"\n"
"                       then the part after it is processed as though it were\n"
"                       sent via 'x11vnc -remote ...'.  If it begins with\n"
"                       neither 'cmd=' nor 'qry=' then 'qry=' is assumed.\n"
"                       Any corresponding output text for that remote control\n"
"                       command is sent back to all client as rfbCutText.\n"
"                       The returned output is also prefixed with \"str\".\n"
"                       Example: -remote_prefix DO_THIS:\n"
"\n"
"                       Note that enabling -remote_prefix allows the remote\n"
"                       VNC viewers to run x11vnc -remote commands.  Do not\n"
"                       use this option if they are not to be trusted.\n"
"\n"
"-noremote              Do not process any remote control commands or queries.\n"
"-yesremote             Do process remote control commands or queries.\n"
"                       Default: %s\n"
"\n"
"                       A note about security wrt remote control commands.\n"
"                       If someone can connect to the X display and change\n"
"                       the property X11VNC_REMOTE, then they can remotely\n"
"                       control x11vnc.  Normally access to the X display is\n"
"                       protected.  Note that if they can modify X11VNC_REMOTE\n"
"                       on the X server, they have enough permissions to also\n"
"                       run their own x11vnc and thus have complete control\n"
"                       of the desktop.  If the  \"-connect /path/to/file\"\n"
"                       channel is being used, obviously anyone who can write\n"
"                       to /path/to/file can remotely control x11vnc.  So be\n"
"                       sure to protect the X display and that file's write\n"
"                       permissions.  See -privremote below.\n"
"\n"
"                       If you are paranoid and do not think -noremote is\n"
"                       enough, to disable the X11VNC_REMOTE property channel\n"
"                       completely use -novncconnect, or use the -safer option\n"
"                       that shuts many things off.\n"
"\n"
"-unsafe                A few remote commands are disabled by default\n"
"                       (currently: id:pick, accept:<cmd>, gone:<cmd>, and\n"
"                       rawfb:setup:<cmd>) because they are associated with\n"
"                       running external programs.  If you specify -unsafe, then\n"
"                       these remote-control commands are allowed.  Note that\n"
"                       you can still specify these parameters on the command\n"
"                       line, they just cannot be invoked via remote-control.\n"
"-safer                 Equivalent to: -novncconnect -noremote and prohibiting\n"
"                       -gui and the -connect file. Shuts off communcation\n"
"                       channels.\n"
"-privremote            Perform some sanity checks and disable remote-control\n"
"                       commands if it appears that the X DISPLAY and/or\n"
"                       connectfile can be accessed by other users.  Once\n"
"                       remote-control is disabled it cannot be turned back on.\n"
"-nocmds                No external commands (e.g. system(3), popen(3), exec(3))\n"
"                       will be run at all.\n"
"-allowedcmds list      \"list\" contains a comma separated list of the only\n"
"                       external commands that can be run.  The full list of\n"
"                       associated options is:\n"
"\n"
"                        stunnel, ssl, unixpw, WAIT, zeroconf, id, accept,\n"
"                        afteraccept, gone, pipeinput, v4l-info, rawfb-setup,\n"
"                        dt, gui, ssh, storepasswd, passwdfile, custom_passwd,\n"
"                        findauth, crash.\n"
"\n"
"                       See each option's help to learn the associated external\n"
"                       command.  Note that the -nocmds option takes precedence\n"
"                       and disables all external commands.\n"
"\n"
"-deny_all              For use with -remote nodeny: start out denying all\n"
"                       incoming clients until \"-remote nodeny\" is used to\n"
"                       let them in.\n"
"\n"
"%s\n"
"\n"
"These options are passed to LibVNCServer:\n"
"\n"
;
	/* have both our help and rfbUsage to stdout for more(1), etc. */
	dup2(1, 2);

	/* register extension(s) to get their help output */
#ifdef LIBVNCSERVER_WITH_TIGHTVNC_FILETRANSFER
	rfbRegisterTightVNCFileTransferExtension();
#endif

	if (mode == 1) {
		char *p;	
		int l = 0;
		fprintf(stderr, "x11vnc: allow VNC connections to real "
		    "X11 displays. %s\n\nx11vnc options:\n", lastmod);
		p = strtok(help, "\n");
		while (p) {
			int w = 23;
			char tmp[100];
			if (p[0] == '-') {
				memset(tmp, 0, sizeof(tmp));
				strncpy(tmp, p, w);
				fprintf(stderr, "  %s", tmp);
				l++;
				if (l % 3 == 0) {
					fprintf(stderr, "\n");
				}
			}
			p = strtok(NULL, "\n");
		}
		fprintf(stderr, "\n\nLibVNCServer options:\n");
		rfbUsage();
		fprintf(stderr, "\n");
		exit(1);
	}
#if 1
	fprintf(stderr, help, lastmod,
		POLL_8TO24_DELAY,
		scaling_copyrect ? ":cr":":nocr",
		view_only ? "on":"off",
		shared ? "on":"off",
		vnc_connect ? "-vncconnect":"-novncconnect",
		xinerama ? "-xinerama":"-noxinerama",
		use_modifier_tweak ? "-modtweak":"-nomodtweak",
		skip_duplicate_key_events ? "-skip_dups":"-noskip_dups",
		add_keysyms ? "-add_keysyms":"-noadd_keysyms",
		no_autorepeat ? "-norepeat":"-repeat",
		alt_arrow_max, alt_arrow,
		alpha_threshold,
		alpha_frac,
		cursor_pos_updates ? "-cursorpos":"-nocursorpos",
		wireframe ? "-wireframe":"-nowireframe",
		WIREFRAME_PARMS,
		wireframe_copyrect_default,
		scroll_copyrect_default,
		scrollcopyrect_min_area,
		scroll_skip_str0 ? scroll_skip_str0 : "(empty)",
		scroll_term_str0,
		max_keyrepeat_str0,
		SCROLL_COPYRECT_PARMS,
		pointer_mode_max, pointer_mode,
		ui_skip,
		defer_update,
		waitms,
		wait_ui,
		take_naps ? "take naps":"no naps",
		screen_blank,
		rfbMaxClientWait/1000,
		watch_fbpm ? "-nofbpm":"-fbpm",
		watch_dpms ? "-nodpms":"-dpms",
		xdamage_max_area, NSCAN, xdamage_memory,
		use_threads ? "-threads":"-nothreads",
		fs_frac,
		gaps_fill,
		grow_fill,
		tile_fuzz,
		accept_remote_cmds ? "-yesremote":"-noremote",
		""
	);
#else
	fprintf(stderr, "%s", help);
#endif

	rfbUsage();
#endif
	exit(1);
}

void xopen_display_fail_message(char *disp) {
	fprintf(stderr, "\n");
	fprintf(stderr, "*** x11vnc was unable to open the X DISPLAY: \"%s\","
	    " it cannot continue.\n", disp);
	fprintf(stderr, "*** There may be \"Xlib:\" error messages above"
	    " with details about the failure.\n");
	fprintf(stderr, "\n");
	fprintf(stderr, "Some tips and guidelines:\n");
	fprintf(stderr, "\n");
	fprintf(stderr, "** An X server (the one you wish to view) must"
	    " be running before x11vnc is\n");
	fprintf(stderr, "   started: x11vnc does not start the X server.  "
	    "(however, see the -create\n");
	fprintf(stderr, "   option if that is what you really want).\n");
	fprintf(stderr, "\n");
	fprintf(stderr, "** You must use -display <disp>, -OR- set and"
	    " export your $DISPLAY\n");
	fprintf(stderr, "   environment variable to refer to the display of"
	    " the desired X server.\n");
	fprintf(stderr, " - Usually the display is simply \":0\" (in fact"
	    " x11vnc uses this if you forget\n");
	fprintf(stderr, "   to specify it), but in some multi-user"
	    " situations it could be \":1\", \":2\",\n"); 
	fprintf(stderr, "   or even \":137\".  Ask your administrator"
	    " or a guru if you are having\n");
	fprintf(stderr, "   difficulty determining what your X DISPLAY is.\n");
	fprintf(stderr, "\n");
	fprintf(stderr, "** Next, you need to have sufficient permissions"
	    " (Xauthority) \n");
	fprintf(stderr, "   to connect to the X DISPLAY.   Here are some"
	    " Tips:\n");
	fprintf(stderr, "\n");
	fprintf(stderr, " - Often, you just need to run x11vnc as the user"
	    " logged into the X session.\n");
	fprintf(stderr, "   So make sure to be that user when you type"
	    " x11vnc.\n");
	fprintf(stderr, " - Being root is usually not enough because the"
	    " incorrect MIT-MAGIC-COOKIE\n");
	fprintf(stderr, "   file may be accessed.  The cookie file contains"
	    " the secret key that\n");
	fprintf(stderr, "   allows x11vnc to connect to the desired"
	    " X DISPLAY.\n");
	fprintf(stderr, " - You can explicitly indicate which MIT-MAGIC-COOKIE"
	    " file should be used\n");
	fprintf(stderr, "   by the -auth option, e.g.:\n");
	fprintf(stderr, "       x11vnc -auth /home/someuser/.Xauthority"
	    " -display :0\n");
	fprintf(stderr, "       x11vnc -auth /tmp/.gdmzndVlR"
	    " -display :0\n");
	fprintf(stderr, "   you must have read permission for the auth file.\n");
	fprintf(stderr, "   See also '-auth guess' and '-findauth' discussed below.\n");
	fprintf(stderr, "\n");
	fprintf(stderr, "** If NO ONE is logged into an X session yet, but"
	    " there is a greeter login\n");
	fprintf(stderr, "   program like \"gdm\", \"kdm\", \"xdm\", or"
	    " \"dtlogin\" running, you will need\n");
	fprintf(stderr, "   to find and use the raw display manager"
	    " MIT-MAGIC-COOKIE file.\n");
	fprintf(stderr, "   Some examples for various display managers:\n");
	fprintf(stderr, "\n");
	fprintf(stderr, "     gdm:     -auth /var/gdm/:0.Xauth\n");
	fprintf(stderr, "              -auth /var/lib/gdm/:0.Xauth\n");
	fprintf(stderr, "     kdm:     -auth /var/lib/kdm/A:0-crWk72\n");
	fprintf(stderr, "              -auth /var/run/xauth/A:0-crWk72\n");
	fprintf(stderr, "     xdm:     -auth /var/lib/xdm/authdir/authfiles/A:0-XQvaJk\n");
	fprintf(stderr, "     dtlogin: -auth /var/dt/A:0-UgaaXa\n");
	fprintf(stderr, "\n");
	fprintf(stderr, "   Sometimes the command \"ps wwwwaux | grep auth\""
	    " can reveal the file location.\n");
	fprintf(stderr, "\n");
	fprintf(stderr, "   Starting with x11vnc 0.9.9 you can have it try to guess by using:\n");
	fprintf(stderr, "\n");
	fprintf(stderr, "              -auth guess\n");
	fprintf(stderr, "\n");
	fprintf(stderr, "   (see also the x11vnc -findauth option.)\n");
	fprintf(stderr, "\n");
	fprintf(stderr, "   Only root will have read permission for the"
	    " file, and so x11vnc must be run\n");
	fprintf(stderr, "   as root (or copy it).  The random characters in the filenames"
	    " will of course\n");
	fprintf(stderr, "   change and the directory the cookie file resides in"
	    " is system dependent.\n");
	fprintf(stderr, "\n");
	fprintf(stderr, "See also: http://www.karlrunge.com/x11vnc/faq.html\n");
}

void nopassword_warning_msg(int gotloc) {

	char str1[] =
"###############################################################\n"
"#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#\n"
"#@                                                           @#\n"
"#@  **  WARNING  **  WARNING  **  WARNING  **  WARNING  **   @#\n"
"#@                                                           @#\n"
"#@        YOU ARE RUNNING X11VNC WITHOUT A PASSWORD!!        @#\n"
"#@                                                           @#\n"
"#@  This means anyone with network access to this computer   @#\n"
"#@  may be able to view and control your desktop.            @#\n"
"#@                                                           @#\n"
"#@ >>> If you did not mean to do this Press CTRL-C now!! <<< @#\n"
"#@                                                           @#\n"
"#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#\n"
;
	char str2[] =
"#@                                                           @#\n"
"#@  You can create an x11vnc password file by running:       @#\n"
"#@                                                           @#\n"
"#@       x11vnc -storepasswd password /path/to/passfile      @#\n"
"#@  or   x11vnc -storepasswd /path/to/passfile               @#\n"
"#@  or   x11vnc -storepasswd                                 @#\n"
"#@                                                           @#\n"
"#@  (the last one will use ~/.vnc/passwd)                    @#\n"
"#@                                                           @#\n"
"#@  and then starting x11vnc via:                            @#\n"
"#@                                                           @#\n"
"#@      x11vnc -rfbauth /path/to/passfile                    @#\n"
"#@                                                           @#\n"
"#@  an existing ~/.vnc/passwd file from another VNC          @#\n"
"#@  application will work fine too.                          @#\n"
"#@                                                           @#\n"
"#@  You can also use the -passwdfile or -passwd options.     @#\n"
"#@  (note -passwd is unsafe if local users are not trusted)  @#\n"
"#@                                                           @#\n"
"#@  Make sure any -rfbauth and -passwdfile password files    @#\n"
"#@  cannot be read by untrusted users.                       @#\n"
"#@                                                           @#\n"
"#@  Use x11vnc -usepw to automatically use your              @#\n"
"#@  ~/.vnc/passwd or ~/.vnc/passwdfile password files.       @#\n"
"#@  (and prompt you to create ~/.vnc/passwd if neither       @#\n"
"#@  file exists.)  Under -usepw, x11vnc will exit if it      @#\n"
"#@  cannot find a password to use.                           @#\n"
"#@                                                           @#\n"
"#@                                                           @#\n"
"#@  Even with a password, the subsequent VNC traffic is      @#\n"
"#@  sent in the clear.  Consider tunnelling via ssh(1):      @#\n"
"#@                                                           @#\n"
"#@    http://www.karlrunge.com/x11vnc/#tunnelling            @#\n"
"#@                                                           @#\n"
"#@  Or using the x11vnc SSL options: -ssl and -stunnel       @#\n"
"#@                                                           @#\n"
"#@  Please Read the documention for more info about          @#\n"
"#@  passwords, security, and encryption.                     @#\n"
"#@                                                           @#\n"
"#@    http://www.karlrunge.com/x11vnc/faq.html#faq-passwd    @#\n"
;
	char str3[] =
"#@                                                           @#\n"
"#@  You are using the -localhost option and that is a good   @#\n"
"#@  thing!! Especially if you ssh(1) into this machine and   @#\n"
"#@  use port redirection.  Nevertheless, without a password  @#\n"
"#@  other users could possibly do redirection as well to     @#\n"
"#@  gain access to your desktop.                             @#\n"
;
	char str4[] =
"#@                                                           @#\n"
"#@  To disable this warning use the -nopw option, or put     @#\n"
"#@  'nopw' on a line in your ~/.x11vncrc file.               @#\n"
"#@                                                           @#\n"
"#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#\n"
"###############################################################\n"
;
	char str5[] =
"###############################################################\n\n"
;
	if (inetd) {
		return;
	}

	fprintf(stderr, "%s", str1);
	fflush(stderr);
#if !PASSWD_REQUIRED
	usleep(750 * 1000);
#endif
	if (!quiet) {
		fprintf(stderr, "%s", str2);
		if (gotloc) {
			fprintf(stderr, "%s", str3);
		}
		fprintf(stderr, "%s", str4);
	} else {
		fprintf(stderr, "%s", str5);
	}
	fflush(stderr);
#if !PASSWD_REQUIRED
	usleep(250 * 1000);
#endif
}

void print_license(void) {
	char license[] = 
#if !SKIP_HELP
"		    GNU GENERAL PUBLIC LICENSE\n"
"		       Version 2, June 1991\n"
"\n"
" Copyright (C) 1989, 1991 Free Software Foundation, Inc.\n"
"                          59 Temple Place - Suite 330, Boston, MA\n"
"                          02111-1307, USA.\n"
" Everyone is permitted to copy and distribute verbatim copies\n"
" of this license document, but changing it is not allowed.\n"
"\n"
"			    Preamble\n"
"\n"
"  The licenses for most software are designed to take away your\n"
"freedom to share and change it.  By contrast, the GNU General Public\n"
"License is intended to guarantee your freedom to share and change free\n"
"software--to make sure the software is free for all its users.  This\n"
"General Public License applies to most of the Free Software\n"
"Foundation's software and to any other program whose authors commit to\n"
"using it.  (Some other Free Software Foundation software is covered by\n"
"the GNU Library General Public License instead.)  You can apply it to\n"
"your programs, too.\n"
"\n"
"  When we speak of free software, we are referring to freedom, not\n"
"price.  Our General Public Licenses are designed to make sure that you\n"
"have the freedom to distribute copies of free software (and charge for\n"
"this service if you wish), that you receive source code or can get it\n"
"if you want it, that you can change the software or use pieces of it\n"
"in new free programs; and that you know you can do these things.\n"
"\n"
"  To protect your rights, we need to make restrictions that forbid\n"
"anyone to deny you these rights or to ask you to surrender the rights.\n"
"These restrictions translate to certain responsibilities for you if you\n"
"distribute copies of the software, or if you modify it.\n"
"\n"
"  For example, if you distribute copies of such a program, whether\n"
"gratis or for a fee, you must give the recipients all the rights that\n"
"you have.  You must make sure that they, too, receive or can get the\n"
"source code.  And you must show them these terms so they know their\n"
"rights.\n"
"\n"
"  We protect your rights with two steps: (1) copyright the software, and\n"
"(2) offer you this license which gives you legal permission to copy,\n"
"distribute and/or modify the software.\n"
"\n"
"  Also, for each author's protection and ours, we want to make certain\n"
"that everyone understands that there is no warranty for this free\n"
"software.  If the software is modified by someone else and passed on, we\n"
"want its recipients to know that what they have is not the original, so\n"
"that any problems introduced by others will not reflect on the original\n"
"authors' reputations.\n"
"\n"
"  Finally, any free program is threatened constantly by software\n"
"patents.  We wish to avoid the danger that redistributors of a free\n"
"program will individually obtain patent licenses, in effect making the\n"
"program proprietary.  To prevent this, we have made it clear that any\n"
"patent must be licensed for everyone's free use or not licensed at all.\n"
"\n"
"  The precise terms and conditions for copying, distribution and\n"
"modification follow.\n"
"\n"
"		    GNU GENERAL PUBLIC LICENSE\n"
"   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n"
"\n"
"  0. This License applies to any program or other work which contains\n"
"a notice placed by the copyright holder saying it may be distributed\n"
"under the terms of this General Public License.  The \"Program\", below,\n"
"refers to any such program or work, and a \"work based on the Program\"\n"
"means either the Program or any derivative work under copyright law:\n"
"that is to say, a work containing the Program or a portion of it,\n"
"either verbatim or with modifications and/or translated into another\n"
"language.  (Hereinafter, translation is included without limitation in\n"
"the term \"modification\".)  Each licensee is addressed as \"you\".\n"
"\n"
"Activities other than copying, distribution and modification are not\n"
"covered by this License; they are outside its scope.  The act of\n"
"running the Program is not restricted, and the output from the Program\n"
"is covered only if its contents constitute a work based on the\n"
"Program (independent of having been made by running the Program).\n"
"Whether that is true depends on what the Program does.\n"
"\n"
"  1. You may copy and distribute verbatim copies of the Program's\n"
"source code as you receive it, in any medium, provided that you\n"
"conspicuously and appropriately publish on each copy an appropriate\n"
"copyright notice and disclaimer of warranty; keep intact all the\n"
"notices that refer to this License and to the absence of any warranty;\n"
"and give any other recipients of the Program a copy of this License\n"
"along with the Program.\n"
"\n"
"You may charge a fee for the physical act of transferring a copy, and\n"
"you may at your option offer warranty protection in exchange for a fee.\n"
"\n"
"  2. You may modify your copy or copies of the Program or any portion\n"
"of it, thus forming a work based on the Program, and copy and\n"
"distribute such modifications or work under the terms of Section 1\n"
"above, provided that you also meet all of these conditions:\n"
"\n"
"    a) You must cause the modified files to carry prominent notices\n"
"    stating that you changed the files and the date of any change.\n"
"\n"
"    b) You must cause any work that you distribute or publish, that in\n"
"    whole or in part contains or is derived from the Program or any\n"
"    part thereof, to be licensed as a whole at no charge to all third\n"
"    parties under the terms of this License.\n"
"\n"
"    c) If the modified program normally reads commands interactively\n"
"    when run, you must cause it, when started running for such\n"
"    interactive use in the most ordinary way, to print or display an\n"
"    announcement including an appropriate copyright notice and a\n"
"    notice that there is no warranty (or else, saying that you provide\n"
"    a warranty) and that users may redistribute the program under\n"
"    these conditions, and telling the user how to view a copy of this\n"
"    License.  (Exception: if the Program itself is interactive but\n"
"    does not normally print such an announcement, your work based on\n"
"    the Program is not required to print an announcement.)\n"
"\n"
"These requirements apply to the modified work as a whole.  If\n"
"identifiable sections of that work are not derived from the Program,\n"
"and can be reasonably considered independent and separate works in\n"
"themselves, then this License, and its terms, do not apply to those\n"
"sections when you distribute them as separate works.  But when you\n"
"distribute the same sections as part of a whole which is a work based\n"
"on the Program, the distribution of the whole must be on the terms of\n"
"this License, whose permissions for other licensees extend to the\n"
"entire whole, and thus to each and every part regardless of who wrote it.\n"
"\n"
"Thus, it is not the intent of this section to claim rights or contest\n"
"your rights to work written entirely by you; rather, the intent is to\n"
"exercise the right to control the distribution of derivative or\n"
"collective works based on the Program.\n"
"\n"
"In addition, mere aggregation of another work not based on the Program\n"
"with the Program (or with a work based on the Program) on a volume of\n"
"a storage or distribution medium does not bring the other work under\n"
"the scope of this License.\n"
"\n"
"  3. You may copy and distribute the Program (or a work based on it,\n"
"under Section 2) in object code or executable form under the terms of\n"
"Sections 1 and 2 above provided that you also do one of the following:\n"
"\n"
"    a) Accompany it with the complete corresponding machine-readable\n"
"    source code, which must be distributed under the terms of Sections\n"
"    1 and 2 above on a medium customarily used for software interchange; or,\n"
"\n"
"    b) Accompany it with a written offer, valid for at least three\n"
"    years, to give any third party, for a charge no more than your\n"
"    cost of physically performing source distribution, a complete\n"
"    machine-readable copy of the corresponding source code, to be\n"
"    distributed under the terms of Sections 1 and 2 above on a medium\n"
"    customarily used for software interchange; or,\n"
"\n"
"    c) Accompany it with the information you received as to the offer\n"
"    to distribute corresponding source code.  (This alternative is\n"
"    allowed only for noncommercial distribution and only if you\n"
"    received the program in object code or executable form with such\n"
"    an offer, in accord with Subsection b above.)\n"
"\n"
"The source code for a work means the preferred form of the work for\n"
"making modifications to it.  For an executable work, complete source\n"
"code means all the source code for all modules it contains, plus any\n"
"associated interface definition files, plus the scripts used to\n"
"control compilation and installation of the executable.  However, as a\n"
"special exception, the source code distributed need not include\n"
"anything that is normally distributed (in either source or binary\n"
"form) with the major components (compiler, kernel, and so on) of the\n"
"operating system on which the executable runs, unless that component\n"
"itself accompanies the executable.\n"
"\n"
"If distribution of executable or object code is made by offering\n"
"access to copy from a designated place, then offering equivalent\n"
"access to copy the source code from the same place counts as\n"
"distribution of the source code, even though third parties are not\n"
"compelled to copy the source along with the object code.\n"
"\n"
"  4. You may not copy, modify, sublicense, or distribute the Program\n"
"except as expressly provided under this License.  Any attempt\n"
"otherwise to copy, modify, sublicense or distribute the Program is\n"
"void, and will automatically terminate your rights under this License.\n"
"However, parties who have received copies, or rights, from you under\n"
"this License will not have their licenses terminated so long as such\n"
"parties remain in full compliance.\n"
"\n"
"  5. You are not required to accept this License, since you have not\n"
"signed it.  However, nothing else grants you permission to modify or\n"
"distribute the Program or its derivative works.  These actions are\n"
"prohibited by law if you do not accept this License.  Therefore, by\n"
"modifying or distributing the Program (or any work based on the\n"
"Program), you indicate your acceptance of this License to do so, and\n"
"all its terms and conditions for copying, distributing or modifying\n"
"the Program or works based on it.\n"
"\n"
"  6. Each time you redistribute the Program (or any work based on the\n"
"Program), the recipient automatically receives a license from the\n"
"original licensor to copy, distribute or modify the Program subject to\n"
"these terms and conditions.  You may not impose any further\n"
"restrictions on the recipients' exercise of the rights granted herein.\n"
"You are not responsible for enforcing compliance by third parties to\n"
"this License.\n"
"\n"
"  7. If, as a consequence of a court judgment or allegation of patent\n"
"infringement or for any other reason (not limited to patent issues),\n"
"conditions are imposed on you (whether by court order, agreement or\n"
"otherwise) that contradict the conditions of this License, they do not\n"
"excuse you from the conditions of this License.  If you cannot\n"
"distribute so as to satisfy simultaneously your obligations under this\n"
"License and any other pertinent obligations, then as a consequence you\n"
"may not distribute the Program at all.  For example, if a patent\n"
"license would not permit royalty-free redistribution of the Program by\n"
"all those who receive copies directly or indirectly through you, then\n"
"the only way you could satisfy both it and this License would be to\n"
"refrain entirely from distribution of the Program.\n"
"\n"
"If any portion of this section is held invalid or unenforceable under\n"
"any particular circumstance, the balance of the section is intended to\n"
"apply and the section as a whole is intended to apply in other\n"
"circumstances.\n"
"\n"
"It is not the purpose of this section to induce you to infringe any\n"
"patents or other property right claims or to contest validity of any\n"
"such claims; this section has the sole purpose of protecting the\n"
"integrity of the free software distribution system, which is\n"
"implemented by public license practices.  Many people have made\n"
"generous contributions to the wide range of software distributed\n"
"through that system in reliance on consistent application of that\n"
"system; it is up to the author/donor to decide if he or she is willing\n"
"to distribute software through any other system and a licensee cannot\n"
"impose that choice.\n"
"\n"
"This section is intended to make thoroughly clear what is believed to\n"
"be a consequence of the rest of this License.\n"
"\n"
"  8. If the distribution and/or use of the Program is restricted in\n"
"certain countries either by patents or by copyrighted interfaces, the\n"
"original copyright holder who places the Program under this License\n"
"may add an explicit geographical distribution limitation excluding\n"
"those countries, so that distribution is permitted only in or among\n"
"countries not thus excluded.  In such case, this License incorporates\n"
"the limitation as if written in the body of this License.\n"
"\n"
"  9. The Free Software Foundation may publish revised and/or new versions\n"
"of the General Public License from time to time.  Such new versions will\n"
"be similar in spirit to the present version, but may differ in detail to\n"
"address new problems or concerns.\n"
"\n"
"Each version is given a distinguishing version number.  If the Program\n"
"specifies a version number of this License which applies to it and \"any\n"
"later version\", you have the option of following the terms and conditions\n"
"either of that version or of any later version published by the Free\n"
"Software Foundation.  If the Program does not specify a version number of\n"
"this License, you may choose any version ever published by the Free Software\n"
"Foundation.\n"
"\n"
"  10. If you wish to incorporate parts of the Program into other free\n"
"programs whose distribution conditions are different, write to the author\n"
"to ask for permission.  For software which is copyrighted by the Free\n"
"Software Foundation, write to the Free Software Foundation; we sometimes\n"
"make exceptions for this.  Our decision will be guided by the two goals\n"
"of preserving the free status of all derivatives of our free software and\n"
"of promoting the sharing and reuse of software generally.\n"
"\n"
#endif
"			    NO WARRANTY\n"
"\n"
"  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\n"
"FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\n"
"OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\n"
"PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\n"
"OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n"
"MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\n"
"TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\n"
"PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\n"
"REPAIR OR CORRECTION.\n"
"\n"
"  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\n"
"WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\n"
"REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\n"
"INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\n"
"OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\n"
"TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\n"
"YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\n"
"PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\n"
"POSSIBILITY OF SUCH DAMAGES.\n"
"\n"
#if !SKIP_HELP
"		     END OF TERMS AND CONDITIONS\n"
"\n"
"	Appendix: How to Apply These Terms to Your New Programs\n"
"\n"
"  If you develop a new program, and you want it to be of the greatest\n"
"possible use to the public, the best way to achieve this is to make it\n"
"free software which everyone can redistribute and change under these terms.\n"
"\n"
"  To do so, attach the following notices to the program.  It is safest\n"
"to attach them to the start of each source file to most effectively\n"
"convey the exclusion of warranty; and each file should have at least\n"
"the \"copyright\" line and a pointer to where the full notice is found.\n"
"\n"
"    <one line to give the program's name and a brief idea of what it does.>\n"
"    Copyright (C) 19yy  <name of author>\n"
"\n"
"    This program is free software; you can redistribute it and/or modify\n"
"    it under the terms of the GNU General Public License as published by\n"
"    the Free Software Foundation; either version 2 of the License, or\n"
"    (at your option) any later version.\n"
"\n"
"    This program is distributed in the hope that it will be useful,\n"
"    but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
"    GNU General Public License for more details.\n"
"\n"
"    You should have received a copy of the GNU General Public License\n"
"    along with this program; if not, write to the Free Software\n"
"    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
"\n"
"Also add information on how to contact you by electronic and paper mail.\n"
"\n"
"If the program is interactive, make it output a short notice like this\n"
"when it starts in an interactive mode:\n"
"\n"
"    Gnomovision version 69, Copyright (C) 19yy name of author\n"
"    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n"
"    This is free software, and you are welcome to redistribute it\n"
"    under certain conditions; type `show c' for details.\n"
"\n"
"The hypothetical commands `show w' and `show c' should show the appropriate\n"
"parts of the General Public License.  Of course, the commands you use may\n"
"be called something other than `show w' and `show c'; they could even be\n"
"mouse-clicks or menu items--whatever suits your program.\n"
"\n"
"You should also get your employer (if you work as a programmer) or your\n"
"school, if any, to sign a \"copyright disclaimer\" for the program, if\n"
"necessary.  Here is a sample; alter the names:\n"
"\n"
"  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\n"
"  `Gnomovision' (which makes passes at compilers) written by James Hacker.\n"
"\n"
"  <signature of Ty Coon>, 1 April 1989\n"
"  Ty Coon, President of Vice\n"
"\n"
"This General Public License does not permit incorporating your program into\n"
"proprietary programs.  If your program is a subroutine library, you may\n"
"consider it more useful to permit linking proprietary applications with the\n"
"library.  If this is what you want to do, use the GNU Library General\n"
"Public License instead of this License.\n"
#endif
;

	char top[] =
"\n"
"x11vnc: a VNC server for X displays.  %s\n"
"\n"
"Copyright (C) 2002-2010 Karl J. Runge <runge@karlrunge.com>\n"
"All rights reserved.\n"
"\n"
;
	dup2(1, 2);
	fprintf(stderr, top, lastmod);
	fprintf(stderr, "%s", license);
	exit(1);
}

