x11vnc: Fix problems in --without-x builds. Fix crash

with -QD query for dbus info.  Adjust window size for
small screens in -gui.  Improve F1 help for xdm, etc.
include ssvnc 1.0.25 source.
pull/1/head
runge 14 years ago
parent 018f152bc5
commit 5764cd3fdd

@ -1,3 +1,9 @@
2009-12-28 Karl Runge <runge@karlrunge.com>
* x11vnc: Fix problems in --without-x builds. Fix crash
with -QD query for dbus info. Adjust window size for
small screens in -gui. Improve F1 help for xdm, etc.
include ssvnc 1.0.25 source.
2009-12-24 Karl Runge <runge@karlrunge.com>
* x11vnc: prepare_x11vnc_dist.sh for 0.9.10. -xdummy_xvfb,
-svc_xdummy_xvfb and -create_x shorthand. lxde session.

File diff suppressed because it is too large Load Diff

@ -563,6 +563,9 @@ static void be_helper_pid(char *dpy_str) {
if (ms < 50) ms = 50;
#if NO_X11
fprintf(stderr, "be_helper_pid: not compiled with X11.\n");
#else
dpy = XOpenDisplay(dpy_str);
ticker_atom = XInternAtom(dpy, ticker_atom_str, False);
@ -583,6 +586,7 @@ static void be_helper_pid(char *dpy_str) {
}
}
}
#endif
exit(0);
}
@ -895,7 +899,7 @@ static void delete_win(Window win) {
static void recurse_search(int level, int level_max, Window top, Window app, int *nw) {
Window w, r, parent, *list = NULL;
unsigned int nchild;
int ok;
int ok = 0;
if (appshare_debug > 1) {
fprintf(stderr, "level: %d level_max: %d top: 0x%lx app: 0x%lx\n", level, level_max, top, app);
@ -904,6 +908,7 @@ static void recurse_search(int level, int level_max, Window top, Window app, int
return;
}
#if !NO_X11
ok = XQueryTree(dpy, top, &r, &parent, &list, &nchild);
if (ok) {
int i;
@ -930,6 +935,7 @@ static void recurse_search(int level, int level_max, Window top, Window app, int
if (list) {
XFree(list);
}
#endif
}
static void add_app(Window app) {

@ -652,7 +652,8 @@ if [ -e "$xserver_path" -a "X$root" = "X" -a "X$runit" != "X" ]; then
warn ""
warn "Please restart Xdummy now."
exit 0
elif [ ! -O $new ]; then
fi
if [ ! -O $new ]; then
warn "file \"$new\" not owned by us!"
ls -l $new
exit 1

@ -17,6 +17,7 @@ SYNOPSIS
ssvnc [host][:display]
ssvnc [saved-profile-name]
ssvnc [options] [host-or-profile]
ssvnc -cmd [ssvnc_cmd-args]
ssvnc --help
DESCRIPTION
@ -33,6 +34,12 @@ OPTIONS
--help Starts up the GUI as though the 'Help' button was pressed to
show the main Help panel.
-cmd [ssvnc_cmd-args]
Launch the ssvnc_cmd utility command directly (no GUI) with the
given arguments (for use when ssvnc_cmd is not in one's PATH.)
If neither ssvnc_cmd nor ssvncviewer is in PATH, one can launch
the viewer directly via: ssvnc -cmd -viewer [viewer-args]
-profiles
List the saved SSVNC profiles you have created. A profile is a
destination host with specific parameter settings.
@ -63,11 +70,12 @@ OPTIONS
Make the Profile Selection Dialog window bigger. Same as
SSVNC_BIGGER_DIALOG=1.
-noenc Start off in a mode where a 'No Encryption' check button is
-noenc Start off in a mode where a 'No Encryption' check button is
present. You can toggle the mode with Ctrl-E. Same as
SSVNC_DISABLE_ENCRYPTION_BUTTON=1. Or noenc=1 in ~/.ssvncrc.
Selecting no encryption is the same as the vnc:// and Vnc://
prefixes described below. -enc implies the opposite.
Selecting no encryption is the same as the vnc:// and Vnc://
prefixes described below. The -noenc mode is now the default,
use -enc or noenc=0 for the opposite behavior.
-killstunnel
On Windows, automatically terminate the STUNNEL process when the
@ -271,7 +279,7 @@ if [ -f "$dir/util/ultraftp.jar" ]; then
export SSVNC_ULTRA_FTP_JAR
fi
if [ "X$1" = "X-cmd" ]; then
if [ "X$1" = "X-cmd" -o "X$1" = "X--cmd" ]; then
shift
exec ssvnc_cmd "$@"
elif [ "X$WISH" = "Xwish" ]; then

@ -25,13 +25,16 @@
#
# ssvnc_cmd [ss_vncviewer-args] hostname:N [vncviewer-args]
#
# if, instead, this script is named "tightvncviewer" it calls the
# vncviewer directly and must be invoked as:
# if, instead, this script is named "tightvncviewer" or "-viewer" is the
# first argument it calls the vncviewer directly (there is no encryption)
# and must be invoked as:
#
# tightvncviewer [vncviewer-args] hostname:N
# or
# ssvnc_cmd -viewer [vncviewer-args] hostname:N
#
# In both cases, "hostname:N" is the host and VNC display to connect to,
# e.g. snoopy:0
# e.g. snoopy:0. (-listen N and -appshare N modes works too.)
#
# See the script util/ss_vncviewer for details about its arguments:
#
@ -240,6 +243,15 @@ if [ "X$1" = "X-ssl" ]; then
base="ssvnc_cmd"
fi
do_viewer_directly=""
if [ "X$1" = "X-viewer" ]; then
do_viewer_directly=1
shift
fi
if [ "X$base" = "Xtightvncviewer" ]; then
do_viewer_directly=1
fi
# If ours (and not cotvnc), force the use of tight encoding for localhost
# redir connection:
#
@ -260,13 +272,13 @@ if [ $use_ours = 1 ]; then
fi
fi
if [ "X$base" = "Xtightvncviewer" ]; then
if [ "X$do_viewer_directly" = "X1" ]; then
$VNCVIEWERCMD -encodings 'copyrect tight zrle zlib hextile' "$@"
else
ss_vncviewer "$@" -encodings 'copyrect tight zrle zlib hextile'
fi
else
if [ "X$base" = "Xtightvncviewer" ]; then
if [ "X$do_viewer_directly" = "X1" ]; then
$VNCVIEWERCMD "$@"
else
ss_vncviewer "$@"

@ -33,6 +33,15 @@ proc center_win {w} {
update
}
proc small_height {} {
set H [winfo screenheight .]
if {$H < 700} {
return 1
} else {
return 0
}
}
proc mac_raise {} {
global uname
if {$uname == "Darwin"} {
@ -67,6 +76,9 @@ proc line_count {{str ""} {pad 0}} {
proc scroll_text {fr {w 80} {h 35}} {
global help_font is_windows scroll_text_focus
if {$h == 35 && [small_height]} {
set h 28
}
catch {destroy $fr}
frame $fr -bd 0
@ -88,6 +100,9 @@ proc scroll_text {fr {w 80} {h 35}} {
proc scroll_text_dismiss {fr {w 80} {h 35}} {
global help_font
if {$h == 35 && [small_height]} {
set h 28
}
scroll_text $fr $w $h
set up $fr
@ -354,7 +369,11 @@ proc help {} {
}
toplev .h
scroll_text_dismiss .h.f 82 37
set h 37
if [small_height] {
set h 26
}
scroll_text_dismiss .h.f 82 $h
center_win .h
wm title .h "SSL/SSH VNC Viewer Help"
@ -1693,7 +1712,11 @@ proc ssvnc_escape_help {} {
proc help_certs {} {
toplev .ch
scroll_text_dismiss .ch.f 87 33
set h 33
if [small_height] {
set h 28
}
scroll_text_dismiss .ch.f 87 $h
center_win .ch
wm resizable .ch 1 0
@ -2506,7 +2529,11 @@ set msg {
proc help_fetch_cert {{selfsigned 1}} {
toplev .fh
scroll_text_dismiss .fh.f 85 35
set h 35
if [small_height] {
set h 28
}
scroll_text_dismiss .fh.f 85 $h
center_win .fh
wm resizable .fh 1 0
@ -3566,7 +3593,11 @@ proc check_debug_netstat {port str wn} {
toplev .dbns
scroll_text_dismiss .dbns.f 82 35
set h 35
if [small_height] {
set h 28
}
scroll_text_dismiss .dbns.f 82 $h
center_win .dbns
.dbns.f.t insert end "LOOKING FOR PORT: $port\n\n$str"
jiggle_text .dbns.f.t
@ -5189,6 +5220,10 @@ proc skip_non_self_signed {w hp} {
proc fetch_dialog {cert_text hp hpnew ok n} {
toplev .fetch
if [small_height] {
set n 28
}
scroll_text_dismiss .fetch.f 90 $n
if {$ok} {
@ -5868,6 +5903,11 @@ proc check_accepted_certs {{probe_only 0}} {
} else {
set n [expr $n + 1]
}
if [small_height] {
if {$n > 26} {
set n 26
}
}
toplev .acert
scroll_text .acert.f 83 $n
@ -9005,11 +9045,13 @@ proc create_cert {{name ""}} {
wm title .ccrt "Create SSL Certificate"
global uname
if {$uname == "Darwin"} {
scroll_text .ccrt.f 80 20
} else {
scroll_text .ccrt.f 80 30
set h 27
if [small_height] {
set h 14
} elseif {$uname == "Darwin"} {
set h 20
}
scroll_text .ccrt.f 80 $h
set msg {
This dialog helps you to create a simple Self-Signed SSL certificate.
@ -9451,11 +9493,13 @@ proc import_cert {} {
global scroll_text_focus
set scroll_text_focus 0
global uname
if {$uname == "Darwin"} {
scroll_text .icrt.f 90 16
} else {
scroll_text .icrt.f 90 20
set h 19
if [small_height] {
set h 12
} elseif {$uname == "Darwin"} {
set h 16
}
scroll_text .icrt.f 90 $h
set scroll_text_focus 1
set msg {
@ -9530,11 +9574,13 @@ TCQ+tbQ/DOiTXGKx1nlcKoPdkG+QVQVJthlQcpam
$w.e configure -state disabled
label .icrt.plab -anchor w -text "Paste Certificate here: (extra blank lines above or below are OK)"
if {$uname == "Darwin"} {
scroll_text .icrt.paste 90 11
} else {
scroll_text .icrt.paste 90 22
set h 22
if [small_height] {
set h 11
} elseif {$uname == "Darwin"} {
set h 11
}
scroll_text .icrt.paste 90 $h
button .icrt.cancel -text "Cancel" -command {destroy .icrt; catch {raise .c}}
bind .icrt <Escape> {destroy .icrt; catch {raise .c}}
@ -9577,20 +9623,29 @@ proc save_cert {hp} {
global cert_text
toplev .scrt
wm title .scrt "Import SSL Certificate"
wm title .scrt "Import/Save SSL Certificate"
global scroll_text_focus
set scroll_text_focus 0
global uname
global accepted_cert_dialog_in_progress
set h 20
if {$accepted_cert_dialog_in_progress} {
set mode "accepted"
scroll_text .scrt.f 90 15
set h 15
if [small_height] {
set h 11
}
} else {
set mode "normal"
scroll_text .scrt.f 90 20
set h 20
if [small_height] {
set h 16
}
}
scroll_text .scrt.f 90 $h
set scroll_text_focus 1
set msg1 {
@ -9647,7 +9702,11 @@ proc save_cert {hp} {
set import_file ""
entry $w.e -width 40 -textvariable import_file
scroll_text .scrt.paste 90 23
set h 22
if [small_height] {
set h 10
}
scroll_text .scrt.paste 90 $h
button .scrt.cancel -text "Cancel" -command {destroy .scrt; catch {raise .c}}
bind .scrt <Escape> {destroy .scrt; catch {raise .c}}
@ -11358,7 +11417,11 @@ proc ts_xlogin_dialog {} {
toplev .xlog
wm title .xlog "X Login Greeter"
scroll_text .xlog.f 80 33
set h 33
if [small_height] {
set h 28
}
scroll_text .xlog.f 80 $h
global ts_xlogin
@ -11569,7 +11632,11 @@ proc ts_x11vnc_opts_dialog {} {
toplev .x11v
wm title .x11v "x11vnc Options"
scroll_text .x11v.f 80 23
set h 23
if [small_height] {
set h 21
}
scroll_text .x11v.f 80 $h
global ts_x11vnc_opts ts_x11vnc_path ts_x11vnc_autoport choose_x11vnc_opts
global additional_port_redirs_list
@ -11699,7 +11766,11 @@ proc ts_cups_dialog {} {
global cups_local_server cups_remote_port cups_manage_rcfile ts_cups_manage_rcfile cups_x11vnc
global cups_local_smb_server cups_remote_smb_port
scroll_text .cups.f 80 30
set h 30
if [small_height] {
set h 24
}
scroll_text .cups.f 80 $h
set msg {
@ -11844,11 +11915,13 @@ proc cups_dialog {} {
}
global uname
if {$uname == "Darwin"} {
scroll_text .cups.f 80 25
} else {
scroll_text .cups.f
set h 33
if [small_height] {
set h 17
} elseif {$uname == "Darwin"} {
set h 24
}
scroll_text .cups.f 80 $h
set msg {
@ -12210,11 +12283,13 @@ proc sound_dialog {} {
wm title .snd "ESD/ARTSD Sound Tunnelling"
global uname
if {$uname == "Darwin"} {
scroll_text .snd.f 80 20
} else {
scroll_text .snd.f 80 30
set h 28
if [small_height] {
set h 14
} elseif {$uname == "Darwin"} {
set h 20
}
scroll_text .snd.f 80 $h
set msg {
Sound tunnelling to a sound daemon requires SSH be used to set up the
@ -12765,7 +12840,11 @@ proc smb_help_me_decide {} {
wm title .smbwiz $title
set id " "
scroll_text .smbwiz.f 100 40
set h 40
if [small_height] {
set h 30
}
scroll_text .smbwiz.f 100 $h
set msg {
For now you will have to verify the following information manually.
@ -12979,11 +13058,13 @@ proc smb_dialog {} {
global help_font
global uname
if {$uname == "Darwin"} {
scroll_text .smb.f 80 25
} else {
scroll_text .smb.f
set h 33
if [small_height] {
set h 17
} elseif {$uname == "Darwin"} {
set h 24
}
scroll_text .smb.f 80 $h
set msg {
Windows/Samba Filesystem mounting requires SSH be used to set up the SMB
@ -13679,7 +13760,11 @@ proc help_ssvncviewer_opts {} {
proc show_viewer_help {} {
toplev .vhlp
scroll_text_dismiss .vhlp.f 83 35
set h 35
if [small_height] {
set h 30
}
scroll_text_dismiss .vhlp.f 83 $h
center_win .vhlp
wm resizable .vhlp 1 0
@ -13710,9 +13795,9 @@ proc change_vncviewer_dialog {} {
global help_font
if {$ts_only} {
eval text .chviewer.t -width 90 -height 18 $help_font
eval text .chviewer.t -width 90 -height 16 $help_font
} else {
eval text .chviewer.t -width 90 -height 29 $help_font
eval text .chviewer.t -width 90 -height 27 $help_font
}
apply_bg .chviewer.t
@ -13726,8 +13811,7 @@ proc change_vncviewer_dialog {} {
You can specify your own command line options below if you like (and try to
avoid setting any others in this GUI under "Options").
If the path to the program name has any spaces it in, please surround it with
double quotes, e.g.
If the path to the program name has spaces it in, surround it with double quotes:
"C:\Program Files\My Vnc Viewer\VNCVIEWER.EXE"
@ -13739,11 +13823,10 @@ proc change_vncviewer_dialog {} {
Since the command line options differ between them greatly, if you know it
is of the RealVNC 4.x flavor, indicate on the check box. Otherwise we guess.
To have SSVNC act as a general STUNNEL redirector (no VNC) set the viewer to
be "xmessage OK" or "xmessage <port>" or "sleep n" or "sleep n <port>" (or
"NOTEPAD" on Windows). The default listen port is 5930. The destination is
set in "VNC Host:Display" (for a remote port less then 200 use the negative
of the port value).
To have SSVNC act as a general STUNNEL redirector (no VNC) set the viewer to be
"xmessage OK" or "xmessage <port>" or "sleep n" or "sleep n <port>" (or "NOTEPAD"
on Windows). The default listen port is 5930. The destination is set in "VNC
Host:Display" (for a remote port less than 200 use the negative of the port value).
}
if {$ts_only} {
@ -13785,11 +13868,11 @@ proc port_redir_dialog {} {
wm title .redirs "Additional Port Redirections (via SSH)"
global help_font uname
if {$uname == "Darwin"} {
eval text .redirs.t -width 80 -height 35 $help_font
} else {
eval text .redirs.t -width 80 -height 35 $help_font
set h 35
if [small_height] {
set h 27
}
eval text .redirs.t -width 80 -height $h $help_font
apply_bg .redirs.t
set msg {
@ -13856,11 +13939,12 @@ proc stunnel_sec_dialog {} {
wm title .stlsec "STUNNEL Local Port Protections"
global help_font uname
if {$uname == "Darwin"} {
scroll_text .stlsec.f 82 37
} else {
scroll_text .stlsec.f 82 37
set h 37
if [small_height] {
set h 26
}
scroll_text .stlsec.f 82 $h
apply_bg .stlsec.f
@ -13924,7 +14008,11 @@ proc disable_ssl_workarounds_dialog {} {
wm title .sslwrk "Disable SSL Workarounds"
global help_font uname
scroll_text .sslwrk.f 86 36
set h 36
if [small_height] {
set h 24
}
scroll_text .sslwrk.f 86 $h
apply_bg .sslwrk.f
@ -14020,7 +14108,11 @@ proc ultra_dsm_dialog {} {
wm title .ultradsm "UltraVNC DSM Encryption Plugin"
global help_font
scroll_text .ultradsm.f 85 40
set h 40
if [small_height] {
set h 22
}
scroll_text .ultradsm.f 85 $h
set msg {
On Unix and MacOSX with the provided SSVNC vncviewer, you can connect to an
@ -14200,7 +14292,11 @@ proc ssh_known_hosts_dialog {} {
wm title .sshknownhosts "Private SSH KnownHosts file"
global help_font
scroll_text .sshknownhosts.f 80 31
set h 31
if [small_height] {
set h 23
}
scroll_text .sshknownhosts.f 80 $h
set msg {
Private SSH KnownHosts file:
@ -14318,7 +14414,11 @@ proc multilisten_dialog {} {
wm title .multil "Multiple LISTEN Connections"
global help_font
eval text .multil.t -width 84 -height 35 $help_font
set h 35
if [small_height] {
set h 30
}
eval text .multil.t -width 84 -height $h $help_font
apply_bg .multil.t
@ -14805,11 +14905,14 @@ proc port_knocking_dialog {} {
global help_font
global uname
if {$uname == "Darwin"} {
scroll_text .pk.f 85 25
} else {
scroll_text .pk.f 85
set h 35
if [small_height] {
set h 22
} elseif {$uname == "Darwin"} {
set h 25
}
scroll_text .pk.f 85 $h
set msg {
Description:
@ -15355,18 +15458,18 @@ proc set_ts_adv_options {} {
}
proc change_vncviewer_dialog_wrap {} {
global change_vncviewer ts_uss_button
global change_vncviewer ts_uss_button is_windows
if {$change_vncviewer} {
change_vncviewer_dialog
catch {tkwait window .chviewer}
}
if {$change_vncviewer} {
if {$change_vncviewer || $is_windows} {
catch {.oa.ss configure -state disabled}
} else {
catch {.oa.ss configure -state normal}
}
if [info exists ts_uss_button] {
if {$change_vncviewer} {
if {$change_vncviewer || $is_windows} {
catch {$ts_uss_button configure -state disabled}
} else {
catch {$ts_uss_button configure -state normal}
@ -15529,7 +15632,7 @@ proc set_advanced_options {} {
set t1 " Unix ssvncviewer ..."
if {$uname == "Darwin" } { regsub {^ *} $t1 "" t1 }
button .oa.ss -anchor w -text $t1 -command set_ssvncviewer_options
pack .oa.ss -side top -fill x
pack .oa.ss -side top -fill x
if {$is_windows} {
.oa.ss configure -state disabled
}
@ -15817,7 +15920,7 @@ proc set_ssvncviewer_options {} {
frame $fr.b$j -relief $relief -borderwidth 2
label $fr.b$j.l1 -font $ffont -anchor w -text "Add any extra options for ssvncviewer that you want.";
label $fr.b$j.l2 -font $ffont -anchor w -text "For example: -16bpp -noshm etc. See Help for a list.";
label $fr.b$j.l2 -font $ffont -anchor w -text "For example: -16bpp -appshare -noshm etc. See Help for a list.";
global ssvnc_extra_opts
frame $fr.b$j.f

@ -2,13 +2,13 @@
.\" ** The above line should force tbl to be a preprocessor **
.\" Man page for the SSVNC vncviewer
.\"
.\" Copyright (C) 2006-2008 Karl J. Runge <runge@karlrunge.com>
.\" Copyright (C) 2006-2009 Karl J. Runge <runge@karlrunge.com>
.\"
.\" You may distribute under the terms of the GNU General Public
.\" License as specified in the file LICENCE.TXT that comes with the
.\" TightVNC distribution.
.\"
.TH ssvnc 1 "September 2009" "" "SSVNC"
.TH ssvnc 1 "December 2009" "" "SSVNC"
.SH NAME
ssvnc \- a GUI wrapper for SSL and SSH VNC connections.
.SH SYNOPSIS
@ -24,6 +24,10 @@ ssvnc \- a GUI wrapper for SSL and SSH VNC connections.
.RI [\| options \|]\ [\| host-or-profile \]
.br
.B ssvnc
.IR \-cmd
.RI [\| ssvnc_cmd-args \|]
.br
.B ssvnc
.IR \--help
.br
.SH DESCRIPTION
@ -47,10 +51,10 @@ Or supply user@hostname:display and click on the "Use SSH" option, then
press the "Connect" button to connect to the server via an SSH tunnel.
E.g. "fred@far-away.east:0".
As an easter egg, we note it is also possible to disable the use of SSL/SSH
Note it is also possible to disable the use of SSL/SSH
encryption tunnels by using a vnc:// or Vnc:// prefix before
host:display. Shift+Ctrl-E is a short-cut to add/remove it.
See also the \fB-noenc\fR option below.
See also the \fB-noenc\fR option below for the 'No Encryption' button.
Normally you do not specify any command line options. You simply
run \fBssvnc\fR and use the GUI that starts up.
@ -70,6 +74,12 @@ See below and the application Help for more information on the modes.
You can also place certain settings in your ~/.ssvncrc, see the
SSVNC Help panel ('Tips') for more info.
The \fB-cmd\fR option does not start the GUI, it runs the command
line utility \fBssvnc_cmd\fR directly with the given arguments.
\fBssvnc_cmd\fR can launch the viewer directly (\fB-viewer ...\fR)
or, by default, the \fBss_vncviewer\fR SSL/SSH tunnel wrapper script.
See its help output for more information.
There are also some command line options described as follows.
.SH OPTIONS
.TP
@ -80,6 +90,12 @@ Prints out to the terminal a brief description and the options.
Starts up the GUI as though the 'Help' button was pressed to show the
main Help panel.
.TP
\fB\-cmd\fR \fI[ssvnc_cmd-args]\fR
Launch the ssvnc_cmd utility command directly (no GUI) with the given
arguments (for use when ssvnc_cmd is not in one's PATH.) If neither
ssvnc_cmd nor ssvncviewer is in PATH, one can launch the viewer
directly via: ssvnc -cmd -viewer [viewer-args]
.TP
\fB\-profiles\fR
List the saved SSVNC profiles you have created. A profile
is a destination host with specific parameter settings.
@ -122,7 +138,8 @@ Start off in a mode where a 'No Encryption' check button is present.
You can toggle the mode with Ctrl-E.
Same as SSVNC_DISABLE_ENCRYPTION_BUTTON=1. Or \fInoenc=1\fR in ~/.ssvncrc.
Selecting no encryption is the same as the vnc:// and Vnc:// prefixes
described below. \fB-enc\fR implies the opposite.
described below. The \fB\-noenc\fR mode is now the default, use \fB-enc\fR
or \fInoenc=0\fR for the opposite behavior.
.TP
\fB\-killstunnel\fR
On Windows, automatically terminate the STUNNEL process when the viewer

@ -11,7 +11,7 @@
.\" License as specified in the file LICENCE.TXT that comes with the
.\" TightVNC distribution.
.\"
.TH ssvncviewer 1 "September 2009" "" "SSVNC"
.TH ssvncviewer 1 "December 2009" "" "SSVNC"
.SH NAME
ssvncviewer \- an X viewer client for VNC
.SH SYNOPSIS
@ -465,6 +465,18 @@ as possible instead of waiting until the end of the current
framebuffer update coming in. Helps 'pipeline' the updates.
This is currently the default, use \fB-nopipeline\fR to disable.
.TP
\fB\-appshare\fR
Enable features for use with x11vnc's \fB\-appshare\fR mode where
instead of sharing the full desktop only the application's
windows are shared. Viewer multilisten mode is used to
create the multiple windows: \fB\-multilisten\fR is implied.
See 'x11vnc \fB\-appshare\fR \fB\-help\fR' more information on the mode.
Features enabled in the viewer under \fB\-appshare\fR are:
Minimum extra text in the title, auto \fB\-ycrop\fR is disabled,
x11vnc \fB\-remote_prefix\fR X11VNC_APPSHARE_CMD: message channel,
x11vnc initial window position hints. See also Escape Keys
below for additional key and mouse bindings.
.TP
\fB\-escape \fR\fIstr\fR
This sets the 'Escape Keys' modifier sequence and enables
escape keys mode. When the modifier keys escape sequence
@ -511,6 +523,18 @@ Clicking Mouse Button3 brings up the Popup Menu.
The above mappings are \fBalways\fR active in ViewOnly mode, unless you set
the Escape Keys value to 'never'.
x11vnc -appshare hot-keys: x11vnc has a simple application sharing mode
that enables the viewer-side to move, resize, or raise the remote toplevel
windows. To enable it, hold down Shift + the Escape Keys and press these:
Arrow keys: move the remote window around in its desktop.
PageUp/PageDn/Home/End: resize the remote window.
+/-: raise or lower the remote window.
M or Button1 move win to local position; D or Button3: delete remote win.
If the Escape Keys value below is set to 'default' then a default list of
of modifier keys is used. For Unix it is: Alt_L,Super_L and for MacOSX it
is Control_L,Meta_L. Note: the Super_L key usually has a Windows(TM) Flag

@ -5920,7 +5920,9 @@ char *process_remote_cmd(char *cmd, int stringonly) {
grab_state(&ptr_grabbed, &kbd_grabbed);
snprintf(buf, bufn, "aro=%s:%d,%d", p, ptr_grabbed, kbd_grabbed);
rfbLog("remote_cmd: ptr,kbd: %s\n", buf);
if (dpy) {
rfbLog("remote_cmd: ptr,kbd: %s\n", buf);
}
goto qry;
}

@ -561,6 +561,9 @@ char *dbus_session(void) {
if (dbus_env != NULL && strlen(dbus_env) > 0) {
return "";
}
if (!dpy) {
return "";
}
#if NO_X11
return "";
#else

@ -2532,7 +2532,7 @@ proc see_if_ok {query item expected} {
}
proc get_default_vars {} {
global default_var
global default_var env
set qry [all_query_vars]
@ -2550,6 +2550,11 @@ proc get_default_vars {} {
if {$i > 50} {
set qargs [list "-QD" $q]
set a [run_remote_cmd $qargs]
if [info exists env(TKX11VNC_PRINT_ALL_QD)] {
puts $q
puts $a
puts "---------------"
}
if {$all != ""} {
append all ","
}
@ -2561,6 +2566,11 @@ proc get_default_vars {} {
if {$q != ""} {
set qargs [list "-QD" $q]
set a [run_remote_cmd $qargs]
if [info exists env(TKX11VNC_PRINT_ALL_QD)] {
puts $q
puts $a
puts "---------------"
}
if {$all != ""} {
append all ","
}
@ -5982,6 +5992,8 @@ proc get_settings_rcfile {} {
set qst $hmm
} elseif {$item == "nevershared"} {
set qst $hmm
} elseif {$item == "gui"} {
set qst $hmm
}
if {![info exists menu_var($item)]} {
@ -6956,15 +6968,19 @@ if {$tk_version < 8.4} {
set screen_height [winfo screenheight .]
set screen_width [winfo screenwidth .]
if {$screen_height < 500} {
# short screen, PDA?
set max_text_height 22
set text_height 13
if {$screen_height <= 360} {
# very short.
set max_text_height 16
set max_text_width 60
set text_height 11
if {$screen_height < 700} {
# short screen, netbook?
set max_text_height 30
if {$screen_height < 500} {
# short screen, PDA?
set max_text_height 22
set text_height 13
if {$screen_height <= 360} {
# very short.
set max_text_height 16
set max_text_width 60
set text_height 11
}
}
}
if {[info exists env(X11VNC_GUI_TEXT_HEIGHT)]} {

@ -2543,7 +2543,7 @@ char gui_code[] = "";
"}\n"
"\n"
"proc get_default_vars {} {\n"
" global default_var\n"
" global default_var env\n"
"\n"
" set qry [all_query_vars]\n"
"\n"
@ -2561,6 +2561,11 @@ char gui_code[] = "";
" if {$i > 50} {\n"
" set qargs [list \"-QD\" $q]\n"
" set a [run_remote_cmd $qargs]\n"
" if [info exists env(TKX11VNC_PRINT_ALL_QD)] {\n"
" puts $q\n"
" puts $a\n"
" puts \"---------------\"\n"
" }\n"
" if {$all != \"\"} {\n"
" append all \",\"\n"
" }\n"
@ -2572,6 +2577,11 @@ char gui_code[] = "";
" if {$q != \"\"} {\n"
" set qargs [list \"-QD\" $q]\n"
" set a [run_remote_cmd $qargs]\n"
" if [info exists env(TKX11VNC_PRINT_ALL_QD)] {\n"
" puts $q\n"
" puts $a\n"
" puts \"---------------\"\n"
" }\n"
" if {$all != \"\"} {\n"
" append all \",\"\n"
" }\n"
@ -5993,6 +6003,8 @@ char gui_code[] = "";
" set qst $hmm\n"
" } elseif {$item == \"nevershared\"} {\n"
" set qst $hmm\n"
" } elseif {$item == \"gui\"} {\n"
" set qst $hmm\n"
" }\n"
"\n"
" if {![info exists menu_var($item)]} {\n"
@ -6967,15 +6979,19 @@ char gui_code[] = "";
"\n"
"set screen_height [winfo screenheight .]\n"
"set screen_width [winfo screenwidth .]\n"
"if {$screen_height < 500} {\n"
" # short screen, PDA?\n"
" set max_text_height 22\n"
" set text_height 13\n"
" if {$screen_height <= 360} {\n"
" # very short.\n"
" set max_text_height 16\n"
" set max_text_width 60\n"
" set text_height 11\n"
"if {$screen_height < 700} {\n"
" # short screen, netbook?\n"
" set max_text_height 30\n"
" if {$screen_height < 500} {\n"
" # short screen, PDA?\n"
" set max_text_height 22\n"
" set text_height 13\n"
" if {$screen_height <= 360} {\n"
" # very short.\n"
" set max_text_height 16\n"
" set max_text_width 60\n"
" set text_height 11\n"
" }\n"
" }\n"
"}\n"
"if {[info exists env(X11VNC_GUI_TEXT_HEIGHT)]} {\n"

@ -444,6 +444,9 @@ void unixpw_screen(int init) {
x = nfix(dpy_x / 2 - strlen(log) * char_w, dpy_x);
y = (int) (dpy_y / 3.5);
if (unixpw_system_greeter) {
y = (int) (dpy_y / 3);
}
if (scaling) {
x = (int) (x * scale_fac_x);
@ -461,7 +464,7 @@ void unixpw_screen(int init) {
pscreen = screen;
}
if (pscreen && pscreen->width >= 640) {
if (pscreen && pscreen->width >= 640 && pscreen->height >= 480) {
rfbDrawString(pscreen, &default6x13Font, 8, 2+1*13, "F1-Help:", white_pixel());
}
f1_help = 0;
@ -473,8 +476,8 @@ void unixpw_screen(int init) {
char moo[] = "Press 'Escape' for System Greeter";
rfbDrawString(pscreen, &default8x16Font, x-90, y-30, moo, white_pixel());
} else {
char moo1[] = "Press 'Escape' for New Session via System Greeter,";
char moo2[] = "or otherwise login here for Existing Session: ";
char moo1[] = "Press 'Escape' for a New Session via System Greeter, or";
char moo2[] = "otherwise login here to connect to an Existing Session:";
rfbDrawString(pscreen, &default6x13Font, x-110, y-38, moo1, white_pixel());
rfbDrawString(pscreen, &default6x13Font, x-110, y-25, moo2, white_pixel());
}
@ -1210,7 +1213,7 @@ int su_verify(char *user, char *pass, char *cmd, char *rbuf, int *rbuf_size, int
* auth sufficient pam_self.so
* it may be commented out without problem.
*/
for (i=0; i<sizeof(instr); i++) {
for (i=0; i< (int) sizeof(instr); i++) {
instr[i] = '\0';
}
@ -1253,7 +1256,7 @@ int su_verify(char *user, char *pass, char *cmd, char *rbuf, int *rbuf_size, int
if (i < -1) i = -1;
continue;
}
if (j >= sizeof(instr)-1) {
if (j >= (int) sizeof(instr)-1) {
rfbLog("su_verify: problem finding Password:\n");
fflush(stderr);
return 0;
@ -1700,14 +1703,20 @@ void unixpw_keystroke(rfbBool down, rfbKeySym keysym, int init) {
} else if (! down) {
return;
}
if (keysym == XK_F1 && pscreen && pscreen->width >= 640) {
char h1[] = "F1-Help: For 'login:' type in the username and press Enter, then for 'Password:' type in the password.";
if (keysym == XK_F1) {
char h1[] = "F1-Help: For 'login:' type in the username and press Enter, then for 'Password:' enter the password.";
char hf[] = " Once logged in, username's X session will be searched for and if found then attached to.";
char hc[] = " Once logged in, username's X session is sought and attached to, otherwise a new session is created.";
char hx[] = " Once logged in, username's X session is sought and attached to, otherwise a login greeter is presented.";
char h2[] = " Specify options after a ':' like this: username:opt,opt=val,... Where an opt may be any of:";
char h3[] = " scale=... (n/m); scale_cursor=... (sc=); solid (so); id=; repeat; clear_mods (cm); clear_keys (ck);";
char h4[] = " clear_all (ca); speeds=... (sp=); readtimeout=... (rd=) rotate=... (ro=); noncache (nc) (nc=n);";
char h5[] = " geom=WxHxD (ge=); nodisplay=... (nd=); viewonly (vo); tag=...; gnome kde twm fvwm mwm dtwm wmaker";
char h6[] = " xfce lxde enlightenment Xsession failsafe. Examples: fred:3/4,so,cm wilma:geom=1024x768x16,kde";
int ch = 13, p;
if (!pscreen || pscreen->width < 640 || pscreen->height < 480) {
return;
}
if (f1_help) {
p = black_pixel();
f1_help = 0;
@ -1717,13 +1726,24 @@ void unixpw_keystroke(rfbBool down, rfbKeySym keysym, int init) {
unixpw_last_try_time = time(NULL) + 45;
}
rfbDrawString(pscreen, &default6x13Font, 8, 2+1*ch, h1, p);
rfbDrawString(pscreen, &default6x13Font, 8, 2+2*ch, h2, p);
rfbDrawString(pscreen, &default6x13Font, 8, 2+3*ch, h3, p);
rfbDrawString(pscreen, &default6x13Font, 8, 2+4*ch, h4, p);
rfbDrawString(pscreen, &default6x13Font, 8, 2+5*ch, h5, p);
rfbDrawString(pscreen, &default6x13Font, 8, 2+6*ch, h6, p);
if (use_dpy == NULL) {
;
} else if (strstr(use_dpy, "cmd=FINDDISPLAY")) {
rfbDrawString(pscreen, &default6x13Font, 8, 2+2*ch, hf, p);
} else if (strstr(use_dpy, "cmd=FINDCREATEDISPLAY")) {
if (strstr(use_dpy, "xdmcp")) {
rfbDrawString(pscreen, &default6x13Font, 8, 2+2*ch, hx, p);
} else {
rfbDrawString(pscreen, &default6x13Font, 8, 2+2*ch, hc, p);
}
}
rfbDrawString(pscreen, &default6x13Font, 8, 2+3*ch, h2, p);
rfbDrawString(pscreen, &default6x13Font, 8, 2+4*ch, h3, p);
rfbDrawString(pscreen, &default6x13Font, 8, 2+5*ch, h4, p);
rfbDrawString(pscreen, &default6x13Font, 8, 2+6*ch, h5, p);
rfbDrawString(pscreen, &default6x13Font, 8, 2+7*ch, h6, p);
if (!f1_help) {
rfbDrawString(pscreen, &default6x13Font, 8, 2+1*ch, "F1-Help:", white_pixel());
rfbDrawString(pscreen, &default6x13Font, 8, 2+1*ch, "F1-Help:", white_pixel());
}
unixpw_mark();
return;

@ -2,7 +2,7 @@
.TH X11VNC "1" "December 2009" "x11vnc " "User Commands"
.SH NAME
x11vnc - allow VNC connections to real X11 displays
version: 0.9.10, lastmod: 2009-12-24
version: 0.9.10, lastmod: 2009-12-27
.SH SYNOPSIS
.B x11vnc
[OPTION]...

@ -5018,6 +5018,7 @@ int main(int argc, char* argv[]) {
}
if (dpy && !xrandr && !got_noxrandr) {
#if !NO_X11
Atom trap_xrandr = XInternAtom(dpy, "X11VNC_TRAP_XRANDR", True);
if (trap_xrandr != None) {
if (! quiet) {
@ -5025,6 +5026,7 @@ int main(int argc, char* argv[]) {
}
xrandr = 1;
}
#endif
}
#ifdef MACOSX

@ -47,7 +47,7 @@ int xtrap_base_event_type = 0;
int xdamage_base_event_type = 0;
/* date +'lastmod: %Y-%m-%d' */
char lastmod[] = "0.9.10 lastmod: 2009-12-24";
char lastmod[] = "0.9.10 lastmod: 2009-12-27";
/* X display info */

Loading…
Cancel
Save