Commit b0daa444 authored by runge's avatar runge

x11vnc: -scrollcopyrect/RECORD, etc. configure.ac: customizations for x11vnc pkg

parent 6602a22f
2005-05-02 Karl Runge <runge@karlrunge.com>
* configure.ac: fatal error for x11vnc package if no X present
* configure.ac: give warnings and info about missing libjpeg/libz
* x11vnc: X RECORD heuristics to detect scrolls: -scrollcopyrect,
build customizations, bandwidth/latency estimates.
2005-04-27 Johannes E. Schindelin <Johannes.Schindelin@gmx.de> 2005-04-27 Johannes E. Schindelin <Johannes.Schindelin@gmx.de>
* clear requested region (long standing TODO, pointed out by Karl) * clear requested region (long standing TODO, pointed out by Karl)
......
...@@ -52,6 +52,7 @@ AH_TEMPLATE(HAVE_LIBXRANDR, [XRANDR extension build environment present]) ...@@ -52,6 +52,7 @@ AH_TEMPLATE(HAVE_LIBXRANDR, [XRANDR extension build environment present])
AH_TEMPLATE(HAVE_LIBXFIXES, [XFIXES extension build environment present]) AH_TEMPLATE(HAVE_LIBXFIXES, [XFIXES extension build environment present])
AH_TEMPLATE(HAVE_LIBXDAMAGE, [XDAMAGE extension build environment present]) AH_TEMPLATE(HAVE_LIBXDAMAGE, [XDAMAGE extension build environment present])
AH_TEMPLATE(HAVE_LIBXTRAP, [DEC-XTRAP extension build environment present]) AH_TEMPLATE(HAVE_LIBXTRAP, [DEC-XTRAP extension build environment present])
AH_TEMPLATE(HAVE_RECORD, [RECORD extension build environment present])
if test "$X_CFLAGS" != "-DX_DISPLAY_MISSING"; then if test "$X_CFLAGS" != "-DX_DISPLAY_MISSING"; then
AC_CHECK_LIB(X11, XGetImage, HAVE_X="true", AC_CHECK_LIB(X11, XGetImage, HAVE_X="true",
HAVE_X="false", HAVE_X="false",
...@@ -74,6 +75,11 @@ if test "$X_CFLAGS" != "-DX_DISPLAY_MISSING"; then ...@@ -74,6 +75,11 @@ if test "$X_CFLAGS" != "-DX_DISPLAY_MISSING"; then
[AC_DEFINE(HAVE_XTEST)], , [AC_DEFINE(HAVE_XTEST)], ,
$X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS) $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS)
AC_CHECK_LIB(Xtst, XRecordEnableContextAsync,
X_PRELIBS="$X_PRELIBS -lXtst"
[AC_DEFINE(HAVE_RECORD)], ,
$X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS)
# we use XTRAP on X11R5, or user can set X11VNC_USE_XTRAP # we use XTRAP on X11R5, or user can set X11VNC_USE_XTRAP
if test ! -z "$X11VNC_USE_XTRAP" -o -z "$HAVE_XTESTGRABCONTROL"; then if test ! -z "$X11VNC_USE_XTRAP" -o -z "$HAVE_XTESTGRABCONTROL"; then
AC_CHECK_LIB(XTrap, XETrapSetGrabServer, AC_CHECK_LIB(XTrap, XETrapSetGrabServer,
...@@ -131,6 +137,19 @@ fi ...@@ -131,6 +137,19 @@ fi
AC_SUBST(X_LIBS) AC_SUBST(X_LIBS)
AM_CONDITIONAL(HAVE_X, test $HAVE_X != "false") AM_CONDITIONAL(HAVE_X, test $HAVE_X != "false")
if test "$PACKAGE_NAME" = "x11vnc" -a $HAVE_X = "false"; then
AC_MSG_ERROR([
==========================================================================
a working X window system build environment is required to build x11vnc.
Make sure any required X development packages are installed. If they are
installed in non-standard locations, one can use the --x-includes=DIR
and --x-libraries=DIR configure options or set the CPPFLAGS and LDFLAGS
environment variables to indicate where the X window system header files
and libraries may be found.
==========================================================================
])
fi
# Checks for libraries. # Checks for libraries.
AC_ARG_WITH(jpeg, AC_ARG_WITH(jpeg,
...@@ -168,6 +187,17 @@ if test "x$with_jpeg" != "xno"; then ...@@ -168,6 +187,17 @@ if test "x$with_jpeg" != "xno"; then
LDFLAGS="$saved_LDFLAGS" LDFLAGS="$saved_LDFLAGS"
fi fi
fi fi
if test "$PACKAGE_NAME" = "x11vnc"; then
if test "x$HAVE_JPEGLIB_H" != "xtrue"; then
AC_MSG_WARN([
libjpeg compression library was not found: this may lead to reduced performance
especially over slow links. If libjpeg is in a non-standard location
use --with-jpeg=DIR to indicate the header file is in DIR/include/jpeglib.h
and the library in DIR/lib/libjpeg.a. A copy of libjpeg may be obtained
from: ftp://ftp.uu.net/graphics/jpeg/
])
fi
fi
fi fi
AC_ARG_WITH(libz, AC_ARG_WITH(libz,
...@@ -198,6 +228,17 @@ if test "x$with_zlib" != "xno" -a "x$with_libz" != "xno"; then ...@@ -198,6 +228,17 @@ if test "x$with_zlib" != "xno" -a "x$with_libz" != "xno"; then
LDFLAGS="$saved_LDFLAGS" LDFLAGS="$saved_LDFLAGS"
fi fi
fi fi
if test "$PACKAGE_NAME" = "x11vnc"; then
if test "x$HAVE_ZLIB_H" != "xtrue"; then
AC_MSG_WARN([
libz compression library was not found: this may lead to reduced performance,
especially over slow links. If libz is in a non-standard location
use --with-zlib=DIR to indicate the header file is in DIR/include/zlib.h
and the library in DIR/lib/libz.a. A copy of libz may be obtained
from: http://www.gzip.org/zlib/
])
fi
fi
fi fi
AC_CHECK_HEADER(pthread.h, HAVE_PTHREAD_H="true") AC_CHECK_HEADER(pthread.h, HAVE_PTHREAD_H="true")
......
2005-05-02 Karl Runge <runge@karlrunge.com>
* initial support for using RECORD to detect some types of window
scrolls. This is "-scrollcopyrect" mode, use -noscrollcopyrect
to disable. Much tuning and painting error repair still required.
* more build time customizations: REMOTE_DEFAULT, REMOTE_CONTROL,
EXTERNAL_COMMANDS, NOREPEAT, WIREFRAME*, SCROLL*, ...
* added bandwidth and latency measurements.
* added XListHosts to -privremote check.
* debug_* remote-control variables.
* removed OLD_TREE stuff.
2005-04-19 Karl Runge <runge@karlrunge.com> 2005-04-19 Karl Runge <runge@karlrunge.com>
* somewhat safer remote-control defaults, and addnl options for * somewhat safer remote-control defaults, and addnl options for
more safe operation: -privremote, -safer, -nocmds, -unsafe more safe operation: -privremote, -safer, -nocmds, -unsafe
......
x11vnc README file Date: Tue Apr 19 16:26:20 EDT 2005 x11vnc README file Date: Mon May 2 21:41:13 EDT 2005
The following information is taken from these URLs: The following information is taken from these URLs:
...@@ -527,7 +527,9 @@ make ...@@ -527,7 +527,9 @@ make
Here is what is shaping up to be [52]the release notes for 0.7.2.. Here is what is shaping up to be [52]the release notes for 0.7.2..
Note that the [53]X DAMAGE feature will be on by default and so I am Note that the [53]X DAMAGE feature will be on by default and so I am
interested if that causes any problems. Thanks! interested if that causes any problems. I'd also like to have the new
"wireframe" move/resize stuff on by default as well, let me know of
any issues you find. Thanks!
_________________________________________________________________ _________________________________________________________________
Some Notes: Some Notes:
...@@ -576,11 +578,10 @@ make ...@@ -576,11 +578,10 @@ make
note below) note below)
Options: x11vnc has (far too) many features that may be activated Options: x11vnc has (far too) many features that may be activated
via its [57]command line options. Useful options are -nap to use fewer via its [57]command line options. Useful options are, e.g., -scale to
resources (it sleeps more between polls when activity is low) and do server-side scaling, and -rfbauth passwd-file to use VNC password
-rfbauth passwd-file to use VNC password protection (the vncpasswd or protection (the vncpasswd or storepasswd programs, or the x11vnc
storepasswd programs, or the x11vnc [58]-storepasswd option can be [58]-storepasswd option can be used to create the password file).
used to create the password file).
Algorithm: How does x11vnc do it? Rather brute-forcedly: it Algorithm: How does x11vnc do it? Rather brute-forcedly: it
continuously polls the X11 framebuffer for changes using continuously polls the X11 framebuffer for changes using
...@@ -588,18 +589,18 @@ make ...@@ -588,18 +589,18 @@ make
which rectangular regions of the framebuffer have changed, and which rectangular regions of the framebuffer have changed, and
libvncserver compresses the changes and sends them off to any libvncserver compresses the changes and sends them off to any
connected VNC viewers. A number of applications do similar things, connected VNC viewers. A number of applications do similar things,
such as x0rfbserver, krfb, x0vncserver. x11vnc uses a 32 x 32 pixel such as x0rfbserver, krfb, x0vncserver, vino. x11vnc uses a 32 x 32
tile model (the desktop is decomposed into roughly 1000 such tiles), pixel tile model (the desktop is decomposed into roughly 1000 such
where changed tiles are found by pseudo-randomly polling 1 pixel tall tiles), where changed tiles are found by pseudo-randomly polling 1
horizontal scanlines. This is a surprisingly effective algorithm for pixel tall horizontal scanlines. This is a surprisingly effective
finding changed regions. For keyboard and mouse user input the XTEST algorithm for finding changed regions. For keyboard and mouse user
extension is used to pass the input events to the X server. To detect input the XTEST extension is used to pass the input events to the X
XBell "beeps" the XKEYBOARD extension is used. If available, the server. To detect XBell "beeps" the XKEYBOARD extension is used. If
XFIXES extension is used to retrieve the current mouse cursor shape. available, the XFIXES extension is used to retrieve the current mouse
Also, if available the X DAMAGE extension is used to receive hints cursor shape. Also, if available the X DAMAGE extension is used to
from the X server where modified regions on the screen are. This receive hints from the X server where modified regions on the screen
greatly reduces the system load when not much is changing on the are. This greatly reduces the system load when not much is changing on
screen and also improves how quickly the screen is updated. the screen and also improves how quickly the screen is updated.
Barbershop mirrors effect: What if x11vnc is started up, and Barbershop mirrors effect: What if x11vnc is started up, and
vncviewer is then started up on the same machine and displayed on the vncviewer is then started up on the same machine and displayed on the
...@@ -1375,7 +1376,9 @@ display :0 ...@@ -1375,7 +1376,9 @@ display :0
unintendeds. Perhaps this is of use in remote access for an embedded unintendeds. Perhaps this is of use in remote access for an embedded
application, etc... application, etc...
Let us know if more build-time customizations would be useful. Let us know if more build-time customizations would be useful. Look
near the top of the source file for any additional customization
macros.
If the system does not have the XTEST XTestGrabControl interface (some If the system does not have the XTEST XTestGrabControl interface (some
early X11R5 systems have XTEST but not this interface), then configure early X11R5 systems have XTEST but not this interface), then configure
...@@ -2761,18 +2764,20 @@ ied) ...@@ -2761,18 +2764,20 @@ ied)
polling and updates will be suspended and only an animated "wireframe" polling and updates will be suspended and only an animated "wireframe"
(a rectangle outline drawn where the moved/resized window would be) is (a rectangle outline drawn where the moved/resized window would be) is
shown. When the window move/resize stops, it returns to normal shown. When the window move/resize stops, it returns to normal
processing: you should just see the window appear in the new position. processing: you should only see the window appear in the new position.
This spares you from interacting with a "lurching" window during all This spares you from interacting with a "lurching" window between all
of the intermediate steps. (the lurching is due to [297]slow video of the intermediate steps. BTW the lurching is due to [297]slow video
card read rates) card read rates. A displacement, even a small one, of a large window
requires a non-negligible amount of time, a good fraction of a second,
The mode is currently on be default because most people are inflicted to read in from the hardware framebuffer.
The mode is currently on by default because most people are inflicted
with the problem. It can be disabled with the [298]-nowireframe with the problem. It can be disabled with the [298]-nowireframe
option. Why might one want to turn off the wireframing? Since x11vnc option. Why might one want to turn off the wireframing? Since x11vnc
is merely guessing when windows are being moved/resized, it may guess is merely guessing when windows are being moved/resized, it may guess
poorly for your window-manager or desktop, or even for the way you poorly for your window-manager or desktop, or even for the way you
move the pointer. If your window-manager or desktop already does its move the pointer. If your window-manager or desktop already does its
own wireframing then this mode is a waste of time or could do the own wireframing then this mode is a waste of time and could do the
wrong thing occasionally. There may be other reasons the new mode wrong thing occasionally. There may be other reasons the new mode
feels unnatural. If you have very expensive video hardware (SGI) or feels unnatural. If you have very expensive video hardware (SGI) or
are using an in-RAM video framebuffer (SunRay, ShadowFB, Xvfb), the are using an in-RAM video framebuffer (SunRay, ShadowFB, Xvfb), the
...@@ -2785,16 +2790,16 @@ ied) ...@@ -2785,16 +2790,16 @@ ied)
are not fool proof: x11vnc is sometimes tricked and so you'll are not fool proof: x11vnc is sometimes tricked and so you'll
occasionally see the lurching opaque move and rarely something even occasionally see the lurching opaque move and rarely something even
worse. First it assumes that the move/resize will occur with a mouse worse. First it assumes that the move/resize will occur with a mouse
button pressed and held down (of course this is only mostly true). button pressed, held down and dragged (of course this is only mostly
Next it will only consider a window for wireframing if the mouse true). Next it will only consider a window for wireframing if the
pointer is initially "close enough" to the edges of the window frame, mouse pointer is initially "close enough" to the edges of the window
e.g. you have grabbed the title bar or a resizer edge (this frame, e.g. you have grabbed the title bar or a resizer edge (this
requirement can be disabled). If these are true, it will wait an requirement can be disabled). If these are true, it will wait an
amount of time to see if the window starts moving or resizing. If it amount of time to see if the window starts moving or resizing. If it
does, it starts drawing the wireframe "animation" of where the window does, it starts drawing the wireframe "outline" of where the window
would be. If the mouse button is released, or a timeout occurs, it would be. When the mouse button is released, or a timeout occurs, it
goes back to the standard mode to allow the framebuffer changes to goes back to the standard mode to allow the actual framebuffer changes
propagate to the viewers. to propagate to the viewers.
These parameters can be tweaked: These parameters can be tweaked:
* Color/Shade of the wireframe. * Color/Shade of the wireframe.
...@@ -2836,6 +2841,12 @@ ied) ...@@ -2836,6 +2841,12 @@ ied)
data is translated! Use -nowirecopyrect if this yields undesirable data is translated! Use -nowirecopyrect if this yields undesirable
effects for your desktop. effects for your desktop.
Also, the CopyRect encoding may give incorrect results under -scale
(depending on the scale factor the CopyRect operation is often only
approximate: the correctly scaled framebuffer will be slightly
different from the translated one). Use -nowirecopyrect if this or
other painting errors are unacceptable.
Q-51: Does x11vnc support the X DAMAGE Xserver extension to find Q-51: Does x11vnc support the X DAMAGE Xserver extension to find
modified regions of the screen quickly and efficiently? modified regions of the screen quickly and efficiently?
...@@ -4222,7 +4233,7 @@ x11vnc: a VNC server for real X displays ...@@ -4222,7 +4233,7 @@ x11vnc: a VNC server for real X displays
Here are all of x11vnc command line options: Here are all of x11vnc command line options:
% x11vnc -opts (see below for -help long descriptions) % x11vnc -opts (see below for -help long descriptions)
x11vnc: allow VNC connections to real X11 displays. 0.7.2 lastmod: 2005-04-19 x11vnc: allow VNC connections to real X11 displays. 0.7.2 lastmod: 2005-05-02
x11vnc options: x11vnc options:
-display disp -auth file -display disp -auth file
...@@ -4266,21 +4277,23 @@ x11vnc options: ...@@ -4266,21 +4277,23 @@ x11vnc options:
-xwarppointer -buttonmap string -xwarppointer -buttonmap string
-nodragging -wireframe [str] -nodragging -wireframe [str]
-nowireframe -wirecopyrect mode -nowireframe -wirecopyrect mode
-nowirecopyrect -pointer_mode n -nowirecopyrect -scrollcopyrect mode
-input_skip n -speeds rd,bw,lat -noscrollcopyrect -scr_area n
-debug_pointer -debug_keyboard -pointer_mode n -input_skip n
-defer time -wait time -speeds rd,bw,lat -debug_pointer
-nap -nonap -debug_keyboard -defer time
-sb time -noxdamage -wait time -nap
-xd_area A -xd_mem f -nonap -sb time
-sigpipe string -threads -noxdamage -xd_area A
-nothreads -fs f -xd_mem f -sigpipe string
-gaps n -grow n -threads -nothreads
-fuzz n -snapfb -fs f -gaps n
-rawfb string -pipeinput cmd -grow n -fuzz n
-gui [gui-opts] -remote command -snapfb -rawfb string
-query variable -sync -pipeinput cmd -gui [gui-opts]
-noremote -unsafe -remote command -query variable
-sync -noremote
-yesremote -unsafe
-safer -privremote -safer -privremote
-nocmds -deny_all -nocmds -deny_all
...@@ -4309,7 +4322,7 @@ libvncserver options: ...@@ -4309,7 +4322,7 @@ libvncserver options:
% x11vnc -help % x11vnc -help
x11vnc: allow VNC connections to real X11 displays. 0.7.2 lastmod: 2005-04-19 x11vnc: allow VNC connections to real X11 displays. 0.7.2 lastmod: 2005-05-02
Typical usage is: Typical usage is:
...@@ -5009,13 +5022,16 @@ Options: ...@@ -5009,13 +5022,16 @@ Options:
heuristics and may not always work: it depends on your heuristics and may not always work: it depends on your
window manager and even how you move things around. window manager and even how you move things around.
See -pointer_mode below for discussion of the "bogging See -pointer_mode below for discussion of the "bogging
down" problem this tries to avoid. Default: -wireframe down" problem this tries to avoid.
Default: -wireframe
Shorter aliases: -wf [str] and -nowf
The value "str" is optional and, of course, is The value "str" is optional and, of course, is
packed with many tunable parameters for this scheme: packed with many tunable parameters for this scheme:
Format: shade,linewidth,percent,T+B+L+R,t1+t2+t3+t4 Format: shade,linewidth,percent,T+B+L+R,t1+t2+t3+t4
Default: 0xff,3,0,32+8+8+8,0.15+0.35+4.0+0.1 Default: 0xff,3,0,32+8+8+8,0.15+0.30+5.0+0.125
If you leave nothing between commas: ",," the default If you leave nothing between commas: ",," the default
value is used. If you don't specify enough commas, value is used. If you don't specify enough commas,
...@@ -5047,16 +5063,67 @@ Options: ...@@ -5047,16 +5063,67 @@ Options:
link this might be a better choice: 0.25+0.6+6.0+0.15 link this might be a better choice: 0.25+0.6+6.0+0.15
-wirecopyrect mode Since the -wireframe mechanism evidently tracks moving -wirecopyrect mode Since the -wireframe mechanism evidently tracks moving
-nowirecopyrect windows, a speedup can be obtained by telling the VNC -nowirecopyrect windows accurately, a speedup can be obtained by
viewers to locally copy the translated window region. telling the VNC viewers to locally copy the translated
This is the VNC CopyRect encoding: the framebuffer window region. This is the VNC CopyRect encoding:
update doesn't need to send the actual new image data. 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) "mode" can be "never" (same as -nowirecopyrect)
to never try the copyrect, "top" means only do it if to never try the copyrect, "top" means only do it if
the window was not covered by any other windows, and the window was not covered by any other windows, and
"always" means to translate the orginally unobscured "always" means to translate the orginally unobscured
region (this may look odd as the remaining pieces come region (this may look odd as the remaining pieces come
in, but helps on a slow link) Default: always in, but helps on a slow link). Default: "always"
Note: there can be painting errors when using -scale
so CopyRect is skipped when scaling unless you specify
-wirecopyrect on the command line or by remote-control.
-scrollcopyrect mode Like -wirecopyrect, but use heuristics to try to guess
-noscrollcopyrect 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.
Hitting <Down> arrow in a web browser window, the web
page scrolls up a small amount.
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 -wirecopyrect). 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. These are automatically repaired in a
short period of time. If this is unacceptable disable
the feature with -noscrollcopyrect.
"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 when using
-scale so CopyRect is skipped when scaling unless
you specify -scrollcopyrect on the command line or
by remote-control.
-scr_area n Set the minimum area in pixels for a rectangle
to be considered for the -scrollcopyrect detection
scheme. This is to avoid wasting 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 controlled. We want to be sure to skip the small
scrollbar and get the large panel. Default: 60000
-pointer_mode n Various pointer motion update schemes. "-pm" is -pointer_mode n Various pointer motion update schemes. "-pm" is
an alias. The problem is pointer motion can cause an alias. The problem is pointer motion can cause
...@@ -5503,11 +5570,16 @@ Options: ...@@ -5503,11 +5570,16 @@ Options:
buttonmap:str set -buttonmap "str", empty to disable buttonmap:str set -buttonmap "str", empty to disable
dragging disable -nodragging mode. dragging disable -nodragging mode.
nodragging enable -nodragging mode. nodragging enable -nodragging mode.
wireframe enable -wireframe mode. wireframe enable -wireframe mode. same as "wf"
nowireframe disable -wireframe mode. nowireframe disable -wireframe mode. same as "nowf"
wireframe:str enable -wireframe mode string. wireframe:str enable -wireframe mode string.
wireframe_mode:str enable -wireframe mode string. wireframe_mode:str enable -wireframe mode string.
wirecopyrect:str set -wirecopyrect string. 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
pointer_mode:n set -pointer_mode to n. same as "pm" pointer_mode:n set -pointer_mode to n. same as "pm"
input_skip:n set -input_skip to n. input_skip:n set -input_skip to n.
speeds:str set -speeds to str. speeds:str set -speeds to str.
...@@ -5550,6 +5622,15 @@ Options: ...@@ -5550,6 +5622,15 @@ Options:
dontdisconnect enable -dontdisconnect mode. dontdisconnect enable -dontdisconnect mode.
nodontdisconnect disable -dontdisconnect mode. nodontdisconnect disable -dontdisconnect mode.
(may interfere with other options) (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.
noremote disable the -remote command processing, noremote disable the -remote command processing,
it cannot be turned back on. it cannot be turned back on.
...@@ -5606,13 +5687,14 @@ Options: ...@@ -5606,13 +5687,14 @@ Options:
add_keysyms noadd_keysyms clear_mods noclear_mods add_keysyms noadd_keysyms clear_mods noclear_mods
clear_keys noclear_keys remap repeat norepeat clear_keys noclear_keys remap repeat norepeat
fb nofb bell nobell sel nosel primary noprimary fb nofb bell nobell sel nosel primary noprimary
cursorshape nocursorshape cursorpos nocursorpos cursorshape nocursorshape cursorpos nocursorpos cursor
cursor show_cursor noshow_cursor nocursor arrow show_cursor noshow_cursor nocursor arrow xfixes noxfixes
xfixes noxfixes xdamage noxdamage xd_area xd_mem xdamage noxdamage xd_area xd_mem alphacut alphafrac
alphacut alphafrac alpharemove noalpharemove alphablend alpharemove noalpharemove alphablend noalphablend
noalphablend xwarp xwarppointer noxwarp noxwarppointer xwarp xwarppointer noxwarp noxwarppointer buttonmap
buttonmap dragging nodragging wireframe_mode dragging nodragging wireframe_mode wireframe wf
wireframe nowireframe wirecopyrect nowirecopyrect nowireframe nowf wirecopyrect wcr nowirecopyrect nowcr
scr_area scrollcopyrect scr noscrollcopyrect noscr
pointer_mode pm input_skip input client_input speeds pointer_mode pm input_skip input client_input speeds
debug_pointer dp nodebug_pointer nodp debug_keyboard dk debug_pointer dp nodebug_pointer nodp debug_keyboard dk
nodebug_keyboard nodk deferupdate defer wait rfbwait nodebug_keyboard nodk deferupdate defer wait rfbwait
...@@ -5622,19 +5704,23 @@ Options: ...@@ -5622,19 +5704,23 @@ Options:
noalwaysshared nevershared noalwaysshared dontdisconnect noalwaysshared nevershared noalwaysshared dontdisconnect
nodontdisconnect desktop noremote nodontdisconnect desktop noremote
aro= debug_xevents debug_xdamage display vncdisplay aro= debug_xevents nodebug_xevents debug_xevents
desktopname http_url auth users rootshift clipshift debug_xdamage nodebug_xdamage debug_xdamage
scale_str scaled_x scaled_y scale_numer scale_denom debug_wireframe nodebug_wireframe debug_wireframe
scale_fac scaling_blend scaling_nomult4 scaling_pad debug_scroll nodebug_scroll debug_scroll display
scaling_interpolate inetd privremote unsafe safer vncdisplay desktopname http_url auth users rootshift
nocmds passwdfile using_shm logfile o flag rc norc h clipshift scale_str scaled_x scaled_y scale_numer
help V version lastmod bg sigpipe threads pipeinput scale_denom scale_fac scaling_blend scaling_nomult4
clients client_count pid ext_xtest ext_xtrap ext_xkb scaling_pad scaling_interpolate inetd privremote
ext_xshm ext_xinerama ext_overlay ext_xfixes ext_xdamage unsafe safer nocmds passwdfile using_shm logfile
ext_xrandr rootwin num_buttons button_mask mouse_x o flag rc norc h help V version lastmod bg sigpipe
mouse_y bpp depth indexed_color dpy_x dpy_y wdpy_x threads readrate netrate netlatency pipeinput clients
wdpy_y off_x off_y cdpy_x cdpy_y coff_x coff_y rfbauth client_count pid ext_xtest ext_xtrap ext_xrecord
passwd ext_xkb ext_xshm ext_xinerama ext_overlay ext_xfixes
ext_xdamage ext_xrandr rootwin num_buttons button_mask
mouse_x mouse_y bpp depth indexed_color dpy_x dpy_y
wdpy_x wdpy_y off_x off_y cdpy_x cdpy_y coff_x coff_y
rfbauth passwd
-sync By default -remote commands are run asynchronously, that -sync By default -remote commands are run asynchronously, that
is, the request is posted and the program immediately is, the request is posted and the program immediately
...@@ -5656,6 +5742,8 @@ Options: ...@@ -5656,6 +5742,8 @@ Options:
taken place. taken place.
-noremote Do not process any remote control commands or queries. -noremote Do not process any remote control commands or queries.
-yesremote Do process remote control commands or queries.
Default: -yesremote
A note about security wrt remote control commands. A note about security wrt remote control commands.
If someone can connect to the X display and change If someone can connect to the X display and change
...@@ -5685,10 +5773,10 @@ Options: ...@@ -5685,10 +5773,10 @@ Options:
-safer Equivalent to: -novncconnect -noremote and prohibiting -safer Equivalent to: -novncconnect -noremote and prohibiting
-gui and the -connect file. Shuts off communcation -gui and the -connect file. Shuts off communcation
channels. channels.
-privremote Perform some sanity checks and only allow remote-control -privremote Perform some sanity checks and disable remote-control
commands if it appears that the X DISPLAY and/or commands if it appears that the X DISPLAY and/or
connectfile cannot be accessed by other users. (not connectfile can be accessed by other users. Once
complete, does not check for empty access control list) remote-control is disabled it cannot be turned back on.
-nocmds No external commands (e.g. system(3), popen(3), exec(3)) -nocmds No external commands (e.g. system(3), popen(3), exec(3))
will be run. will be run.
......
...@@ -189,6 +189,11 @@ Debugging ...@@ -189,6 +189,11 @@ Debugging
=GA tail-logfile =GA tail-logfile
quiet quiet
-- --
debug_xevents
debug_xdamage
debug_wireframe
debug_scroll
--
=GA show-start-cmd =GA show-start-cmd
=DG debug_gui =DG debug_gui
...@@ -232,6 +237,8 @@ Tuning ...@@ -232,6 +237,8 @@ Tuning
wireframe wireframe
wireframe_mode: wireframe_mode:
=-C:never,top,always wirecopyrect: =-C:never,top,always wirecopyrect:
=-C:never,keys,mouse,always scrollcopyrect:
scr_area:
-- --
noshm noshm
flipbyteorder flipbyteorder
......
...@@ -195,6 +195,11 @@ ...@@ -195,6 +195,11 @@
" =GA tail-logfile\n" " =GA tail-logfile\n"
" quiet\n" " quiet\n"
" --\n" " --\n"
" debug_xevents\n"
" debug_xdamage\n"
" debug_wireframe\n"
" debug_scroll\n"
" --\n"
" =GA show-start-cmd\n" " =GA show-start-cmd\n"
" =DG debug_gui\n" " =DG debug_gui\n"
"\n" "\n"
...@@ -238,6 +243,8 @@ ...@@ -238,6 +243,8 @@
" wireframe\n" " wireframe\n"
" wireframe_mode:\n" " wireframe_mode:\n"
" =-C:never,top,always wirecopyrect:\n" " =-C:never,top,always wirecopyrect:\n"
" =-C:never,keys,mouse,always scrollcopyrect:\n"
" scr_area:\n"
" --\n" " --\n"
" noshm\n" " noshm\n"
" flipbyteorder\n" " flipbyteorder\n"
......
.\" This file was automatically generated from x11vnc -help output. .\" This file was automatically generated from x11vnc -help output.
.TH X11VNC "1" "April 2005" "x11vnc " "User Commands" .TH X11VNC "1" "May 2005" "x11vnc " "User Commands"
.SH NAME .SH NAME
x11vnc - allow VNC connections to real X11 displays x11vnc - allow VNC connections to real X11 displays
version: 0.7.2, lastmod: 2005-04-19 version: 0.7.2, lastmod: 2005-05-02
.SH SYNOPSIS .SH SYNOPSIS
.B x11vnc .B x11vnc
[OPTION]... [OPTION]...
...@@ -956,13 +956,16 @@ the full opaque window. This is based completely on ...@@ -956,13 +956,16 @@ the full opaque window. This is based completely on
heuristics and may not always work: it depends on your heuristics and may not always work: it depends on your
window manager and even how you move things around. window manager and even how you move things around.
See \fB-pointer_mode\fR below for discussion of the "bogging See \fB-pointer_mode\fR below for discussion of the "bogging
down" problem this tries to avoid. Default: \fB-wireframe\fR down" problem this tries to avoid.
Default: \fB-wireframe\fR
.IP
Shorter aliases: \fB-wf\fR [str] and \fB-nowf\fR
.IP .IP
The value "str" is optional and, of course, is The value "str" is optional and, of course, is
packed with many tunable parameters for this scheme: packed with many tunable parameters for this scheme:
.IP .IP
Format: shade,linewidth,percent,T+B+L+R,t1+t2+t3+t4 Format: shade,linewidth,percent,T+B+L+R,t1+t2+t3+t4
Default: 0xff,3,0,32+8+8+8,0.15+0.35+4.0+0.1 Default: 0xff,3,0,32+8+8+8,0.15+0.30+5.0+0.125
.IP .IP
If you leave nothing between commas: ",," the default If you leave nothing between commas: ",," the default
value is used. If you don't specify enough commas, value is used. If you don't specify enough commas,
...@@ -996,16 +999,71 @@ link this might be a better choice: 0.25+0.6+6.0+0.15 ...@@ -996,16 +999,71 @@ link this might be a better choice: 0.25+0.6+6.0+0.15
\fB-wirecopyrect\fR \fImode,\fR \fB-nowirecopyrect\fR \fB-wirecopyrect\fR \fImode,\fR \fB-nowirecopyrect\fR
.IP .IP
Since the \fB-wireframe\fR mechanism evidently tracks moving Since the \fB-wireframe\fR mechanism evidently tracks moving
windows, a speedup can be obtained by telling the VNC windows accurately, a speedup can be obtained by
viewers to locally copy the translated window region. telling the VNC viewers to locally copy the translated
This is the VNC CopyRect encoding: the framebuffer window region. This is the VNC CopyRect encoding:
update doesn't need to send the actual new image data. the framebuffer update doesn't need to send the actual
new image data.
.IP
Shorter aliases: \fB-wcr\fR [mode] and \fB-nowcr\fR
.IP
"mode" can be "never" (same as \fB-nowirecopyrect)\fR "mode" can be "never" (same as \fB-nowirecopyrect)\fR
to never try the copyrect, "top" means only do it if to never try the copyrect, "top" means only do it if
the window was not covered by any other windows, and the window was not covered by any other windows, and
"always" means to translate the orginally unobscured "always" means to translate the orginally unobscured
region (this may look odd as the remaining pieces come region (this may look odd as the remaining pieces come
in, but helps on a slow link) Default: always in, but helps on a slow link). Default: "always"
.IP
Note: there can be painting errors when using \fB-scale\fR
so CopyRect is skipped when scaling unless you specify
\fB-wirecopyrect\fR on the command line or by remote-control.
.PP
\fB-scrollcopyrect\fR \fImode,\fR \fB-noscrollcopyrect\fR
.IP
Like \fB-wirecopyrect,\fR 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.
Hitting <Down> arrow in a web browser window, the web
page scrolls up a small amount.
.IP
Shorter aliases: \fB-scr\fR [mode] and \fB-noscr\fR
.IP
This scheme will not always detect scrolls, but when
it does there is a nice speedup from using the VNC
CopyRect encoding (see \fB-wirecopyrect).\fR 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. These are automatically repaired in a
short period of time. If this is unacceptable disable
the feature with \fB-noscrollcopyrect.\fR
.IP
"mode" can be "never" (same as \fB-noscrollcopyrect)\fR
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"
.IP
Note: there can be painting errors when using
\fB-scale\fR so CopyRect is skipped when scaling unless
you specify \fB-scrollcopyrect\fR on the command line or
by remote-control.
.PP
\fB-scr_area\fR \fIn\fR
.IP
Set the minimum area in pixels for a rectangle
to be considered for the \fB-scrollcopyrect\fR detection
scheme. This is to avoid wasting 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 controlled. We want to be sure to skip the small
scrollbar and get the large panel. Default: 60000
.PP .PP
\fB-pointer_mode\fR \fIn\fR \fB-pointer_mode\fR \fIn\fR
.IP .IP
...@@ -1633,15 +1691,21 @@ dragging disable \fB-nodragging\fR mode. ...@@ -1633,15 +1691,21 @@ dragging disable \fB-nodragging\fR mode.
.IP .IP
nodragging enable \fB-nodragging\fR mode. nodragging enable \fB-nodragging\fR mode.
.IP .IP
wireframe enable \fB-wireframe\fR mode. wireframe enable \fB-wireframe\fR mode. same as "wf"
.IP .IP
nowireframe disable \fB-wireframe\fR mode. nowireframe disable \fB-wireframe\fR mode. same as "nowf"
.IP .IP
wireframe:str enable \fB-wireframe\fR mode string. wireframe:str enable \fB-wireframe\fR mode string.
.IP .IP
wireframe_mode:str enable \fB-wireframe\fR mode string. wireframe_mode:str enable \fB-wireframe\fR mode string.
.IP .IP
wirecopyrect:str set \fB-wirecopyrect\fR string. wirecopyrect:str set \fB-wirecopyrect\fR string. same as "wcr:"
.IP
scrollcopyrect:str set \fB-scrollcopyrect\fR string. same "scr"
.IP
noscrollcopyrect disable \fB-scrollcopyrect__mode_.\fR "noscr"
.IP
scr_area:n set \fB-scr_area\fR to n
.IP .IP
pointer_mode:n set \fB-pointer_mode\fR to n. same as "pm" pointer_mode:n set \fB-pointer_mode\fR to n. same as "pm"
.IP .IP
...@@ -1721,6 +1785,23 @@ dontdisconnect enable \fB-dontdisconnect\fR mode. ...@@ -1721,6 +1785,23 @@ dontdisconnect enable \fB-dontdisconnect\fR mode.
nodontdisconnect disable \fB-dontdisconnect\fR mode. nodontdisconnect disable \fB-dontdisconnect\fR mode.
(may interfere with other options) (may interfere with other options)
.IP .IP
debug_xevents enable debugging X events.
.IP
nodebug_xevents disable debugging X events.
.IP
debug_xdamage enable debugging X DAMAGE mechanism.
.IP
nodebug_xdamage disable debugging X DAMAGE mechanism.
.IP
debug_wireframe enable debugging wireframe mechanism.
.IP
nodebug_wireframe disable debugging wireframe mechanism.
.IP
debug_scroll enable debugging scrollcopy mechanism.
.IP
nodebug_scroll disable debugging scrollcopy mechanism.
.IP
.IP
noremote disable the \fB-remote\fR command processing, noremote disable the \fB-remote\fR command processing,
it cannot be turned back on. it cannot be turned back on.
.IP .IP
...@@ -1795,13 +1876,14 @@ noquiet modtweak nomodtweak xkb noxkb skip_keycodes ...@@ -1795,13 +1876,14 @@ noquiet modtweak nomodtweak xkb noxkb skip_keycodes
add_keysyms noadd_keysyms clear_mods noclear_mods add_keysyms noadd_keysyms clear_mods noclear_mods
clear_keys noclear_keys remap repeat norepeat clear_keys noclear_keys remap repeat norepeat
fb nofb bell nobell sel nosel primary noprimary fb nofb bell nobell sel nosel primary noprimary
cursorshape nocursorshape cursorpos nocursorpos cursorshape nocursorshape cursorpos nocursorpos cursor
cursor show_cursor noshow_cursor nocursor arrow show_cursor noshow_cursor nocursor arrow xfixes noxfixes
xfixes noxfixes xdamage noxdamage xd_area xd_mem xdamage noxdamage xd_area xd_mem alphacut alphafrac
alphacut alphafrac alpharemove noalpharemove alphablend alpharemove noalpharemove alphablend noalphablend
noalphablend xwarp xwarppointer noxwarp noxwarppointer xwarp xwarppointer noxwarp noxwarppointer buttonmap
buttonmap dragging nodragging wireframe_mode dragging nodragging wireframe_mode wireframe wf
wireframe nowireframe wirecopyrect nowirecopyrect nowireframe nowf wirecopyrect wcr nowirecopyrect nowcr
scr_area scrollcopyrect scr noscrollcopyrect noscr
pointer_mode pm input_skip input client_input speeds pointer_mode pm input_skip input client_input speeds
debug_pointer dp nodebug_pointer nodp debug_keyboard dk debug_pointer dp nodebug_pointer nodp debug_keyboard dk
nodebug_keyboard nodk deferupdate defer wait rfbwait nodebug_keyboard nodk deferupdate defer wait rfbwait
...@@ -1811,19 +1893,23 @@ httpdir enablehttpproxy noenablehttpproxy alwaysshared ...@@ -1811,19 +1893,23 @@ httpdir enablehttpproxy noenablehttpproxy alwaysshared
noalwaysshared nevershared noalwaysshared dontdisconnect noalwaysshared nevershared noalwaysshared dontdisconnect
nodontdisconnect desktop noremote nodontdisconnect desktop noremote
.IP .IP
aro= debug_xevents debug_xdamage display vncdisplay aro= debug_xevents nodebug_xevents debug_xevents
desktopname http_url auth users rootshift clipshift debug_xdamage nodebug_xdamage debug_xdamage
scale_str scaled_x scaled_y scale_numer scale_denom debug_wireframe nodebug_wireframe debug_wireframe
scale_fac scaling_blend scaling_nomult4 scaling_pad debug_scroll nodebug_scroll debug_scroll display
scaling_interpolate inetd privremote unsafe safer vncdisplay desktopname http_url auth users rootshift
nocmds passwdfile using_shm logfile o flag rc norc h clipshift scale_str scaled_x scaled_y scale_numer
help V version lastmod bg sigpipe threads pipeinput scale_denom scale_fac scaling_blend scaling_nomult4
clients client_count pid ext_xtest ext_xtrap ext_xkb scaling_pad scaling_interpolate inetd privremote
ext_xshm ext_xinerama ext_overlay ext_xfixes ext_xdamage unsafe safer nocmds passwdfile using_shm logfile
ext_xrandr rootwin num_buttons button_mask mouse_x o flag rc norc h help V version lastmod bg sigpipe
mouse_y bpp depth indexed_color dpy_x dpy_y wdpy_x threads readrate netrate netlatency pipeinput clients
wdpy_y off_x off_y cdpy_x cdpy_y coff_x coff_y rfbauth client_count pid ext_xtest ext_xtrap ext_xrecord
passwd ext_xkb ext_xshm ext_xinerama ext_overlay ext_xfixes
ext_xdamage ext_xrandr rootwin num_buttons button_mask
mouse_x mouse_y bpp depth indexed_color dpy_x dpy_y
wdpy_x wdpy_y off_x off_y cdpy_x cdpy_y coff_x coff_y
rfbauth passwd
.PP .PP
\fB-sync\fR \fB-sync\fR
.IP .IP
...@@ -1846,9 +1932,11 @@ if the x11vnc takes longer than that to process the ...@@ -1846,9 +1932,11 @@ if the x11vnc takes longer than that to process the
requests the requestor will think that a failure has requests the requestor will think that a failure has
taken place. taken place.
.PP .PP
\fB-noremote\fR \fB-noremote,\fR \fB-yesremote\fR
.IP .IP
Do not process any remote control commands or queries. Do not process any remote control commands or queries.
Do process remote control commands or queries.
Default: \fB-yesremote\fR
.IP .IP
A note about security wrt remote control commands. A note about security wrt remote control commands.
If someone can connect to the X display and change If someone can connect to the X display and change
...@@ -1886,10 +1974,10 @@ channels. ...@@ -1886,10 +1974,10 @@ channels.
.PP .PP
\fB-privremote\fR \fB-privremote\fR
.IP .IP
Perform some sanity checks and only allow remote-control Perform some sanity checks and disable remote-control
commands if it appears that the X DISPLAY and/or commands if it appears that the X DISPLAY and/or
connectfile cannot be accessed by other users. (not connectfile can be accessed by other users. Once
complete, does not check for empty access control list) remote-control is disabled it cannot be turned back on.
.PP .PP
\fB-nocmds\fR \fB-nocmds\fR
.IP .IP
......
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment