Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
L
libvncserver
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
rasky
libvncserver
Commits
d77d118d
Commit
d77d118d
authored
Aug 15, 2004
by
runge
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
x11vnc: -overlay to fix colors with Sun 8+24 overlay visuals. -sid option.
parent
6460243e
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
716 additions
and
357 deletions
+716
-357
ChangeLog
ChangeLog
+4
-0
ChangeLog
x11vnc/ChangeLog
+9
-0
README
x11vnc/README
+383
-291
x11vnc.1
x11vnc/x11vnc.1
+33
-4
x11vnc.c
x11vnc/x11vnc.c
+287
-62
No files found.
ChangeLog
View file @
d77d118d
2004-08-15 Karl Runge <runge@karlrunge.com>
* x11vnc: -overlay to fix colors with Sun 8+24 overlay visuals.
* -sid option.
2004-08-03 Karl Runge <runge@karlrunge.com>
2004-08-03 Karl Runge <runge@karlrunge.com>
* x11vnc: manpage and README
* x11vnc: manpage and README
* fix XKBlib.h detection on *BSD
* fix XKBlib.h detection on *BSD
...
...
x11vnc/ChangeLog
View file @
d77d118d
2004-08-15 Karl Runge <runge@karlrunge.com>
* -overlay option to fix color problems on Sun machines with 8+24
and 24+8 overlay visuals, uses Solaris XReadScreen().
* expose -sid option (shifted -id windowid) to allow explicit
wrapping of XGetImage, etc for -overlay
* fix misc bugs: missing var types, hardwired blackouts sizes,
subwin desktop name crash.
2004-08-03 Karl Runge <runge@karlrunge.com>
2004-08-03 Karl Runge <runge@karlrunge.com>
* add man page x11vnc.1 autogenerated from x11vnc -help; tweak
* add man page x11vnc.1 autogenerated from x11vnc -help; tweak
help output a little bit. Adjust autoconf to pick up manpage.
help output a little bit. Adjust autoconf to pick up manpage.
...
...
x11vnc/README
View file @
d77d118d
x11vnc
README
file
Date
:
Tue
Aug
3
21
:
54
:
01
EDT
2004
x11vnc
README
file
Date
:
Sun
Aug
15
16
:
30
:
33
EDT
2004
The
following
information
is
taken
from
these
URLs
:
The
following
information
is
taken
from
these
URLs
:
...
@@ -301,12 +301,29 @@ vncviewer -via $host localhost:0 # must be TightVNC vncviewer.
...
@@ -301,12 +301,29 @@ vncviewer -via $host localhost:0 # must be TightVNC vncviewer.
You
can
now
run
it
via
typing
"x11vnc"
,
"x11vnc -help"
,
"x11vnc -nap
You
can
now
run
it
via
typing
"x11vnc"
,
"x11vnc -help"
,
"x11vnc -nap
-display :0"
,
etc
.
-display :0"
,
etc
.
Note
:
Currently
gcc
is
required
to
build
libvncserver
.
In
some
cases
it
will
build
with
non
-
gcc
compilers
,
but
the
resulting
binary
often
fails
to
run
properly
.
Building
on
Solaris
:
Depending
on
your
version
of
Solaris
(
or
other
Building
on
Solaris
:
Depending
on
your
version
of
Solaris
(
or
other
Unix
OS
),
the
jpeg
and
/
or
zlib
libraries
may
be
in
non
-
standard
places
Unix
OS
),
the
jpeg
and
/
or
zlib
libraries
may
be
in
non
-
standard
places
(
e
.
g
.
/
usr
/
local
).
Note
:
if
configure
cannot
find
these
two
libraries
(
e
.
g
.
/
usr
/
local
,
/
usr
/
sfw
,
/
opt
/
sfw
,
etc
).
then
TightVNC
support
will
be
disabled
,
and
you
don
't want that! Here
is a build script that indicates one way to pass this information to
Note
:
If
configure
cannot
find
these
two
libraries
then
TightVNC
the libvncserver configuration:
support
will
be
disabled
,
and
you
don
't want that! (the TightVNC
encoding gives very good compression and performance, even makes a
difference over a LAN)
libjpeg is included in Solaris 9 and later (/usr/sfw/include and
/usr/sfw/lib), and zlib in Solaris 8 and later (/usr/include and
/usr/lib). To get the source for these libraries: libjpeg is available
at [19]ftp://ftp.uu.net/graphics/jpeg/ and zlib at
[20]http://www.gzip.org/zlib/. See also
[21]http://www.sunfreeware.com/ for Solaris binary packages of these
libraries.
Here is a build script that indicates one way to pass the library
locations information to the libvncserver configuration:
#!/bin/sh
#!/bin/sh
# Build script for Solaris, etc, with, gcc, libjpeg and libz in
# Build script for Solaris, etc, with, gcc, libjpeg and libz in
...
@@ -356,8 +373,8 @@ ls -l ./x11vnc/x11vnc
...
@@ -356,8 +373,8 @@ ls -l ./x11vnc/x11vnc
referring to LIBVNCSERVER_HAVE_XKEYBOARD in rfb/rfbconfig.h after
referring to LIBVNCSERVER_HAVE_XKEYBOARD in rfb/rfbconfig.h after
configure has been run. Alternatively, one could put #undef
configure has been run. Alternatively, one could put #undef
LIBVNCSERVER_HAVE_XKEYBOARD after the rfb/rfb.h include in the
LIBVNCSERVER_HAVE_XKEYBOARD after the rfb/rfb.h include in the
x11vnc/x11vnc.c file.
We are working to fix this in the configure
x11vnc/x11vnc.c file.
(This problem has been fixed as of x11vnc 0.6.2
script.
(Aug/2004))
_________________________________________________________________
_________________________________________________________________
Some Notes:
Some Notes:
...
@@ -370,7 +387,7 @@ ls -l ./x11vnc/x11vnc
...
@@ -370,7 +387,7 @@ ls -l ./x11vnc/x11vnc
suggest using xsetroot, dtstyle or similar utility to set a solid
suggest using xsetroot, dtstyle or similar utility to set a solid
background while using x11vnc.
background while using x11vnc.
I also find the [
19
]tightvnc encoding gives the best response for my
I also find the [
22
]tightvnc encoding gives the best response for my
usage (Unix <-> Unix over cable modem). One needs a tightvnc-aware
usage (Unix <-> Unix over cable modem). One needs a tightvnc-aware
vncviewer to take advantage of this encoding.
vncviewer to take advantage of this encoding.
...
@@ -386,10 +403,10 @@ ls -l ./x11vnc/x11vnc
...
@@ -386,10 +403,10 @@ ls -l ./x11vnc/x11vnc
option
.
option
.
Options
:
x11vnc
has
(
far
too
)
many
features
that
may
be
activated
Options
:
x11vnc
has
(
far
too
)
many
features
that
may
be
activated
via
its
[
2
0
]
command
line
options
.
Useful
options
are
-
nap
to
use
fewer
via
its
[
2
3
]
command
line
options
.
Useful
options
are
-
nap
to
use
fewer
resources
(
it
sleeps
more
between
polls
when
activity
is
low
)
and
resources
(
it
sleeps
more
between
polls
when
activity
is
low
)
and
-
rfbauth
passwd
-
file
to
use
VNC
password
protection
(
the
vncpasswd
or
-
rfbauth
passwd
-
file
to
use
VNC
password
protection
(
the
vncpasswd
or
storepasswd
programs
,
or
the
x11vnc
[
2
1
]-
storepasswd
option
can
be
storepasswd
programs
,
or
the
x11vnc
[
2
4
]-
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
...
@@ -419,7 +436,7 @@ ls -l ./x11vnc/x11vnc
...
@@ -419,7 +436,7 @@ ls -l ./x11vnc/x11vnc
display
the
viewer
on
a
different
machine
!
display
the
viewer
on
a
different
machine
!
SunRay
notes
:
You
can
run
x11vnc
on
your
(
connected
or
disconnected
)
SunRay
notes
:
You
can
run
x11vnc
on
your
(
connected
or
disconnected
)
[
2
2
]
SunRay
session
(
Please
remember
to
use
-
nap
and
maybe
-
wait
200
to
[
2
5
]
SunRay
session
(
Please
remember
to
use
-
nap
and
maybe
-
wait
200
to
avoid
being
a
resource
hog
! It also helps a bit to have a solid
avoid
being
a
resource
hog
! It also helps a bit to have a solid
background
color
).
You
have
to
know
the
name
of
the
machine
your
background
color
).
You
have
to
know
the
name
of
the
machine
your
SunRay
session
X
server
is
running
on
.
You
also
need
to
know
the
X11
SunRay
session
X
server
is
running
on
.
You
also
need
to
know
the
X11
...
@@ -476,7 +493,9 @@ ls -l ./x11vnc/x11vnc
...
@@ -476,7 +493,9 @@ ls -l ./x11vnc/x11vnc
* Somewhat surprisingly, the X11 mouse (cursor) shape is write-only
* Somewhat surprisingly, the X11 mouse (cursor) shape is write-only
and cannot be queried from the X server. So in x11vnc the cursor
and cannot be queried from the X server. So in x11vnc the cursor
shape stays fixed at an arrow. (see the -mouseX option, however,
shape stays fixed at an arrow. (see the -mouseX option, however,
for a partial hack for the root window).
for a partial hack for the root window). Also, on Solaris using
the SUN_OVL overlay extension, x11vnc can show the correct mouse
cursor when the -overlay is also supplied.
* Audio from applications is of course not redirected (separate
* Audio from applications is of course not redirected (separate
redirectors do exist, e.g. esd). The XBell() "beeps" will work if
redirectors do exist, e.g. esd). The XBell() "beeps" will work if
the X server supports the XKEYBOARD extension. (Note that on
the X server supports the XKEYBOARD extension. (Note that on
...
@@ -486,190 +505,191 @@ ls -l ./x11vnc/x11vnc
...
@@ -486,190 +505,191 @@ ls -l ./x11vnc/x11vnc
Evidently a timing related bug and difficult to reproduce...
Evidently a timing related bug and difficult to reproduce...
* Using -threads can expose some bugs in libvncserver.
* Using -threads can expose some bugs in libvncserver.
Please feel free to [2
3
]contact me if you have any questions,
Please feel free to [2
6
]contact me if you have any questions,
problems, or comments about x11vnc, etc.
problems, or comments about x11vnc, etc.
_________________________________________________________________
_________________________________________________________________
x11vnc FAQ:
x11vnc FAQ:
[2
4
]Q-1: I can'
t
get
x11vnc
to
start
up
.
It
says
"XOpenDisplay failed
[2
7
]Q-1: I can'
t
get
x11vnc
to
start
up
.
It
says
"XOpenDisplay failed
((null))"
or
"Xlib: connection to "
:
0.0
" refused by server"
.
What
do
I
((null))"
or
"Xlib: connection to "
:
0.0
" refused by server"
.
What
do
I
need
to
do
?
need
to
do
?
[
2
5
]
Q
-
2
:
I
can
't get x11vnc and/or libvncserver to compile.
[
2
8
]
Q
-
2
:
I
can
't get x11vnc and/or libvncserver to compile.
[2
6
]Q-3: Where can I get a precompiled x11vnc binary for my Operating
[2
9
]Q-3: Where can I get a precompiled x11vnc binary for my Operating
System?
System?
[
27
]Q-4: How can I see all of x11vnc'
s
command
line
options
and
[
30
]Q-4: How can I see all of x11vnc'
s
command
line
options
and
documentation
on
how
to
use
them
?
documentation
on
how
to
use
them
?
[
28
]
Q
-
5
:
I
don
't like typing arcane command line options every time I
[
31
]
Q
-
5
:
I
don
't like typing arcane command line options every time I
start x11vnc. What can I do? Is there a config file?
start x11vnc. What can I do? Is there a config file?
[
29
]Q-6: Why does x11vnc exit as soon as the VNC viewer disconnects?
[
32
]Q-6: Why does x11vnc exit as soon as the VNC viewer disconnects?
And why doesn'
t
it
allow
more
than
one
VNC
viewer
to
connect
at
the
And why doesn'
t
it
allow
more
than
one
VNC
viewer
to
connect
at
the
same
time
?
same
time
?
[
3
0
]
Q
-
7
:
I
have
two
separate
machine
displays
in
front
of
me
,
one
[
3
3
]
Q
-
7
:
I
have
two
separate
machine
displays
in
front
of
me
,
one
Windows
the
other
X11
:
can
I
use
x11vnc
in
combination
with
Win2VNC
in
Windows
the
other
X11
:
can
I
use
x11vnc
in
combination
with
Win2VNC
in
dual
-
screen
mode
to
pass
the
keystrokes
and
mouse
motions
to
the
X11
dual
-
screen
mode
to
pass
the
keystrokes
and
mouse
motions
to
the
X11
display
?
display
?
[
3
1
]
Q
-
8
:
I
am
running
Win2VNC
on
my
windows
machine
and
trying
to
[
3
4
]
Q
-
8
:
I
am
running
Win2VNC
on
my
windows
machine
and
trying
to
create
a
dual
-
screen
mode
with
my
second
display
by
running
x11vnc
create
a
dual
-
screen
mode
with
my
second
display
by
running
x11vnc
-
nofb
.
Whenever
I
initiate
the
connection
Win2VNC
quickly
disconnects
-
nofb
.
Whenever
I
initiate
the
connection
Win2VNC
quickly
disconnects
and
x11vnc
says
something
like
:
rfbProcessClientNormalMessage
:
read
:
and
x11vnc
says
something
like
:
rfbProcessClientNormalMessage
:
read
:
Connection
reset
by
peer
Connection
reset
by
peer
[
32
]
Q
-
9
:
The
X
display
I
run
x11vnc
on
is
only
8
bpp
PseudoColor
(
only
[
35
]
Q
-
9
:
The
X
display
I
run
x11vnc
on
is
only
8
bits
per
pixel
(
bpp
)
256
distinct
colors
).
x11vnc
starts
out
OK
,
but
after
a
while
the
PseudoColor
(
i
.
e
.
only
256
distinct
colors
).
The
x11vnc
colors
may
colors
are
incorrect
in
certain
windows
.
start
out
OK
,
but
after
a
while
the
colors
are
incorrect
in
certain
windows
.
[
3
3
]
Q
-
10
:
Color
problems
:
I
have
an
X
display
that
has
nice
[
3
6
]
Q
-
10
:
Color
problems
:
Why
are
the
colors
for
some
of
the
windows
"overlay-like"
visuals
of
multiple
color
depths
.
E
.
g
.
there
are
both
messed
up
in
x11vnc
?
BTW
,
I
have
an
X
display
that
has
nice
overlay
depth
8
and
24
visuals
available
.
Why
are
some
of
the
colors
messed
up
visuals
of
multiple
color
depths
.
E
.
g
.
there
are
both
depth
8
and
24
in
x11vnc
?
visuals
available
at
the
same
time
.
[
3
4
]
Q
-
11
:
How
do
I
figure
out
the
window
id
to
supply
to
the
-
id
[
3
7
]
Q
-
11
:
How
do
I
figure
out
the
window
id
to
supply
to
the
-
id
windowid
option
?
windowid
option
?
[
3
5
]
Q
-
12
:
Why
don
't menus or other transient windows come up when I am
[
3
8
]
Q
-
12
:
Why
don
't menus or other transient windows come up when I am
using the -id windowid option to view a single application window?
using the -id windowid option to view a single application window?
[3
6
]Q-13: Can I use x11vnc to view and interact with an Xterminal
[3
9
]Q-13: Can I use x11vnc to view and interact with an Xterminal
(e.g. NCD) that is not running UNIX and so x11vnc cannot be run on it
(e.g. NCD) that is not running UNIX and so x11vnc cannot be run on it
directly?
directly?
[
37
]Q-14: Can I make x11vnc more quiet and also go into the background
[
40
]Q-14: Can I make x11vnc more quiet and also go into the background
after starting up?
after starting up?
[
38
]Q-15: Can I limit which machines incoming VNC clients can connect
[
41
]Q-15: Can I limit which machines incoming VNC clients can connect
from?
from?
[
39
]Q-16: How do I build x11vnc/libvncserver with libwrap
[
42
]Q-16: How do I build x11vnc/libvncserver with libwrap
(tcp_wrappers) support?
(tcp_wrappers) support?
[4
0
]Q-17: Can I prompt the user at the local X display whether the
[4
3
]Q-17: Can I prompt the user at the local X display whether the
incoming VNC client should be accepted or not? Can I decide to make
incoming VNC client should be accepted or not? Can I decide to make
some clients view-only? How about running an arbitrary program to make
some clients view-only? How about running an arbitrary program to make
the decisions?
the decisions?
[4
1
]Q-18: How do I create a VNC password for use with x11vnc?
[4
4
]Q-18: How do I create a VNC password for use with x11vnc?
[4
2
]Q-19: How can I tunnel my connection to x11vnc via an encrypted
[4
5
]Q-19: How can I tunnel my connection to x11vnc via an encrypted
SSH channel between two Unix machines?
SSH channel between two Unix machines?
[4
3
]Q-20: How can I tunnel my connection to x11vnc via an encrypted
[4
6
]Q-20: How can I tunnel my connection to x11vnc via an encrypted
SSH channel from Windows using an SSH client like Putty?
SSH channel from Windows using an SSH client like Putty?
[4
4
]Q-21: Does x11vnc support Unix usernames and passwords? Can I
[4
7
]Q-21: Does x11vnc support Unix usernames and passwords? Can I
further limit the set of Unix usernames who can connect to the VNC
further limit the set of Unix usernames who can connect to the VNC
desktop?
desktop?
[4
5
]Q-22: Can I have two passwords for VNC viewers, one for full
[4
8
]Q-22: Can I have two passwords for VNC viewers, one for full
access and the other for view-only access to the display?
access and the other for view-only access to the display?
[4
6
]Q-23: I use a screen-lock when I leave my workstation (e.g.
[4
9
]Q-23: I use a screen-lock when I leave my workstation (e.g.
xscreensaver or xlock). When I remotely access my workstation desktop
xscreensaver or xlock). When I remotely access my workstation desktop
via x11vnc I can unlock the desktop fine, but I am worried people will
via x11vnc I can unlock the desktop fine, but I am worried people will
see my activities on the physical monitor. What can I do to prevent
see my activities on the physical monitor. What can I do to prevent
this, or at least make it more difficult?
this, or at least make it more difficult?
[
47
]Q-24: Can I have x11vnc automatically lock the screen when I
[
50
]Q-24: Can I have x11vnc automatically lock the screen when I
disconnect the VNC viewer?
disconnect the VNC viewer?
[
48
]Q-25: Are reverse connections (i.e. the VNC server connecting to
[
51
]Q-25: Are reverse connections (i.e. the VNC server connecting to
the VNC viewer) using "vncviewer -listen" and vncconnect(1) supported?
the VNC viewer) using "vncviewer -listen" and vncconnect(1) supported?
[
49
]Q-26: Sometimes when a VNC viewer dies abruptly, x11vnc also dies
[
52
]Q-26: Sometimes when a VNC viewer dies abruptly, x11vnc also dies
with the error message like: "Broken pipe". I'
m
using
the
-
forever
with the error message like: "Broken pipe". I'
m
using
the
-
forever
mode
and
I
want
x11vnc
to
keep
running
.
mode
and
I
want
x11vnc
to
keep
running
.
[
5
0
]
Q
-
27
:
How
can
I
use
x11vnc
to
connect
to
an
X
login
screen
like
[
5
3
]
Q
-
27
:
How
can
I
use
x11vnc
to
connect
to
an
X
login
screen
like
xdm
,
GNOME
gdm
greeter
,
KDE
kdm
,
or
CDE
dtlogin
?
xdm
,
GNOME
gdm
,
KDE
kdm
,
or
CDE
dtlogin
?
[
5
1
]
Q
-
28
:
Can
I
run
x11vnc
out
of
inetd
(
1
)?
[
5
4
]
Q
-
28
:
Can
I
run
x11vnc
out
of
inetd
(
1
)?
[
5
2
]
Q
-
29
:
How
do
I
make
x11vnc
work
with
the
Java
VNC
viewer
applet
in
[
5
5
]
Q
-
29
:
How
do
I
make
x11vnc
work
with
the
Java
VNC
viewer
applet
in
a
web
browser
?
a
web
browser
?
[
5
3
]
Q
-
30
:
Why
isn
't the mouse cursor shape (the little icon shape
[
5
6
]
Q
-
30
:
Why
isn
't the mouse cursor shape (the little icon shape
where the mouse pointer is) correct as I move from window to window?
where the mouse pointer is) correct as I move from window to window?
[5
4
]Q-31: Why does the mouse arrow just stay in one corner in my
[5
7
]Q-31: Why does the mouse arrow just stay in one corner in my
vncviewer, whereas my cursor (that does move) is just a dot?
vncviewer, whereas my cursor (that does move) is just a dot?
[5
5
]Q-32: Can I take advantage of the TightVNC extension to the VNC
[5
8
]Q-32: Can I take advantage of the TightVNC extension to the VNC
protocol where Cursor Positions Updates are sent back to all connected
protocol where Cursor Positions Updates are sent back to all connected
clients (i.e. passive viewers can see the mouse cursor being moved
clients (i.e. passive viewers can see the mouse cursor being moved
around by another viewer)?
around by another viewer)?
[5
6
]Q-33: Is it possible to swap the mouse buttons (e.g. left-handed
[5
9
]Q-33: Is it possible to swap the mouse buttons (e.g. left-handed
operation), or arbitrarily remap them? How about mapping button clicks
operation), or arbitrarily remap them? How about mapping button clicks
to keystrokes, e.g. to partially emulate Mouse wheel scrolling?
to keystrokes, e.g. to partially emulate Mouse wheel scrolling?
[
57
]Q-34: When I drag windows around with the mouse or scroll up and
[
60
]Q-34: When I drag windows around with the mouse or scroll up and
down things really bog down (unless I do the drag in a single, quick
down things really bog down (unless I do the drag in a single, quick
motion). Is there anything to do to improve things?
motion). Is there anything to do to improve things?
[
58
]Q-35: I have lots of memory, but why does x11vnc fail with
[
61
]Q-35: I have lots of memory, but why does x11vnc fail with
shmget: No space left on device or Minor opcode of failed
shmget: No space left on device or Minor opcode of failed
request: 1 (X_ShmAttach)?
request: 1 (X_ShmAttach)?
[
59
]Q-36: How can I make x11vnc use less system resources?
[
62
]Q-36: How can I make x11vnc use less system resources?
[6
0
]Q-37: How can I make x11vnc use MORE system resources?
[6
3
]Q-37: How can I make x11vnc use MORE system resources?
[6
1]Q-38: I use x11vnc over a slow link with high latency (i.e
. dialup
[6
4]Q-38: I use x11vnc over a slow link with high latency (e.g
. dialup
modem), is there anything I can do to speed things up?
modem), is there anything I can do to speed things up?
[6
2
]Q-39: How can I get my AltGr and Shift modifiers to work between
[6
5
]Q-39: How can I get my AltGr and Shift modifiers to work between
keyboards for different languages?
keyboards for different languages?
[6
3
]Q-40: When I try to type a "<" (i.e. less than) instead I get ">"
[6
6
]Q-40: When I try to type a "<" (i.e. less than) instead I get ">"
(i.e. greater than)! Strangely, typing ">" works OK!!
(i.e. greater than)! Strangely, typing ">" works OK!!
[6
4
]Q-41: I'
m
using
an
"international"
keyboard
(
e
.
g
.
German
"de"
,
or
[6
7
]Q-41: I'
m
using
an
"international"
keyboard
(
e
.
g
.
German
"de"
,
or
Danish
"dk"
)
and
the
-
modtweak
mode
works
well
if
the
VNC
viewer
is
Danish
"dk"
)
and
the
-
modtweak
mode
works
well
if
the
VNC
viewer
is
run
on
a
Unix
/
Linux
machine
with
a
similar
keyboard
.
But
if
I
run
the
run
on
a
Unix
/
Linux
machine
with
a
similar
keyboard
.
But
if
I
run
the
VNC
viewer
on
Unix
/
Linux
with
a
different
keyboard
(
e
.
g
.
"us"
)
or
VNC
viewer
on
Unix
/
Linux
with
a
different
keyboard
(
e
.
g
.
"us"
)
or
Windows
with
any
keyboard
,
I
can
't type some keys like: "@", "$", "<",
Windows
with
any
keyboard
,
I
can
't type some keys like: "@", "$", "<",
">", etc. How can I fix this?
">", etc. How can I fix this?
[6
5
]Q-42: When typing I sometimes get double, triple, or more of my
[6
8
]Q-42: When typing I sometimes get double, triple, or more of my
keystrokes repeated. I'
m
sure
I
only
typed
them
once
,
what
can
I
do
?
keystrokes repeated. I'
m
sure
I
only
typed
them
once
,
what
can
I
do
?
[
6
6
]
Q
-
43
:
The
machine
where
I
run
x11vnc
has
an
AltGr
key
,
but
the
[
6
9
]
Q
-
43
:
The
machine
where
I
run
x11vnc
has
an
AltGr
key
,
but
the
local
machine
where
I
run
the
VNC
viewer
does
not
.
Is
there
a
way
I
local
machine
where
I
run
the
VNC
viewer
does
not
.
Is
there
a
way
I
can
map
a
local
unused
key
to
send
an
AltGr
?
How
about
a
Compose
key
can
map
a
local
unused
key
to
send
an
AltGr
?
How
about
a
Compose
key
as
well
?
as
well
?
[
67
]
Q
-
44
:
I
have
a
Sun
machine
I
run
x11vnc
on
.
Its
Sun
keyboard
has
[
70
]
Q
-
44
:
I
have
a
Sun
machine
I
run
x11vnc
on
.
Its
Sun
keyboard
has
just
one
Alt
key
labelled
"Alt"
and
two
Meta
keys
labelled
with
little
just
one
Alt
key
labelled
"Alt"
and
two
Meta
keys
labelled
with
little
diamonds
.
The
machine
where
I
run
the
VNC
viewer
only
has
Alt
keys
.
diamonds
.
The
machine
where
I
run
the
VNC
viewer
only
has
Alt
keys
.
How
can
I
send
a
Meta
keypress
?
(
e
.
g
.
emacs
needs
this
)
How
can
I
send
a
Meta
keypress
?
(
e
.
g
.
emacs
needs
this
)
[
68
]
Q
-
45
:
Can
I
map
a
keystroke
to
a
mouse
button
click
on
the
remote
[
71
]
Q
-
45
:
Can
I
map
a
keystroke
to
a
mouse
button
click
on
the
remote
machine
?
machine
?
[
69
]
Q
-
46
:
The
remote
display
is
larger
(
in
number
of
pixels
)
than
the
[
72
]
Q
-
46
:
The
remote
display
is
larger
(
in
number
of
pixels
)
than
the
local
display
I
am
running
the
vncviewer
on
.
I
don
't like the
local
display
I
am
running
the
vncviewer
on
.
I
don
't like the
vncviewer scrollbars, what I can do?
vncviewer scrollbars, what I can do?
[7
0
]Q-47: Does x11vnc support server-side framebuffer scaling? (E.g.
[7
3
]Q-47: Does x11vnc support server-side framebuffer scaling? (E.g.
to make the desktop smaller).
to make the desktop smaller).
[7
1
]Q-48: Does x11vnc work with Xinerama? (i.e. multiple monitors
[7
4
]Q-48: Does x11vnc work with Xinerama? (i.e. multiple monitors
joined together to form one big, single screen).
joined together to form one big, single screen).
[7
2
]Q-49: Can I use x11vnc on a multi-headed display that is not
[7
5
]Q-49: Can I use x11vnc on a multi-headed display that is not
Xinerama (i.e. separate screens :0.0, :0.1, ... for each monitor)?
Xinerama (i.e. separate screens :0.0, :0.1, ... for each monitor)?
[7
3
]Q-50: Why is the view in my VNC viewer completely black? Or why is
[7
6
]Q-50: Why is the view in my VNC viewer completely black? Or why is
everything flashing around randomly?
everything flashing around randomly?
[7
4
]Q-51: I use Linux Virtual Consoles (VC'
s
)
to
implement
'Fast User
[7
7
]Q-51: I use Linux Virtual Consoles (VC'
s
)
to
implement
'Fast User
Switching'
between
users
' sessions (e.g. Betty is on Ctrl-Alt-F7,
Switching'
between
users
' sessions (e.g. Betty is on Ctrl-Alt-F7,
Bobby is on Ctrl-Alt-F8, and Sid is on Ctrl-Alt-F1: they use those
Bobby is on Ctrl-Alt-F8, and Sid is on Ctrl-Alt-F1: they use those
keystrokes to switch between their sessions). How come the view in a
keystrokes to switch between their sessions). How come the view in a
...
@@ -677,13 +697,13 @@ ls -l ./x11vnc/x11vnc
...
@@ -677,13 +697,13 @@ ls -l ./x11vnc/x11vnc
otherwise all messed up unless the X session x11vnc is attached to is
otherwise all messed up unless the X session x11vnc is attached to is
in the active VC?
in the active VC?
[7
5
]Q-52: Does the Clipboard/Selection get transferred between the
[7
8
]Q-52: Does the Clipboard/Selection get transferred between the
vncviewer and the X display?
vncviewer and the X display?
[7
6
]Q-53: Why don'
t
I
hear
the
"Beeps"
in
my
X
session
(
e
.
g
.
when
[7
9
]Q-53: Why don'
t
I
hear
the
"Beeps"
in
my
X
session
(
e
.
g
.
when
typing
tput
bel
in
an
xterm
)?
typing
tput
bel
in
an
xterm
)?
[
77
]
Q
-
54
:
I
am
using
x11vnc
where
my
local
machine
has
"popup/hidden
[
80
]
Q
-
54
:
I
am
using
x11vnc
where
my
local
machine
has
"popup/hidden
taskbars"
(
e
.
g
.
GNOME
or
MacOS
X
)
and
the
remote
display
where
x11vnc
taskbars"
(
e
.
g
.
GNOME
or
MacOS
X
)
and
the
remote
display
where
x11vnc
runs
also
has
"popup/hidden taskbars"
(
e
.
g
.
GNOME
).
When
I
move
the
runs
also
has
"popup/hidden taskbars"
(
e
.
g
.
GNOME
).
When
I
move
the
mouse
to
the
edge
of
the
screen
where
the
popups
happen
,
the
taskbars
mouse
to
the
edge
of
the
screen
where
the
popups
happen
,
the
taskbars
...
@@ -700,7 +720,7 @@ ls -l ./x11vnc/x11vnc
...
@@ -700,7 +720,7 @@ ls -l ./x11vnc/x11vnc
specify it. Nearly always the correct value will be ":0"
specify it. Nearly always the correct value will be ":0"
For the latter error, you need to set up the X11 permissions. See the
For the latter error, you need to set up the X11 permissions. See the
xauth(1), Xsecurity(
1
), and xhost(1) man pages. For example, you may
xauth(1), Xsecurity(
7
), and xhost(1) man pages. For example, you may
need to set your XAUTHORITY environment variable to point to the
need to set your XAUTHORITY environment variable to point to the
correct cookie file (e.g. /home/joe/.Xauthority or
correct cookie file (e.g. /home/joe/.Xauthority or
/var/lib/xdm/authdir/authfiles/A:0-nRySEi), or simply be sure you run
/var/lib/xdm/authdir/authfiles/A:0-nRySEi), or simply be sure you run
...
@@ -774,18 +794,18 @@ ls -l ./x11vnc/x11vnc
...
@@ -774,18 +794,18 @@ ls -l ./x11vnc/x11vnc
Q
-
3
:
Where
can
I
get
a
precompiled
x11vnc
binary
for
my
Operating
Q
-
3
:
Where
can
I
get
a
precompiled
x11vnc
binary
for
my
Operating
System
?
System
?
Hopefully
the
[
78
]
build
steps
above
and
[
79
]
FAQ
provide
enough
info
Hopefully
the
[
81
]
build
steps
above
and
[
82
]
FAQ
provide
enough
info
for
a
painless
compile
for
most
environments
.
Please
report
problems
for
a
painless
compile
for
most
environments
.
Please
report
problems
with
the
x11vnc
configure
,
make
,
etc
.
on
your
system
(
if
your
system
with
the
x11vnc
configure
,
make
,
etc
.
on
your
system
(
if
your
system
is
known
to
compile
other
GNU
packages
successfully
).
is
known
to
compile
other
GNU
packages
successfully
).
There
are
precompiled
x11vnc
binaries
made
by
other
groups
available
There
are
precompiled
x11vnc
binaries
made
by
other
groups
available
at
the
following
locations
:
at
the
following
locations
:
Debian
:
[
80
]
http
://
packages
.
debian
.
org
/
x11vnc
Debian
:
(.
deb
)
[
83
]
http
://
packages
.
debian
.
org
/
x11vnc
Slackware
:
[
81
]
http
://
www
.
linuxpackages
.
net
/
Redhat
/
Fedora
:
Slackware
:
(.
tgz
)
[
84
]
http
://
www
.
linuxpackages
.
net
/
Redhat
/
Fedora
:
[
82
]
http
://
dag
.
wieers
.
com
/
packages
/
x11vnc
/
wwexptools
:
(.
rpm
)
[
85
]
http
://
dag
.
wieers
.
com
/
packages
/
x11vnc
/
wwexptools
:
(.
tgz
)
[
8
3
]
http
://
www
.
bell
-
labs
.
com
/
project
/
wwexptools
/
packages
.
html
The
last
[
8
6
]
http
://
www
.
bell
-
labs
.
com
/
project
/
wwexptools
/
packages
.
html
The
last
one
,
wwexptools
,
provides
a
variety
of
Unix
binaries
(
Linux
,
Solaris
,
one
,
wwexptools
,
provides
a
variety
of
Unix
binaries
(
Linux
,
Solaris
,
HP
-
UX
,
Irix
,
...)
with
the
intent
of
being
compatible
on
a
wide
range
HP
-
UX
,
Irix
,
...)
with
the
intent
of
being
compatible
on
a
wide
range
of
OS
releases
.
Find
x11vnc
at
that
link
and
select
'download info'
.
of
OS
releases
.
Find
x11vnc
at
that
link
and
select
'download info'
.
...
@@ -808,7 +828,7 @@ ls -l ./x11vnc/x11vnc
...
@@ -808,7 +828,7 @@ ls -l ./x11vnc/x11vnc
Q
-
4
:
How
can
I
see
all
of
x11vnc
's command line options and
Q
-
4
:
How
can
I
see
all
of
x11vnc
's command line options and
documentation on how to use them?
documentation on how to use them?
Run: x11vnc -help The output is listed [8
4
]here as well.
Run: x11vnc -help The output is listed [8
7
]here as well.
Q-5: I don'
t
like
typing
arcane
command
line
options
every
time
I
Q-5: I don'
t
like
typing
arcane
command
line
options
every
time
I
start
x11vnc
.
What
can
I
do
?
Is
there
a
config
file
?
start
x11vnc
.
What
can
I
do
?
Is
there
a
config
file
?
...
@@ -849,7 +869,7 @@ display :0
...
@@ -849,7 +869,7 @@ display :0
Recommended additional safety measures include using ssh (see above)
Recommended additional safety measures include using ssh (see above)
or a VPN to authenticate and encrypt the viewer connections or to at
or a VPN to authenticate and encrypt the viewer connections or to at
least use the -rfbauth passwd-file [8
5
]option to use VNC password
least use the -rfbauth passwd-file [8
8
]option to use VNC password
protection.
protection.
Q-7: I have two separate machine displays in front of me, one Windows
Q-7: I have two separate machine displays in front of me, one Windows
...
@@ -862,16 +882,16 @@ display :0
...
@@ -862,16 +882,16 @@ display :0
secondary display (X11). Then start up Win2VNC on the primary display
secondary display (X11). Then start up Win2VNC on the primary display
(Windows) referring it to the secondary display.
(Windows) referring it to the secondary display.
This will also work X11 to X11 using [8
6
]x2vnc, however you would
This will also work X11 to X11 using [8
9
]x2vnc, however you would
probably just want to avoid VNC and use x2x for that.
probably just want to avoid VNC and use x2x for that.
For reference, here are some links to Win2VNC-like programs for
For reference, here are some links to Win2VNC-like programs for
multiple monitor setups:
multiple monitor setups:
* [
87
]Original Win2VNC
* [
90
]Original Win2VNC
* [
88]Enhanced Win2VNC and [89
]sourceforge link
* [
91]Enhanced Win2VNC and [92
]sourceforge link
* [9
0
]x2vnc
* [9
3
]x2vnc
* [9
1]x2x also [92
]here
* [9
4]x2x also [95
]here
* [9
3
]zvnc (MorphOS)
* [9
6
]zvnc (MorphOS)
All of them (except x2x) will work with x11vnc.
All of them (except x2x) will work with x11vnc.
...
@@ -882,81 +902,114 @@ display :0
...
@@ -882,81 +902,114 @@ display :0
Connection reset by peer
Connection reset by peer
Is the default visual of the X display you run x11vnc on low color
Is the default visual of the X display you run x11vnc on low color
(e.g. 8bpp PseudoColor)? (you can run xdpyinfo to check). There seems
(e.g. 8 bit per pixel PseudoColor)? (you can run xdpyinfo to check).
to be a bug in Win2VNC in that it cannot deal correctly with colormaps
There seems to be a bug in Win2VNC in that it cannot deal correctly
(PseudoColor is the most common example of a visual with a colormap).
with colormaps (PseudoColor is the most common example of a visual
with a colormap).
If so, there are a couple options. 1) Can you set the default visual
If so, there are a couple options. 1) Can you set the default visual
on your display to be depth 24 TrueColor? Sun machines often have 8+24
on your display to be depth 24 TrueColor? Sun machines often have 8+24
overlay visuals, and you can make the default visual depth 24
overlay visuals, and you can make the default visual depth 24
TrueColor (see fbconfig(1) and Xsun(1)). 2) As of Feb/2004, in the
TrueColor (see fbconfig(1) and Xsun(1)). 2) As of Feb/2004, in the
libvncserver CVS, x11vnc has the -visual option to allow you to force
libvncserver CVS, x11vnc has the -visual option to allow you to force
the framebuffer visual to whatever you want. This option provides a
the framebuffer visual to whatever you want (this usually messes up
convenient workaround for the Win2VNC bug:
the colors unless you are very careful). In this case, the option
provides a convenient workaround for the Win2VNC bug:
x11vnc -nofb -visual TrueColor -display :0 ...
x11vnc -nofb -visual TrueColor -display :0 ...
So the visual will be set to 8bpp TrueColor and Win2VNC can handle
So the visual will be set to 8bpp TrueColor and Win2VNC can handle
this. Since Win2VNC does not use the framebuffer there should be no
this. Since Win2VNC does not use the framebuffer data there should be
problems in doing this.
no problems in doing this.
Q-9: The X display I run x11vnc on is only 8bpp PseudoColor (only 256
Q-9: The X display I run x11vnc on is only 8 bits per pixel (bpp)
distinct colors). x11vnc starts out OK, but after a while the colors
PseudoColor (i.e. only 256 distinct colors). The x11vnc colors may
are incorrect in certain windows.
start out OK, but after a while the colors are incorrect in certain
windows.
Use the -flashcmap option to have x11vnc watch for changes in the
colormap, and propagate those changes back to connected clients. This
can be slow (since the whole screen must be updated over the network
whenever the colormap changes). This flashing colormap behavior often
happens if an application installs its own private colormap when the
mouse is in its window. "netscape -install" is a well-known historical
example of this. Consider reconfiguring the system to 16 bpp or depth
24 TrueColor if at all possible.
Also note that in some rare cases the -notruecolor option has
corrected colors on 8bpp displays. The red, green, and blue masks were
non-zero in 8bpp PseudoColor on an obscure setup, and this option
corrected the problems.
Q-10: Color problems: Why are the colors for some of the windows
messed up in x11vnc? BTW, I have an X display that has nice overlay
visuals of multiple color depths. E.g. there are both depth 8 and 24
visuals available at the same time.
Use the -flashcmap to have x11vnc watch for changes in the colormap,
You may want to review the [97]previous question regarding 8 bpp
and propagate those changes back to connected clients. This can be
PseudoColor.
slow. The incorrect colors often happens if an application installs
its own private colormap when the mouse is in its window. netscape
-install is a well-known historical example of this.
Q-10: Color problems: I have an X display that has nice "overlay-like"
If that isn'
t
the
problem
,
run
xdpyinfo
to
see
what
the
default
visual
visuals of multiple color depths. E.g. there are both depth 8 and 24
is
.
Does
it
have
a
depth
of
8
?
If
it
does
,
can
you
possibly
visuals available. Why are some of the colors messed up in x11vnc?
re
-
configure
your
X
server
to
make
the
depth
24
visual
the
default
?
If
you
can
do
it
,
this
will
save
you
a
lot
of
grief
WRT
colors
and
x11vnc
First off, try the (rather slow) -flashcmap option just to be sure
(
and
for
general
usage
too
!). Here is how I do this on an old
your color problem isn'
t
simply
due
to
x11vnc
not
following
the
Sparcstation
20
running
Solaris
9
with
SX
graphics
changing
256
element
colormap
.
The
-
notruecolor
option
has
also
been
known
to
resolve
some
color
problems
on
8
bpp
displays
.
If
that
doesn
't help, run xdpyinfo to see what the default visual is.
Does it have a depth of 8? If it does, can you possibly re-configure
your X server to make the depth 24 visual the default? If you can do
it, this will save you a lot of grief WRT colors and x11vnc (and for
general usage too). I do this on an old Sparcstation 20 with SX
graphics
xinit
--
-
dev
/
dev
/
fb
defclass
TrueColor
defdepth
24
xinit
--
-
dev
/
dev
/
fb
defclass
TrueColor
defdepth
24
and it works nicely (
to log into console from the dtlogin window,
and
it
works
nicely
(
note
:
to
log
into
console
from
the
dtlogin
select "Options -> Command Line Login", then login and enter the above
window
,
select
"Options -> Command Line Login"
,
then
login
and
enter
command). A more permanent and convenient option is to put a line
the
above
command
).
If
you
have
root
permission
,
a
more
permanent
and
like:
convenient
option
is
to
put
a
line
like
:
:0 Local local_uid@console root /usr/openwin/bin/Xsun -dev /dev/fb defclass Tr
:
0
Local
local_uid
@
console
root
/
usr
/
openwin
/
bin
/
Xsun
-
dev
/
dev
/
fb
defclass
ueColor defdepth 24
Tr
ueColor
defdepth
24
in
/
etc
/
dt
/
config
/
Xservers
(
see
/
usr
/
dt
/
config
/
Xservers
).
in
/
etc
/
dt
/
config
/
Xservers
(
see
/
usr
/
dt
/
config
/
Xservers
).
Another
option
is
if
the
system
with
overlay
visuals
is
a
Sun
system
running
Solaris
you
can
use
the
-
overlay
x11vnc
option
(
Aug
/
2004
)
to
have
x11vnc
use
the
Solaris
XReadScreen
(
3
X11
)
function
to
poll
the
"true view"
of
the
whole
screen
at
depth
24
TrueColor
.
This
is
useful
for
Legacy
applications
(
older
versions
of
Cadence
CAD
apps
are
mentioned
by
x11vnc
users
)
that
require
the
default
depth
be
8
bpp
,
or
will
use
a
8
bpp
visual
even
if
depth
24
visuals
are
available
,
and
so
the
default
depth
workaround
described
in
the
previous
paragraph
is
not
sufficient
.
Misc
.
notes
on
-
overlay
mode
:
An
amusing
by
-
product
of
-
overlay
mode
is
that
mouse
cursor
shape
(
e
.
g
.
use
-
X
or
-
mouse
options
)
is
correct
.
The
-
overlay
mode
may
be
somewhat
slower
than
normal
mode
due
to
the
extra
framebuffer
manipulations
that
must
be
performed
.
Also
,
there
is
a
bug
in
that
for
some
popup
menus
,
the
windows
they
overlap
will
have
painting
problems
while
the
popup
is
up
(
a
workaround
is
to
disable
SaveUnders
by
passing
-
su
to
Xsun
,
e
.
g
.
in
your
/
etc
/
dt
/
config
/
Xservers
file
).
Still
not
working
?
Run
xwininfo
on
the
application
with
the
messed
up
Still
not
working
?
Run
xwininfo
on
the
application
with
the
messed
up
colors
to
verify
that
the
depth
of
its
visual
is
different
from
the
colors
to
verify
that
the
depth
of
its
visual
is
different
from
the
default
visual
depth
(
gotten
from
xdpyinfo
).
One
possible
workaround
default
visual
depth
(
gotten
from
xdpyinfo
).
One
possible
workaround
in
this
case
is
to
use
the
-
id
option
to
point
x11vnc
at
the
in
this
case
is
to
use
the
-
id
option
to
point
x11vnc
at
the
application window itself. If the application is complicated
this may
application
window
itself
.
If
the
application
is
complicated
(
lots
of
not be acceptable, and may even crash x11vnc (but not the
toplevel
windows
and
popup
menus
)
this
may
not
be
acceptable
,
and
may
application).
even
crash
x11vnc
(
but
not
the
application
).
It is theoretically possible to solve this problem (see xwd(1) for
It
is
theoretically
possible
to
solve
this
problem
in
general
(
see
example), but it does not seem trivial or sufficiently fast for x11vnc
xwd
(
1
)
for
example
),
but
it
does
not
seem
trivial
or
sufficiently
fast
to be able to do.
for
x11vnc
to
be
able
to
do
so
in
real
time
.
Fortunately
the
-
overlay
option
works
for
Solaris
machines
with
overlay
visuals
where
most
of
this
problem
occurs
.
Q
-
11
:
How
do
I
figure
out
the
window
id
to
supply
to
the
-
id
windowid
Q
-
11
:
How
do
I
figure
out
the
window
id
to
supply
to
the
-
id
windowid
option
?
option
?
Run
the
xwininfo
program
in
a
terminal
.
It
will
ask
you
to
click
on
Run
the
xwininfo
program
in
a
terminal
.
It
will
ask
you
to
click
on
the
desired
application
window
.
After
clicking
,
it
will
print
out
much
the
desired
application
window
.
After
clicking
,
it
will
print
out
much
information, including the window id.
information
,
including
the
window
id
.
Also
,
the
visual
and
depth
of
the
window
printed
out
is
often
useful
in
debugging
x11vnc
[
98
]
problems
.
Note that some VNC viewers will have problems rendering screens that
When
using
-
id
windowid
,
note
that
some
VNC
viewers
will
have
problems
have a width that is not a multiple of 4. Try to manually adjust the
rendering
screens
that
have
a
width
that
is
not
a
multiple
of
4.
Try
window width before starting x11vnc -id ....
to
manually
adjust
the
window
width
before
starting
x11vnc
-
id
....
Q
-
12
:
Why
don
't menus or other transient windows come up when I am
Q
-
12
:
Why
don
't menus or other transient windows come up when I am
using the -id windowid option to view a single application window?
using the -id windowid option to view a single application window?
...
@@ -968,10 +1021,10 @@ ueColor defdepth 24
...
@@ -968,10 +1021,10 @@ ueColor defdepth 24
clipping or obscuring it. See the XGetImage man page for more details.
clipping or obscuring it. See the XGetImage man page for more details.
If things are not working and you still want to do the single window
If things are not working and you still want to do the single window
polling
,
feel
free
to
ask
for
a
version
of
x11vnc
that
has
an
polling,
try the -sid windowid option ("shifted" windowid).
experimental
-
sid
windowid
option
(
"shifted"
windowid
).
x11vnc
is
known
to
crash
under
both
-
id
and
-
sid
,
so
both
modes
are
still
x11vnc is known to crash under both -id and -sid, so both modes are
experimental
.
still
experimental.
Q-13: Can I use x11vnc to view and interact with an Xterminal (e.g.
Q-13: Can I use x11vnc to view and interact with an Xterminal (e.g.
NCD) that is not running UNIX and so x11vnc cannot be run on it
NCD) that is not running UNIX and so x11vnc cannot be run on it
...
@@ -1029,7 +1082,7 @@ ueColor defdepth 24
...
@@ -1029,7 +1082,7 @@ ueColor defdepth 24
is
"vnc"
,
e
.
g
.:
is
"vnc"
,
e
.
g
.:
vnc
:
192.168.100.3
.
example
.
com
vnc
:
192.168.100.3
.
example
.
com
Note that if you run x11vnc out of [9
4
]inetd you do not need to build
Note
that
if
you
run
x11vnc
out
of
[
9
9
]
inetd
you
do
not
need
to
build
x11vnc
with
libwrap
support
because
the
/
usr
/
sbin
/
tcpd
reference
in
x11vnc
with
libwrap
support
because
the
/
usr
/
sbin
/
tcpd
reference
in
/
etc
/
inetd
.
conf
handles
the
tcp_wrappers
stuff
.
/
etc
/
inetd
.
conf
handles
the
tcp_wrappers
stuff
.
...
@@ -1073,7 +1126,7 @@ ueColor defdepth 24
...
@@ -1073,7 +1126,7 @@ ueColor defdepth 24
program to prompt the user whether the client should be accepted or
program to prompt the user whether the client should be accepted or
not. This requires that you have xmessage installed and available via
not. This requires that you have xmessage installed and available via
PATH. In case it is not already on your system, the xmessage program
PATH. In case it is not already on your system, the xmessage program
is
available
at
[
95
]
ftp
://
ftp
.
x
.
org
/
is available at [
100
]ftp://ftp.x.org/
To include view-only decisions for the external commands, prefix the
To include view-only decisions for the external commands, prefix the
command something like this: "yes:0,no:*,view:3 mycommand ..." This
command something like this: "yes:0,no:*,view:3 mycommand ..." This
...
@@ -1112,7 +1165,7 @@ elif [ $rc = 4 ]; then
...
@@ -1112,7 +1165,7 @@ elif [ $rc = 4 ]; then
fi
fi
exit 1
exit 1
Stefan
Radman
has
written
a
nice
dtksh
script
[
96
]
dtVncPopup
for
use
Stefan Radman has written a nice dtksh script [
101
]dtVncPopup for use
in CDE environments to do the same sort of thing. Information on how
in CDE environments to do the same sort of thing. Information on how
to use it is found at the top of the file. He encourages you to
to use it is found at the top of the file. He encourages you to
provide feedback to him to help improve the script.
provide feedback to him to help improve the script.
...
@@ -1147,13 +1200,14 @@ exit 1
...
@@ -1147,13 +1200,14 @@ exit 1
out
for
the
command
winding
up
in
your
shell
's history file (history
out
for
the
command
winding
up
in
your
shell
's history file (history
-c is often a way to clear it).
-c is often a way to clear it).
x11vnc
also
has
the
[
97
]-
passwdfile
and
-
passwd
/-
viewpasswd
plain
text
x11vnc also has the [102]-passwdfile and -passwd/-viewpasswd plain
(
i
.
e
.
not
obscured
like
the
-
rfbauth
VNC
passwords
)
password
options
.
text (i.e. not obscured like the -rfbauth VNC passwords) password
options.
Q-19: How can I tunnel my connection to x11vnc via an encrypted SSH
Q-19: How can I tunnel my connection to x11vnc via an encrypted SSH
channel between two Unix machines?
channel between two Unix machines?
See
the
description
earlier
on
this
page
on
[
98
]
how
to
tunnel
VNC
via
See the description earlier on this page on [
103
]how to tunnel VNC via
SSH from Unix to Unix. A number of ways are described along with some
SSH from Unix to Unix. A number of ways are described along with some
issues you may encounter.
issues you may encounter.
...
@@ -1162,8 +1216,8 @@ exit 1
...
@@ -1162,8 +1216,8 @@ exit 1
Q-20: How can I tunnel my connection to x11vnc via an encrypted SSH
Q-20: How can I tunnel my connection to x11vnc via an encrypted SSH
channel from Windows using an SSH client like Putty?
channel from Windows using an SSH client like Putty?
[
99
]
Above
we
described
how
to
tunnel
VNC
via
SSH
from
Unix
to
Unix
.
To
[
104]Above we described how to tunnel VNC via SSH from Unix to Unix.
do
this
from
Windows
using
Putty
it
would
go
something
like
this
:
To
do this from Windows using Putty it would go something like this:
* In the Putty dialog window under '
Session
' enter the hostname or
* In the Putty dialog window under '
Session
' enter the hostname or
IP number of the Unix machine with display to be viewed.
IP number of the Unix machine with display to be viewed.
* Make sure the SSH protocol is selected and the server port is
* Make sure the SSH protocol is selected and the server port is
...
@@ -1194,7 +1248,7 @@ exit 1
...
@@ -1194,7 +1248,7 @@ exit 1
you'
ll
need
to
do
a
second
login
(
ssh
or
rsh
)
to
the
workstation
you'
ll
need
to
do
a
second
login
(
ssh
or
rsh
)
to
the
workstation
machine
'otherhost'
and
then
start
up
x11vnc
on
it
.
machine
'otherhost'
and
then
start
up
x11vnc
on
it
.
As discussed [10
0
]above another option is to first start the VNC
As
discussed
[
10
5
]
above
another
option
is
to
first
start
the
VNC
viewer
in
"listen"
mode
,
and
then
launch
x11vnc
with
the
"-connection
viewer
in
"listen"
mode
,
and
then
launch
x11vnc
with
the
"-connection
localhost"
option
to
establish
the
reverse
connection
.
In
this
case
a
localhost"
option
to
establish
the
reverse
connection
.
In
this
case
a
Remote
port
redirection
(
not
Local
)
is
needed
for
port
5500
instead
of
Remote
port
redirection
(
not
Local
)
is
needed
for
port
5500
instead
of
...
@@ -1215,7 +1269,7 @@ exit 1
...
@@ -1215,7 +1269,7 @@ exit 1
connection
to
make
it
appear
to
emanate
from
the
local
machine
.
As
connection
to
make
it
appear
to
emanate
from
the
local
machine
.
As
discussed
above
,
ssh
is
useful
for
this
:
ssh
-
l
username
-
L
discussed
above
,
ssh
is
useful
for
this
:
ssh
-
l
username
-
L
5900
:
localhost
:
5900
hostname
...
See
the
ssh
wrapper
scripts
mentioned
5900
:
localhost
:
5900
hostname
...
See
the
ssh
wrapper
scripts
mentioned
[10
1
]elsewhere on this page. Of course a malicious user could allow
[
10
6
]
elsewhere
on
this
page
.
Of
course
a
malicious
user
could
allow
other
users
to
get
in
through
his
channel
,
but
that
is
a
problem
with
other
users
to
get
in
through
his
channel
,
but
that
is
a
problem
with
every
method
.
Another
thing
to
watch
out
for
is
a
malicious
user
on
every
method
.
Another
thing
to
watch
out
for
is
a
malicious
user
on
the
viewer
side
(
where
ssh
is
running
)
trying
to
sneak
in
through
the
the
viewer
side
(
where
ssh
is
running
)
trying
to
sneak
in
through
the
...
@@ -1291,7 +1345,7 @@ exit 1 # reject it
...
@@ -1291,7 +1345,7 @@ exit 1 # reject it
In
any
event
,
as
of
Jun
/
2004
there
is
an
experimental
utility
to
make
In
any
event
,
as
of
Jun
/
2004
there
is
an
experimental
utility
to
make
it
more
difficult
for
nosey
people
to
see
your
x11vnc
activities
.
The
it
more
difficult
for
nosey
people
to
see
your
x11vnc
activities
.
The
source for it is [10
2
]blockdpy.c The idea behind it is simple (but
source
for
it
is
[
10
7
]
blockdpy
.
c
The
idea
behind
it
is
simple
(
but
obviously
not
bulletproof
):
when
a
VNC
client
attaches
to
x11vnc
put
obviously
not
bulletproof
):
when
a
VNC
client
attaches
to
x11vnc
put
the
display
monitor
in
the
DPMS
"off"
state
,
if
the
DPMS
state
ever
the
display
monitor
in
the
DPMS
"off"
state
,
if
the
DPMS
state
ever
changes
immediately
start
up
the
screen
-
lock
program
.
The
x11vnc
user
changes
immediately
start
up
the
screen
-
lock
program
.
The
x11vnc
user
...
@@ -1360,11 +1414,11 @@ xprop -root -f VNC_CONNECT 8s -set VNC_CONNECT "$1"
...
@@ -1360,11 +1414,11 @@ xprop -root -f VNC_CONNECT 8s -set VNC_CONNECT "$1"
Currently (Apr/2004) the above fix only works for BSD signal systems
Currently (Apr/2004) the above fix only works for BSD signal systems
(Linux, FreeBSD, ...) For SYSV systems there is a workaround in my
(Linux, FreeBSD, ...) For SYSV systems there is a workaround in my
[
10
3
]
x11vnc
.
c
file
.
It
also
has
an
option
-
sigpipe
exit
to
have
x11vnc
[10
8
]x11vnc.c file. It also has an option -sigpipe exit to have x11vnc
clean up and exit upon receiving SIGPIPE.
clean up and exit upon receiving SIGPIPE.
Q-27: How can I use x11vnc to connect to an X login screen like xdm,
Q-27: How can I use x11vnc to connect to an X login screen like xdm,
GNOME
gdm
greeter
,
KDE
kdm
,
or
CDE
dtlogin
?
GNOME gdm, KDE kdm, or CDE dtlogin?
One time only. If the X login screen is running and you just want to
One time only. If the X login screen is running and you just want to
connect to it once:
connect to it once:
...
@@ -1428,7 +1482,7 @@ xprop -root -f VNC_CONNECT 8s -set VNC_CONNECT "$1"
...
@@ -1428,7 +1482,7 @@ xprop -root -f VNC_CONNECT 8s -set VNC_CONNECT "$1"
If
you
do
not
want
to
deal
with
the
display
manager
startup
scripts
,
If
you
do
not
want
to
deal
with
the
display
manager
startup
scripts
,
here
is
a
kludgey
script
that
can
be
run
manually
or
out
of
a
boot
here
is
a
kludgey
script
that
can
be
run
manually
or
out
of
a
boot
file like rc.local. [10
4
]x11vnc_loop It will need some local
file
like
rc
.
local
.
[
10
9
]
x11vnc_loop
It
will
need
some
local
customization
before
running
.
Because
the
XAUTHORITY
auth
file
must
be
customization
before
running
.
Because
the
XAUTHORITY
auth
file
must
be
guessed
by
this
script
,
use
of
the
display
manager
script
above
is
guessed
by
this
script
,
use
of
the
display
manager
script
above
is
preferred
.
preferred
.
...
@@ -1545,11 +1599,16 @@ mp/x11vnc_sh.log
...
@@ -1545,11 +1599,16 @@ mp/x11vnc_sh.log
build
up
a
table
of
cursors
for
the
windows
it
sees
,
perhaps
using
a
build
up
a
table
of
cursors
for
the
windows
it
sees
,
perhaps
using
a
user
supplied
hints
file
,
but
that
has
not
been
explored
yet
.
user
supplied
hints
file
,
but
that
has
not
been
explored
yet
.
Also
note
that
as
of
Aug
/
2004
in
the
libvncserver
CVS
,
on
Solaris
using
the
SUN_OVL
overlay
extension
,
x11vnc
can
show
the
correct
mouse
cursor
when
the
-
overlay
is
also
supplied
.
(-
overlay
has
some
other
problems
however
,
and
can
be
slower
).
Q
-
31
:
Why
does
the
mouse
arrow
just
stay
in
one
corner
in
my
Q
-
31
:
Why
does
the
mouse
arrow
just
stay
in
one
corner
in
my
vncviewer
,
whereas
my
cursor
(
that
does
move
)
is
just
a
dot
?
vncviewer
,
whereas
my
cursor
(
that
does
move
)
is
just
a
dot
?
This default takes advantage of a [1
05
]tightvnc extension that allows
This
default
takes
advantage
of
a
[
1
10
]
tightvnc
extension
that
allows
specifying a cursor
shap
e for the local VNC viewer. You may disable it
specifying
a
cursor
imag
e
for
the
local
VNC
viewer
.
You
may
disable
it
with
the
-
nocursor
option
to
x11vnc
if
your
viewer
does
not
have
this
with
the
-
nocursor
option
to
x11vnc
if
your
viewer
does
not
have
this
extension
.
extension
.
...
@@ -1645,7 +1704,7 @@ mp/x11vnc_sh.log
...
@@ -1645,7 +1704,7 @@ mp/x11vnc_sh.log
19/03/2004 10:10:58 error creating tile-row shm for len=4
19/03/2004 10:10:58 error creating tile-row shm for len=4
19/03/2004 10:10:58 reverting to single_copytile mode
19/03/2004 10:10:58 reverting to single_copytile mode
Here
is
a
shell
script
[
1
06
]
shm_clear
to
list
and
prompt
for
removal
Here is a shell script [1
11
]shm_clear to list and prompt for removal
of your unattached shm segments (attached ones are skipped). I use it
of your unattached shm segments (attached ones are skipped). I use it
while debugging x11vnc (I use shm_clear -y to assume "yes" for each
while debugging x11vnc (I use shm_clear -y to assume "yes" for each
prompt). If x11vnc is regularly not cleaning up its shm segments,
prompt). If x11vnc is regularly not cleaning up its shm segments,
...
@@ -1683,7 +1742,7 @@ ied)
...
@@ -1683,7 +1742,7 @@ ied)
-fs 1.0 knocks it down to 2). If you are having much trouble with shm
-fs 1.0 knocks it down to 2). If you are having much trouble with shm
segments, consider disabling shm completely via the -noshm option.
segments, consider disabling shm completely via the -noshm option.
Performance will be somewhat degraded but when done over local machine
Performance will be somewhat degraded but when done over local machine
sockets
it
should
be
acceptable
(
see
an
[
1
07
]
earlier
question
sockets it should be acceptable (see an [1
12
]earlier question
discussing -noshm).
discussing -noshm).
Q-36: How can I make x11vnc use less system resources?
Q-36: How can I make x11vnc use less system resources?
...
@@ -1707,7 +1766,7 @@ ied)
...
@@ -1707,7 +1766,7 @@ ied)
the x11vnc -id option) can be streamed over a LAN or wireless at a
the x11vnc -id option) can be streamed over a LAN or wireless at a
reasonable frame rate.
reasonable frame rate.
Q
-
38
:
I
use
x11vnc
over
a
slow
link
with
high
latency
(
i
.
e
.
dialup
Q-38: I use x11vnc over a slow link with high latency (
e.g
. dialup
modem), is there anything I can do to speed things up?
modem), is there anything I can do to speed things up?
Some things you might want to experiment with (most of which will help
Some things you might want to experiment with (most of which will help
...
@@ -1731,7 +1790,7 @@ ied)
...
@@ -1731,7 +1790,7 @@ ied)
worth it, but could be of use in some situations.
worth it, but could be of use in some situations.
VNC viewer parameters:
VNC viewer parameters:
*
Use
a
[
1
08
]
TightVNC
enabled
viewer
!
* Use a [1
13
]TightVNC enabled viewer!
* Make sure the tight encoding is being used (look at vncviewer and
* Make sure the tight encoding is being used (look at vncviewer and
x11vnc outputs)
x11vnc outputs)
* Request 8 bits per pixel using -bgr233 (up to 4X speedup over
* Request 8 bits per pixel using -bgr233 (up to 4X speedup over
...
@@ -1779,12 +1838,12 @@ ied)
...
@@ -1779,12 +1838,12 @@ ied)
default
(
use
-
nomodtweak
to
get
the
old
behavior
).
This
was
done
default
(
use
-
nomodtweak
to
get
the
old
behavior
).
This
was
done
because
it
was
noticed
on
newer
XFree86
setups
even
on
bland
"us"
because
it
was
noticed
on
newer
XFree86
setups
even
on
bland
"us"
keyboards
like
"pc104 us"
XFree86
included
a
"ghost"
key
with
both
"<"
keyboards
like
"pc104 us"
XFree86
included
a
"ghost"
key
with
both
"<"
and ">" it. This key does not exist on the keyboard (see [1
09
]this FAQ
and
">"
it
.
This
key
does
not
exist
on
the
keyboard
(
see
[
1
14
]
this
FAQ
for
more
info
).
Without
-
modtweak
there
was
then
an
ambiguity
in
the
for
more
info
).
Without
-
modtweak
there
was
then
an
ambiguity
in
the
reverse
map
keysym
=>
keycode
,
making
it
so
the
"<"
symbol
could
not
reverse
map
keysym
=>
keycode
,
making
it
so
the
"<"
symbol
could
not
be
typed
.
be
typed
.
Also see the [11
0
]FAQ about the -xkb option for a more powerful method
Also
see
the
[
11
5
]
FAQ
about
the
-
xkb
option
for
a
more
powerful
method
of
modifier
tweaking
for
use
on
X
servers
with
the
XKEYBOARD
of
modifier
tweaking
for
use
on
X
servers
with
the
XKEYBOARD
extension
.
extension
.
...
@@ -1845,7 +1904,7 @@ ied)
...
@@ -1845,7 +1904,7 @@ ied)
the keysym comma when it comes in from a client (so when Shift is down
the keysym comma when it comes in from a client (so when Shift is down
the comma press will yield "<").
the comma press will yield "<").
See
also
the
[
11
1
]
FAQ
about
the
-
xkb
option
as
a
possible
workaround
See also the [11
6
]FAQ about the -xkb option as a possible workaround
using the XKEYBOARD extension. Note that of Jul/2004 in the
using the XKEYBOARD extension. Note that of Jul/2004 in the
libvncserver CVS the -modtweak option is now that default.
libvncserver CVS the -modtweak option is now that default.
...
@@ -1906,15 +1965,16 @@ ied)
...
@@ -1906,15 +1965,16 @@ ied)
be
obsolete
)
in
the
mapping
as
well
.
Both
of
these
keysyms
were
be
obsolete
)
in
the
mapping
as
well
.
Both
of
these
keysyms
were
bound
to
Mod5
and
x11vnc
was
unfortunately
choosing
Mode_switch
.
bound
to
Mod5
and
x11vnc
was
unfortunately
choosing
Mode_switch
.
From
the
x11vnc
-
xkb
-
dk
-
dk
output
it
was
noted
that
Mode_switch
From
the
x11vnc
-
xkb
-
dk
-
dk
output
it
was
noted
that
Mode_switch
was attached to keycode 93 while ISO_Level3_Shift was attached to
was
attached
to
keycode
93
(
no
physical
key
generates
this
keycode 113. The keycode skipping option was used to disable the
keycode
)
while
ISO_Level3_Shift
was
attached
to
keycode
113.
The
ghost key: -skip_keycodes 93
keycode
skipping
option
was
used
to
disable
the
ghost
key
:
* In implementing -xkb we noticed that some keys were still not
-
skip_keycodes
93
getting through, e.g. "~" and "^". This is not really an XKEYBOARD
*
In
implementing
-
xkb
we
noticed
that
some
characters
were
still
problem. What was happening was the VNC viewer was sending the
not
getting
through
,
e
.
g
.
"~"
and
"^"
.
This
is
not
really
an
keysyms asciitilde and asciicircum to x11vnc, but on the X server
XKEYBOARD
problem
.
What
was
happening
was
the
VNC
viewer
was
with the international keyboard those keysyms were not mapped to
sending
the
keysyms
asciitilde
and
asciicircum
to
x11vnc
,
but
on
any keys. So x11vnc had to skip them.
the
X
server
with
the
international
keyboard
those
keysyms
were
not
mapped
to
any
keys
.
So
x11vnc
had
to
skip
them
.
The
way
these
characters
are
typically
entered
on
international
The
way
these
characters
are
typically
entered
on
international
keyboards
is
by
"dead"
(
aka
"mute"
)
keys
.
E
.
g
.
to
enter
"~"
at
the
keyboards
is
by
"dead"
(
aka
"mute"
)
keys
.
E
.
g
.
to
enter
"~"
at
the
physical
display
the
keysym
dead_tilde
is
pressed
and
released
physical
display
the
keysym
dead_tilde
is
pressed
and
released
...
@@ -2048,7 +2108,7 @@ ied)
...
@@ -2048,7 +2108,7 @@ ied)
There
may
also
be
scaling
viewers
out
there
(
e
.
g
.
TightVNC
on
Windows
)
There
may
also
be
scaling
viewers
out
there
(
e
.
g
.
TightVNC
on
Windows
)
that
automatically
shrink
or
expand
the
remote
framebuffer
to
fit
the
that
automatically
shrink
or
expand
the
remote
framebuffer
to
fit
the
local display. Especially for hand-held devices. See also [11
2
]this
local
display
.
Especially
for
hand
-
held
devices
.
See
also
[
11
7
]
this
FAQ
FAQ
Q
-
47
:
Does
x11vnc
support
server
-
side
framebuffer
scaling
?
(
E
.
g
.
to
Q
-
47
:
Does
x11vnc
support
server
-
side
framebuffer
scaling
?
(
E
.
g
.
to
...
@@ -2061,16 +2121,14 @@ ied)
...
@@ -2061,16 +2121,14 @@ ied)
the
alternative
m
/
n
fraction
notation
(
e
.
g
.
-
scale
2
/
3
).
the
alternative
m
/
n
fraction
notation
(
e
.
g
.
-
scale
2
/
3
).
The
current
implementation
is
experimental
in
that
it
still
needs
to
The
current
implementation
is
experimental
in
that
it
still
needs
to
be optimized and there are some painting errors (evidently only with
be
optimized
.
Extra
resources
(
CPU
,
memory
I
/
O
,
and
memory
)
are
fraction > 1; which is probably the less interesting case). Extra
required
to
do
the
scaling
.
If
the
machine
is
slow
where
x11vnc
is
run
resources (CPU, memory I/O, and memory) are required to do the
with
scaling
enabled
,
the
interactive
response
can
be
unacceptable
.
scaling. If the machine is slow where x11vnc is run with scaling
OTOH
,
if
run
with
scaling
on
a
fast
machine
the
performance
enabled, the interactive response can be unacceptable. OTOH, if run
degradation
is
usually
not
a
big
issue
or
even
noticeable
.
with scaling on a fast machine the performance degradation is usually
not a big issue or even noticeable.
Also
,
if
you
just
want
a
quick
,
rough
"thumbnail"
of
the
display
you
can
append
":nb"
to
the
fraction
to
turn
on
"no blending"
mode
.
E
.
g
.:
If you just want a quick, rough "thumbnail" of the display you can
append ":nb" to the fraction to turn on "no blending" mode. E.g.:
"-scale 1/3:nb"
Fonts
will
be
difficult
to
read
,
but
the
larger
"-scale 1/3:nb"
Fonts
will
be
difficult
to
read
,
but
the
larger
features
will
be
recognizable
.
BTW
,
"no blending"
mode
is
forced
on
features
will
be
recognizable
.
BTW
,
"no blending"
mode
is
forced
on
when
scaling
8
bpp
PseudoColor
displays
(
because
blending
an
indexed
when
scaling
8
bpp
PseudoColor
displays
(
because
blending
an
indexed
...
@@ -2145,7 +2203,7 @@ ied)
...
@@ -2145,7 +2203,7 @@ ied)
Note
:
if
you
are
running
on
Solaris
8
or
earlier
you
can
easily
hit
up
Note
:
if
you
are
running
on
Solaris
8
or
earlier
you
can
easily
hit
up
against
the
maximum
of
6
shm
segments
per
process
(
for
Xsun
in
this
against
the
maximum
of
6
shm
segments
per
process
(
for
Xsun
in
this
case
)
from
running
multiple
x11vnc
processes
.
You
should
modify
case
)
from
running
multiple
x11vnc
processes
.
You
should
modify
/etc/system as mentioned in another [11
3
]FAQ to increase the limit. It
/
etc
/
system
as
mentioned
in
another
[
11
8
]
FAQ
to
increase
the
limit
.
It
is
probably
also
a
good
idea
to
run
with
the
-
onetile
option
in
this
is
probably
also
a
good
idea
to
run
with
the
-
onetile
option
in
this
case
(
to
limit
each
x11vnc
to
3
shm
segments
),
or
even
-
noshm
to
use
case
(
to
limit
each
x11vnc
to
3
shm
segments
),
or
even
-
noshm
to
use
no
shm
segments
.
no
shm
segments
.
...
@@ -2180,7 +2238,7 @@ ied)
...
@@ -2180,7 +2238,7 @@ ied)
If no one is sitting at the workstation and you just want to remotely
If no one is sitting at the workstation and you just want to remotely
switch the VC over to the one associated with your X session (so
switch the VC over to the one associated with your X session (so
x11vnc can poll it), one can use the switchto(1) command, e.g.
x11vnc can poll it), one can use the switchto(1) command, e.g.
switchto
7
for
VC
#
7.
"switchto 7"
for VC #7.
Q-52: Does the Clipboard/Selection get transferred between the
Q-52: Does the Clipboard/Selection get transferred between the
vncviewer and the X display?
vncviewer and the X display?
...
@@ -2233,101 +2291,106 @@ References
...
@@ -2233,101 +2291,106 @@ References
16.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
binaries
16.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
binaries
17.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
rx11vnc
17.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
rx11vnc
18.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
rx11vnc
.
pl
18.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
rx11vnc
.
pl
19. http://www.tightvnc.com/
19.
ftp
://
ftp
.
uu
.
net
/
graphics
/
jpeg
/
20. http://www.karlrunge.com/x11vnc/x11vnc_opts.html
20.
http
://
www
.
gzip
.
org
/
zlib
/
21. http://www.karlrunge.com/x11vnc/index.html#passwd
21.
http
://
www
.
sunfreeware
.
com
/
22. http://wwws.sun.com/sunray/index.html
22.
http
://
www
.
tightvnc
.
com
/
23. mailto:xvml@karlrunge.com
23.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
x11vnc_opts
.
html
24. http://www.karlrunge.com/x11vnc/index.html#FAQ-1
24.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
passwd
25. http://www.karlrunge.com/x11vnc/index.html#FAQ-2
25.
http
://
wwws
.
sun
.
com
/
sunray
/
index
.
html
26. http://www.karlrunge.com/x11vnc/index.html#FAQ-3
26.
mailto
:
xvml
@
karlrunge
.
com
27. http://www.karlrunge.com/x11vnc/index.html#FAQ-4
27.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
1
28. http://www.karlrunge.com/x11vnc/index.html#FAQ-5
28.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
2
29. http://www.karlrunge.com/x11vnc/index.html#FAQ-6
29.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
3
30. http://www.karlrunge.com/x11vnc/index.html#FAQ-7
30.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
4
31. http://www.karlrunge.com/x11vnc/index.html#FAQ-8
31.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
5
32. http://www.karlrunge.com/x11vnc/index.html#FAQ-9
32.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
6
33. http://www.karlrunge.com/x11vnc/index.html#FAQ-10
33.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
7
34. http://www.karlrunge.com/x11vnc/index.html#FAQ-11
34.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
8
35. http://www.karlrunge.com/x11vnc/index.html#FAQ-12
35.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
9
36. http://www.karlrunge.com/x11vnc/index.html#FAQ-13
36.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
10
37. http://www.karlrunge.com/x11vnc/index.html#FAQ-14
37.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
11
38. http://www.karlrunge.com/x11vnc/index.html#FAQ-15
38.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
12
39. http://www.karlrunge.com/x11vnc/index.html#FAQ-16
39.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
13
40. http://www.karlrunge.com/x11vnc/index.html#FAQ-17
40.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
14
41. http://www.karlrunge.com/x11vnc/index.html#FAQ-18
41.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
15
42. http://www.karlrunge.com/x11vnc/index.html#FAQ-19
42.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
16
43. http://www.karlrunge.com/x11vnc/index.html#FAQ-20
43.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
17
44. http://www.karlrunge.com/x11vnc/index.html#FAQ-21
44.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
18
45. http://www.karlrunge.com/x11vnc/index.html#FAQ-22
45.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
19
46. http://www.karlrunge.com/x11vnc/index.html#FAQ-23
46.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
20
47. http://www.karlrunge.com/x11vnc/index.html#FAQ-24
47.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
21
48. http://www.karlrunge.com/x11vnc/index.html#FAQ-25
48.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
22
49. http://www.karlrunge.com/x11vnc/index.html#FAQ-26
49.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
23
50. http://www.karlrunge.com/x11vnc/index.html#FAQ-27
50.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
24
51. http://www.karlrunge.com/x11vnc/index.html#FAQ-28
51.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
25
52. http://www.karlrunge.com/x11vnc/index.html#FAQ-29
52.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
26
53. http://www.karlrunge.com/x11vnc/index.html#FAQ-30
53.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
27
54. http://www.karlrunge.com/x11vnc/index.html#FAQ-31
54.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
28
55. http://www.karlrunge.com/x11vnc/index.html#FAQ-32
55.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
29
56. http://www.karlrunge.com/x11vnc/index.html#FAQ-33
56.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
30
57. http://www.karlrunge.com/x11vnc/index.html#FAQ-34
57.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
31
58. http://www.karlrunge.com/x11vnc/index.html#FAQ-35
58.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
32
59. http://www.karlrunge.com/x11vnc/index.html#FAQ-36
59.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
33
60. http://www.karlrunge.com/x11vnc/index.html#FAQ-37
60.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
34
61. http://www.karlrunge.com/x11vnc/index.html#FAQ-38
61.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
35
62. http://www.karlrunge.com/x11vnc/index.html#FAQ-39
62.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
36
63. http://www.karlrunge.com/x11vnc/index.html#FAQ-40
63.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
37
64. http://www.karlrunge.com/x11vnc/index.html#FAQ-41
64.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
38
65. http://www.karlrunge.com/x11vnc/index.html#FAQ-42
65.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
39
66. http://www.karlrunge.com/x11vnc/index.html#FAQ-43
66.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
40
67. http://www.karlrunge.com/x11vnc/index.html#FAQ-44
67.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
41
68. http://www.karlrunge.com/x11vnc/index.html#FAQ-45
68.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
42
69. http://www.karlrunge.com/x11vnc/index.html#FAQ-46
69.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
43
70. http://www.karlrunge.com/x11vnc/index.html#FAQ-47
70.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
44
71. http://www.karlrunge.com/x11vnc/index.html#FAQ-48
71.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
45
72. http://www.karlrunge.com/x11vnc/index.html#FAQ-49
72.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
46
73. http://www.karlrunge.com/x11vnc/index.html#FAQ-50
73.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
47
74. http://www.karlrunge.com/x11vnc/index.html#FAQ-51
74.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
48
75. http://www.karlrunge.com/x11vnc/index.html#FAQ-52
75.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
49
76. http://www.karlrunge.com/x11vnc/index.html#FAQ-53
76.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
50
77. http://www.karlrunge.com/x11vnc/index.html#FAQ-54
77.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
51
78. http://www.karlrunge.com/x11vnc/index.html#building
78.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
52
79. http://www.karlrunge.com/x11vnc/index.html#buildfaq
79.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
53
80. http://packages.debian.org/x11vnc
80.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
FAQ
-
54
81. http://www.linuxpackages.net/search_view.php?by=name&name=x11vnc
81.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
building
82. http://dag.wieers.com/packages/x11vnc/
82.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
buildfaq
83. http://www.bell-labs.com/project/wwexptools/packages.html
83.
http
://
packages
.
debian
.
org
/
x11vnc
84. http://www.karlrunge.com/x11vnc/x11vnc_opts.html
84.
http
://
www
.
linuxpackages
.
net
/
search_view
.
php
?
by
=
name
&
name
=
x11vnc
85. http://www.karlrunge.com/x11vnc/index.html#passwd
85.
http
://
dag
.
wieers
.
com
/
packages
/
x11vnc
/
86. http://fredrik.hubbe.net/x2vnc.html
86.
http
://
www
.
bell
-
labs
.
com
/
project
/
wwexptools
/
packages
.
html
87. http://www.hubbe.net/~hubbe/win2vnc.html
87.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
x11vnc_opts
.
html
88. http://www.deboer.gmxhome.de/
88.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
passwd
89. http://sourceforge.net/projects/win2vnc/
89.
http
://
fredrik
.
hubbe
.
net
/
x2vnc
.
html
90. http://fredrik.hubbe.net/x2vnc.html
90.
http
://
www
.
hubbe
.
net
/~
hubbe
/
win2vnc
.
html
91. http://freshmeat.net/projects/x2x/
91.
http
://
www
.
deboer
.
gmxhome
.
de
/
92. http://ftp.digital.com/pub/Digital/SRC/x2x/
92.
http
://
sourceforge
.
net
/
projects
/
win2vnc
/
93. http://zapek.com/software/zvnc/
93.
http
://
fredrik
.
hubbe
.
net
/
x2vnc
.
html
94. http://www.karlrunge.com/x11vnc/index.html#inetd
94.
http
://
freshmeat
.
net
/
projects
/
x2x
/
95. ftp://ftp.x.org/
95.
http
://
ftp
.
digital
.
com
/
pub
/
Digital
/
SRC
/
x2x
/
96. http://www.karlrunge.com/x11vnc/dtVncPopup
96.
http
://
zapek
.
com
/
software
/
zvnc
/
97. http://www.karlrunge.com/x11vnc/index.html#passwdfile
97.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
8
bpp
98. http://www.karlrunge.com/x11vnc/index.html#tunnelling
98.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
overlays
99. http://www.karlrunge.com/x11vnc/index.html#tunnelling
99.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
inetd
100. http://www.karlrunge.com/x11vnc/index.html#tunnelling
100.
ftp
://
ftp
.
x
.
org
/
101. http://www.karlrunge.com/x11vnc/index.html#tunnelling
101.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
dtVncPopup
102. http://www.karlrunge.com/x11vnc/blockdpy.c
102.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
passwdfile
103. http://www.karlrunge.com/x11vnc/x11vnc.c
103.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
tunnelling
104. http://www.karlrunge.com/x11vnc/x11vnc_loop
104.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
tunnelling
105. http://www.tightvnc.com/
105.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
tunnelling
106. http://www.karlrunge.com/x11vnc/shm_clear
106.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
tunnelling
107. http://www.karlrunge.com/x11vnc/index.html#noshm
107.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
blockdpy
.
c
108. http://www.tightvnc.com/
108.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
x11vnc
.
c
109. http://www.karlrunge.com/x11vnc/index.html#greaterless
109.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
x11vnc_loop
110. http://www.karlrunge.com/x11vnc/index.html#xkbmodtweak
110.
http
://
www
.
tightvnc
.
com
/
111. http://www.karlrunge.com/x11vnc/index.html#xkbmodtweak
111.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
shm_clear
112. http://www.karlrunge.com/x11vnc/index.html#scaling
112.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
noshm
113. http://www.karlrunge.com/x11vnc/index.html#solshm
113.
http
://
www
.
tightvnc
.
com
/
114.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
greaterless
115.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
xkbmodtweak
116.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
xkbmodtweak
117.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
scaling
118.
http
://
www
.
karlrunge
.
com
/
x11vnc
/
index
.
html
#
solshm
=======================================================================
=======================================================================
...
@@ -2340,7 +2403,8 @@ x11vnc: a VNC server for real X displays
...
@@ -2340,7 +2403,8 @@ 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
-
help
%
x11vnc
-
help
x11vnc: allow VNC connections to real X11 displays. 0.6.2 lastmod: 2004-07-31
x11vnc
:
allow
VNC
connections
to
real
X11
displays
.
0.6.3
pre
lastmod
:
2004
-
08
-
1
5
Typical
usage
is
:
Typical
usage
is
:
...
@@ -2386,12 +2450,39 @@ Options:
...
@@ -2386,12 +2450,39 @@ Options:
setting the XAUTHORITY environment varirable to "
file
"
setting the XAUTHORITY environment varirable to "
file
"
before startup. See Xsecurity(7), xauth(1) man pages.
before startup. See Xsecurity(7), xauth(1) man pages.
-id windowid Show the window corresponding to
<windowid>
not the
-id windowid Show the window corresponding to
"
windowid
"
not the
entire display. Warning: bugs! new toplevels missed!...
entire display. Warning: bugs! new toplevels missed!...
-sid windowid As -id, but instead of using the window directly it
shifts a root view to it: shows saveUnders menus, etc,
although they will be clipped if they extend beyond
the window.
-flashcmap In 8bpp indexed color, let the installed colormap flash
-flashcmap In 8bpp indexed color, let the installed colormap flash
as the pointer moves from window to window (slow).
as the pointer moves from window to window (slow).
-notruecolor Force 8bpp indexed color even if it looks like TrueColor
-notruecolor For 8bpp displays, force indexed color (i.e. a colormap)
.
even if it looks like 8bpp TrueColor. (rare problem)
-overlay Handle multiple depth visuals on one screen, e.g. 8+24
and 24+8 overlay visuals (the 32 bits per pixel are
packed with 8 for PseudoColor and 24 for TrueColor).
Currently -overlay only works on Solaris (it uses
XReadScreen(3X11)). There are still some problems with
surrounding-region painting for popup menus (but not
for the popup menu itself); a workaround is to disable
SaveUnders (pass -su to Xsun). Amusingly, if -overlay
is used with -mouse, the mouse cursor shape is correct.
Use -overlay as a workaround for situations like these:
Some legacy applications require the default visual
be 8bpp (8+24), or they will use 8bpp PseudoColor even
when the default visual is depth 24 TrueColor (24+8).
In these cases colors in some windows will be messed
up in x11vnc unless -overlay is used.
Under -overlay, performance will be somewhat degraded
due to the extra image transformations required.
For optimal performance do not use -overlay, but rather
configure the X server so that the default visual is
depth 24 TrueColor and have all apps use that visual.
-visual n Experimental option: probably does not do what you
-visual n Experimental option: probably does not do what you
think. It simply *forces* the visual used for the
think. It simply *forces* the visual used for the
framebuffer; this may be a bad thing... It is useful for
framebuffer; this may be a bad thing... It is useful for
...
@@ -2406,10 +2497,10 @@ Options:
...
@@ -2406,10 +2497,10 @@ Options:
and response may be slower. If "
fraction
" contains
and response may be slower. If "
fraction
" contains
a decimal point "
.
" it is taken as a floating point
a decimal point "
.
" it is taken as a floating point
number, alternatively the notation "
m
/
n
" may be used
number, alternatively the notation "
m
/
n
" may be used
to denote fractions, e.g. -scale 2/3.
to denote fractions
exactly
, e.g. -scale 2/3.
Scaling Options: can be added after
fraction via ":",
Scaling Options: can be added after
"
fraction
" via
to supply multiple ":" options use commas.
"
:
",
to supply multiple "
:
" options use commas.
If you just want a quick, rough scaling without
If you just want a quick, rough scaling without
blending, append "
:
nb
" to "
fraction
" (e.g. -scale
blending, append "
:
nb
" to "
fraction
" (e.g. -scale
1/3:nb). For compatibility with vncviewers the scaled
1/3:nb). For compatibility with vncviewers the scaled
...
@@ -2426,9 +2517,9 @@ Options:
...
@@ -2426,9 +2517,9 @@ Options:
-forever Keep listening for more connections rather than exiting
-forever Keep listening for more connections rather than exiting
as soon as the first client(s) disconnect. Same as -many
as soon as the first client(s) disconnect. Same as -many
-connect string For use with "
vncviewer
-
listen
" reverse connections.
-connect string For use with "
vncviewer
-
listen
" reverse connections.
If
string
has the form "host" or "host:port"
If
"
string
"
has the form "
host
" or "
host
:
port
"
the connection is made once at startup. Use commas
the connection is made once at startup. Use commas
for a list of host'
s
and
host
:
port
's. If
string
for a list of host's and host:port's. If
"
string
"
contains "
/
" it is instead interpreted as a file to
contains "
/
" it is instead interpreted as a file to
periodically check for new hosts. The first line is
periodically check for new hosts. The first line is
read and then the file is truncated.
read and then the file is truncated.
...
@@ -2514,8 +2605,8 @@ Options:
...
@@ -2514,8 +2605,8 @@ Options:
responses. All 3 of the popup keywords can be followed
responses. All 3 of the popup keywords can be followed
by +N+M to supply a position for the popup window.
by +N+M to supply a position for the popup window.
The default is to center the popup window.
The default is to center the popup window.
-gone string As -accept
string, except to run a user supplied command
-gone string As -accept
, except to run a user supplied command when
when
a client goes away (disconnects). Unlike -accept,
a client goes away (disconnects). Unlike -accept,
the command return code is not interpreted by x11vnc.
the command return code is not interpreted by x11vnc.
-noshm Do not use the MIT-SHM extension for the polling.
-noshm Do not use the MIT-SHM extension for the polling.
...
@@ -2529,8 +2620,9 @@ Options:
...
@@ -2529,8 +2620,9 @@ Options:
just use 1 shm tile for polling. Same as -old_copytile.
just use 1 shm tile for polling. Same as -old_copytile.
Limits shm segments used to 3.
Limits shm segments used to 3.
-blackout string Black out rectangles on the screen. string is a comma
-blackout string Black out rectangles on the screen. "
string
" is a
separated list of WxH+X+Y type geometries for each rect.
comma separated list of WxH+X+Y type geometries for
each rectangle.
-xinerama If your screen is composed of multiple monitors
-xinerama If your screen is composed of multiple monitors
glued together via XINERAMA, and that screen is
glued together via XINERAMA, and that screen is
non-rectangular this option will try to guess the areas
non-rectangular this option will try to guess the areas
...
...
x11vnc/x11vnc.1
View file @
d77d118d
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
.TH X11VNC "1" "August 2004" "x11vnc " "User Commands"
.TH X11VNC "1" "August 2004" "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.6.
2, lastmod: 2004-07-31
version: 0.6.
3pre, lastmod: 2004-08-15
.SH SYNOPSIS
.SH SYNOPSIS
.B x11vnc
.B x11vnc
[OPTION]...
[OPTION]...
...
@@ -69,7 +69,9 @@ entire display. Warning: bugs! new toplevels missed!...
...
@@ -69,7 +69,9 @@ entire display. Warning: bugs! new toplevels missed!...
\fB-sid\fR \fIwindowid\fR
\fB-sid\fR \fIwindowid\fR
.IP
.IP
As \fB-id,\fR but instead of using the window directly it
As \fB-id,\fR but instead of using the window directly it
shifts a root view to it: shows saveUnders menus, etc.
shifts a root view to it: shows saveUnders menus, etc,
although they will be clipped if they extend beyond
the window.
.PP
.PP
\fB-flashcmap\fR
\fB-flashcmap\fR
.IP
.IP
...
@@ -78,7 +80,34 @@ as the pointer moves from window to window (slow).
...
@@ -78,7 +80,34 @@ as the pointer moves from window to window (slow).
.PP
.PP
\fB-notruecolor\fR
\fB-notruecolor\fR
.IP
.IP
Force 8bpp indexed color even if it looks like TrueColor.
For 8bpp displays, force indexed color (i.e. a colormap)
even if it looks like 8bpp TrueColor. (rare problem)
.PP
\fB-overlay\fR
.IP
Handle multiple depth visuals on one screen, e.g. 8+24
and 24+8 overlay visuals (the 32 bits per pixel are
packed with 8 for PseudoColor and 24 for TrueColor).
.IP
Currently \fB-overlay\fR only works on Solaris (it uses
XReadScreen(3X11)). There are still some problems with
surrounding-region painting for popup menus (but not
for the popup menu itself); a workaround is to disable
SaveUnders (pass \fB-su\fR to Xsun). Amusingly, if \fB-overlay\fR
is used with \fB-mouse,\fR the mouse cursor shape is correct.
.IP
Use \fB-overlay\fR as a workaround for situations like these:
Some legacy applications require the default visual
be 8bpp (8+24), or they will use 8bpp PseudoColor even
when the default visual is depth 24 TrueColor (24+8).
In these cases colors in some windows will be messed
up in x11vnc unless \fB-overlay\fR is used.
.IP
Under \fB-overlay,\fR performance will be somewhat degraded
due to the extra image transformations required.
For optimal performance do not use \fB-overlay,\fR but rather
configure the X server so that the default visual is
depth 24 TrueColor and have all apps use that visual.
.PP
.PP
\fB-visual\fR \fIn\fR
\fB-visual\fR \fIn\fR
.IP
.IP
...
@@ -100,7 +129,7 @@ less than 1 shrink the fb. Note: image may not be sharp
...
@@ -100,7 +129,7 @@ less than 1 shrink the fb. Note: image may not be sharp
and response may be slower. If \fIfraction\fR contains
and response may be slower. If \fIfraction\fR contains
a decimal point "." it is taken as a floating point
a decimal point "." it is taken as a floating point
number, alternatively the notation "m/n" may be used
number, alternatively the notation "m/n" may be used
to denote fractions, e.g. \fB-scale\fR 2/3.
to denote fractions
exactly
, e.g. \fB-scale\fR 2/3.
.IP
.IP
Scaling Options: can be added after \fIfraction\fR via
Scaling Options: can be added after \fIfraction\fR via
":", to supply multiple ":" options use commas.
":", to supply multiple ":" options use commas.
...
...
x11vnc/x11vnc.c
View file @
d77d118d
...
@@ -79,6 +79,7 @@
...
@@ -79,6 +79,7 @@
* -flashcmap option to have colormap flashing as the pointer moves
* -flashcmap option to have colormap flashing as the pointer moves
* windows with private colormaps (slow). Displays with mixed depth 8 and
* windows with private colormaps (slow). Displays with mixed depth 8 and
* 24 visuals will incorrectly display windows using the non-default one.
* 24 visuals will incorrectly display windows using the non-default one.
* On Sun hardware we try to work around this with -overlay.
*
*
* Feature -id <windowid> can be picky: it can crash for things like the
* Feature -id <windowid> can be picky: it can crash for things like the
* window not sufficiently mapped into server memory, use of -mouse, etc.
* window not sufficiently mapped into server memory, use of -mouse, etc.
...
@@ -141,6 +142,11 @@
...
@@ -141,6 +142,11 @@
#include <arpa/inet.h>
#include <arpa/inet.h>
#endif
#endif
#if defined (__SVR4) && defined (__sun)
#define SOLARIS
#include <X11/extensions/transovl.h>
#endif
/*
/*
* Temporary kludge: to run with -xinerama define the following
* Temporary kludge: to run with -xinerama define the following
* macro (uncomment) and be sure to link with -lXinerama
* macro (uncomment) and be sure to link with -lXinerama
...
@@ -156,18 +162,19 @@
...
@@ -156,18 +162,19 @@
#endif
#endif
/* date +'lastmod: %Y-%m-%d' */
/* date +'lastmod: %Y-%m-%d' */
char
lastmod
[]
=
"0.6.3pre lastmod: 2004-08-
03
"
;
char
lastmod
[]
=
"0.6.3pre lastmod: 2004-08-
15
"
;
/* X display info */
/* X display info */
Display
*
dpy
=
0
;
Visual
*
visual
;
Display
*
dpy
=
0
;
/* the single display screen we connect to */
Window
window
,
rootwin
;
int
scr
;
int
scr
;
Window
window
,
rootwin
;
/* polled window, root window (usu. same) */
Visual
*
default_visual
;
/* the default visual (unless -visual) */
int
bpp
,
depth
;
int
bpp
,
depth
;
int
button_mask
=
0
;
int
dpy_x
,
dpy_y
;
int
off_x
,
off_y
;
int
indexed_colour
=
0
;
int
indexed_colour
=
0
;
int
dpy_x
,
dpy_y
;
/* size of display */
int
off_x
,
off_y
;
/* offsets for -sid */
int
button_mask
=
0
;
/* button state and info */
int
num_buttons
=
-
1
;
int
num_buttons
=
-
1
;
/* image structures */
/* image structures */
...
@@ -209,17 +216,19 @@ int ntiles, ntiles_x, ntiles_y;
...
@@ -209,17 +216,19 @@ int ntiles, ntiles_x, ntiles_y;
/* arrays that indicate changed or checked tiles. */
/* arrays that indicate changed or checked tiles. */
unsigned
char
*
tile_has_diff
,
*
tile_tried
;
unsigned
char
*
tile_has_diff
,
*
tile_tried
;
/* blacked-out region
things
*/
/* blacked-out region
(-blackout, -xinerama)
*/
typedef
struct
bout
{
typedef
struct
bout
{
int
x1
,
y1
,
x2
,
y2
;
int
x1
,
y1
,
x2
,
y2
;
}
blackout_t
;
}
blackout_t
;
#define BO_MAX 16
typedef
struct
tbout
{
typedef
struct
tbout
{
blackout_t
bo
[
16
];
/* hardwired max rectangles. */
blackout_t
bo
[
BO_MAX
];
/* hardwired max rectangles. */
int
cover
;
int
cover
;
int
count
;
int
count
;
}
tile_blackout_t
;
}
tile_blackout_t
;
blackout_t
blackr
[
100
];
/* hardwired max blackouts */
#define BLACKR_MAX 100
blackout_t
blackr
[
BLACKR_MAX
];
/* hardwired max blackouts */
int
blackouts
=
0
;
int
blackouts
=
0
;
tile_blackout_t
*
tile_blackout
;
tile_blackout_t
*
tile_blackout
;
...
@@ -245,6 +254,7 @@ int shut_down = 0;
...
@@ -245,6 +254,7 @@ int shut_down = 0;
char
vnc_connect_str
[
VNC_CONNECT_MAX
+
1
];
char
vnc_connect_str
[
VNC_CONNECT_MAX
+
1
];
Atom
vnc_connect_prop
=
None
;
Atom
vnc_connect_prop
=
None
;
/* function prototypes (see filename comment above) */
/* function prototypes (see filename comment above) */
int
all_clients_initialized
(
void
);
int
all_clients_initialized
(
void
);
...
@@ -378,9 +388,11 @@ int watch_primary = 1; /* more dicey, poll for changes in PRIMARY */
...
@@ -378,9 +388,11 @@ int watch_primary = 1; /* more dicey, poll for changes in PRIMARY */
int
sigpipe
=
1
;
/* 0=skip, 1=ignore, 2=exit */
int
sigpipe
=
1
;
/* 0=skip, 1=ignore, 2=exit */
/*
for -visual override
*/
/*
visual stuff for -visual override or -overlay
*/
VisualID
visual_id
=
(
VisualID
)
0
;
VisualID
visual_id
=
(
VisualID
)
0
;
int
visual_depth
=
0
;
int
visual_depth
=
0
;
int
overlay
=
0
;
int
overlay_mouse
=
0
;
/* tile heuristics: */
/* tile heuristics: */
double
fs_frac
=
0
.
75
;
/* threshold tile fraction to do fullscreen updates. */
double
fs_frac
=
0
.
75
;
/* threshold tile fraction to do fullscreen updates. */
...
@@ -394,6 +406,7 @@ int debug_keyboard = 0;
...
@@ -394,6 +406,7 @@ int debug_keyboard = 0;
int
quiet
=
0
;
int
quiet
=
0
;
/* info about command line opts */
int
got_rfbport
=
0
;
int
got_rfbport
=
0
;
int
got_alwaysshared
=
0
;
int
got_alwaysshared
=
0
;
int
got_nevershared
=
0
;
int
got_nevershared
=
0
;
...
@@ -454,6 +467,102 @@ int nfix(int i, int n) {
...
@@ -454,6 +467,102 @@ int nfix(int i, int n) {
return
i
;
return
i
;
}
}
/*
* Kludge to interpose image gets and limit to a subset rectangle of
* the rootwin. This is the -sid option trying to work around invisible
* saveUnders menu, etc, windows.
*/
int
rootshift
=
0
;
#define ADJUST_ROOTSHIFT \
if (rootshift && subwin) { \
d = rootwin; \
x += off_x; \
y += off_y; \
}
/* Wrappers for Image related X calls */
Status
XShmGetImage_wr
(
Display
*
disp
,
Drawable
d
,
XImage
*
image
,
int
x
,
int
y
,
unsigned
long
mask
)
{
ADJUST_ROOTSHIFT
/* The Solaris overlay stuff is all non-shm (using_shm = 0) */
return
XShmGetImage
(
disp
,
d
,
image
,
x
,
y
,
mask
);
}
XImage
*
XGetSubImage_wr
(
Display
*
disp
,
Drawable
d
,
int
x
,
int
y
,
unsigned
int
width
,
unsigned
int
height
,
unsigned
long
plane_mask
,
int
format
,
XImage
*
dest_image
,
int
dest_x
,
int
dest_y
)
{
ADJUST_ROOTSHIFT
#ifdef SOLARIS
if
(
overlay
&&
dest_x
==
0
&&
dest_y
==
0
)
{
size_t
size
=
dest_image
->
height
*
dest_image
->
bytes_per_line
;
XImage
*
xi
=
XReadScreen
(
disp
,
d
,
x
,
y
,
width
,
height
,
(
Bool
)
overlay_mouse
);
/*
* There is extra overhead from memcpy and free...
* this is not like the real XGetSubImage(). We hope
* this significant overhead is still small compared to
* the time to retrieve the fb data.
*/
memcpy
(
dest_image
->
data
,
xi
->
data
,
size
);
XDestroyImage
(
xi
);
return
(
dest_image
);
}
#endif
return
XGetSubImage
(
disp
,
d
,
x
,
y
,
width
,
height
,
plane_mask
,
format
,
dest_image
,
dest_x
,
dest_y
);
}
XImage
*
XGetImage_wr
(
Display
*
disp
,
Drawable
d
,
int
x
,
int
y
,
unsigned
int
width
,
unsigned
int
height
,
unsigned
long
plane_mask
,
int
format
)
{
ADJUST_ROOTSHIFT
#ifdef SOLARIS
if
(
overlay
)
{
return
XReadScreen
(
disp
,
d
,
x
,
y
,
width
,
height
,
(
Bool
)
overlay_mouse
);
}
#endif
return
XGetImage
(
disp
,
d
,
x
,
y
,
width
,
height
,
plane_mask
,
format
);
}
XImage
*
XCreateImage_wr
(
Display
*
disp
,
Visual
*
visual
,
unsigned
int
depth
,
int
format
,
int
offset
,
char
*
data
,
unsigned
int
width
,
unsigned
int
height
,
int
bitmap_pad
,
int
bytes_per_line
)
{
/*
* This is a kludge to get a created XImage to exactly match what
* XReadScreen returns: we noticed the rgb masks are different from
* XCreateImage with the high color visual (red mask <-> blue mask).
* Note we read from the root window(!) then free the data.
*/
#ifdef SOLARIS
if
(
overlay
)
{
XImage
*
xi
;
xi
=
XReadScreen
(
disp
,
window
,
0
,
0
,
width
,
height
,
False
);
if
(
xi
==
NULL
)
{
return
xi
;
}
if
(
xi
->
data
!=
NULL
)
{
free
(
xi
->
data
);
}
xi
->
data
=
data
;
return
xi
;
}
#endif
return
XCreateImage
(
disp
,
visual
,
depth
,
format
,
offset
,
data
,
width
,
height
,
bitmap_pad
,
bytes_per_line
);
}
/* -- cleanup.c -- */
/* -- cleanup.c -- */
/*
/*
...
@@ -4329,7 +4438,7 @@ static int tree_descend_cursor(void) {
...
@@ -4329,7 +4438,7 @@ static int tree_descend_cursor(void) {
/*
/*
* This is for mouse patch drawing under -xinerama or -blackout
* This is for mouse patch drawing under -xinerama or -blackout
*/
*/
static
void
blackout_nearby_tiles
(
x
,
y
,
dt
)
{
static
void
blackout_nearby_tiles
(
int
x
,
int
y
,
int
dt
)
{
int
sx
,
sy
,
n
,
b
;
int
sx
,
sy
,
n
,
b
;
int
tx
=
x
/
tile_x
;
int
tx
=
x
/
tile_x
;
int
ty
=
y
/
tile_y
;
int
ty
=
y
/
tile_y
;
...
@@ -4676,7 +4785,7 @@ void set_colormap(void) {
...
@@ -4676,7 +4785,7 @@ void set_colormap(void) {
cmap
=
DefaultColormap
(
dpy
,
scr
);
cmap
=
DefaultColormap
(
dpy
,
scr
);
ncells
=
CellsOfScreen
(
ScreenOfDisplay
(
dpy
,
scr
));
ncells
=
CellsOfScreen
(
ScreenOfDisplay
(
dpy
,
scr
));
vis
=
visual
;
vis
=
default_
visual
;
if
(
subwin
)
{
if
(
subwin
)
{
XWindowAttributes
attr
;
XWindowAttributes
attr
;
...
@@ -4727,7 +4836,7 @@ void set_colormap(void) {
...
@@ -4727,7 +4836,7 @@ void set_colormap(void) {
/*
/*
* Kludge to make 8bpp TrueColor & DirectColor be like
* Kludge to make 8bpp TrueColor & DirectColor be like
* the StaticColor map. The ncells = 8 is "8 per subfield"
* the StaticColor map. The ncells = 8 is "8 per subfield"
* mentioned in xdpyinfo. Looks OK...
likely
fortuitously.
* mentioned in xdpyinfo. Looks OK...
perhaps
fortuitously.
*/
*/
if
(
ncells
==
8
)
{
if
(
ncells
==
8
)
{
ncells
=
NCOLOR
;
ncells
=
NCOLOR
;
...
@@ -4768,25 +4877,31 @@ void set_colormap(void) {
...
@@ -4768,25 +4877,31 @@ void set_colormap(void) {
/*
/*
* Experimental mode to force the visual of the window instead of querying
* Experimental mode to force the visual of the window instead of querying
* it. Currently just used for testing or overriding some rare cases.
* it. Used for testing, overriding some rare cases (win2vnc), and for
* Input string can be a decimal or 0x hex or something like TrueColor
* -overlay . Input string can be a decimal or 0x hex or something like
* or TrueColor:24 to force a depth as well.
* TrueColor or TrueColor:24 to force a depth as well.
*
* visual_id and possibly visual_depth are set.
*/
*/
void
set_visual
(
char
*
vstring
)
{
void
set_visual
(
char
*
str
)
{
int
vis
,
defdepth
=
DefaultDepth
(
dpy
,
scr
);
int
vis
,
vdepth
,
defdepth
=
DefaultDepth
(
dpy
,
scr
);
XVisualInfo
vinfo
;
XVisualInfo
vinfo
;
char
*
p
;
char
*
p
,
*
vstring
=
strdup
(
str
)
;
if
(
!
quiet
)
{
if
(
!
quiet
)
{
fprintf
(
stderr
,
"set_visual: %s
\n
"
,
vstring
);
fprintf
(
stderr
,
"set_visual: %s
\n
"
,
vstring
);
}
}
/* set visual depth */
if
((
p
=
strchr
(
vstring
,
':'
))
!=
NULL
)
{
if
((
p
=
strchr
(
vstring
,
':'
))
!=
NULL
)
{
visual_depth
=
atoi
(
p
+
1
);
visual_depth
=
atoi
(
p
+
1
);
*
p
=
'\0'
;
*
p
=
'\0'
;
vdepth
=
visual_depth
;
}
else
{
}
else
{
v
isual_depth
=
defdepth
;
v
depth
=
defdepth
;
}
}
/* set visual id number */
if
(
strcmp
(
vstring
,
"StaticGray"
)
==
0
)
{
if
(
strcmp
(
vstring
,
"StaticGray"
)
==
0
)
{
vis
=
StaticGray
;
vis
=
StaticGray
;
}
else
if
(
strcmp
(
vstring
,
"GrayScale"
)
==
0
)
{
}
else
if
(
strcmp
(
vstring
,
"GrayScale"
)
==
0
)
{
...
@@ -4810,8 +4925,10 @@ void set_visual(char *vstring) {
...
@@ -4810,8 +4925,10 @@ void set_visual(char *vstring) {
exit
(
1
);
exit
(
1
);
}
}
visual_id
=
(
VisualID
)
v_in
;
visual_id
=
(
VisualID
)
v_in
;
free
(
vstring
);
return
;
return
;
}
}
if
(
XMatchVisualInfo
(
dpy
,
scr
,
visual_depth
,
vis
,
&
vinfo
))
{
if
(
XMatchVisualInfo
(
dpy
,
scr
,
visual_depth
,
vis
,
&
vinfo
))
{
;
;
}
else
if
(
XMatchVisualInfo
(
dpy
,
scr
,
defdepth
,
vis
,
&
vinfo
))
{
}
else
if
(
XMatchVisualInfo
(
dpy
,
scr
,
defdepth
,
vis
,
&
vinfo
))
{
...
@@ -4820,6 +4937,9 @@ void set_visual(char *vstring) {
...
@@ -4820,6 +4937,9 @@ void set_visual(char *vstring) {
fprintf
(
stderr
,
"could not find visual: %s
\n
"
,
vstring
);
fprintf
(
stderr
,
"could not find visual: %s
\n
"
,
vstring
);
exit
(
1
);
exit
(
1
);
}
}
free
(
vstring
);
/* set numerical visual id. */
visual_id
=
vinfo
.
visualid
;
visual_id
=
vinfo
.
visualid
;
}
}
...
@@ -4837,7 +4957,7 @@ void nofb_hook(rfbClientPtr cl) {
...
@@ -4837,7 +4957,7 @@ void nofb_hook(rfbClientPtr cl) {
return
;
return
;
}
}
rfbLog
(
"framebuffer requested in -nofb mode by client %s
\n
"
,
cl
->
host
);
rfbLog
(
"framebuffer requested in -nofb mode by client %s
\n
"
,
cl
->
host
);
fb
=
XGetImage
(
dpy
,
window
,
0
,
0
,
dpy_x
,
dpy_y
,
AllPlanes
,
ZPixmap
);
fb
=
XGetImage
_wr
(
dpy
,
window
,
0
,
0
,
dpy_x
,
dpy_y
,
AllPlanes
,
ZPixmap
);
main_fb
=
fb
->
data
;
main_fb
=
fb
->
data
;
rfb_fb
=
main_fb
;
rfb_fb
=
main_fb
;
screen
->
frameBuffer
=
rfb_fb
;
screen
->
frameBuffer
=
rfb_fb
;
...
@@ -5147,7 +5267,7 @@ void initialize_blackout (char *list) {
...
@@ -5147,7 +5267,7 @@ void initialize_blackout (char *list) {
blackr
[
blackouts
].
x2
=
X
;
blackr
[
blackouts
].
x2
=
X
;
blackr
[
blackouts
].
y2
=
Y
;
blackr
[
blackouts
].
y2
=
Y
;
blackouts
++
;
blackouts
++
;
if
(
blackouts
>=
100
)
{
if
(
blackouts
>=
BLACKR_MAX
)
{
rfbLog
(
"too many blackouts: %d
\n
"
,
blackouts
);
rfbLog
(
"too many blackouts: %d
\n
"
,
blackouts
);
break
;
break
;
}
}
...
@@ -5209,8 +5329,8 @@ void blackout_tiles(void) {
...
@@ -5209,8 +5329,8 @@ void blackout_tiles(void) {
/* union of blackouts */
/* union of blackouts */
for
(
b
=
0
;
b
<
blackouts
;
b
++
)
{
for
(
b
=
0
;
b
<
blackouts
;
b
++
)
{
sraRegionPtr
tmp_reg
=
(
sraRegionPtr
)
sraRegionPtr
tmp_reg
=
(
sraRegionPtr
)
sraRgnCreateRect
(
blackr
[
b
].
x1
,
blackr
[
b
].
y1
,
sraRgnCreateRect
(
blackr
[
b
].
x1
,
blackr
[
b
].
x2
,
blackr
[
b
].
y2
);
blackr
[
b
].
y1
,
blackr
[
b
].
x2
,
blackr
[
b
].
y2
);
sraRgnOr
(
black_reg
,
tmp_reg
);
sraRgnOr
(
black_reg
,
tmp_reg
);
sraRgnDestroy
(
tmp_reg
);
sraRgnDestroy
(
tmp_reg
);
...
@@ -5260,7 +5380,7 @@ void blackout_tiles(void) {
...
@@ -5260,7 +5380,7 @@ void blackout_tiles(void) {
tile_blackout
[
n
].
cover
=
1
;
tile_blackout
[
n
].
cover
=
1
;
}
}
if
(
++
cnt
>=
10
)
{
if
(
++
cnt
>=
BO_MAX
)
{
rfbLog
(
"too many blackout rectangles "
rfbLog
(
"too many blackout rectangles "
"for tile %d=%d,%d.
\n
"
,
n
,
tx
,
ty
);
"for tile %d=%d,%d.
\n
"
,
n
,
tx
,
ty
);
break
;
break
;
...
@@ -5376,7 +5496,7 @@ void initialize_xinerama (void) {
...
@@ -5376,7 +5496,7 @@ void initialize_xinerama (void) {
/*
/*
* Fill the framebuffer with zero for the prescribed rectangle
* Fill the framebuffer with zero for the prescribed rectangle
*/
*/
void
zero_fb
(
x1
,
y1
,
x2
,
y2
)
{
void
zero_fb
(
int
x1
,
int
y1
,
int
x2
,
int
y2
)
{
int
pixelsize
=
bpp
>>
3
;
int
pixelsize
=
bpp
>>
3
;
int
line
,
fill
=
0
;
int
line
,
fill
=
0
;
char
*
dst
;
char
*
dst
;
...
@@ -5485,7 +5605,7 @@ static void set_fs_factor(int max) {
...
@@ -5485,7 +5605,7 @@ static void set_fs_factor(int max) {
}
}
/*
/*
* set up an XShm image
* set up an XShm image
, or if not using shm just create the XImage.
*/
*/
static
int
shm_create
(
XShmSegmentInfo
*
shm
,
XImage
**
ximg_ptr
,
int
w
,
int
h
,
static
int
shm_create
(
XShmSegmentInfo
*
shm
,
XImage
**
ximg_ptr
,
int
w
,
int
h
,
char
*
name
)
{
char
*
name
)
{
...
@@ -5504,8 +5624,8 @@ static int shm_create(XShmSegmentInfo *shm, XImage **ximg_ptr, int w, int h,
...
@@ -5504,8 +5624,8 @@ static int shm_create(XShmSegmentInfo *shm, XImage **ximg_ptr, int w, int h,
if
(
!
using_shm
)
{
if
(
!
using_shm
)
{
/* we only need the XImage created */
/* we only need the XImage created */
xim
=
XCreateImage
(
dpy
,
visual
,
depth
,
ZPixmap
,
0
,
NULL
,
w
,
h
,
xim
=
XCreateImage
_wr
(
dpy
,
default_visual
,
depth
,
ZPixmap
,
BitmapPad
(
dpy
),
0
);
0
,
NULL
,
w
,
h
,
BitmapPad
(
dpy
),
0
);
X_UNLOCK
;
X_UNLOCK
;
...
@@ -5541,7 +5661,8 @@ static int shm_create(XShmSegmentInfo *shm, XImage **ximg_ptr, int w, int h,
...
@@ -5541,7 +5661,8 @@ static int shm_create(XShmSegmentInfo *shm, XImage **ximg_ptr, int w, int h,
return
1
;
return
1
;
}
}
xim
=
XShmCreateImage
(
dpy
,
visual
,
depth
,
ZPixmap
,
NULL
,
shm
,
w
,
h
);
xim
=
XShmCreateImage
(
dpy
,
default_visual
,
depth
,
ZPixmap
,
NULL
,
shm
,
w
,
h
);
if
(
xim
==
NULL
)
{
if
(
xim
==
NULL
)
{
rfbErr
(
"XShmCreateImage(%s) failed.
\n
"
,
name
);
rfbErr
(
"XShmCreateImage(%s) failed.
\n
"
,
name
);
...
@@ -6393,13 +6514,13 @@ static void copy_tiles(int tx, int ty, int nt) {
...
@@ -6393,13 +6514,13 @@ static void copy_tiles(int tx, int ty, int nt) {
/* read in the whole tile run at once: */
/* read in the whole tile run at once: */
if
(
using_shm
&&
size_x
==
tile_x
*
nt
&&
size_y
==
tile_y
)
{
if
(
using_shm
&&
size_x
==
tile_x
*
nt
&&
size_y
==
tile_y
)
{
/* general case: */
/* general case: */
XShmGetImage
(
dpy
,
window
,
tile_row
[
nt
],
x
,
y
,
AllPlanes
);
XShmGetImage
_wr
(
dpy
,
window
,
tile_row
[
nt
],
x
,
y
,
AllPlanes
);
}
else
{
}
else
{
/*
/*
* No shm or near bottom/rhs edge case:
* No shm or near bottom/rhs edge case:
* (but only if tile size does not divide screen size)
* (but only if tile size does not divide screen size)
*/
*/
XGetSubImage
(
dpy
,
window
,
x
,
y
,
size_x
,
size_y
,
AllPlanes
,
XGetSubImage
_wr
(
dpy
,
window
,
x
,
y
,
size_x
,
size_y
,
AllPlanes
,
ZPixmap
,
tile_row
[
nt
],
0
,
0
);
ZPixmap
,
tile_row
[
nt
],
0
,
0
);
}
}
X_UNLOCK
;
X_UNLOCK
;
...
@@ -6991,9 +7112,10 @@ void copy_screen(void) {
...
@@ -6991,9 +7112,10 @@ void copy_screen(void) {
/* screen may be too big for 1 shm area, so broken into fs_factor */
/* screen may be too big for 1 shm area, so broken into fs_factor */
for
(
i
=
0
;
i
<
fs_factor
;
i
++
)
{
for
(
i
=
0
;
i
<
fs_factor
;
i
++
)
{
if
(
using_shm
)
{
if
(
using_shm
)
{
XShmGetImage
(
dpy
,
window
,
fullscreen
,
0
,
y
,
AllPlanes
);
XShmGetImage_wr
(
dpy
,
window
,
fullscreen
,
0
,
y
,
AllPlanes
);
}
else
{
}
else
{
XGetSubImage
(
dpy
,
window
,
0
,
y
,
fullscreen
->
width
,
XGetSubImage
_wr
(
dpy
,
window
,
0
,
y
,
fullscreen
->
width
,
fullscreen
->
height
,
AllPlanes
,
ZPixmap
,
fullscreen
,
fullscreen
->
height
,
AllPlanes
,
ZPixmap
,
fullscreen
,
0
,
0
);
0
,
0
);
}
}
...
@@ -7254,9 +7376,9 @@ static int scan_display(int ystart, int rescan) {
...
@@ -7254,9 +7376,9 @@ static int scan_display(int ystart, int rescan) {
/* grab the horizontal scanline from the display: */
/* grab the horizontal scanline from the display: */
X_LOCK
;
X_LOCK
;
if
(
using_shm
)
{
if
(
using_shm
)
{
XShmGetImage
(
dpy
,
window
,
scanline
,
0
,
y
,
AllPlanes
);
XShmGetImage
_wr
(
dpy
,
window
,
scanline
,
0
,
y
,
AllPlanes
);
}
else
{
}
else
{
XGetSubImage
(
dpy
,
window
,
0
,
y
,
scanline
->
width
,
XGetSubImage
_wr
(
dpy
,
window
,
0
,
y
,
scanline
->
width
,
scanline
->
height
,
AllPlanes
,
ZPixmap
,
scanline
,
scanline
->
height
,
AllPlanes
,
ZPixmap
,
scanline
,
0
,
0
);
0
,
0
);
}
}
...
@@ -7816,9 +7938,37 @@ static void print_help(void) {
...
@@ -7816,9 +7938,37 @@ static void print_help(void) {
"
\n
"
"
\n
"
"-id windowid Show the window corresponding to
\"
windowid
\"
not the
\n
"
"-id windowid Show the window corresponding to
\"
windowid
\"
not the
\n
"
" entire display. Warning: bugs! new toplevels missed!...
\n
"
" entire display. Warning: bugs! new toplevels missed!...
\n
"
"-sid windowid As -id, but instead of using the window directly it
\n
"
" shifts a root view to it: shows saveUnders menus, etc,
\n
"
" although they will be clipped if they extend beyond
\n
"
" the window.
\n
"
"-flashcmap In 8bpp indexed color, let the installed colormap flash
\n
"
"-flashcmap In 8bpp indexed color, let the installed colormap flash
\n
"
" as the pointer moves from window to window (slow).
\n
"
" as the pointer moves from window to window (slow).
\n
"
"-notruecolor Force 8bpp indexed color even if it looks like TrueColor.
\n
"
"-notruecolor For 8bpp displays, force indexed color (i.e. a colormap)
\n
"
" even if it looks like 8bpp TrueColor. (rare problem)
\n
"
"-overlay Handle multiple depth visuals on one screen, e.g. 8+24
\n
"
" and 24+8 overlay visuals (the 32 bits per pixel are
\n
"
" packed with 8 for PseudoColor and 24 for TrueColor).
\n
"
"
\n
"
" Currently -overlay only works on Solaris (it uses
\n
"
" XReadScreen(3X11)). There are still some problems with
\n
"
" surrounding-region painting for popup menus (but not
\n
"
" for the popup menu itself); a workaround is to disable
\n
"
" SaveUnders (pass -su to Xsun). Amusingly, if -overlay
\n
"
" is used with -mouse, the mouse cursor shape is correct.
\n
"
"
\n
"
" Use -overlay as a workaround for situations like these:
\n
"
" Some legacy applications require the default visual
\n
"
" be 8bpp (8+24), or they will use 8bpp PseudoColor even
\n
"
" when the default visual is depth 24 TrueColor (24+8).
\n
"
" In these cases colors in some windows will be messed
\n
"
" up in x11vnc unless -overlay is used.
\n
"
"
\n
"
" Under -overlay, performance will be somewhat degraded
\n
"
" due to the extra image transformations required.
\n
"
" For optimal performance do not use -overlay, but rather
\n
"
" configure the X server so that the default visual is
\n
"
" depth 24 TrueColor and have all apps use that visual.
\n
"
"-visual n Experimental option: probably does not do what you
\n
"
"-visual n Experimental option: probably does not do what you
\n
"
" think. It simply *forces* the visual used for the
\n
"
" think. It simply *forces* the visual used for the
\n
"
" framebuffer; this may be a bad thing... It is useful for
\n
"
" framebuffer; this may be a bad thing... It is useful for
\n
"
...
@@ -7833,7 +7983,7 @@ static void print_help(void) {
...
@@ -7833,7 +7983,7 @@ static void print_help(void) {
" and response may be slower. If
\"
fraction
\"
contains
\n
"
" and response may be slower. If
\"
fraction
\"
contains
\n
"
" a decimal point
\"
.
\"
it is taken as a floating point
\n
"
" a decimal point
\"
.
\"
it is taken as a floating point
\n
"
" number, alternatively the notation
\"
m/n
\"
may be used
\n
"
" number, alternatively the notation
\"
m/n
\"
may be used
\n
"
" to denote fractions, e.g. -scale 2/3.
\n
"
" to denote fractions
exactly
, e.g. -scale 2/3.
\n
"
"
\n
"
"
\n
"
" Scaling Options: can be added after
\"
fraction
\"
via
\n
"
" Scaling Options: can be added after
\"
fraction
\"
via
\n
"
"
\"
:
\"
, to supply multiple
\"
:
\"
options use commas.
\n
"
"
\"
:
\"
, to supply multiple
\"
:
\"
options use commas.
\n
"
...
@@ -8189,7 +8339,7 @@ static char *choose_title(char *display) {
...
@@ -8189,7 +8339,7 @@ static char *choose_title(char *display) {
strncat
(
title
,
display
,
MAXN
-
strlen
(
title
));
strncat
(
title
,
display
,
MAXN
-
strlen
(
title
));
if
(
subwin
)
{
if
(
subwin
)
{
char
*
name
;
char
*
name
;
if
(
XFetchName
(
dpy
,
window
,
&
name
))
{
if
(
XFetchName
(
dpy
,
subwin
,
&
name
))
{
strncat
(
title
,
" "
,
MAXN
-
strlen
(
title
));
strncat
(
title
,
" "
,
MAXN
-
strlen
(
title
));
strncat
(
title
,
name
,
MAXN
-
strlen
(
title
));
strncat
(
title
,
name
,
MAXN
-
strlen
(
title
));
}
}
...
@@ -8436,6 +8586,16 @@ int main(int argc, char* argv[]) {
...
@@ -8436,6 +8586,16 @@ int main(int argc, char* argv[]) {
exit
(
1
);
exit
(
1
);
}
}
}
}
}
else
if
(
!
strcmp
(
arg
,
"-sid"
))
{
rootshift
=
1
;
CHECK_ARGC
if
(
sscanf
(
argv
[
++
i
],
"0x%x"
,
&
subwin
)
!=
1
)
{
if
(
sscanf
(
argv
[
i
],
"%d"
,
&
subwin
)
!=
1
)
{
fprintf
(
stderr
,
"bad -id arg: %s
\n
"
,
argv
[
i
]);
exit
(
1
);
}
}
}
else
if
(
!
strcmp
(
arg
,
"-scale"
))
{
}
else
if
(
!
strcmp
(
arg
,
"-scale"
))
{
int
m
,
n
;
int
m
,
n
;
char
*
p
;
char
*
p
;
...
@@ -8500,6 +8660,8 @@ int main(int argc, char* argv[]) {
...
@@ -8500,6 +8660,8 @@ int main(int argc, char* argv[]) {
}
else
if
(
!
strcmp
(
arg
,
"-visual"
))
{
}
else
if
(
!
strcmp
(
arg
,
"-visual"
))
{
CHECK_ARGC
CHECK_ARGC
visual_str
=
argv
[
++
i
];
visual_str
=
argv
[
++
i
];
}
else
if
(
!
strcmp
(
arg
,
"-overlay"
))
{
overlay
=
1
;
}
else
if
(
!
strcmp
(
arg
,
"-flashcmap"
))
{
}
else
if
(
!
strcmp
(
arg
,
"-flashcmap"
))
{
flash_cmap
=
1
;
flash_cmap
=
1
;
}
else
if
(
!
strcmp
(
arg
,
"-notruecolor"
))
{
}
else
if
(
!
strcmp
(
arg
,
"-notruecolor"
))
{
...
@@ -8866,6 +9028,28 @@ int main(int argc, char* argv[]) {
...
@@ -8866,6 +9028,28 @@ int main(int argc, char* argv[]) {
argv_vnc
[
argc_vnc
++
]
=
"604800000"
;
/* one week... */
argv_vnc
[
argc_vnc
++
]
=
"604800000"
;
/* one week... */
}
}
if
(
overlay
)
{
#ifdef SOLARIS
using_shm
=
0
;
if
(
flash_cmap
&&
!
quiet
)
{
fprintf
(
stderr
,
"warning: -flashcmap may be "
"incompatible with -overlay
\n
"
);
}
if
(
show_mouse
)
{
show_mouse
=
0
;
overlay_mouse
=
1
;
}
#else
if
(
!
quiet
)
{
fprintf
(
stderr
,
"disabling -overlay: currently only "
"available on Solaris Xsun.
\n
"
);
}
overlay
=
0
;
#endif
}
/* check for OS with small shm limits */
/* check for OS with small shm limits */
if
(
using_shm
&&
!
single_copytile
)
{
if
(
using_shm
&&
!
single_copytile
)
{
if
(
limit_shm
())
{
if
(
limit_shm
())
{
...
@@ -8903,6 +9087,8 @@ int main(int argc, char* argv[]) {
...
@@ -8903,6 +9087,8 @@ int main(int argc, char* argv[]) {
fprintf
(
stderr
,
"scaling: %d %.5f
\n
"
,
scaling
,
scale_fac
);
fprintf
(
stderr
,
"scaling: %d %.5f
\n
"
,
scaling
,
scale_fac
);
fprintf
(
stderr
,
"visual: %s
\n
"
,
visual_str
?
visual_str
fprintf
(
stderr
,
"visual: %s
\n
"
,
visual_str
?
visual_str
:
"null"
);
:
"null"
);
fprintf
(
stderr
,
"overlay: %d
\n
"
,
overlay
);
fprintf
(
stderr
,
"ovl_mouse: %d
\n
"
,
overlay_mouse
);
fprintf
(
stderr
,
"viewonly: %d
\n
"
,
view_only
);
fprintf
(
stderr
,
"viewonly: %d
\n
"
,
view_only
);
fprintf
(
stderr
,
"shared: %d
\n
"
,
shared
);
fprintf
(
stderr
,
"shared: %d
\n
"
,
shared
);
fprintf
(
stderr
,
"conn_once: %d
\n
"
,
connect_once
);
fprintf
(
stderr
,
"conn_once: %d
\n
"
,
connect_once
);
...
@@ -9025,14 +9211,15 @@ int main(int argc, char* argv[]) {
...
@@ -9025,14 +9211,15 @@ int main(int argc, char* argv[]) {
}
else
{
}
else
{
if
(
!
quiet
)
fprintf
(
stderr
,
"Using default X display.
\n
"
);
if
(
!
quiet
)
fprintf
(
stderr
,
"Using default X display.
\n
"
);
}
}
scr
=
DefaultScreen
(
dpy
);
rootwin
=
RootWindow
(
dpy
,
scr
);
if
(
!
dt
)
{
if
(
!
dt
)
{
static
char
str
[]
=
"-desktop"
;
static
char
str
[]
=
"-desktop"
;
argv_vnc
[
argc_vnc
++
]
=
str
;
argv_vnc
[
argc_vnc
++
]
=
str
;
argv_vnc
[
argc_vnc
++
]
=
choose_title
(
use_dpy
);
argv_vnc
[
argc_vnc
++
]
=
choose_title
(
use_dpy
);
}
}
scr
=
DefaultScreen
(
dpy
);
rootwin
=
RootWindow
(
dpy
,
scr
);
/* check for XTEST */
/* check for XTEST */
if
(
!
XTestQueryExtension
(
dpy
,
&
ev
,
&
er
,
&
maj
,
&
min
))
{
if
(
!
XTestQueryExtension
(
dpy
,
&
ev
,
&
er
,
&
maj
,
&
min
))
{
...
@@ -9060,9 +9247,38 @@ int main(int argc, char* argv[]) {
...
@@ -9060,9 +9247,38 @@ int main(int argc, char* argv[]) {
}
}
}
}
if
(
overlay
)
{
/*
* ideally we'd like to not have to cook up the visual variables
* but rather let it all come out of XReadScreen(), however
* there is no way to get a default visual out of it, so we
* pretend -visual TrueColor:NN was supplied with NN usually 24.
*/
#ifdef SOLARIS
char
str
[
16
];
XImage
*
xi
;
Window
twin
=
subwin
?
subwin
:
rootwin
;
xi
=
XReadScreen
(
dpy
,
twin
,
0
,
0
,
8
,
8
,
False
);
sprintf
(
str
,
"TrueColor:%d"
,
xi
->
depth
);
if
(
xi
->
depth
!=
24
&&
!
quiet
)
{
fprintf
(
stderr
,
"warning XReadScreen() image has "
"depth %d instead of 24.
\n
"
,
xi
->
depth
);
}
XDestroyImage
(
xi
);
if
(
visual_str
!=
NULL
&&
!
quiet
)
{
fprintf
(
stderr
,
"warning: replacing '-visual %s' by "
"'%s' for use with -overlay
\n
"
,
visual_str
,
str
);
}
visual_str
=
strdup
(
str
);
#endif
}
if
(
visual_str
!=
NULL
)
{
if
(
visual_str
!=
NULL
)
{
set_visual
(
visual_str
);
set_visual
(
visual_str
);
}
}
#ifdef LIBVNCSERVER_HAVE_XKEYBOARD
#ifdef LIBVNCSERVER_HAVE_XKEYBOARD
/* check for XKEYBOARD */
/* check for XKEYBOARD */
if
(
use_xkb
)
{
if
(
use_xkb
)
{
...
@@ -9083,7 +9299,8 @@ int main(int argc, char* argv[]) {
...
@@ -9083,7 +9299,8 @@ int main(int argc, char* argv[]) {
dpy_y
=
DisplayHeight
(
dpy
,
scr
);
dpy_y
=
DisplayHeight
(
dpy
,
scr
);
off_x
=
0
;
off_x
=
0
;
off_y
=
0
;
off_y
=
0
;
visual
=
DefaultVisual
(
dpy
,
scr
);
/* this may be overridden via visual_id below */
default_visual
=
DefaultVisual
(
dpy
,
scr
);
}
else
{
}
else
{
/* experiment to share just one window */
/* experiment to share just one window */
XWindowAttributes
attr
;
XWindowAttributes
attr
;
...
@@ -9095,7 +9312,9 @@ int main(int argc, char* argv[]) {
...
@@ -9095,7 +9312,9 @@ int main(int argc, char* argv[]) {
}
}
dpy_x
=
attr
.
width
;
dpy_x
=
attr
.
width
;
dpy_y
=
attr
.
height
;
dpy_y
=
attr
.
height
;
visual
=
attr
.
visual
;
/* this may be overridden via visual_id below */
default_visual
=
attr
.
visual
;
/* show_mouse has some segv crashes as well */
/* show_mouse has some segv crashes as well */
if
(
show_root_cursor
)
{
if
(
show_root_cursor
)
{
...
@@ -9108,16 +9327,17 @@ int main(int argc, char* argv[]) {
...
@@ -9108,16 +9327,17 @@ int main(int argc, char* argv[]) {
set_offset
();
set_offset
();
}
}
/* initialize depth to reasonable value */
/* initialize depth to reasonable value
, visual_id may override
*/
depth
=
DefaultDepth
(
dpy
,
scr
);
depth
=
DefaultDepth
(
dpy
,
scr
);
/*
* User asked for non-default visual, this is not working well but it
* does some useful things... What should it do in general?
*/
if
(
visual_id
)
{
if
(
visual_id
)
{
XVisualInfo
vinfo_tmpl
,
*
vinfo
;
int
n
;
int
n
;
XVisualInfo
vinfo_tmpl
,
*
vinfo
;
/*
* we are in here from -visual or -overlay options
* visual_id and visual_depth were set in set_visual().
*/
vinfo_tmpl
.
visualid
=
visual_id
;
vinfo_tmpl
.
visualid
=
visual_id
;
vinfo
=
XGetVisualInfo
(
dpy
,
VisualIDMask
,
&
vinfo_tmpl
,
&
n
);
vinfo
=
XGetVisualInfo
(
dpy
,
VisualIDMask
,
&
vinfo_tmpl
,
&
n
);
...
@@ -9126,10 +9346,11 @@ int main(int argc, char* argv[]) {
...
@@ -9126,10 +9346,11 @@ int main(int argc, char* argv[]) {
(
int
)
visual_id
);
(
int
)
visual_id
);
exit
(
1
);
exit
(
1
);
}
}
visual
=
vinfo
->
visual
;
default_
visual
=
vinfo
->
visual
;
depth
=
vinfo
->
depth
;
depth
=
vinfo
->
depth
;
if
(
visual_depth
)
{
if
(
visual_depth
)
{
depth
=
visual_depth
;
/* force it */
/* force it from -visual FooColor:NN */
depth
=
visual_depth
;
}
}
if
(
!
quiet
)
{
if
(
!
quiet
)
{
fprintf
(
stderr
,
"vis id: 0x%x
\n
"
,
fprintf
(
stderr
,
"vis id: 0x%x
\n
"
,
...
@@ -9148,19 +9369,23 @@ int main(int argc, char* argv[]) {
...
@@ -9148,19 +9369,23 @@ int main(int argc, char* argv[]) {
}
}
if
(
nofb
||
visual_id
)
{
if
(
nofb
)
{
fb
=
XCreateImage
(
dpy
,
visual
,
depth
,
ZPixmap
,
0
,
NULL
,
dpy_x
,
dpy_y
,
BitmapPad
(
dpy
),
0
);
/*
/*
* For -nofb we do not allocate the framebuffer, so we
* For -nofb we do not allocate the framebuffer, so we
* can save a few MB of memory.
* can save a few MB of memory.
*/
*/
if
(
!
nofb
)
{
fb
=
XCreateImage_wr
(
dpy
,
default_visual
,
depth
,
ZPixmap
,
fb
->
data
=
(
char
*
)
malloc
(
fb
->
bytes_per_line
*
0
,
NULL
,
dpy_x
,
dpy_y
,
BitmapPad
(
dpy
),
0
);
fb
->
height
);
}
}
else
if
(
visual_id
)
{
/*
* we need to call XCreateImage to supply the visual
*/
fb
=
XCreateImage_wr
(
dpy
,
default_visual
,
depth
,
ZPixmap
,
0
,
NULL
,
dpy_x
,
dpy_y
,
BitmapPad
(
dpy
),
0
);
fb
->
data
=
(
char
*
)
malloc
(
fb
->
bytes_per_line
*
fb
->
height
);
}
else
{
}
else
{
fb
=
XGetImage
(
dpy
,
window
,
0
,
0
,
dpy_x
,
dpy_y
,
AllPlanes
,
fb
=
XGetImage
_wr
(
dpy
,
window
,
0
,
0
,
dpy_x
,
dpy_y
,
AllPlanes
,
ZPixmap
);
ZPixmap
);
if
(
!
quiet
)
{
if
(
!
quiet
)
{
fprintf
(
stderr
,
"Read initial data from X display into"
fprintf
(
stderr
,
"Read initial data from X display into"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment