e is active you can set these env. vars. They apply only when there is ambiguity as to which key to choose (i.e the mapping is not one-to-one). NOKEYHINTS=1: for up ascii keystrokes do not use score hints saved when the key was pressed down. NOANY‐ DOWN=1: for up keystrokes do not resort to searching through keys that are currently pressed down. KEYSDOWN=N: remember the last N keys press down for tie-breaking when an up keystroke comes in. -capslock When in -modtweak (the default) or -xkb mode, if a keysym in the range A-Z comes in check the X server to see if the Caps_Lock is set. If it is do not artificially press Shift to generate the keysym. This will enable the CapsLock key to behave correctly in some circumstances: namely *both* the VNC viewer machine and the x11vnc X server are in the CapsLock on state. If one side has CapsLock on and the other off and the keyboard is not behaving as you think it should you should correct the CapsLock states (hint: pressing CapsLock inside and outside of the viewer can help toggle them both to the correct state). However, for best results do not use this option, but rather *only* enable CapsLock on the VNC viewer side (i.e. by pressing CapsLock outside of the viewer win‐ dow, also -skip_lockkeys below). Also try -nomodtweak for a pos‐ sible workaround. -skip_lockkeys, -noskip_lockkeys Have x11vnc ignore all Caps_Lock, Shift_Lock, Num_Lock, Scroll_Lock keysyms received from viewers. The idea is you press Caps_Lock on the VNC Viewer side but that does not change the lock state in the x11vnc-side X server. Nevertheless your capitalized letters come in over the wire and are applied correctly to the x11vnc-side X server. Note this mode probably won't do what you want in -nomodtweak mode. Also, a kludge for KP_n digits is always done in this mode: they are mapped to regular digit keysyms. See also -capslock above. The default is -noskip_lock‐ keys. -skip_keycodes string Ignore the comma separated list of decimal keycodes. Perhaps these are keycodes not on your keyboard but your X server thinks exist. Currently only applies to -xkb mode. Use this option to help x11vnc in the reverse problem it tries to solve: Keysym -> Keycode(s) when ambiguities exist (more than one Keycode per Keysym). Run 'xmodmap -pk' to see your keymapping. Example: "-skip_keycodes 94,114" -sloppy_keys Experimental option that tries to correct some "sloppy" key behav‐ ior. E.g. if at the viewer you press Shift+Key but then release the Shift before Key that could give rise to extra unwanted char‐ acters (usually only between keyboards of different languages). Only use this option if you observe problems with some keystrokes. -skip_dups, -noskip_dups Some VNC viewers send impossible repeated key events, e.g. key- down, key-down, key-up, key-up all for the same key, or 20 downs in a row for the same modifier key! Setting -skip_dups means to skip these duplicates and just process the first event. Note: some VNC viewers assume they can send down's without the corresponding up's and so you should not set this option for these viewers (symptom: some keys do not autorepeat) Default: -noskip_dups -add_keysyms, -noadd_keysyms If a Keysym is received from a VNC viewer and that Keysym does not exist in the X server, then add the Keysym to the X server's key‐ board mapping on an unused key. Added Keysyms will be removed periodically and also when x11vnc exits. Default: -add_keysyms -clear_mods At startup and exit clear the modifier keys by sending KeyRelease for each one. The Lock modifiers are skipped. Used to clear the state if the display was accidentally left with any pressed down. -clear_keys As -clear_mods, except try to release ANY pressed key. Note that this option and -clear_mods can interfere with a person typing at the physical keyboard. -clear_all As -clear_keys, except try to release any CapsLock, NumLock, etc. locks as well. -remap string Read Keysym remappings from file named string. Format is one pair of Keysyms per line (can be name or hex value) separated by a space. If no file named string exists, it is instead interpreted as this form: key1-key2,key3-key4,... See <X11/keysymdef.h> header file for a list of Keysym names, or use xev(1). To map a key to a button click, use the fake Keysyms "Button1", ..., etc. E.g: "-remap Super_R-Button2" (useful for pasting on a laptop) I use these if the machine I am viewing from does not have a scrollwheel or I don't like using the one it has: -remap Super_R-Button4,Menu-Button5 -remap KP_Add-But‐ ton4,KP_Enter-Button5 the former would be used on a PC, the latter on a MacBook. This way those little used keys can be used to generate bigger hops than the Up and Down arrows provide. One can scroll through text or web pages more quickly this way (especially if x11vnc scroll detection is active.) Use Button44, Button12, etc. for multiple clicks. To disable a keysym (i.e. make it so it will not be injected), remap it to "NoSymbol" or "None". Dead keys: "dead" (or silent, mute) keys are keys that do not pro‐ duce a character but must be followed by a 2nd keystroke. This is often used for accenting characters, e.g. to put "`" on top of "a" by pressing the dead key and then "a". Note that this interpreta‐ tion is not part of core X11, it is up to the toolkit or applica‐ tion to decide how to react to the sequence. The X11 names for these keysyms are "dead_grave", "dead_acute", etc. However some VNC viewers send the keysyms "grave", "acute" instead thereby dis‐ abling the accenting. To work around this -remap can be used. For example "-remap grave-dead_grave,acute-dead_acute" As a convenience, "-remap DEAD" applies these remaps: g grave-dead_grave a acute-dead_acute c asciicircum-dead_circumflex t asciitilde-dead_tilde m macron-dead_macron b breve-dead_breve D abovedot-dead_abovedot d diaeresis-dead_diaeresis o degree-dead_abovering A doubleacute-dead_doubleacute r caron-dead_caron e cedilla-dead_cedilla If you just want a subset use the first letter label, e.g. "-remap DEAD=ga" to get the first two. Additional remaps may also be sup‐ plied via commas, e.g. "-remap DEAD=ga,Super_R-Button2". Finally, "DEAD=missing" means to apply all of the above as long as the left hand member is not already in the X11 keymap. -norepeat, -repeat Option -norepeat disables X server key auto repeat when VNC clients are connected and VNC keyboard input is not idle for more than 5 minutes. This works around a repeating keystrokes bug (triggered by long processing delays between key down and key up client events: either from large screen changes or high latency). Default: -norepeat You can set the env. var. X11VNC_IDLE_TIMEOUT to the number of idle seconds you want (5min = 300secs). Note: your VNC viewer side will likely do autorepeating, so this is no loss unless someone is simultaneously at the real X display. Use "-norepeat N" to set how many times norepeat will be reset if something else (e.g. X session manager) undoes it. The default is 2. Use a negative value for unlimited resets. -nofb Ignore video framebuffer: only process keyboard and pointer. Intended for use with Win2VNC and x2vnc dual-monitor setups. -nobell Do not watch for XBell events. (no beeps will be heard) Note: XBell monitoring requires the XKEYBOARD extension. -nosel Do not manage exchange of X selection/cutbuffer between VNC view‐ ers and the X server at all. -noprimary Do not poll the PRIMARY selection for changes to send back to clients. (PRIMARY is still set on received changes, however). -nosetprimary Do not set the PRIMARY selection for changes received from VNC clients. -noclipboard Do not poll the CLIPBOARD selection for changes to send back to clients. (CLIPBOARD is still set on received changes, however). -nosetclipboard Do not set the CLIPBOARD selection for changes received from VNC clients. -seldir string If direction string is "send", only send the selection to viewers, and if it is "recv" only receive it from viewers. To work around apps setting the selection too frequently and messing up the other end. You can actually supply a comma separated list of direc‐ tions, including "debug" to turn on debugging output. -cursor [mode], -nocursor Sets how the pointer cursor shape (little icon at the mouse pointer) should be handled. The "mode" string is optional and is described below. The default is to show some sort of cursor shape(s). How this is done depends on the VNC viewer and the X server. Use -nocursor to disable cursor shapes completely. Some VNC viewers support the TightVNC CursorPosUpdates and Cursor‐ ShapeUpdates extensions (cuts down on network traffic by not hav‐ ing to send the cursor image every time the pointer is moved), in which case these extensions are used (see -nocursorshape and -nocursorpos below to disable). For other viewers the cursor shape is written directly to the framebuffer every time the pointer is moved or changed and gets sent along with the other framebuffer updates. In this case, there will be some lag between the vnc viewer pointer and the remote cursor position. If the X display supports retrieving the cursor shape information from the X server, then the default is to use that mode. On Solaris this can be done with the SUN_OVL extension using -overlay (see also the -overlay_nocursor option). A similar overlay scheme is used on IRIX. Xorg (e.g. Linux) and recent Solaris Xsun servers support the XFIXES extension to retrieve the exact cursor shape from the X server. If XFIXES is present it is preferred over Overlay and is used by default (see -noxfixes below). This can be disabled with -nocursor, and also some values of the "mode" option below. Note that under XFIXES cursors with transparency (alpha channel) will usually not be exactly represented and one may find Overlay preferable. See also the -alphacut and -alphafrac options below as fudge factors to try to improve the situation for cursors with transparency for a given theme. The "mode" string can be used to fine-tune the displaying of cur‐ sor shapes. It can be used the following ways: "-cursor arrow" - just show the standard arrow nothing more or nothing less. "-cursor none" - same as "-nocursor" "-cursor X" - when the cursor appears to be on the root window, draw the familiar X shape. Some desktops such as GNOME cover up the root window completely, and so this will not work, try "X1", etc, to try to shift the tree depth. On high latency links or slow machines there will be a time lag between expected and the actual cursor shape. "-cursor some" - like "X" but use additional heuristics to try to guess if the window should have a windowmanager-like resizer cur‐ sor or a text input I-beam cursor. This is a complete hack, but may be useful in some situations because it provides a little more feedback about the cursor shape. "-cursor most" - try to show as many cursors as possible. Often this will only be the same as "some" unless the display has over‐ lay visuals or XFIXES extensions available. On Solaris and IRIX if XFIXES is not available, -overlay mode will be attempted. -cursor_drag Show cursor shape changes even when the mouse is being dragged with a mouse button down. This is useful if you want to be able to see Drag-and-Drop cursor icons, etc. -arrow n Choose an alternate "arrow" cursor from a set of some common ones. n can be 1 to 6. Default is: 1 Ignored when in XFIXES cursor- grabbing mode. -noxfixes Do not use the XFIXES extension to draw the exact cursor shape even if it is available. Note: To work around a crash in Xorg 1.5 and later some people needed to use -noxfixes. The Xorg crash occurred right after a Display Manager (e.g. GDM) login. Starting with x11vnc 0.9.9 it tries to automatically avoid using XFIXES until it is sure a win‐ dow manager is running. See the -reopen option for more info and how to use X11VNC_AVOID_WINDOWS=never to disable it. -alphacut n When using the XFIXES extension for the cursor shape, cursors with transparency will not usually be displayed exactly (but opaque ones will). This option sets n as a cutoff for cursors that have transparency ("alpha channel" with values ranging from 0 to 255) Any cursor pixel with alpha value less than n becomes completely transparent. Otherwise the pixel is completely opaque. Default 240 -alphafrac fraction With the threshold in -alphacut some cursors will become almost completely transparent because their alpha values are not high enough. For those cursors adjust the alpha threshold until frac‐ tion of the non-zero alpha channel pixels become opaque. Default 0.33 -alpharemove By default, XFIXES cursors pixels with transparency have the alpha factor multiplied into the RGB color values (i.e. that correspond‐ ing to blending the cursor with a black background). Specify this option to remove the alpha factor. (useful for light colored semi- transparent cursors). -noalphablend In XFIXES mode do not send cursor alpha channel data to LibVNC‐ Server. The default is to send it. The alphablend effect will only be visible in -nocursorshape mode or for clients with cursor‐ shapeupdates turned off. (However there is a hack for 32bpp with depth 24, it uses the extra 8 bits to store cursor transparency for use with a hacked vncviewer that applies the transparency locally. See the FAQ for more info). -nocursorshape Do not use the TightVNC CursorShapeUpdates extension even if clients support it. See -cursor above. -cursorpos, -nocursorpos Option -cursorpos enables sending the X cursor position back to all vnc clients that support the TightVNC CursorPosUpdates exten‐ sion. Other clients will be able to see the pointer motions. Default: -cursorpos -xwarppointer, -noxwarppointer Move the pointer with XWarpPointer(3X) instead of the XTEST exten‐ sion. Use this as a workaround if the pointer motion behaves incorrectly, e.g. on touchscreens or other non-standard setups. It is also sometimes needed on XINERAMA displays and is enabled by default if XINERAMA is found to be active. To prevent this, use -noxwarppointer. -always_inject Even if there is no displacement (dx = dy = 0) for a VNC mouse event force the pointer to the indicated x,y position anyway. Recent (2009) gui toolkits (gnome) have problems with x11vnc's original mouse input injection method. So x11vnc's mouse input injection method has been modified. To regain the OLD behavior use this option: -always_inject. Then x11vnc will always force positioning the mouse to the x,y position even if that position has not changed since the previous VNC input event. The first place this problem was noticed was in gnome terminal: if you pressed and released mouse button 3, a menu was posted and then its first element 'New Terminal Window' was activated. This was because x11vnc injected the mouse position twice: once on But‐ tonPress and again on ButtonRelease. The toolkit interpreted the 2nd one as mouse motion even though the mouse hadn't moved. So now by default x11vnc tries to avoid injecting the 2nd one. Note that with the new default x11vnc will be oblivious to appli‐ cations moving the pointer (warping) or the user at the physical display moving it. So it might, e.g., inject ButtonRelease at the wrong position. If this (or similar scenarios) causes problems in your environment, specify -always_inject for the old method. -buttonmap string String to remap mouse buttons. Format: IJK-LMN, this maps buttons I -> L, etc., e.g. -buttonmap 13-31 Button presses can also be mapped to keystrokes: replace a button digit on the right of the dash with :<sym>: or :<sym1>+<sym2>: etc. for multiple keys. For example, if the viewing machine has a mouse-wheel (buttons 4 5) but the x11vnc side does not, these will do scrolls: -buttonmap 12345-123:Prior::Next: -buttonmap 12345-123:Up+Up+Up::Down+Down+Down: See <X11/keysymdef.h> header file for a list of Keysyms, or use the xev(1) program. Note: mapping of button clicks to Keysyms may not work if -modtweak or -xkb is needed for the Keysym. If you include a modifier like "Shift_L" the modifier's up/down state is toggled, e.g. to send "The" use :Shift_L+t+Shift_L+h+e: (the 1st one is shift down and the 2nd one is shift up). (note: the initial state of the modifier is ignored and not reset) To include button events use "Button1", ... etc. -buttonmap currently does not work on MacOSX console or in -rawfb mode. Workaround: use -buttonmap IJ...-LM...=n to limit the number of mouse buttons to n, e.g. 123-123=3. This will prevent x11vnc from crashing if the X server reports there are 5 buttons (4/5 scroll wheel), but there are only really 3. -nodragging Do not update the display during mouse dragging events (mouse but‐ ton held down). Greatly improves response on slow setups, but you lose all visual feedback for drags, text selection, and some menu traversals. It overrides any -pointer_mode setting. -ncache n Client-side caching scheme. Framebuffer memory n (an integer) times that of the full display is allocated below the actual framebuffer to cache screen contents for rapid retrieval. So a W x H frambuffer is expanded to a W x (n+1)*H one. Use 0 to dis‐ able. The n is actually optional, the default is 10. For this and the other -ncache* options below you can abbreviate "-ncache" with "-nc". Also, "-nonc" is the same as "-ncache 0" This is an experimental option, currently implemented in an awk‐ ward way in that in the VNC Viewer you can see the pixel cache contents if you scroll down, etc. So you will have to set things up so you can't see that region. If this method is successful, the changes required for clients to do this less awkwardly will be investigated. The SSVNC viewer does a good job at automatically hiding the pixel cache region. Or use SSVNC's -ycrop option to explicitly hide the region. Note that this mode consumes a huge amount of memory, both on the x11vnc server side and on the VNC Viewer side. If n=2 then the amount of RAM used is roughly tripled for both x11vnc and the VNC Viewer. As a rule of thumb, note that 1280x1024 at depth 24 is about 5MB of pixel data. For reasonable response when cycling through 4 to 6 large (e.g. web browser) windows a value n of 6 to 12 is recommended. (that's right: ~10X more memory...) Because of the way window backingstore and saveunders are imple‐ mented, n must be even. It will be incremented by 1 if it is not. This mode also works for native MacOS X, but may not be as effec‐ tive as the X version. This is due to a number of things, one is the drop-shadow compositing that leaves extra areas that need to be repaired (see -ncache_pad). Another is the window iconifica‐ tion animations need to be avoided (see -macicontime). It appears the that the 'Scale' animation mode gives better results than the 'Genie' one. Also, window event detection not as accurate as the X version. -ncache_cr In -ncache mode, try to do copyrect opaque window moves/drags instead of wireframes (this can induce painting errors). The wireframe will still be used when moving a window whose save- unders has not yet been set or has been invalidated. Some VNC Viewers provide better response than others with this option. On Unix, realvnc viewer gives smoother drags than tightvnc viewer. Response may also be choppy if the server side machine is too slow. Sometimes on very slow modem connections, this actually gives an improvement because no pixel data at all (not even the box anima‐ tion) is sent during the drag. -ncache_no_moveraise In -ncache mode, do not assume that moving a window will cause the window manager to raise it to the top of the stack. The default is to assume it does, and so at the beginning of any wireframe, etc, window moves the window will be pushed to top in the VNC viewer. -ncache_no_dtchange In -ncache mode, do not try to guess when the desktop (viewport) changes to another one (i.e. another workarea). The default is to try to guess and when detected try to make the transistion more smoothly. -ncache_no_rootpixmap In -ncache mode, do not try to snapshot the desktop background to use in guessing or reconstructing window save-unders. -ncache_keep_anims In -ncache mode, do not try to disable window manager animations and other effects (that usually degrade ncache performance or cause painting errors). The default is to try to disable them on KDE (but not GNOME) when VNC clients are connected. For other window managers or desktops that provide animations, effects, compositing, translucency, etc. that interfere with the -ncache method you will have to disable them manually. -ncache_old_wm In -ncache mode, enable some heuristics for old style window man‐ agers such as fvwm and twm. -ncache_pad n In -ncache mode, pad each window with n pixels for the caching rectangles. This can be used to try to improve the situation with dropshadows or other compositing (e.g. MacOS X window manager), although it could make things worse. The default is 0 on Unix and 24 on MacOS X. -debug_ncache Turn on debugging and profiling output under -ncache. -wireframe [str], -nowireframe Try to detect window moves or resizes when a mouse button is held down and show a wireframe instead of the full opaque window. This is based completely on heuristics and may not always work: it depends on your window manager and even how you move things around. See -pointer_mode below for discussion of the "bogging down" problem this tries to avoid. Default: -wireframe Shorter aliases: -wf [str] and -nowf The value "str" is optional and, of course, is packed with many tunable parameters for this scheme: Format: shade,linewidth,percent,T+B+L+R,mod,t1+t2+t3+t4 Default: 0xff,2,0,32+8+8+8,all,0.15+0.30+5.0+0.125 If you leave nothing between commas: ",," the default value is used. If you don't specify enough commas, the trailing parameters are set to their defaults. "shade" indicate the "color" for the wireframe, usually a greyscale: 0-255, however for 16 and 32bpp you can specify an rgb.txt X color (e.g. "dodgerblue") or a value > 255 is treated as RGB (e.g. red is 0xff0000). "linewidth" sets the width of the wireframe in pixels. "percent" indicates to not apply the wire‐ frame scheme to windows with area less than this percent of the full screen. "T+B+L+R" indicates four integers for how close in pixels the pointer has to be from the Top, Bottom, Left, or Right edges of the window to consider wireframing. This is a speedup to quickly exclude a window from being wireframed: set them all to zero to not try the speedup (scrolling and selecting text will likely be slower). "mod" specifies if a button down event in the interior of the win‐ dow with a modifier key (Alt, Shift, etc.) down should indicate a wireframe opportunity. It can be "0" or "none" to skip it, "1" or "all" to apply it to any modifier, or "Shift", "Alt", "Control", "Meta", "Super", or "Hyper" to only apply for that type of modi‐ fier key. "t1+t2+t3+t4" specify four floating point times in seconds: t1 is how long to wait for the pointer to move, t2 is how long to wait for the window to start moving or being resized (for some window managers this can be rather long), t3 is how long to keep a wire‐ frame moving before repainting the window. t4 is the minimum time between sending wireframe "animations". If a slow link is detected, these values may be automatically changed to something better for a slow link. -nowireframelocal By default, mouse motion and button presses of a user sitting at the LOCAL display are monitored for wireframing opportunities (so that the changes will be sent efficiently to the VNC clients). Use this option to disable this behavior. -wirecopyrect mode, -nowirecopyrect Since the -wireframe mechanism evidently tracks moving windows accurately, a speedup can be obtained by telling the VNC viewers to locally copy the translated window region. This is the VNC CopyRect encoding: the framebuffer update doesn't need to send the actual new image data. Shorter aliases: -wcr [mode] and -nowcr "mode" can be "never" (same as -nowirecopyrect) to never try the copyrect, "top" means only do it if the window was not covered by any other windows, and "always" means to translate the orginally unobscured region (this may look odd as the remaining pieces come in, but helps on a slow link). Default: "always" Note: there can be painting errors or slow response when using -scale so you may want to disable CopyRect in this case "-wire‐ copyrect never" on the command line or by remote-control. Or you can also use the "-scale xxx:nocr" scale option. -debug_wireframe Turn on debugging info printout for the wireframe heuristics. "-dwf" is an alias. Specify multiple times for more output. -scrollcopyrect mode, -noscrollcopyrect Like -wirecopyrect, but use heuristics to try to guess if a window has scrolled its contents (either vertically or horizontally). This requires the RECORD X extension to "snoop" on X applications (currently for certain XCopyArea and XConfigureWindow X protocol requests). Examples: Hitting <Return> in a terminal window when the cursor was at the bottom, the text scrolls up one line. Hit‐ ting <Down> arrow in a web browser window, the web page scrolls up a small amount. Or scrolling with a scrollbar or mouse wheel. Shorter aliases: -scr [mode] and -noscr This scheme will not always detect scrolls, but when it does there is a nice speedup from using the VNC CopyRect encoding (see -wire‐ copyrect). The speedup is both in reduced network traffic and reduced X framebuffer polling/copying. On the other hand, it may induce undesired transients (e.g. a terminal cursor being scrolled up when it should not be) or other painting errors (window tear‐ ing, bunching-up, etc). These are automatically repaired in a short period of time. If this is unacceptable disable the feature with -noscrollcopyrect. Screen clearing kludges: for testing at least, there are some "magic key sequences" (must be done in less than 1 second) to aid repairing painting errors that may be seen when using this mode: 3 Alt_L's in a row: resend whole screen, 4 Alt_L's in a row: reread and resend whole screen, 3 Super_L's in a row: mark whole screen for polling, 4 Super_L's in a row: reset RECORD context, 5 Super_L's in a row: try to push a black screen note: Alt_L is the Left "Alt" key (a single key) Super_L is the Left "Super" key (Windows flag). Both of these are modifier keys, and so should not generate characters when pressed by themselves. Also, your VNC viewer may have its own refresh hot-key or button. "mode" can be "never" (same as -noscrollcopyrect) to never try the copyrect, "keys" means to try it in response to keystrokes only, "mouse" means to try it in response to mouse events only, "always" means to do both. Default: "always" Note: there can be painting errors or slow response when using -scale so you may want to disable CopyRect in this case "-scroll‐ copyrect never" on the command line or by remote-control. Or you can also use the "-scale xxx:nocr" scale option. -scr_area n Set the minimum area in pixels for a rectangle to be considered for the -scrollcopyrect detection scheme. This is to avoid wast‐ ing the effort on small rectangles that would be quickly updated the normal way. E.g. suppose an app updated the position of its skinny scrollbar first and then shifted the large panel it con‐ trolled. We want to be sure to skip the small scrollbar and get the large panel. Default: 60000 -scr_skip list Skip scroll detection for applications matching the comma sepa‐ rated list of strings in list. Some applications implement their scrolling in strange ways where the XCopyArea, etc, also applies to invisible portions of the window: if we CopyRect those areas it looks awful during the scroll and there may be painting errors left after the scroll. Soffice.bin is the worst known offender. Use "##" to denote the start of the application class (e.g. "##XTerm") and "++" to denote the start of the application instance name (e.g. "++xterm"). The string your list is matched against is of the form "^^WM_NAME##Class++Instance<same-for-any- subwindows>" The "xlsclients -la" command will provide this info. If a pattern is prefixed with "KEY:" it only applies to Keystroke generated scrolls (e.g. Up arrow). If it is prefixed with "MOUSE:" it only applies to Mouse induced scrolls (e.g. dragging on a scrollbar). Default: ##Soffice.bin,##StarOffice,##OpenOffice -scr_inc list Opposite of -scr_skip: this list is consulted first and if there is a match the window will be monitored via RECORD for scrolls irrespective of -scr_skip. Use -scr_skip '*' to skip anything that does not match your -scr_inc. Use -scr_inc '*' to include everything. -scr_keys list For keystroke scroll detection, only apply the RECORD heuristics to the comma separated list of keysyms in list. You may find the RECORD overhead for every one of your keystrokes disrupts typing too much, but you don't want to turn it off completely with "-scr mouse" and -scr_parms does not work or is too confusing. The listed keysyms can be numeric or the keysym names in the <X11/keysymdef.h> header file or from the xev(1) program. Exam‐ ple: "-scr_keys Up,Down,Return". One probably wants to have application specific lists (e.g. for terminals, etc) but that is too icky to think about for now... If list begins with the "-" character the list is taken as an exclude list: all keysyms except those list will be considered. The special string "builtin" expands to an internal list of keysyms that are likely to cause scrolls. BTW, by default modi‐ fier keys, Shift_L, Control_R, etc, are skipped since they almost never induce scrolling by themselves. -scr_term list Yet another cosmetic kludge. Apply shell/terminal heuristics to applications matching comma separated list (same as for -scr_skip/-scr_inc). For example an annoying transient under scroll detection is if you hit Enter in a terminal shell with full text window, the solid text cursor block will be scrolled up. So for a short time there are two (or more) block cursors on the screen. There are similar scenarios, (e.g. an output line is duplicated). These transients are induced by the approximation of scroll detec‐ tion (e.g. it detects the scroll, but not the fact that the block cursor was cleared just before the scroll). In nearly all cases these transient errors are repaired when the true X framebuffer is consulted by the normal polling. But they are distracting, so what this option provides is extra "padding" near the bottom of the terminal window: a few extra lines near the bottom will not be scrolled, but rather updated from the actual X framebuffer. This usually reduces the annoying artifacts. Use "none" to disable. Default: "term" -scr_keyrepeat lo-hi If a key is held down (or otherwise repeats rapidly) and this induces a rapid sequence of scrolls (e.g. holding down an Arrow key) the "scrollcopyrect" detection and overhead may not be able to keep up. A time per single scroll estimate is performed and if that estimate predicts a sustainable scrollrate of keys per second between "lo" and "hi" then repeated keys will be DISCARDED to maintain the scrollrate. For example your key autorepeat may be 25 keys/sec, but for a large window or slow link only 8 scrolls per second can be sustained, then roughly 2 out of every 3 repeated keys will be discarded during this period. Default: "4-20" -scr_parms string Set various parameters for the scrollcopyrect mode. The format is similar to that for -wireframe and packed with lots of parameters: Format: T+B+L+R,t1+t2+t3,s1+s2+s3+s4+s5 Default: 0+64+32+32,0.02+0.10+0.9,0.03+0.06+0.5+0.1+5.0 If you leave nothing between commas: ",," the default value is used. If you don't specify enough commas, the trailing parameters are set to their defaults. "T+B+L+R" indicates four integers for how close in pixels the pointer has to be from the Top, Bottom, Left, or Right edges of the window to consider scrollcopyrect. If -wireframe overlaps it takes precedence. This is a speedup to quickly exclude a window from being watched for scrollcopyrect: set them all to zero to not try the speedup (things like selecting text will likely be slower). "t1+t2+t3" specify three floating point times in seconds that apply to scrollcopyrect detection with *Keystroke* input: t1 is how long to wait after a key is pressed for the first scroll, t2 is how long to keep looking after a Keystroke scroll for more scrolls. t3 is how frequently to try to update surrounding scrollbars outside of the scrolling area (0.0 to disable) "s1+s2+s3+s4+s5" specify five floating point times in seconds that apply to scrollcopyrect detection with *Mouse* input: s1 is how long to wait after a mouse button is pressed for the first scroll, s2 is how long to keep waiting for additional scrolls after the first Mouse scroll was detected. s3 is how frequently to try to update surrounding scrollbars outside of the scrolling area (0.0 to disable). s4 is how long to buffer pointer motion (to try to get fewer, bigger mouse scrolls). s5 is the maximum time to spend just updating the scroll window without updating the rest of the screen. -fixscreen string Periodically "repair" the screen based on settings in string. Hopefully you won't need this option, it is intended for cases when the -scrollcopyrect or -wirecopyrect features leave too many painting errors, but it can be used for any scenario. This option periodically performs costly operations and so interactive response may be reduced when it is on. You can use 3 Alt_L's (the Left "Alt" key) taps in a row (as described under -scrollcopyrect) instead to manually request a screen repaint when it is needed. string is a comma separated list of one or more of the following: "V=t", "C=t", "X=t", and "8=t". In these "t" stands for a time in seconds (it is a floating point even though one should usually use values > 2 to avoid wasting resources). V sets how frequently the entire screen should be sent to viewers (it is like the 3 Alt_L's). C sets how long to wait after a CopyRect to repaint the full screen. X sets how frequently to reread the full X11 frame‐ buffer from the X server and push it out to connected viewers. Use of X should be rare, please report a bug if you find you need it. 8= applies only for -8to24 mode: it sets how often the non- default visual regions of the screen (e.g. 8bpp windows) are refreshed. Examples: -fixscreen V=10 -fixscreen C=10 -debug_scroll Turn on debugging info printout for the scroll heuristics. "-ds" is an alias. Specify it multiple times for more output. -noxrecord Disable any use of the RECORD extension. This is currently used by the -scrollcopyrect scheme and to monitor X server grabs. -grab_buster, -nograb_buster Some of the use of the RECORD extension can leave a tiny window for XGrabServer deadlock. This is only if the whole-server grab‐ bing application expects mouse or keyboard input before releasing the grab. It is usually a window manager that does this. x11vnc takes care to avoid the problem, but if caught x11vnc will freeze. Without -grab_buster, the only solution is to go the physical dis‐ play and give it some input to satisfy the grabbing app.  With -grab_buster, x11vnc will fork a helper thread and if x11vnc appears to be stuck in a grab after a period of time (20-30 sec) then it will inject some user input: button clicks, Escape, mouse motion, etc to try to break the grab. If you experience a lot of grab deadlock, please report a bug. -debug_grabs Turn on debugging info printout with respect to XGrabServer() deadlock for -scrollcopyrect__mode_. -debug_sel Turn on debugging info printout with respect to PRIMARY, CLIP‐ BOARD, and CUTBUFFER0 selections. -pointer_mode n Various pointer motion update schemes. "-pm" is an alias. The problem is pointer motion can cause rapid changes on the screen: consider the rapid changes when you drag a large window around opaquely. Neither x11vnc's screen polling and vnc compression routines nor the bandwidth to the vncviewers can keep up these rapid screen changes: everything will bog down when dragging or scrolling. So a scheme has to be used to "eat" much of that pointer input before re-polling the screen and sending out frame‐ buffer updates. The mode number n can be 0 to 4 and selects one of the schemes desribed below. Note that the -wireframe and -scrollcopyrect__mode_s complement -pointer_mode by detecting (and improving) certain periods of "rapid screen change". n=0: does the same as -nodragging. (all screen polling is sus‐ pended if a mouse button is pressed.) n=1: was the original scheme used to about Jan 2004: it basically just skips -input_skip keyboard or pointer events before repolling the screen. n=2 is an improved scheme: by watching the current rate of input events it tries to detect if it should try to "eat" additional pointer events before continuing. n=3 is basically a dynamic -nodragging mode: it detects when the mouse motion has paused and then refreshes the display. n=4 attempts to measures network rates and latency, the video card read rate, and how many tiles have been changed on the screen. From this, it aggressively tries to push screen "frames" when it decides it has enough resources to do so. NOT FINISHED. The default n is 2. Note that modes 2, 3, 4 will skip -input_skip keyboard events (but it will not count pointer events). Also note that these modes are not available in -threads mode which has its own pointer event handling mechanism. To try out the different pointer modes to see which one gives the best response for your usage, it is convenient to use the remote control function, for example "x11vnc -R pm:4" or the tcl/tk gui (Tuning -> pointer_mode -> n). -input_skip n For the pointer handling when non-threaded: try to read n user input events before scanning display. n < 0 means to act as though there is always user input. Default: 10 -allinput Have x11vnc read and process all available client input before proceeding. -input_eagerly Similar to -allinput but use the handleEventsEagerly mechanism built into LibVNCServer. -speeds rd,bw,lat x11vnc tries to estimate some speed parameters that are used to optimize scheduling (e.g. -pointer_mode 4, -wireframe, -scroll‐ copyrect) and other things. Use the -speeds option to set these manually. The triple rd,bw,lat corresponds to video h/w read rate in MB/sec, network bandwidth to clients in KB/sec, and network latency to clients in milliseconds, respectively. If a value is left blank, e.g. "-speeds ,100,15", then the internal scheme is used to estimate the empty value(s). Typical PC video cards have read rates of 5-10 MB/sec. If the framebuffer is in main memory instead of video h/w (e.g. SunRay, shadowfb, dummy driver, Xvfb), the read rate may be much faster. "x11perf -getimage500" can be used to get a lower bound (remember to factor in the bytes per pixel). It is up to you to estimate the network bandwith and latency to clients. For the latency the ping(1) command can be used. For convenience there are some aliases provided, e.g. "-speeds modem". The aliases are: "modem" for 6,4,200; "dsl" for 6,100,50; and "lan" for 6,5000,1 -wmdt string For some features, e.g. -wireframe and -scrollcopyrect, x11vnc has to work around issues for certain window managers or desktops (currently kde and xfce). By default it tries to guess which one, but it can guess incorrectly. Use this option to indicate which wm/dt. string can be "gnome", "kde", "cde", "xfce", or "root" (classic X wm). Anything else is interpreted as "root". -debug_pointer Print debugging output for every pointer event. -debug_keyboard Print debugging output for every keyboard event. Same as -dp and -dk, respectively. Use multiple times for more output. -defer time Time in ms to delay sending updates to connected clients (deferUp‐ dateTime) Default: 20 -wait time Time in ms to pause between screen polls. Used to cut down on load. Default: 20 -extra_fbur n Perform extra FrameBufferUpdateRequests checks to try to be in better sync with the client's requests. What this does is perform extra polls of the client socket at critical times (before '-defer' and '-wait' calls.) The default is n=1. Set to a larger number to insert more checks or set to n=0 to disable. A downside of these extra calls is that more mouse input may be processed than desired. -wait_ui factor Factor by which to cut the -wait time if there has been recent user input (pointer or keyboard). Improves response, but increases the load whenever you are moving the mouse or typing. Default: 2.00 -setdefer n When the -wait_ui mechanism cuts down the wait time ms, set the defer time to the same ms value. n=1 to enable, 0 to disable, and -1 to set defer to 0 (no delay). Similarly, 2 and -2 indicate 'urgent_update' mode should be used to push the updates even sooner. Default: 1 -nowait_bog Do not detect if the screen polling is "bogging down" and sleep more. Some activities with no user input can slow things down a lot: consider a large terminal window with a long build running in it continuously streaming text output. By default x11vnc will try to detect this (3 screen polls in a row each longer than 0.25 sec with no user input), and sleep up to 1.5 secs to let things "catch up". Use this option to disable that detection. -slow_fb time Floating point time in seconds to delay all screen polling. For special purpose usage where a low frame rate is acceptable and desirable, but you want the user input processed at the normal rate so you cannot use -wait. -xrefresh time Floating point time in seconds to indicate how often to do the equivalent of xrefresh(1) to force all windows (in the viewable area if -id, -sid, or -clip is used) to repaint themselves. Use this only if applications misbehave by not repainting themselves properly. See also -noxdamage. -nap, -nonap Monitor activity and if it is low take longer naps between screen polls to really cut down load when idle. Default: take naps -sb time Time in seconds after NO activity (e.g. screen blank) to really throttle down the screen polls (i.e. sleep for about 1.5 secs). Use 0 to disable. Default: 60 Set the env. var. X11VNC_SB_FACTOR to scale it. -readtimeout n Set LibVNCServer rfbMaxClientWait to n seconds. On slow links that take a long time to paint the first screen LibVNCServer may hit the timeout and drop the connection. Default: 20 seconds. -ping n Send a 1x1 framebuffer update to all clients every n seconds (e.g. to try to keep a network connection alive) -nofbpm, -fbpm If the system supports the FBPM (Frame Buffer Power Management) extension (i.e. some Sun systems), then prevent the video h/w from going into a reduced power state when VNC clients are connected. FBPM capable video h/w save energy when the workstation is idle by going into low power states (similar to DPMS for monitors). This interferes with x11vnc's polling of the framebuffer data. "-nofbpm" means prevent FBPM low power states whenever VNC clients are connected, while "-fbpm" means to not monitor the FBPM state at all. See the xset(1) manpage for details. -nofbpm is basi‐ cally the same as running "xset fbpm force on" periodically. Default: -fbpm -nodpms, -dpms If the system supports the DPMS (Display Power Management Signal‐ ing) extension, then prevent the monitor from going into a reduced power state when VNC clients are connected. DPMS reduced power monitor states are a good thing and you nor‐ mally want the power down to take place (usually x11vnc has no problem exporting the display in this state). You probably only want to use "-nodpms" to work around problems with Screen Savers kicking on in DPMS low power states. There is known problem with kdesktop_lock on KDE where the screen saver keeps kicking in every time user input stops for a second or two. Specifying "-nodpms" works around it. "-nodpms" means prevent DPMS low power states whenever VNC clients are connected, while "-dpms" means to not monitor the DPMS state at all. See the xset(1) manpage for details. -nodpms is basi‐ cally the same as running "xset dpms force on" periodically. Default: -dpms -forcedpms If the system supports the DPMS (Display Power Management Signal‐ ing) extension, then try to keep the monitor in a powered off state. This is to prevent nosey people at the physical display from viewing what is on the screen. Be sure to lock the screen before disconnecting. This method is far from bullet proof, e.g. suppose someone attaches a non-DPMS monitor, or loads the machine so that there is a gap of time before x11vnc restores the powered off state? On many machines if he floods it with keyboard and mouse input he can see flashes of what is on the screen before the DPMS off state is reestablished. For this to work securely there would need to be support in the X server to do this exactly rather than approxi‐ mately with DPMS. -clientdpms As -forcedpms but only when VNC clients are connected. -noserverdpms The UltraVNC ServerInput extension is supported. This allows the VNC viewer to click a button that will cause the server (x11vnc) to try to disable keyboard and mouse input at the physical display and put the monitor in dpms powered off state. Use this option to skip powering off the monitor. -noultraext Disable the following UltraVNC extensions: SingleWindow and ServerInput. The others managed by LibVNCServer (textchat, 1/n scaling, rfbEncodingUltra) are not. -chatwindow Place a local UltraVNC chat window on the X11 display that x11vnc is polling. That way the person on the VNC viewer-side can chat with the person at the physical X11 console. (e.g. helpdesk w/o telephone) For this to work the SSVNC package (version 1.0.21 or later) MUST BE installed on the system where x11vnc runs and the 'ssvnc' com‐ mand must be available in $PATH. The ssvncviewer is used as a chat window helper. See http://www.karl‐ runge.com/x11vnc/ssvnc.html This option implies '-rfbversion 3.6' so as to trick UltraVNC viewers, otherwise they assume chat is not available. To specify a different rfbversion, place it after the -chatwindow option on the cmdline. See also the remote control 'chaton' and 'chatoff' actions. These can also be set from the tkx11vnc GUI. -noxdamage Do not use the X DAMAGE extension to detect framebuffer changes even if it is available. Use -xdamage if your default is to have it off. x11vnc's use of the DAMAGE extension: 1) significantly reduces the load when the screen is not changing much, and 2) detects changed areas (small ones by default) more quickly. Currently the DAMAGE extension is overly conservative and often reports large areas (e.g. a whole terminal or browser window) as damaged even though the actual changed region is much smaller (sometimes just a few pixels). So heuristics were introduced to skip large areas and use the damage rectangles only as "hints" for the traditional scanline polling. The following tuning parameters are introduced to adjust this behavior: -xd_area A Set the largest DAMAGE rectangle area A (in pixels: width * height) to trust as truly damaged: the rectangle will be copied from the framebuffer (slow) no matter what. Set to zero to trust *all* rectangles. Default: 20000 -xd_mem f Set how long DAMAGE rectangles should be "remembered", f is a floating point number and is in units of the scanline repeat cycle time (32 iterations). The default (1.0) should give no painting problems. Increase it if there are problems or decrease it to live on the edge (perhaps useful on a slow machine). -sigpipe string Broken pipe (SIGPIPE) handling. string can be "ignore" or "exit". For "ignore" LibVNCServer will handle the abrupt loss of a client and continue, for "exit" x11vnc will cleanup and exit at the 1st broken connection. This option is not really needed since LibVNCServer is doing the correct thing now for quite some time. However, for convenience you can use it to ignore other signals, e.g. "-sigpipe ignore:HUP,INT,TERM" in case that would be useful for some sort of application. You can also put "exit:.." in the list to have x11vnc cleanup on the listed signals. "-sig" is an alias for this option if you don't like the 'pipe'. Example: -sig ignore:INT,TERM,exit:USR1 -threads, -nothreads Whether or not to use the threaded LibVNCServer algorithm [rfbRun‐ EventLoop] if libpthread is available. In this mode new threads (one for input and one for output) are created to handle each new client. Default: -nothreads. Thread stability is much improved in version 0.9.8. Multiple clients in threaded mode should be stable for the ZRLE encoding on all platforms. The Tight and Zlib encodings are cur‐ rently only stable on Linux for multiple clients. Compile with -DTLS=__thread if your OS and compiler and linker support it. For resizes (randr, etc.) set this env. var. to the number of mil‐ liseconds to sleep: X11VNC_THREADS_NEW_FB_SLEEP at various places in the do_new_fb() action. This is to let various activities set‐ tle. Default is about 500ms. Multiple clients in threaded mode could yield better performance for 'class-room' broadcasting usage; also in -appshare broadcast mode. See also the -reflect option. -fs f If the fraction of changed tiles in a poll is greater than f, the whole screen is updated. Default: 0.75 -gaps n Heuristic to fill in gaps in rows or cols of n or less tiles. Used to improve text paging. Default: 4 -grow n Heuristic to grow islands of changed tiles n or wider by checking the tile near the boundary. Default: 3 -fuzz n Tolerance in pixels to mark a tiles edges as changed. Default: 2 -debug_tiles Print debugging output for tiles, fb updates, etc. -snapfb Instead of polling the X display framebuffer (fb) for changes, periodically copy all of X display fb into main memory and examine that copy for changes. (This setting also applies for non-X -rawfb modes). Under some circumstances this will improve inter‐ active response, or at least make things look smoother, but in others (most!) it will make the response worse. If the video h/w fb is such that reading small tiles is very slow this mode could help. To keep the "framerate" up the screen size x bpp cannot be too large. Note that this mode is very wasteful of memory I/O resources (it makes full screen copies even if nothing changes). It may be of use in video capture-like applications, webcams, or where window tearing is a problem. -rawfb string Instead of polling X, poll the memory object specified in string. For file polling, to memory map mmap(2) a file use: "map:/path/to/a/file@WxHxB", with framebuffer Width, Height, and Bits per pixel. "mmap:..." is the same. If there is trouble with mmap, use "file:/..." for slower lseek(2) based reading. Use "snap:..." to imply -snapfb mode and the "file:" access (this is for unseekable devices that only provide the fb all at once, e.g. a video camera provides the whole frame). For shared memory segments string is of the form: "shm:N@WxHxB" which specifies a shmid N and with WxHxB as above. See shmat(1) and ipcs(1) If you do not supply a type "map" is assumed if the file exists (see the next paragraphs for some exceptions to this.) If string is "setup:cmd", then the command "cmd" is run and the first line from it is read and used as string. This allows ini‐ tializing the device, determining WxHxB, etc. These are often done as root so take care. If the string begins with "video", see the VIDEO4LINUX discussion below where the device may be queried for (and possibly set) the framebuffer parameters. If the string begins with "console", "/dev/fb", "fb", or "vt", see the LINUX CONSOLE discussion below where the framebuffer device is opened and keystrokes (and possibly mouse events) are inserted into the console. If the string begins with "vnc", see the VNC HOST discussion below where the framebuffer is taken as that of another remote VNC server. Optional suffixes are ":R/G/B" and "+O" to specify red, green, and blue masks (in hex) and an offset into the memory object. If the masks are not provided x11vnc guesses them based on the bpp (if the colors look wrong, you need to provide the masks.) Another optional suffix is the Bytes Per Line which in some cases is not WxB/8. Specify it as WxHxB-BPL e.g. 800x600x16-2048. This could be a normal width 1024 at 16bpp fb, but only width 800 shows up. So the full format is: mode:file@WxHxB:R/G/B+O-BPL Examples: -rawfb shm:210337933@800x600x32:ff/ff00/ff0000 -rawfb map:/dev/fb0@1024x768x32 -rawfb map:/tmp/Xvfb_screen0@640x480x8+3232 -rawfb file:/tmp/my.pnm@250x200x24+37 -rawfb file:/dev/urandom@128x128x8 -rawfb snap:/dev/video0@320x240x24 -24to32 -rawfb video0 -rawfb video -pipeinput VID -rawfb console -rawfb vt2 -rawfb vnc:somehost:0 (see ipcs(1) and fbset(1) for the first two examples) In general all user input is discarded by default (see the -pipeinput option for how to use a helper program to insert). Most of the X11 (screen, keyboard, mouse) options do not make sense and many will cause this mode to crash, so please think twice before setting or changing them in a running x11vnc. If you DO NOT want x11vnc to close the X DISPLAY in rawfb mode, prepend a "+" e.g. +file:/dev/fb0... Keeping the display open enables the default remote-control channel, which could be useful. Alternatively, if you specify -noviewonly, then the mouse and key‐ board input are STILL sent to the X display, this usage should be very rare, i.e. doing something strange with /dev/fb0. If the device is not "seekable" (e.g. webcam) try reading it all at once in full snaps via the "snap:" mode (note: this is a resource hog). If you are using file: or map: AND the device needs to be reopened for *every* snapfb snapshot, set the environ‐ ment variable: SNAPFB_RAWFB_RESET=1 as well. If you want x11vnc to dynamically transform a 24bpp rawfb to 32bpp (note that this will be slower) also supply the -24to32 option. This would be useful for, say, a video camera that delivers the pixel data as 24bpp packed RGB. This is the default under "video" mode if the bpp is 24. Normally the bits per pixel, B, is 8, 16, or 32 (or rarely 24), however there is also some support for B < 8 (e.g. old graphics displays 4 bpp or 1 bpp). In this case you certainly must supply the masks as well: WxHxB:R/G/B. The pixels will be padded out to 8 bpp using depth 8 truecolor. The scheme currently does not work with snap fb (ask if interested.) B=1 monochrome example: file:/dev/urandom@128x128x1:1/1/1 Some other like this are 128x128x2:3/3/3 128x128x4:7/7/7 For B < 8 framebuffers you can also set the env. var RAWFB_CGA=1 to try a CGA mapping for B=4 (e.g. linux vga16fb driver.) Note with low bpp and/or resolution VGA and VGA16 modes on the Linux console one's attempt to export them via x11vnc can often be thwarted due to special color palettes, pixel packings, and even video painting buffering. OTOH, often experimenting with the RGB masks can yield something recognizable. VIDEO4LINUX: on Linux some attempt is made to handle video devices (webcams or TV tuners) automatically. The idea is the WxHxB will be extracted from the device itself. So if you do not supply<EMAIL_ADDRESS>parameters x11vnc will try to determine them. It first tries the v4l API if that support has been compiled in. Otherwise it will run the v4l- info(1) external program if it is available. The simplest examples are "-rawfb video" and "-rawfb video1" which imply the device file /dev/video and /dev/video1, respectively. You can also supply the /dev if you like, e.g. "-rawfb /dev/video0" Since the video capture device framebuffer usually changes contin‐ uously (e.g. brightness fluctuations), you may want to use the -wait, -slow_fb, or -defer options to lower the "framerate" to cut down on network VNC traffic. A more sophisticated video device scheme allows initializing the device's settings using: -rawfb video:<settings> The prefix could also be, as above, e.g. "video1:" to specify the device file. The v4l API must be available for this to work. Otherwise, you will need to try to initialize the device with an external program, e.g. xawtv, spcaview, and hope they persist when x11vnc re-opens the device. <settings> is a comma separated list of key=value pairs. The device's brightness, color, contrast, and hue can be set to per‐ centages, e.g. br=80,co=50,cn=44,hu=60. The device filename can be set too if needed (if it does not start with "video"), e.g. fn=/dev/qcam. The width, height and bpp of the framebuffer can be set via, e.g., w=160,h=120,bpp=16. Related to the bpp above, the pixel format can be set via the fmt=XXX, where XXX can be one of: GREY, HI240, RGB555, RGB565, RGB24, and RGB32 (with bpp 8, 8, 16, 16, 24, and 32 respectively). See http://www.linuxtv.org for more info (V4L api). For TV/rf tuner cards one can set the tuning mode via tun=XXX where XXX can be one of PAL, NTSC, SECAM, or AUTO. One can switch the input channel by the inp=XXX setting, where XXX is the name of the input channel (Television, Composite1, S-Video, etc). Use the name that is in the information about the device that is printed at startup. For input channels with tuners (e.g. Television) one can change which station is selected by the sta=XXX setting. XXX is the sta‐ tion number. Currently only the ntsc-cable-us (US cable) channels are built into x11vnc. See the -freqtab option below to supply one from xawtv. If XXX is greater than 500, then it is interpreted as a raw frequency in KHz. Example: -rawfb video:br=80,w=320,h=240,fmt=RGB32,tun=NTSC,sta=47 one might need to add inp=Television too for the input channel to be TV if the card doesn't come up by default in that one. Note that not all video capture devices will support all of the above settings. See the -pipeinput VID option below for a way to control the set‐ tings through the VNC Viewer via keystrokes. As a shortcut, if the string begins "Video.." instead of "video.." then -pipeinput VID is implied. As above, if you specify a<EMAIL_ADDRESS>after the <settings> string they are used verbatim: the device is not queried for the current values. Otherwise the device will be queried. LINUX CONSOLE: The following describes some ways to view and pos‐ sibly interact with the Linux text/graphics console (i.e. not X11 XFree86/Xorg) Note: If the LibVNCServer LinuxVNC program is on your system you may want to use that instead of the following method because it will be faster and more accurate for the Linux text console and includes mouse support. There is, however, the basic LinuxVNC functionality in x11vnc if you replace "console" with "vt" in the examples below. If the rawfb string begins with "console" the framebuffer device /dev/fb0 is opened and /dev/tty0 is opened too. The latter is used to inject keystrokes (not all are supported, but the basic ones are). You will need to be root to inject keystrokes, but not necessarily to open /dev/fb0. /dev/tty0 refers to the active VT, to indicate one explicitly, use, e.g., "console2" for /dev/tty2, etc. by indicating the specific VT number. For the Linux framebuffer device, /dev/fb0, (fb1, etc) to be enabled the appropriate kernel drivers must be loaded. E.g. vesafb or vga16fb and also by setting the boot parameter vga=0x301 (or 0x314, 0x317, etc.) (The vga=... method is the preferred way; set your machines up that way.) Otherwise there will be a ´No such device' error. You can also load a Linux framebuffer driver specific to your make of video card for more functionality. Once the machine is booted one can often 'modprobe' the fb driver as root to obtain a framebuffer device. If you cannot get /dev/fb0 working on Linux, try using the Lin‐ uxVNC emulation mode by "-rawfb vtN" where N = 1, ... 6 is the Linux Virtual Terminal (aka virtual console) you wish to view, e.g. "-rawfb vt2". Unlike /dev/fb mode, it need not be the active Virtual Terminal. Note that this mode can only show text and not graphics. x11vnc polls the text in /dev/vcsaN Set the env. var. RAWFB_VCSA_BW=1 to disable colors in the "vtN" mode (i.e. black and white only.) If you do not prefer the default 16bpp set RAWFB_VCSA_BPP to 8 or 32. If you need to tweak the rawfb parameters by using the 'console_guess' string printed at startup, be sure to indicate the snap: method. uinput: If the Linux version appears to be 2.6 or later and the "uinput" module appears to be present (modprobe uinput), then the uinput method will be used instead of /dev/ttyN. uinput allows insertion of BOTH keystrokes and mouse input and so it preferred when accessing graphical (e.g. QT-embedded) linux console apps. It also provides more accurate keystroke insertion. See -pipein‐ put UINPUT below for more information on this mode; you will have to use -pipeinput if you want to tweak any UINPUT parameters. You may also want to also use the -nodragging and -cursor none options. Use "console0", etc or -pipeinput CONSOLE to force the /dev/ttyN method. Note you can change the Linux VT remotely using the chvt(1) com‐ mand to make the one you want be the active one (e.g. 'chvt 3'). Sometimes switching out and back corrects the framebuffer's graph‐ ics state. For the "-rawfb vtN" mode there is no need to switch the VT's. To skip input injecting entirely use "consolex" or "vtx". The string "/dev/fb0" (1, etc.) can be used instead of "console". This can be used to specify a different framebuffer device, e.g. /dev/fb1. As a shortcut the "/dev/" can be dropped. If the name is something nonstandard, use "console:/dev/foofb" If you do not want x11vnc to guess the framebuffer's WxHxB and masks automatically (sometimes the kernel gives incorrect informa‐ tion), specify them with a @WxHxB (and optional :R/G/B masks) at the end of the string. Examples: -rawfb console -rawfb /dev/fb0 (same) -rawfb console3 (force /dev/tty3) -rawfb consolex (no keystrokes or mouse) -rawfb console:/dev/nonstd -rawfb console -pipeinput UINPUT:accel=4.0 -rawfb vt3 (/dev/tty3 w/o /dev/fb0) VNC HOST: if the -rawfb string is of the form "vnc:host:N" then the VNC display "N" on the remote VNC server "host" is connected to (i.e. x11vnc acts as a VNC client itself) and that framebuffer is exported. This is the same as the option "-reflect host:N". This mode is really only of use if you are trying to improve per‐ formance in the case of many (e.g. >10) simultaneous VNC viewers, and you try a divide and conquer scheme to reduce bandwidth and improve responsiveness. However, another user found this mode useful to export a demo display through a slow link: then multiple demo viewers connected to the reflecting x11vnc on the fast side of the link, and so avoided all of the demo viewers going through the slow link. Other users have found this mode useful to be able to take advantage of some of x11vnc's many features that other VNC servers do not have, for example SSL encryption, single port http and https, unix usernames and passwords, and -allow, -zeroconf, -clip, and -scale options and others. For the classroom broadcast example, if there will be 64 simulta‐ neous VNC viewers this can lead to a lot of redundant VNC traffic to and from the server host:N, extra CPU usage, and all viewers response can be reduced by having to wait for writes to the slow‐ est client to finish. However, if you set up 8 reflec‐ tors/repeaters started with option -rawfb vnc:host:N, then there are only 8 connections to host:N. Each repeater then handles 8 vnc viewer connections thereby spreading the load around. In classroom broadcast usage, try to put the repeaters on different switches. This mode is the same as -reflect host:N. Replace "host:N" by "listen" or "listen:port" for a reverse connection. Use "listennofork:port" to use the LibVNCServer non forking client listen interface (if your LibVNCServer has it), same as setting X11VNC_REFLECT_NO_FORK=1. Overall performance will not be as good as a single direct connec‐ tion because, among other things, there is an additional level of framebuffer polling and pointer motion can still induce many changes per second that must be propagated. Tip: if the remote VNC is x11vnc doing wireframing, or an X display that does wire‐ framing that gives much better response than opaque window drag‐ ging. Consider the -nodragging option if the problem is severe. The env. var. X11VNC_REFLECT_PASSWORD can be set to the password needed to log into the vnc host server, or to "file:path_to_file" to indicate a file containing the password as its first line. To set the pixel format that x11vnc requests as a VNC CLIENT set the env. vars: X11VNC_REFLECT_bitsPerSample X11VNC_REFLECT_sam‐ plesPerPixel, and X11VNC_REFLECT_bytesPerPixel; the defaults are 8, 3, 4. 2, 3, 1 would give a low color mode. See the function rfbGetClient() in libvncclient for more info. The VNC HOST mode implies -shared. Use -noshared as a subsequent cmdline option to disable sharing. -freqtab file For use with "-rawfb video" for TV tuner devices to specify sta‐ tion frequencies. Instead of using the built in ntsc-cable-us mapping of station number to frequency, use the data in file. For stations that are not numeric, e.g. SE20, they are placed above the highest numbered station in the order they are found. Exam‐ ple: "-freqtab /usr/X11R6/share/xawtv/europe-west.list" You can make your own freqtab by copying the xawtv format. -pipeinput cmd This option lets you supply an external command in cmd that x11vnc will pipe all of the user input events to in a simple format. In -pipeinput mode by default x11vnc will not process any of the user input events. If you prefix cmd with "tee:" it will both send them to the pipe command and process them. For a description of the format run "-pipeinput tee:/bin/cat". Another prefix is "reopen" which means to reopen pipe if it exits. Separate multi‐ ple prefixes with commas. In combination with -rawfb one might be able to do amusing things (e.g. control non-X devices). To facilitate this, if -rawfb is in effect then the value is stored in X11VNC_RAWFB_STR for the pipe command to use if it wants. Do 'env | grep X11VNC' for more. Built-in pipeinput modes (no external program required): If cmd is "VID" and you are using the -rawfb for a video capture device, then an internal list of keyboard mappings is used to set parameters of the video. The mappings are: "B" and "b" adjust the brightness up and down. "H" and "h" adjust the hue. "C" and "c" adjust the colour. "N" and "n" adjust the contrast. "S" and "s" adjust the size of the capture screen. "I" and "i" cycle through input channels. Up and Down arrows adjust the station (if a tuner) F1, F2, ..., F6 will switch the video capture pixel format to HI240, RGB565, RGB24, RGB32, RGB555, and GREY respectively. See -rawfb video for details. If cmd is "CONSOLE" or "CONSOLEn" where n is a Linux console num‐ ber, then the linux console keystroke insertion to /dev/ttyN (see -rawfb console) is performed. If cmd begins with "UINPUT" then the Linux uinput module is used to insert both keystroke and mouse events to the Linux console (see -rawfb above). This usually is the /dev/input/uinput device file (you may need to create it with "mknod /dev/input/uinput c 10 223" and insert the module with "modprobe uinput". The UINPUT mode currently only does US keyboards (a scan code option may be added), and not all keysyms are supported. But it is probably more accurate than the "CONSOLE" method. You may want to use the options -cursor none and -nodragging in this mode. Additional tuning options may be supplied via: UIN‐ PUT:opt1,opt2,... (a comma separated list). If an option begins with "/" it is taken as the uinput device file. Which uinput is injected can be controlled by an option string made of the characters "K", "M", and "B" (see the -input option), e.g. "KM" allows keystroke and motion but not button clicks. A UINPUT option of the form: accel=f, or accel=fx+fy sets the mouse motion "acceleration". This is used to correct raw mouse relative motion into how much the application cursor moves (x11vnc has no control over, or knowledge of how the windowing application interprets the raw mouse motions). Typically the acceleration for an X display is 2 (see xset "m" option). "f" is a floating point number, e.g. 3.0. Use "fx+fy" if you need to supply different corrections for x and y. Note: the default acceleration is 2.0 since it seems both X and qt-embedded often (but not always) use this value. Even with a correct accel setting the mouse position will get out of sync (probably due to a mouse "threshold" setting where the acceleration doe not apply, set xset(1) ). The option reset=N sets the number of ms (default 150) after which the cursor is attempted to be reset (by forcing the mouse to (0, 0) via small increments and then back out to (x, y) in 1 jump), This correction seems to be needed but can cause jerkiness or unexpected behavior with menus, etc. Use reset=0 to disable. If you set the env. var X11VNC_UINPUT_THRESHOLDS then the thresh=n mode will be enabled. It is currently not working well. If |dx| <= thresh and |dy| < thresh no acceleration is applied. Use "thresh=+n" |dx| + |dy| < thresh to be used instead (X11?) Example: -pipeinput UINPUT:accel=4.0 -cursor none If the uinput device has an absolute pointer (as opposed to a nor‐ mal mouse that is a relative pointer) you can specify the option "abs". Note that a touchpad on a laptop is an absolute device to some degree. This (usually) avoids all the problems with mouse acceleration. If x11vnc has trouble deducing the size of the device, use "abs=WxH". Furthermore, if the device is a touch‐ screen (assumed to have an absolute pointer) use "touch" or "touch=WxH". For touchscreens, when a mouse button is pressed, a pressure increase is injected, and when the button is released a pressure of zero is injected. If touch has been set, use "touch_always=1" to indicate whenever the mouse moves with no button pressed, a touch event of zero pressure should be sent anyway. Also use "btn_touch=1" to indi‐ cate a BTN_TOUCH keystroke press or release should be sent instead of a pressure change. Set "dragskip=n" to skip n dragged mouse touches (with pressure applied) before injecting one. To indicate the pressure that should be sent when there is a button click for a touchscreen device, specify pressure=n, e.g. n=5. The default is n=1. If a touch screen is being used ("touch" above) and it is having its input processed by tslib, you can specify the tslib calibra‐ tion file via tslib_cal=<file>. For example, tslib_cal=/etc/pointercal. To get accurate or even usable posi‐ tioning this is required when tslib is in use. The Linux uinput mechanism can be bypassed and one can write input events DIRECTLY to the devices instead. To do this, specify one or more of the following for the input classes: direct_rel=<device> direct_abs=<device> direct_btn=<device> or direct_key=<device>. The <device> file is usually something like /dev/input/event1 but you can specify any device file or pipe. You must specify each one of the above classes even if they corre‐ spond to the same device file (rel/abs and btn are often the same.) Look at the file /proc/bus/input/devices to get an idea what is available and the device filenames. Note: The /dev/input/mouse* devices do not seem to work, use the correspond‐ ing /dev/input/event* file instead. Any input class not directly specified as above will be handled via the uinput mechanism. To disable creating a uinput device (and thereby discarding unhandled input), specify "nouinput". Examples: -pipeinput UINPUT:direct_abs=/dev/input/event1 this was used on a qtmoko Neo freerunner (armel): -pipeinput UINPUT:touch,tslib_cal=/etc/pointercal, direct_abs=/dev/input/event1,nouinput,dragskip=4 (where the long line has been split into two.) You can set the env. var X11VNC_UINPUT_DEBUG=1 or higher to get debugging output for UINPUT mode. -macnodim For the native MacOSX server, disable dimming. -macnosleep For the native MacOSX server, disable display sleep. -macnosaver For the native MacOSX server, disable screensaver. -macnowait For the native MacOSX server, do not wait for the user to switch back to his display. -macwheel n For the native MacOSX server, set the mouse wheel speed to n (default 5). -macnoswap For the native MacOSX server, do not swap mouse buttons 2 and 3. -macnoresize For the native MacOSX server, do not resize or reset the frame‐ buffer even if it is detected that the screen resolution or depth has changed. -maciconanim n For the native MacOSX server, set n to the number of milliseconds that the window iconify/deiconify animation takes. In -ncache mode this value will be used to skip the animation if possible. (default 400) -macmenu For the native MacOSX server, in -ncache client-side caching mode, try to cache pull down menus (not perfect because they have ani‐ mated fades, etc.) -macuskbd For the native MacOSX server, use the original keystroke insertion code based on a US keyboard. -macnoopengl For the native MacOSX server, do not use OpenGL for screen cap‐ ture, but rather use the original, deprecated raw memory access method: addr = CGDisplayBaseAddress(). -macnorawfb For the native MacOSX server, disable the raw memory address screen capture method. MACOSX NOTE: There are some deprecated MacOSX interfaces to inject keyboard and mouse events and the raw memory access method is dep‐ recated as well (however, OpenGL will be preferred if available because it is faster.) One can force not using any deprecated interfaces at compile time by setting -DX11VNC_MACOSX_NO_DEPRE‐ CATED=1 in CPPFLAGS. Or to turn them off one by one: -DX11VNC_MACOSX_NO_DEPRECATED_LOCALEVENTS=1, -DX11VNC_MACOSX_NO_DEPRECATED_POSTEVENTS=1 or -DX11VNC_MACOSX_NO_DEPRECATED_FRAMEBUFFER=1 At run time, for test‐ ing and workarounds, one can disable them by using: -env X11VNC_MACOSX_NO_DEPRECATED=1 -env X11VNC_MACOSX_NO_DEPRE‐ CATED_LOCALEVENTS=1 -env X11VNC_MACOSX_NO_DEPRECATED_POSTEVENTS=1 or -env X11VNC_MACOSX_NO_DEPRECATED_FRAMEBUFFER=1 Note: When doing either of these for the mouse input not everything works cur‐ rently, e.g. double clicks and wireframing. Also, screen resolu‐ tion and pixel depth changes will not be automatically detected unless the deprecated framebuffer interfaces are allowed. Conversely, if you are compiling on an older machine that does not have some of the newer interfaces, you may need to specify -DX11VNC_MACOSX_NO_CGEVENTCREATESCROLLWHEELEVENT -DX11VNC_MACOSX_NO_CGEVENTCREATEMOUSEEVENT or -DX11VNC_MACOSX_NO_CGEVENTCREATEKEYBOARDEVENT. Use -DX11VNC_MACOSX_USE_GETMAINDEVICE to regain the very old QuickDraw GetMainDevice() interface (rare...) -gui [gui-opts] Start up a simple tcl/tk gui based on the remote control options -remote/-query described below. Requires the "wish" program to be installed on the machine. "gui-opts" is not required: the default is to start up both the full gui and x11vnc with the gui showing up on the X display in the environment variable DISPLAY. "gui-opts" can be a comma separated list of items. Currently there are these types of items: 1) a gui mode, a 2) gui "simplic‐ ity", 3) the X display the gui should display on, 4) a "tray" or "icon" mode, and 5) a gui geometry. 1) The gui mode can be "start", "conn", or "wait" "start" is the default mode above and is not required. "conn" means do not auto‐ matically start up x11vnc, but instead just try to connect to an existing x11vnc process. "wait" means just start the gui and nothing else (you will later instruct the gui to start x11vnc or connect to an existing one.) 2) The gui simplicity is off by default (a power-user gui with all options is presented) To start with something less daunting supply the string "simple" ("ez" is an alias for this). Once the gui is started you can toggle between the two with "Misc -> simple_gui". 3) Note the possible confusion regarding the potentially two dif‐ ferent X displays: x11vnc polls one, but you may want the gui to appear on another. For example, if you ssh in and x11vnc is not running yet you may want the gui to come back to you via your ssh redirected X display (e.g. localhost:10). If you do not specify a gui X display in "gui-opts" then the DIS‐ PLAY environment variable and -display option are tried (in that order). Regarding the x11vnc X display the gui will try to commu‐ nication with, it first tries -display and then DISPLAY. For example, "x11vnc -display :0 -gui otherhost:0", will remote con‐ trol an x11vnc polling :0 and display the gui on otherhost:0 The "tray/icon" mode below reverses this preference, preferring to display on the x11vnc display. 4) When "tray" or "icon" is specified, the gui presents itself as a small icon with behavior typical of a "system tray" or "dock applet". The color of the icon indicates status (connected clients) and there is also a balloon status. Clicking on the icon gives a menu from which properties, etc, can be set and the full gui is available under "Advanced". To be fully functional, the gui mode should be "start" (the default). Note that tray or icon mode will imply the -forever x11vnc option (if the x11vnc server is started along with the gui) unless -con‐ nect or -connect_or_exit has been specified. So x11vnc (and the tray/icon gui) will wait for more connections after the first client disconnects. If you want only one viewer connection include the -once option. For "icon" the gui just a small standalone window. For "tray" it will attempt to embed itself in the "system tray" if possible. If "=setpass" is appended then at startup the X11 user will be prompted to set the VNC session password. If =<hexnumber> is appended that icon will attempt to embed itself in the window given by hexnumber. Use =noadvanced to disable the full gui. (To supply more than one, use "+" sign). E.g. -gui tray=setpass and -gui icon=0x3600028 Other modes: "full", the default and need not be specified. "-gui none", do not show a gui, useful to override a ~/.x11vncrc set‐ ting, etc. 5) When "geom=+X+Y" is specified, that geometry is passed to the gui toplevel. This is the icon in icon/tray mode, or the full gui otherwise. You can also specify width and height, i.e. WxH+X+Y, but it is not recommended. In "tray" mode the geometry is ignored unless the system tray manager does not seem to be running. One could imagine using something like "-gui tray,geom=+4000+4000" with a display manager to keep the gui invisible until someone logs in... More icon tricks, "icon=minimal" gives an icon just with the VNC display number. You can also set the font with "iconfont=...". The following could be useful: "-gui icon=minimal,icon‐ font=5x8,geom=24x10+0-0" General examples of the -gui option: "x11vnc -gui", "x11vnc -gui ez" "x11vnc -gui localhost:10", "x11vnc -gui conn,host:0", "x11vnc -gui tray,ez" "x11vnc -gui tray=setpass" If you do not intend to start x11vnc from the gui (i.e. just remote control an existing one), then the gui process can run on a different machine from the x11vnc server as long as X permissions, etc. permit communication between the two. FONTS: On some systems the tk fonts can be too small, jagged, or otherwise unreadable. There are 4 env vars you can set to be the tk font you prefer: X11VNC_FONT_BOLD main font for menus and buttons. X11VNC_FONT_FIXED font for fixed width text. X11VNC_FONT_BOLD_SMALL tray icon font. X11VNC_FONT_REG_SMALL tray icon menu font. The last two only apply for the tray icon mode. Here are some examples: -env X11VNC_FONT_BOLD='Helvetica -16 bold' -env X11VNC_FONT_FIXED='Courier -14' -env X11VNC_FONT_REG_SMALL='Hel‐ vetica -12' You can put the lines like the above (without the quotes) in your ~/.x11vncrc file to avoid having to specify them on the x11vnc command line. -remote command Remotely control some aspects of an already running x11vnc server. "-R" and "-r" are aliases for "-remote". After the remote control command is sent to the running server the 'x11vnc -remote ...' x11vnc command exits. You can often use the -query command (see below) to see if the x11vnc server processed your -remote command. The default communication channel is that of X properties (specif‐ ically X11VNC_REMOTE), and so this command must be run with cor‐ rect settings for DISPLAY and possibly XAUTHORITY to connect to the X server and set the property. Alternatively, use the -dis‐ play and -auth options to set them to the correct values. The running server cannot use the -novncconnect option because that disables the communication channel. See below for alternate chan‐ nels. For example: 'x11vnc -remote stop' (which is the same as ´x11vnc -R stop') will close down the x11vnc server. ´x11vnc -R shared' will enable shared connections, and ´x11vnc -R scale:3/4' will rescale the desktop. To use a different name for the X11 property (e.g. to have sepa‐ rate communication channels for multiple x11vnc's on the same dis‐ play) set the X11VNC_REMOTE environment variable to the string you want, for example: -env X11VNC_REMOTE=X11VNC_REMOTE_12345 Both sides of the channel must use the same unique name. To run a bunch of commands in a sequence use something like: x11vnc -R 'script:firstcmd;secondcmd;...' Use x11vnc -R script:file=/path/to/file to read commands from a file (can be multi-line and use the comment '#' character in the normal way. The ';' separator must still be used to separate each command.) To not try to contact another x11vnc process and instead just run the command (or query) directly, prefix the command with the string "DIRECT:" The following -remote/-R commands are supported: stop terminate the server, same as "quit" "exit" or "shutdown". ping see if the x11vnc server responds. return is: ans=ping:<display> ping:mystring as above, but use your own unique string. return is: ans=ping:mystring:<xdisplay> blacken try to push a black fb update to all clients (due to timings a client could miss it). Same as "zero", also "zero:x1,y1,x2,y2" for a rectangle. refresh send the entire fb to all clients. reset recreate the fb, polling memory, etc. id:windowid set -id window to "windowid". empty or "root" to go back to root window sid:windowid set -sid window to "windowid" id_cmd:cmd cmds: raise, lower, map, unmap, iconify, move:dXdY, resize:dWdH, geom:WxH+X+Y. dX dY, dW, and dH must have a leading "+" or "-" e.g.: move:-30+10 resize:+20+35 also: wm_delete, wm_name:string and icon_name:string. Also id_cmd:win=N:cmd waitmapped wait until subwin is mapped. nowaitmapped do not wait until subwin is mapped. clip:WxH+X+Y set -clip mode to "WxH+X+Y" flashcmap enable -flashcmap mode. noflashcmap disable -flashcmap mode. shiftcmap:n set -shiftcmap to n. notruecolor enable -notruecolor mode. truecolor disable -notruecolor mode. overlay enable -overlay mode (if applicable). nooverlay disable -overlay mode. overlay_cursor in -overlay mode, enable cursor drawing. overlay_nocursor disable cursor drawing. same as nooverlay_cursor. 8to24 enable -8to24 mode (if applicable). no8to24 disable -8to24 mode. 8to24_opts:str set the -8to24 opts to "str". 24to32 enable -24to32 mode (if applicable). no24to32 disable -24to32 mode. visual:vis set -visual to "vis" scale:frac set -scale to "frac" scale_cursor:f set -scale_cursor to "f" viewonly enable -viewonly mode. noviewonly disable -viewonly mode. shared enable -shared mode. noshared disable -shared mode. forever enable -forever mode. noforever disable -forever mode. timeout:n reset -timeout to n, if there are currently no clients, exit unless one connects in the next n secs. tightfilexfer enable filetransfer for NEW clients. notightfilexfer disable filetransfer for NEW clients. ultrafilexfer enable filetransfer for clients. noultrafilexfer disable filetransfer for clients. rfbversion:n.m set -rfbversion for new clients. http enable http client connections. nohttp disable http client connections. deny deny any new connections, same as "lock" nodeny allow new connections, same as "unlock" avahi enable avahi service advertising. noavahi disable avahi service advertising. mdns enable avahi service advertising. nomdns disable avahi service advertising. zeroconf enable avahi service advertising. nozeroconf disable avahi service advertising. connect:host do reverse connection to host, "host" may be a comma separated list of hosts or host:ports. See -connect. Pass‐ words required as with fwd connections. See X11VNC_REVERSE_CON‐ NECTION_NO_AUTH=1 disconnect:host disconnect any clients from "host" same as "close:host". Use host "all" to close all current clients. If you know the client internal hex ID, e.g. 0x3 (returned by "-query clients" and RFB_CLIENT_ID) you can use that too. proxy:host:port set reverse connection proxy (empty to disable). allowonce:host For the next connection only, allow connection from "host". In -ssl mode two connections are allowed (i.e. Fetch Cert) unless X11VNC_NO_SSL_ALLOW_TWICE=1 allow:hostlist set -allow list to (comma separated) "hostlist". See -allow and -localhost. Do not use with -allow /path/to/file Use "+host" to add a single host, and use "-host" to delete a sin‐ gle host localhost enable -localhost mode nolocalhost disable -localhost mode listen:str set -listen to str, empty to disable. noipv6 enable -noipv6 mode. ipv6 disable -noipv6 mode. noipv4 enable -noipv4 mode. ipv4 disable -noipv4 mode. 6 enable -6 IPv6 listening mode. no6 disable -6 IPv6 listening mode. lookup disable -nolookup mode. nolookup enable -nolookup mode. lookup disable -nolookup mode. input:str set -input to "str", empty to disable. grabkbd enable -grabkbd mode. nograbkbd disable -grabkbd mode. grabptr enable -grabptr mode. nograbptr disable -grabptr mode. grabalways enable -grabalways mode. nograbalways disable -grabalways mode. grablocal:n set -grablocal to n. client_input:str set the K, M, B -input on a per-client basis. select which client as for disconnect, e.g. client_input:host:MB or client_input:0x2:K accept:cmd set -accept "cmd" (empty to disable). afteraccept:cmd set -afteraccept (empty to disable). gone:cmd set -gone "cmd" (empty to disable). noshm enable -noshm mode. shm disable -noshm mode (i.e. use shm). flipbyteorder enable -flipbyteorder mode, you may need to set noshm for this to do something. noflipbyteorder disable -flipbyteorder mode. onetile enable -onetile mode. (you may need to set shm for this to do something) noonetile disable -onetile mode. solid enable -solid mode nosolid disable -solid mode. solid_color:color set -solid color (and apply it). blackout:str set -blackout "str" (empty to disable). See -blackout for the form of "str" (basically: WxH+X+Y,...) Use "+WxH+X+Y" to append a single rectangle use "-WxH+X+Y" to delete one xinerama enable -xinerama mode. (if applicable) noxinerama disable -xinerama mode. xtrap enable -xtrap input mode(if applicable) noxtrap disable -xtrap input mode. xrandr enable -xrandr mode. (if applicable) noxrandr disable -xrandr mode. xrandr_mode:mode set the -xrandr mode to "mode". rotate:mode set the -rotate mode to "mode". padgeom:WxH set -padgeom to WxH (empty to disable) If WxH is "force" or "do" the padded geometry fb is immediately applied. quiet enable -quiet mode. noquiet disable -quiet mode. modtweak enable -modtweak mode. nomodtweak enable -nomodtweak mode. xkb enable -xkb modtweak mode. noxkb disable -xkb modtweak mode. capslock enable -capslock mode. nocapslock disable -capslock mode. skip_lockkeys enable -skip_lockkeys mode. noskip_lockkeys disable -skip_lockkeys mode. skip_keycodes:str enable -xkb -skip_keycodes "str". sloppy_keys enable -sloppy_keys mode. nosloppy_keys disable -sloppy_keys mode. skip_dups enable -skip_dups mode. noskip_dups disable -skip_dups mode. add_keysyms enable -add_keysyms mode. noadd_keysyms stop adding keysyms. those added will still be removed at exit. clear_mods enable -clear_mods mode and clear them. noclear_mods disable -clear_mods mode. clear_keys enable -clear_keys mode and clear them. noclear_keys disable -clear_keys mode. clear_locks do the clear_locks action. clear_all do the clear_all action. keystate have x11vnc print current keystate. remap:str set -remap "str" (empty to disable). See -remap for the form of "str" (basically: key1-key2,key3-key4,...) Use "+key1-key2" to append a single keymapping, use "-key1-key2" to delete. norepeat enable -norepeat mode. repeat disable -norepeat mode. nofb enable -nofb mode. fb disable -nofb mode. bell enable bell (if supported). nobell disable bell. sendbell ring the bell now. nosel enable -nosel mode. sel disable -nosel mode. noprimary enable -noprimary mode. primary disable -noprimary mode. nosetprimary enable -nosetprimary mode. setprimary disable -nosetprimary mode. noclipboard enable -noclipboard mode. clipboard disable -noclipboard mode. nosetclipboard enable -nosetclipboard mode. setclipboard disable -nosetclipboard mode. seldir:str set -seldir to "str" resend_cutbuffer resend the most recent CUTBUFFER0 copy resend_clipboard resend the most recent CLIPBOARD copy resend_primary resend the most recent PRIMARY copy cursor:mode enable -cursor "mode". show_cursor enable showing a cursor. noshow_cursor disable showing a cursor. (same as "nocursor") cursor_drag enable cursor changes during drag. nocursor_drag disable cursor changes during drag. arrow:n set -arrow to alternate n. xfixes enable xfixes cursor shape mode. noxfixes disable xfixes cursor shape mode. alphacut:n set -alphacut to n. alphafrac:f set -alphafrac to f. alpharemove enable -alpharemove mode. noalpharemove disable -alpharemove mode. alphablend disable -noalphablend mode. noalphablend enable -noalphablend mode. cursorshape disable -nocursorshape mode. nocursorshape enable -nocursorshape mode. cursorpos disable -nocursorpos mode. nocursorpos enable -nocursorpos mode. xwarp enable -xwarppointer mode. noxwarp disable -xwarppointer mode. always_inject enable -always_inject mode. noalways_inject disable -always_inject mode. buttonmap:str set -buttonmap "str", empty to disable dragging disable -nodragging mode. nodragging enable -nodragging mode. ncache reenable -ncache mode. noncache disable -ncache mode. ncache_size:n set -ncache size to n. ncache_cr enable -ncache_cr mode. noncache_cr disable -ncache_cr mode. ncache_no_moveraise enable no_moveraise mode. noncache_no_moveraise disable no_moveraise mode. ncache_no_dtchange enable ncache_no_dtchange mode. noncache_no_dtchange disable ncache_no_dtchange mode. ncache_old_wm enable ncache_old_wm mode. noncache_old_wm disable ncache_old_wm mode. ncache_no_rootpixmap enable ncache_no_rootpixmap. noncache_no_rootpixmap disable ncache_no_rootpixmap. ncache_reset_rootpixmap recheck the root pixmap, ncrp ncache_keep_anims enable ncache_keep_anims. noncache_keep_anims disable ncache_keep_anims. ncache_pad:n set -ncache_pad to n. wireframe enable -wireframe mode. same as "wf" nowireframe disable -wireframe mode. same as "nowf" wireframe:str enable -wireframe mode string. wireframe_mode:str enable -wireframe mode string. wireframelocal enable wireframelocal. same as "wfl" nowireframe disable wireframelocal. same as "nowfl" wirecopyrect:str set -wirecopyrect string. same as "wcr:" scrollcopyrect:str set -scrollcopyrect string. same "scr" noscrollcopyrect disable -scrollcopyrect__mode_. "noscr" scr_area:n set -scr_area to n scr_skip:list set -scr_skip to "list" scr_inc:list set -scr_inc to "list" scr_keys:list set -scr_keys to "list" scr_term:list set -scr_term to "list" scr_keyrepeat:str set -scr_keyrepeat to "str" scr_parms:str set -scr_parms parameters. fixscreen:str set -fixscreen to "str". noxrecord disable all use of RECORD extension. xrecord enable use of RECORD extension. reset_record reset RECORD extension (if avail.) pointer_mode:n set -pointer_mode to n. same as "pm" input_skip:n set -input_skip to n. allinput enable use of -allinput mode. noallinput disable use of -allinput mode. input_eagerly enable use of -input_eagerly mode. noinput_eagerly disable use of -input_eagerly mode. ssltimeout:n set -ssltimeout to n. speeds:str set -speeds to str. wmdt:str set -wmdt to str. debug_pointer enable -debug_pointer, same as "dp" nodebug_pointer disable -debug_pointer, same as "nodp" debug_keyboard enable -debug_keyboard, same as "dk" nodebug_keyboard disable -debug_keyboard, same as "nodk" keycode:n inject keystroke 'keycode' (xmodmap -pk) keycode:n,down inject 'keycode' (down=0,1) keysym:str inject keystroke 'keysym' (number/name) keysym:str,down inject 'keysym' (down=0,1) ptr:x,y,mask inject pointer event x, y, button-mask fakebuttonevent:button,down direct XTestFakeButtonEvent. sleep:t sleep floating point time t. get_xprop:p get X property named 'p'. set_xprop:p:val set X property named 'p' to 'val'. p -> id=NNN:p for hex/dec window id. wininfo:id get info about X window id. use 'root' for root window, use +id for children. grab_state get state of pointer and keyboard grab. pointer_pos print XQueryPointer x,y cursor position. pointer_x print XQueryPointer x cursor position. pointer_y print XQueryPointer y cursor position. pointer_same print XQueryPointer ptr on same screen. pointer_root print XQueryPointer curr ptr rootwin. pointer_mask print XQueryPointer button and mods mask mouse_x print x11vnc's idea of cursor position. mouse_y print x11vnc's idea of cursor position. noop do nothing. defer:n set -defer to n ms,same as deferupdate:n wait:n set -wait to n ms. extra_fbur:n set -extra_fbur to n. wait_ui:f set -wait_ui factor to f. setdefer:n set -setdefer to -2,-1,0,1, or 2. wait_bog disable -nowait_bog mode. nowait_bog enable -nowait_bog mode. slow_fb:f set -slow_fb to f seconds. xrefresh:f set -xrefresh to f seconds. readtimeout:n set read timeout to n seconds. nap enable -nap mode. nonap disable -nap mode. sb:n set -sb to n s, same as screen_blank:n fbpm disable -nofbpm mode. nofbpm enable -nofbpm mode. dpms disable -nodpms mode. nodpms enable -nodpms mode. forcedpms enable -forcedpms mode. noforcedpms disable -forcedpms mode. clientdpms enable -clientdpms mode. noclientdpms disable -clientdpms mode. noserverdpms enable -noserverdpms mode. serverdpms disable -noserverdpms mode. noultraext enable -noultraext mode. ultraext disable -noultraext mode. chatwindow enable local chatwindow mode. nochatwindow disable local chatwindow mode. chaton begin chat using local window. chatoff end chat using local window. xdamage enable xdamage polling hints. noxdamage disable xdamage polling hints. xd_area:A set -xd_area max pixel area to "A" xd_mem:f set -xd_mem remembrance to "f" fs:frac set -fs fraction to "frac", e.g. 0.5 gaps:n set -gaps to n. grow:n set -grow to n. fuzz:n set -fuzz to n. snapfb enable -snapfb mode. nosnapfb disable -snapfb mode. rawfb:str set -rawfb mode to "str". uinput_accel:f set uinput_accel to f. uinput_thresh:n set uinput_thresh to n. uinput_reset:n set uinput_reset to n ms. uinput_always:n set uinput_always to 1/0. progressive:n set LibVNCServer -progressive slice height parame‐ ter to n. desktop:str set -desktop name to str for new clients. rfbport:n set -rfbport to n. macnosaver enable -macnosaver mode. macsaver disable -macnosaver mode. macnowait enable -macnowait mode. macwait disable -macnowait mode. macwheel:n set -macwheel to n. macnoswap enable -macnoswap mouse button mode. macswap disable -macnoswap mouse button mode. macnoresize enable -macnoresize mode. macresize disable -macnoresize mode. maciconanim:n set -maciconanim to n. macmenu enable -macmenu mode. macnomenu disable -macmenu mode. macuskbd enable -macuskbd mode. macnouskbd disable -macuskbd mode. httpport:n set -httpport to n. httpdir:dir set -httpdir to dir (and enable http). enablehttpproxy enable -enablehttpproxy mode. noenablehttpproxy disable -enablehttpproxy mode. alwaysshared enable -alwaysshared mode. noalwaysshared disable -alwaysshared mode. (may interfere with other options) nevershared enable -nevershared mode. nonevershared disable -nevershared mode. (may interfere with other options) dontdisconnect enable -dontdisconnect mode. nodontdisconnect disable -dontdisconnect mode. (may interfere with other options) debug_xevents enable debugging X events. nodebug_xevents disable debugging X events. debug_xdamage enable debugging X DAMAGE mechanism. nodebug_xdamage disable debugging X DAMAGE mechanism. debug_wireframe enable debugging wireframe mechanism. nodebug_wireframe disable debugging wireframe mechanism. debug_scroll enable debugging scrollcopy mechanism. nodebug_scroll disable debugging scrollcopy mechanism. debug_tiles enable -debug_tiles nodebug_tiles disable -debug_tiles debug_grabs enable -debug_grabs nodebug_grabs disable -debug_grabs debug_sel enable -debug_sel nodebug_sel disable -debug_sel debug_ncache enable -debug_ncache nodebug_ncache disable -debug_ncache dbg enable -dbg crash shell nodbg disable -dbg crash shell noremote disable the -remote command processing, it cannot be turned back on. bcx_xattach:str This remote control command is for use with the BARCO xattach program or the x2x program. Both of these programs are for 'pointer and keyboard' sharing between separate X dis‐ plays. In general the two displays are usually nearby, e.g. on the same desk, and this allows the user to share a single pointer and keyboard between them. The user moves the mouse to an edge and then the mouse pointer appears to 'jump' to the other display screen. Thus it emulates what a single X server would do for two screens (e.g. :0.0 and :0.1) The illusion of a single Xserver with multiple screens is achieved by forwarding events to the 2nd one via the XTEST extension. What the x11vnc bcx_xattach command does is to perform some pointer movements to try to INDUCE xattach/x2x to 'jump' to the other display. In what follows the ´master' display refers to the one that when it has ´focus' it is basically doing nothing besides watching for the mouse to go over an edge. The 'slave' display refers to the one to which the mouse and keyboard is redirected to once an edge in the master has been crossed. Note that the x11vnc executing the bcx_xattach command MUST be the one connected to the *master* display. Also note that when input is being redirected (via XTEST) from the master display to the slave display, the master display's pointer and keyboard are *grabbed* by xattach/x2x. x11vnc can use this info to verify that the master/slave mode change has taken place correctly. If you specify the "ifneeded" option (see below) and the initial grab state is that of the desired final state, then no pointer movements are injected and "DONE,GRAB_OK" is returned. "str" must contain one of "up", "down", "left", or "right" to indicate the direction of the 'jump'. "str" must also contain one of "master_to_slave" or "slave_to_master" to indicate the type of mode change induced by the jump. Use "M2S" and "S2M" as shorter aliases. "str" may be a "+" separated list of additional tuning options. The "shift=n" option indicates an offset shift position away from (0,0) (default 20). "final=x+y" specifies the final position of the cursor at the end of the normal move sequence; default 30+30. "extra_move=x+y" means to do one more pointer move after "final" to x+y. "dt=n" sets the sleep time in milliseconds between pointer moves (default: 40ms) "retry=n" specifies the maximum num‐ ber of retries if the grab state change fails. "ifneeded" means to not apply the pointer movements if the initial grab state is that of the desired final state. "nograbcheck" means to not check if the grab state changed as expected and only apply the pointer movements (default is to check the grab states.) If you do not specify "up", etc., to bcx_xattach nothing will be attempted and the command returns the string FAIL,NO_DIREC‐ TION_SPECIFIED. If you do not specify "master_to_slave" or "M2S", etc., to bcx_xattach nothing will be attempted and the command returns the string FAIL,NO_MODE_CHANGE_SPECIFIED. Otherwise, the returned string will contain "DONE". It will be "DONE,GRAB_OK" if the grab state changed as expected (or if "ifneeded" was supplied and the initial grab state was already the desired one.) If the initial grab state was incorrect, but the final grab state was correct then it is "DONE,GRAB_FAIL_INIT". If the initial grab state was correct, but the final grab state was incorrect then it is "DONE,GRAB_FAIL_FINAL". If both are incor‐ rect it will be "DONE,GRAB_FAIL". Under grab failure the string will be followed by ":p1,k1-p2,k2" where p1,k1 indicates the ini‐ tial pointer and keyboard grab states and p2,k2 the final ones. If GRAB_FAIL or GRAB_FAIL_FINAL occurs, the action will be retried up to 3 times; trying to reset the state and sleeping a bit between each try. Set retry=n to adjust the number of retries, zero to disable retries. Examples: -R bcx_xattach:down+M2S -R bcx_xattach:up+S2M -R bcx_xattach:up+S2M+nograbcheck+dt=30 -R bcx_xat‐ tach:down+M2S+extra_move=100+100 or use -Q instead of -R to retrieve the result text. End of the bcx_xattach:str description. The vncconnect(1) command from standard VNC distributions may also be used if string is prefixed with "cmd=" E.g. 'vncconnect cmd=stop'. Under some circumstances xprop(1) can used if it sup‐ ports -set (see the FAQ). If "-connect /path/to/file" has been supplied to the running x11vnc server then that file can be used as a communication chan‐ nel (this is the only way to remote control one of many x11vnc's polling the same X display) Simply run: 'x11vnc -connect /path/to/file -remote ...' or you can directly write to the file via something like: "echo cmd=stop > /path/to/file", etc. -query variable Like -remote, except just query the value of variable. "-Q" is an alias for "-query". Multiple queries can be done by separating variables by commas, e.g. -query var1,var2. The results come back in the form ans=var1:value1,ans=var2:value2,... to the standard output. If a variable is read-only, it comes back with prefix "aro=" instead of "ans=". Some -remote commands are pure actions that do not make sense as variables, e.g. "stop" or "disconnect", in these cases the value returned is "N/A". To direct a query straight to the X11VNC_REMOTE property or connect file use "qry=..." instead of "cmd=..."  Use -sync to have the program wait for an acknowledgement from the x11vnc server that command was processed (somehow). On the other hand -query requests are always processed synchronously because they have to wait for the answer. Also note that if both -remote and -query requests are supplied on the command line, the -remote is processed first (synchronously: no need for -sync), and then the -query request is processed in the normal way. This allows for a reliable way to see if the -remote command was processed by querying for any new settings. Note however that there is timeout of a few seconds (see the next paragraph) so if the x11vnc takes longer than that to process the requests the requester will think that a failure has taken place. The default is to wait 3.5 seconds. Or if cmd=stop only 1.0 sec‐ onds. If cmd matches 'script:' then it will wait up to 10.0 sec‐ onds. Set X11VNC_SYNC_TIMEOUT to the number of seconds you want it to wait. -query_retries str If a query fails to get a response from an x11vnc server, retry up to n times. str is specified as n[:t][/match] Optionally the delay between tries may be specified by "t" a floating point time (default 0.5 seconds.) Note: the response is not checked for validity or whether it corresponds to the query sent. The query "ping:mystring" may be used to help uniquely identify the query. Optionally, a matching string after a "/" will be used to check the result text. Up to n retries will take place until the match‐ ing string is found in the output text. If the match string is never found the program's exit code is 1; if the match is found it exits with 0. Note that there may be stdout printed for each retry (i.e. multiple lines printed out to stdout.) Example: -query_retries 4:1.5/grab_state -remote_prefix str Enable a remote-control communication channel for connected VNC clients. str is a non-empty string. If a VNC client sends rfbCut‐ Text having the prefix str then the part after it is processed as though it were sent via 'x11vnc -remote ...'. If it begins with neither 'cmd=' nor 'qry=' then 'qry=' is assumed. Any correspond‐ ing output text for that remote control command is sent back to all client as rfbCutText. The returned output is also prefixed with str. Example: -remote_prefix DO_THIS: Note that enabling -remote_prefix allows the remote VNC viewers to run x11vnc -remote commands. Do not use this option if they are not to be trusted. -noremote, -yesremote Do not process any remote control commands or queries. Do process remote control commands or queries. Default: -yesremote A note about security wrt remote control commands. If someone can connect to the X display and change the property X11VNC_REMOTE, then they can remotely control x11vnc. Normally access to the X display is protected. Note that if they can modify X11VNC_REMOTE on the X server, they have enough permissions to also run their own x11vnc and thus have complete control of the desktop. If the "-connect /path/to/file" channel is being used, obviously anyone who can write to /path/to/file can remotely control x11vnc. So be sure to protect the X display and that file's write permissions. See -privremote below. If you are paranoid and do not think -noremote is enough, to dis‐ able the X11VNC_REMOTE property channel completely use -novnc‐ connect, or use the -safer option that shuts many things off. -unsafe A few remote commands are disabled by default (currently: id:pick, accept:<cmd>, gone:<cmd>, and rawfb:setup:<cmd>) because they are associated with running external programs. If you specify -unsafe, then these remote-control commands are allowed. Note that you can still specify these parameters on the command line, they just cannot be invoked via remote-control. -safer Equivalent to: -novncconnect -noremote and prohibiting -gui and the -connect file. Shuts off communcation channels. -privremote Perform some sanity checks and disable remote-control commands if it appears that the X DISPLAY and/or connectfile can be accessed by other users. Once remote-control is disabled it cannot be turned back on. -nocmds No external commands (e.g. system(3) , popen(3) , exec(3) ) will be run at all. -allowedcmds list list contains a comma separated list of the only external commands that can be run. The full list of associated options is: stunnel, ssl, unixpw, WAIT, zeroconf, id, accept, afteraccept, gone, pipeinput, v4l-info, rawfb-setup, dt, gui, ssh, storepasswd, passwdfile, custom_passwd, findauth, crash. See each option's help to learn the associated external command. Note that the -nocmds option takes precedence and disables all external commands. -deny_all For use with -remote nodeny: start out denying all incoming clients until "-remote nodeny" is used to let them in. These options are passed to LibVNCServer: -rfbport port TCP port for RFB protocol -rfbwait time max time in ms to wait for RFB client -rfbauth passwd-file use authentication on RFB protocol (use 'x11vnc -storepasswd pass file' to create a password file) -rfbversion 3.x Set the version of the RFB we choose to advertise -permitfiletransfer permit file transfer support -passwd plain-password use authentication (use plain-password as password, USE AT YOUR RISK) -deferupdate time time in ms to defer updates (default 40) -deferptrupdate time time in ms to defer pointer updates (default none) -desktop name VNC desktop name (default "LibVNCServer") -alwaysshared always treat new clients as shared -nevershared never treat new clients as shared -dontdisconnect don't disconnect existing clients when a new non-shared connection comes in (refuse new connection instead) -httpdir dir-path enable http server using dir-path home -httpport portnum use portnum for http connection -enablehttpproxy enable http proxy support -progressive height enable progressive updating for slow links -listen ipaddr listen for connections only on network interface with addr ipaddr. '-listen localhost' and hostname work too. libvncserver-tight-extension options: -disablefiletransfer disable file transfer -ftproot string set ftp root FILES $HOME/.x11vncrc, $HOME/.Xauthority ENVIRONMENT DISPLAY, XAUTHORITY, HOME The following are set for the auxiliary commands run by -accept, -gone and other cases: RFB_CLIENT_IP, RFB_CLIENT_PORT, RFB_SERVER_IP, RFB_SERVER_PORT, RFB_X11VNC_PID, RFB_CLIENT_ID, RFB_CLIENT_COUNT, RFB_MODE RFB_STATE RFB_LOGIN_VIEWONLY RFB_LOGIN_TIME RFB_CURRENT_TIME RFB_USERNAME RFB_SSL_CLIENT_CERT SEE ALSO vncviewer(1), vncpasswd(1), vncconnect(1), vncserver(1), Xvnc(1), xev(1), xdpyinfo(1), xwininfo(1), xprop(1), xmodmap(1), xrandr(1), Xserver(1), xauth(1), xhost(1), Xsecurity(7), xmessage(1), XGetImage(3X11), ipcrm(1), inetd(1), xdm(1), gdm(1), kdm(1), ssh(1), stunnel(8), su(1), http://www.tightvnc.com, http://www.realvnc.com, http://www.karl‐ runge.com/x11vnc/, http://www.karlrunge.com/x11vnc/#faq AUTHORS x11vnc was written by Karl J. Runge<EMAIL_ADDRESS>it is part of the LibVNCServer project <http://sf.net/projects/libvncserver>. This manual page is based one the one written by Ludovic Drolez<EMAIL_ADDRESS>for the Debian project (both may be used by oth‐ ers). x11vnc August 2011 X11VNC(1)