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>
* clear requested region (long standing TODO, pointed out by Karl)
......
......@@ -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_LIBXDAMAGE, [XDAMAGE 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
AC_CHECK_LIB(X11, XGetImage, HAVE_X="true",
HAVE_X="false",
......@@ -74,6 +75,11 @@ if test "$X_CFLAGS" != "-DX_DISPLAY_MISSING"; then
[AC_DEFINE(HAVE_XTEST)], ,
$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
if test ! -z "$X11VNC_USE_XTRAP" -o -z "$HAVE_XTESTGRABCONTROL"; then
AC_CHECK_LIB(XTrap, XETrapSetGrabServer,
......@@ -131,6 +137,19 @@ fi
AC_SUBST(X_LIBS)
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.
AC_ARG_WITH(jpeg,
......@@ -168,6 +187,17 @@ if test "x$with_jpeg" != "xno"; then
LDFLAGS="$saved_LDFLAGS"
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
AC_ARG_WITH(libz,
......@@ -198,6 +228,17 @@ if test "x$with_zlib" != "xno" -a "x$with_libz" != "xno"; then
LDFLAGS="$saved_LDFLAGS"
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
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>
* somewhat safer remote-control defaults, and addnl options for
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:
......@@ -527,7 +527,9 @@ make
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
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:
......@@ -576,11 +578,10 @@ make
note below)
Options: x11vnc has (far too) many features that may be activated
via its [57]command line options. Useful options are -nap to use fewer
resources (it sleeps more between polls when activity is low) and
-rfbauth passwd-file to use VNC password protection (the vncpasswd or
storepasswd programs, or the x11vnc [58]-storepasswd option can be
used to create the password file).
via its [57]command line options. Useful options are, e.g., -scale to
do server-side scaling, and -rfbauth passwd-file to use VNC password
protection (the vncpasswd or storepasswd programs, or the x11vnc
[58]-storepasswd option can be used to create the password file).
Algorithm: How does x11vnc do it? Rather brute-forcedly: it
continuously polls the X11 framebuffer for changes using
......@@ -588,18 +589,18 @@ make
which rectangular regions of the framebuffer have changed, and
libvncserver compresses the changes and sends them off to any
connected VNC viewers. A number of applications do similar things,
such as x0rfbserver, krfb, x0vncserver. x11vnc uses a 32 x 32 pixel
tile model (the desktop is decomposed into roughly 1000 such tiles),
where changed tiles are found by pseudo-randomly polling 1 pixel tall
horizontal scanlines. This is a surprisingly effective algorithm for
finding changed regions. For keyboard and mouse user input the XTEST
extension is used to pass the input events to the X server. To detect
XBell "beeps" the XKEYBOARD extension is used. If available, the
XFIXES extension is used to retrieve the current mouse cursor shape.
Also, if available the X DAMAGE extension is used to receive hints
from the X server where modified regions on the screen are. This
greatly reduces the system load when not much is changing on the
screen and also improves how quickly the screen is updated.
such as x0rfbserver, krfb, x0vncserver, vino. x11vnc uses a 32 x 32
pixel tile model (the desktop is decomposed into roughly 1000 such
tiles), where changed tiles are found by pseudo-randomly polling 1
pixel tall horizontal scanlines. This is a surprisingly effective
algorithm for finding changed regions. For keyboard and mouse user
input the XTEST extension is used to pass the input events to the X
server. To detect XBell "beeps" the XKEYBOARD extension is used. If
available, the XFIXES extension is used to retrieve the current mouse
cursor shape. Also, if available the X DAMAGE extension is used to
receive hints from the X server where modified regions on the screen
are. This greatly reduces the system load when not much is changing on
the screen and also improves how quickly the screen is updated.
Barbershop mirrors effect: What if x11vnc is started up, and
vncviewer is then started up on the same machine and displayed on the
......@@ -1375,7 +1376,9 @@ display :0
unintendeds. Perhaps this is of use in remote access for an embedded
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
early X11R5 systems have XTEST but not this interface), then configure
......@@ -2761,18 +2764,20 @@ ied)
polling and updates will be suspended and only an animated "wireframe"
(a rectangle outline drawn where the moved/resized window would be) is
shown. When the window move/resize stops, it returns to normal
processing: you should just see the window appear in the new position.
This spares you from interacting with a "lurching" window during all
of the intermediate steps. (the lurching is due to [297]slow video
card read rates)
The mode is currently on be default because most people are inflicted
processing: you should only see the window appear in the new position.
This spares you from interacting with a "lurching" window between all
of the intermediate steps. BTW the lurching is due to [297]slow video
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,
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
option. Why might one want to turn off the wireframing? Since x11vnc
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
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
feels unnatural. If you have very expensive video hardware (SGI) or
are using an in-RAM video framebuffer (SunRay, ShadowFB, Xvfb), the
......@@ -2785,16 +2790,16 @@ ied)
are not fool proof: x11vnc is sometimes tricked and so you'll
occasionally see the lurching opaque move and rarely something even
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).
Next it will only consider a window for wireframing if the mouse
pointer is initially "close enough" to the edges of the window frame,
e.g. you have grabbed the title bar or a resizer edge (this
button pressed, held down and dragged (of course this is only mostly
true). Next it will only consider a window for wireframing if the
mouse pointer is initially "close enough" to the edges of the window
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
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
would be. If the mouse button is released, or a timeout occurs, it
goes back to the standard mode to allow the framebuffer changes to
propagate to the viewers.
does, it starts drawing the wireframe "outline" of where the window
would be. When the mouse button is released, or a timeout occurs, it
goes back to the standard mode to allow the actual framebuffer changes
to propagate to the viewers.
These parameters can be tweaked:
* Color/Shade of the wireframe.
......@@ -2836,6 +2841,12 @@ ied)
data is translated! Use -nowirecopyrect if this yields undesirable
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
modified regions of the screen quickly and efficiently?
......@@ -4222,7 +4233,7 @@ x11vnc: a VNC server for real X displays
Here are all of x11vnc command line options:
% 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:
-display disp -auth file
......@@ -4266,21 +4277,23 @@ x11vnc options:
-xwarppointer -buttonmap string
-nodragging -wireframe [str]
-nowireframe -wirecopyrect mode
-nowirecopyrect -pointer_mode n
-input_skip n -speeds rd,bw,lat
-debug_pointer -debug_keyboard
-defer time -wait time
-nap -nonap
-sb time -noxdamage
-xd_area A -xd_mem f
-sigpipe string -threads
-nothreads -fs f
-gaps n -grow n
-fuzz n -snapfb
-rawfb string -pipeinput cmd
-gui [gui-opts] -remote command
-query variable -sync
-noremote -unsafe
-nowirecopyrect -scrollcopyrect mode
-noscrollcopyrect -scr_area n
-pointer_mode n -input_skip n
-speeds rd,bw,lat -debug_pointer
-debug_keyboard -defer time
-wait time -nap
-nonap -sb time
-noxdamage -xd_area A
-xd_mem f -sigpipe string
-threads -nothreads
-fs f -gaps n
-grow n -fuzz n
-snapfb -rawfb string
-pipeinput cmd -gui [gui-opts]
-remote command -query variable
-sync -noremote
-yesremote -unsafe
-safer -privremote
-nocmds -deny_all
......@@ -4309,7 +4322,7 @@ libvncserver options:
% 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:
......@@ -5009,13 +5022,16 @@ Options:
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
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,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
value is used. If you don't specify enough commas,
......@@ -5047,16 +5063,67 @@ Options:
link this might be a better choice: 0.25+0.6+6.0+0.15
-wirecopyrect mode Since the -wireframe mechanism evidently tracks moving
-nowirecopyrect windows, 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.
-nowirecopyrect 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
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
an alias. The problem is pointer motion can cause
......@@ -5503,11 +5570,16 @@ Options:
buttonmap:str set -buttonmap "str", empty to disable
dragging disable -nodragging mode.
nodragging enable -nodragging mode.
wireframe enable -wireframe mode.
nowireframe disable -wireframe mode.
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.
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"
input_skip:n set -input_skip to n.
speeds:str set -speeds to str.
......@@ -5550,6 +5622,15 @@ 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.
noremote disable the -remote command processing,
it cannot be turned back on.
......@@ -5606,13 +5687,14 @@ Options:
add_keysyms noadd_keysyms clear_mods noclear_mods
clear_keys noclear_keys remap repeat norepeat
fb nofb bell nobell sel nosel primary noprimary
cursorshape nocursorshape cursorpos nocursorpos
cursor show_cursor noshow_cursor nocursor arrow
xfixes noxfixes xdamage noxdamage xd_area xd_mem
alphacut alphafrac alpharemove noalpharemove alphablend
noalphablend xwarp xwarppointer noxwarp noxwarppointer
buttonmap dragging nodragging wireframe_mode
wireframe nowireframe wirecopyrect nowirecopyrect
cursorshape nocursorshape cursorpos nocursorpos cursor
show_cursor noshow_cursor nocursor arrow xfixes noxfixes
xdamage noxdamage xd_area xd_mem alphacut alphafrac
alpharemove noalpharemove alphablend noalphablend
xwarp xwarppointer noxwarp noxwarppointer buttonmap
dragging nodragging wireframe_mode wireframe wf
nowireframe nowf wirecopyrect wcr nowirecopyrect nowcr
scr_area scrollcopyrect scr noscrollcopyrect noscr
pointer_mode pm input_skip input client_input speeds
debug_pointer dp nodebug_pointer nodp debug_keyboard dk
nodebug_keyboard nodk deferupdate defer wait rfbwait
......@@ -5622,19 +5704,23 @@ Options:
noalwaysshared nevershared noalwaysshared dontdisconnect
nodontdisconnect desktop noremote
aro= debug_xevents debug_xdamage display vncdisplay
desktopname http_url auth users rootshift clipshift
scale_str scaled_x scaled_y scale_numer scale_denom
scale_fac scaling_blend scaling_nomult4 scaling_pad
scaling_interpolate inetd privremote unsafe safer
nocmds passwdfile using_shm logfile o flag rc norc h
help V version lastmod bg sigpipe threads pipeinput
clients client_count pid ext_xtest ext_xtrap 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
aro= debug_xevents nodebug_xevents debug_xevents
debug_xdamage nodebug_xdamage debug_xdamage
debug_wireframe nodebug_wireframe debug_wireframe
debug_scroll nodebug_scroll debug_scroll display
vncdisplay desktopname http_url auth users rootshift
clipshift scale_str scaled_x scaled_y scale_numer
scale_denom scale_fac scaling_blend scaling_nomult4
scaling_pad scaling_interpolate inetd privremote
unsafe safer nocmds passwdfile using_shm logfile
o flag rc norc h help V version lastmod bg sigpipe
threads readrate netrate netlatency pipeinput clients
client_count pid ext_xtest ext_xtrap ext_xrecord
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
is, the request is posted and the program immediately
......@@ -5656,6 +5742,8 @@ Options:
taken place.
-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.
If someone can connect to the X display and change
......@@ -5685,10 +5773,10 @@ Options:
-safer Equivalent to: -novncconnect -noremote and prohibiting
-gui and the -connect file. Shuts off communcation
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
connectfile cannot be accessed by other users. (not
complete, does not check for empty access control list)
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.
......
......@@ -189,6 +189,11 @@ Debugging
=GA tail-logfile
quiet
--
debug_xevents
debug_xdamage
debug_wireframe
debug_scroll
--
=GA show-start-cmd
=DG debug_gui
......@@ -232,6 +237,8 @@ Tuning
wireframe
wireframe_mode:
=-C:never,top,always wirecopyrect:
=-C:never,keys,mouse,always scrollcopyrect:
scr_area:
--
noshm
flipbyteorder
......
......@@ -195,6 +195,11 @@
" =GA tail-logfile\n"
" quiet\n"
" --\n"
" debug_xevents\n"
" debug_xdamage\n"
" debug_wireframe\n"
" debug_scroll\n"
" --\n"
" =GA show-start-cmd\n"
" =DG debug_gui\n"
"\n"
......@@ -238,6 +243,8 @@
" wireframe\n"
" wireframe_mode:\n"
" =-C:never,top,always wirecopyrect:\n"
" =-C:never,keys,mouse,always scrollcopyrect:\n"
" scr_area:\n"
" --\n"
" noshm\n"
" flipbyteorder\n"
......
.\" 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
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
.B x11vnc
[OPTION]...
......@@ -956,13 +956,16 @@ 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 \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
The value "str" is optional and, of course, is
packed with many tunable parameters for this scheme:
.IP
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
If you leave nothing between commas: ",," the default
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
\fB-wirecopyrect\fR \fImode,\fR \fB-nowirecopyrect\fR
.IP
Since the \fB-wireframe\fR mechanism evidently tracks moving
windows, 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.
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.
.IP
Shorter aliases: \fB-wcr\fR [mode] and \fB-nowcr\fR
.IP
"mode" can be "never" (same as \fB-nowirecopyrect)\fR
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
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
\fB-pointer_mode\fR \fIn\fR
.IP
......@@ -1633,15 +1691,21 @@ dragging disable \fB-nodragging\fR mode.
.IP
nodragging enable \fB-nodragging\fR mode.
.IP
wireframe enable \fB-wireframe\fR mode.
wireframe enable \fB-wireframe\fR mode. same as "wf"
.IP
nowireframe disable \fB-wireframe\fR mode.
nowireframe disable \fB-wireframe\fR mode. same as "nowf"
.IP
wireframe:str enable \fB-wireframe\fR mode string.
.IP
wireframe_mode:str enable \fB-wireframe\fR mode string.
.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
pointer_mode:n set \fB-pointer_mode\fR to n. same as "pm"
.IP
......@@ -1721,6 +1785,23 @@ dontdisconnect enable \fB-dontdisconnect\fR mode.
nodontdisconnect disable \fB-dontdisconnect\fR mode.
(may interfere with other options)
.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,
it cannot be turned back on.
.IP
......@@ -1795,13 +1876,14 @@ noquiet modtweak nomodtweak xkb noxkb skip_keycodes
add_keysyms noadd_keysyms clear_mods noclear_mods
clear_keys noclear_keys remap repeat norepeat
fb nofb bell nobell sel nosel primary noprimary
cursorshape nocursorshape cursorpos nocursorpos
cursor show_cursor noshow_cursor nocursor arrow
xfixes noxfixes xdamage noxdamage xd_area xd_mem
alphacut alphafrac alpharemove noalpharemove alphablend
noalphablend xwarp xwarppointer noxwarp noxwarppointer
buttonmap dragging nodragging wireframe_mode
wireframe nowireframe wirecopyrect nowirecopyrect
cursorshape nocursorshape cursorpos nocursorpos cursor
show_cursor noshow_cursor nocursor arrow xfixes noxfixes
xdamage noxdamage xd_area xd_mem alphacut alphafrac
alpharemove noalpharemove alphablend noalphablend
xwarp xwarppointer noxwarp noxwarppointer buttonmap
dragging nodragging wireframe_mode wireframe wf
nowireframe nowf wirecopyrect wcr nowirecopyrect nowcr
scr_area scrollcopyrect scr noscrollcopyrect noscr
pointer_mode pm input_skip input client_input speeds
debug_pointer dp nodebug_pointer nodp debug_keyboard dk
nodebug_keyboard nodk deferupdate defer wait rfbwait
......@@ -1811,19 +1893,23 @@ httpdir enablehttpproxy noenablehttpproxy alwaysshared
noalwaysshared nevershared noalwaysshared dontdisconnect
nodontdisconnect desktop noremote
.IP
aro= debug_xevents debug_xdamage display vncdisplay
desktopname http_url auth users rootshift clipshift
scale_str scaled_x scaled_y scale_numer scale_denom
scale_fac scaling_blend scaling_nomult4 scaling_pad
scaling_interpolate inetd privremote unsafe safer
nocmds passwdfile using_shm logfile o flag rc norc h
help V version lastmod bg sigpipe threads pipeinput
clients client_count pid ext_xtest ext_xtrap 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
aro= debug_xevents nodebug_xevents debug_xevents
debug_xdamage nodebug_xdamage debug_xdamage
debug_wireframe nodebug_wireframe debug_wireframe
debug_scroll nodebug_scroll debug_scroll display
vncdisplay desktopname http_url auth users rootshift
clipshift scale_str scaled_x scaled_y scale_numer
scale_denom scale_fac scaling_blend scaling_nomult4
scaling_pad scaling_interpolate inetd privremote
unsafe safer nocmds passwdfile using_shm logfile
o flag rc norc h help V version lastmod bg sigpipe
threads readrate netrate netlatency pipeinput clients
client_count pid ext_xtest ext_xtrap ext_xrecord
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
\fB-sync\fR
.IP
......@@ -1846,9 +1932,11 @@ if the x11vnc takes longer than that to process the
requests the requestor will think that a failure has
taken place.
.PP
\fB-noremote\fR
\fB-noremote,\fR \fB-yesremote\fR
.IP
Do not process any remote control commands or queries.
Do process remote control commands or queries.
Default: \fB-yesremote\fR
.IP
A note about security wrt remote control commands.
If someone can connect to the X display and change
......@@ -1886,10 +1974,10 @@ channels.
.PP
\fB-privremote\fR
.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
connectfile cannot be accessed by other users. (not
complete, does not check for empty access control list)
connectfile can be accessed by other users. Once
remote-control is disabled it cannot be turned back on.
.PP
\fB-nocmds\fR
.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