Commit 4b89306d authored by runge's avatar runge

x11vnc: improve XFIXES cursor transparency, more remote-control cmds.

parent c9a69485
2004-12-27 Karl Runge <runge@karlrunge.com>
* x11vnc: improve alpha channel handling for XFIXES cursors.
* add more parameters to remote control.
2004-12-20 Johannes E. Schindelin <Johannes.Schindelin@gmx.de>
* released version 0.7
......
2004-12-27 Karl Runge <runge@karlrunge.com>
* allow -DLIBVNCSERVER_HAVE_FOO=0 override everything
* get_xfixes_cursor() try to more carefully convert alpha channel
to opaque pixel. Options -alphacut, -alphafrac, -alpharemove
* more commands under remote control: rfbwait, rfbport, http,
httpport, httpdir, enablehttpproxy, desktop, alwaysshared,
dontdisconnect. Add to tkx11vnc.
2004-12-22 Karl Runge <runge@karlrunge.com>
* final polishing for 0.7 release, tkx11vnc tweaks
* more careful rfbPE in pick_window, start check_user_input4()
......
This diff is collapsed.
......@@ -89,6 +89,7 @@ Clients
gone:
vncconnect
--
http
=F httpdir:
httpport:
enablehttpproxy
......@@ -167,6 +168,8 @@ Debugging
debug_pointer
debug_keyboard
=F logfile:
=GA show-logfile
=GA tail-logfile
quiet
--
=GA show-start-cmd
......@@ -187,9 +190,9 @@ Permissions
--
=RA noremote
--
alwaysshared
nevershared
dontdisconnect
=SA alwaysshared
=SA nevershared
=SA dontdisconnect
--
viewpasswd:
=F passwdfile:
......@@ -204,6 +207,9 @@ Tuning
=-C:1,2,3,4 pointer_mode:
input_skip:
nodragging
alphacut:
alphafrac:
alpharemove
--
=D noshm
flipbyteorder
......@@ -289,6 +295,15 @@ a -Q query. Examples: \"zero:20,20,100,100\", \"Q:ext_xfixes\"
set helptext(stop+quit) "
Send the stop command to the x11vnc server, then terminate the tkx11vnc gui.
"
set helptext(show-logfile) "
View the current contents of the logfile (if it exists and is accessible
by the gui process).
"
set helptext(tail-logfile) "
Run the tail(1) command with -f option on the logfile in an xterm.
"
set helptext(Quit) "
......@@ -392,6 +407,20 @@ Key Bindings:
Anywhere: Control-p invokes \"Actions -> ping\"
Anywhere: Control-u and Control-r invoke \"Actions -> update-all\"
Misc:
Since x11vnc has so many settings and to avoid further confusion,
the libvncserver options:
-alwaysshared
-nevershared
-dontdisconnect
are not available for changing in a running x11vnc (even though it
is feasible). These options overlap with the x11vnc options -shared
and -forever which are hopefully enough for most usage. They may be
specified for x11vnc startup if desired.
"
}
......@@ -506,8 +535,8 @@ proc active_when_starting {item} {
}
proc help_win {item} {
global helptext helpremote
global query_ans query_aro;
global helptext helpremote menu_var
global query_ans query_aro
set ok 0
set text "Help on $item:\n\n"
......@@ -551,6 +580,18 @@ proc help_win {item} {
set ok 1
}
if {![is_action $item] && [info exists menu_var($item)]} {
global unset_str
append text "\n\n"
append text "==== current $item value: ====\n";
append text "\n"
if {$menu_var($item) == ""} {
append text "$unset_str\n"
} else {
append text "$menu_var($item)\n"
}
}
if {$item == "start"} {
set str [get_start_x11vnc_txt]
append text $str
......@@ -799,15 +840,20 @@ proc menus_disable {} {
# Entry box utilities:
proc entry_state {x state} {
global entry_box entry_label entry_ok entry_help entry_skip entry_browse
global old_labels
if {$x == "all"} {
$entry_label configure -state $state
if {!$old_labels} {
$entry_label configure -state $state
}
$entry_box configure -state $state
$entry_ok configure -state $state
$entry_skip configure -state $state
$entry_help configure -state $state
$entry_browse configure -state $state
} elseif {$x == "label"} {
$entry_label configure -state $state
if {!$old_labels} {
$entry_label configure -state $state
}
} elseif {$x == "box"} {
$entry_box configure -state $state
} elseif {$x == "ok"} {
......@@ -1336,7 +1382,11 @@ proc query_all {{quiet 0}} {
}
proc set_info {str} {
global info_str
global info_str info_label
#set w1 [$info_label cget -width]
#set w2 [winfo width $info_label]
#puts "set_info: w=$w1 winfo=$w2"
#append_text "$str\n"
set info_str "$str"
update
}
......@@ -1360,6 +1410,55 @@ proc show_all_settings {} {
textwin "Settings" "All Current Settings" $txt
}
proc show_logfile {} {
global menu_var unset_str
set logfile $menu_var(logfile)
if {$logfile == "" || $logfile == $unset_str} {
set txt "\nNo logfile has been specified.\n\n"
} elseif {![file exists $logfile]} {
set txt "\nLogfile \"$logfile\" does not exist.\n\n"
} else {
set fh "-3"
set err ""
catch {set fh [open $logfile "r"]} err
if {$fh == "-3"} {
set txt "\nError opening \"$logfile\" $err.\n\n"
} else {
set txt "\nLogfile \"$logfile\" current contents:\n"
while {[gets $fh line] > -1} {
append txt "$line\n"
}
close $fh
}
}
textwin "Logfile" "Logfile" $txt
}
proc tail_logfile {} {
global menu_var unset_str
set logfile $menu_var(logfile)
set txt ""
if {$logfile == "" || $logfile == $unset_str} {
set txt "\nNo logfile has been specified.\n\n"
} elseif {![file exists $logfile]} {
set txt "\nLogfile \"$logfile\" does not exist.\n\n"
} else {
set cmd ""
set xterm_cmd "xterm -geometry 80x45 -title x11vnc-logfile -e"
set cmd [split $xterm_cmd]
lappend cmd "tail"
lappend cmd "+1f"
lappend cmd $logfile
lappend cmd "&"
catch {[eval exec $cmd]}
}
if {$txt != ""} {
textwin "Logfile" "Logfile" $txt
}
}
proc set_connected {yesno} {
global connected_to_x11vnc
set orig $connected_to_x11vnc
......@@ -1422,6 +1521,12 @@ proc do_action {item} {
} elseif {$item == "all-settings"} {
show_all_settings
return
} elseif {$item == "show-logfile"} {
show_logfile
return
} elseif {$item == "tail-logfile"} {
tail_logfile
return
} elseif {$item == "stop+quit"} {
push_new_value "stop" "stop" 1 0
set_connected no
......@@ -1666,7 +1771,7 @@ proc disconnect_dialog {client} {
append_text "Invalid client info string: $client\n"
return
}
append msg "*** To disconnect this client press \"OK\", otherwise press \"Skip\"\n"
append msg "*** To *DISCONNECT* this client press \"OK\", otherwise press \"Skip\"\n"
bell
if [warning_dialog $msg "current"] {
push_new_value "disconnect" "disconnect" $cid 1
......@@ -1757,17 +1862,19 @@ proc make_widgets {} {
global menu_b menu_m
global item_opts item_bool item_case item_entry menu_var unset_str
global item_cascade
global info_str x11_display vnc_display
global info_label info_str x11_display vnc_display
global text_area
global entry_box entry_str entry_set entry_label entry_ok entry_browse
global entry_help entry_skip
global bfont
global helptext helpremote helplabel
set v 0
label .info -textvariable info_str -bd 2 -relief groove -anchor w
pack .info -side top -fill x
set label_width 80
set info_label .info
label $info_label -textvariable info_str -bd 2 -relief groove \
-anchor w -width $label_width
pack $info_label -side top -fill x -expand 0
# Extract the Rows:
set row 0;
......@@ -1869,7 +1976,7 @@ set v 0
set item_cascade($item) ""
set item_entry($item) $menu_count($case)
if {$v} { puts "ITEM: $item - $opts - $case - $bool - $menu_count($case)" }
if {0} { puts "ITEM: $item - $opts - $case - $bool - $menu_count($case)" }
set mvar 0
set m $menu_m($case)
......@@ -1947,8 +2054,6 @@ if {$v} { puts "ITEM: $item - $opts - $case - $bool - $menu_count($case)" }
set m $menu_m($case);
set n [$m index end]
if {$v} { puts "$case end: $n" }
for {set i 0} {$i <= $n} {incr i} {
set type [$m type $i]
if {$type == "separator"} {
......@@ -1966,13 +2071,6 @@ if {$v} { puts "$case end: $n" }
$m add command -label $str \
-command "menu_help $label";
if {$v} {
set ht ""; set hr ""
if {[info exists helptext($label)]} { set ht "YES" }
if {[info exists helpremote($label)]} { set hr "YES" }
puts "'$label'\tht='$ht' hr='$hr'"
}
if {$str == ""} {
$m entryconfigure end -state disabled
}
......@@ -1994,11 +2092,13 @@ if {$v} {
set df_x11 "$df.xdisplay"
no_x11_display
label $df_x11 -textvariable x11_display -width 35 -anchor w
set lw [expr {$label_width / 2}]
label $df_x11 -textvariable x11_display -width $lw -anchor w
set df_vnc "$df.vdisplay"
no_vnc_display
label $df_vnc -textvariable vnc_display -width 35 -anchor w
label $df_vnc -textvariable vnc_display -width $lw -anchor w
pack $df_x11 $df_vnc -side left
pack $df -side top -fill x
......@@ -2016,7 +2116,7 @@ if {$v} {
set ef .entryframe
frame $ef -bd 1 -relief groove
# Label
# Entry Label
set ef_label "$ef.label"
label $ef_label -textvariable entry_str -anchor w -font $bfont
......@@ -2026,22 +2126,22 @@ if {$v} {
bind $ef_entry <KeyPress-Return> {set entry_set 1}
bind $ef_entry <KeyPress-Escape> {set entry_set 0}
# OK button
# Entry OK button
set ef_ok "$ef.ok"
button $ef_ok -text OK -pady 1 -command {set entry_set 1} \
-font $bfont
# Skip button
# Entry Skip button
set ef_skip "$ef.skip"
button $ef_skip -text Skip -pady 0 -command {set entry_set 0} \
-font $bfont
# Help button
# Entry Help button
set ef_help "$ef.help"
button $ef_help -text Help -pady 0 -command \
{menu_help $entry_dialog_item} -font $bfont
# Browse button
# Entry Browse button
set ef_browse "$ef.browse"
button $ef_browse -text "Browse..." -pady 0 -font $bfont \
-command {entry_insert [tk_getOpenFile]}
......@@ -2063,6 +2163,11 @@ if {$v} {
update
wm minsize . [winfo width .] [winfo height .]
#set w [winfo width .info]
#puts "w1: $w"
#set w [winfo reqwidth .info]
#puts "w2: $w"
}
proc menu_bindings {} {
......@@ -2329,13 +2434,13 @@ proc run_remote_cmd {opts} {
lappend cmd "2>"
lappend cmd "/dev/null"
if {0} {
set str [join $cmd]
puts "running: $str"
foreach word $cmd {
puts " word: $word"
if {0} {
set str [join $cmd]
puts "running: $str"
foreach word $cmd {
puts " word: $word"
}
}
}
set output ""
menus_disable
......@@ -2414,7 +2519,7 @@ global helpall helptext helpremote helplabel hostname;
global all_settings reply_xdisplay always_update
global max_text_height max_text_width
global menu_var unset_str menus_disabled
global bfont
global bfont old_labels
global connected_to_x11vnc
global delay_sleep extra_sleep extra_sleep_split
global cache_all_query_vars
......@@ -2436,6 +2541,12 @@ set delay_sleep 350
set extra_sleep 1000
set extra_sleep_split 4
if {[regexp {^[34]} $tk_version] || $tk_version == "8.0"} {
set old_labels 1
} else {
set old_labels 0
}
if {"$argv" == "-spit"} {
set fh [open $argv0 r]
puts "/*"
......
This diff is collapsed.
......@@ -2,7 +2,7 @@
.TH X11VNC "1" "December 2004" "x11vnc " "User Commands"
.SH NAME
x11vnc - allow VNC connections to real X11 displays
version: 0.7pre, lastmod: 2004-12-23
version: 0.7.1pre, lastmod: 2004-12-27
.SH SYNOPSIS
.B x11vnc
[OPTION]...
......@@ -573,6 +573,13 @@ default (see \fB-noxfixes\fR below). This can be disabled
with \fB-nocursor,\fR and also some values of the "mode"
option below.
.IP
Note that under XFIXES cursors with transparency
(alpha channel) will not be exactly represented and
so Overlay may be preferred. See also the \fB-alphacut\fR
and \fB-alphafrac\fR options below as fudge factors to try
to improve the situation for cursors with transparency
for a given theme.
.IP
The "mode" string can be used to fine-tune the
displaying of cursor shapes. It can be used the
following ways:
......@@ -608,6 +615,37 @@ is not available, \fB-overlay\fR mode will be attempted.
Do not use the XFIXES extension to draw the exact cursor
shape even if it is available.
.PP
\fB-alphacut\fR \fIn\fR
.IP
When using the XFIXES extension for the cursor shape,
cursors with transparency will not be displayed exactly
(but opaque ones will). This option sets n as a cutoff
for cursors that have transparency ("alpha channel"
with values ranging from 0 to 255) Any cursor pixel with
alpha value less than n becomes completely transparent.
Otherwise the pixel is completely opaque. Default 255
.IP
Note: the options \fB-alphacut,\fR \fB-alphafrac,\fR and \fB-alphafrac\fR
may be removed if a more accurate internal method for
handling cursor transparency is implemented.
.PP
\fB-alphafrac\fR \fIfraction\fR
.IP
With the threshold in \fB-alphacut\fR some cursors will become
almost completely transparent because their alpha values
are not high enough. For those cursors adjust the
alpha threshold until fraction of the non-zero alpha
channel pixels become opaque. Default 0.33
.PP
\fB-alpharemove\fR
.IP
By default, XFIXES cursors pixels with transparency have
the alpha factor multiplied into the RGB color values
(i.e. that corresponding to blending the cursor with a
black background). Specify this option to remove the
alpha factor. (useful for light colored semi-transparent
cursors).
.PP
\fB-nocursorshape\fR
.IP
Do not use the TightVNC CursorShapeUpdates extension
......@@ -998,18 +1036,24 @@ norepeat enable \fB-norepeat\fR mode.
.IP
repeat disable \fB-norepeat\fR mode.
.IP
nofb enable \fB-nofb\fR mode.
.IP
fb disable \fB-nofb\fR mode.
.IP
bell enable bell (if supported).
.IP
nobell disable bell.
.IP
sel disable \fB-nosel\fR mode.
bell enable bell (if supported).
.IP
nosel enable \fB-nosel\fR mode.
.IP
primary disable \fB-noprimary\fR mode.
sel disable \fB-nosel\fR mode.
.IP
noprimary enable \fB-noprimary\fR mode.
.IP
primary disable \fB-noprimary\fR mode.
.IP
cursor:mode enable \fB-cursor\fR "mode".
.IP
show_cursor enable showing a cursor.
......@@ -1021,6 +1065,14 @@ xfixes enable xfixes cursor shape mode.
.IP
noxfixes disable xfixes cursor shape mode.
.IP
alphacut:n set \fB-alphacut\fR to n.
.IP
alphafrac:f set \fB-alphafrac\fR to f.
.IP
alpharemove enable \fB-alpharemove\fR mode.
.IP
noalpharemove disable \fB-alpharemove\fR mode.
.IP
cursorshape disable \fB-nocursorshape\fR mode.
.IP
nocursorshape enable \fB-nocursorshape\fR mode.
......@@ -1055,6 +1107,8 @@ defer:n set \fB-defer\fR to n ms,same as deferupdate:n
.IP
wait:n set \fB-wait\fR to n ms.
.IP
rfbwait:n set \fB-rfbwait\fR (rfbMaxClientWait) to n ms.
.IP
nap enable \fB-nap\fR mode.
.IP
nonap disable \fB-nap\fR mode.
......@@ -1072,8 +1126,36 @@ fuzz:n set \fB-fuzz\fR to n.
progressive:n set libvncserver \fB-progressive\fR slice
height parameter to n.
.IP
file:name run \fB-remote\fR commands from file "name",
one command per line,blank and # skipped
desktop:str set \fB-desktop\fR name to str for new clients.
.IP
rfbport:n set \fB-rfbport\fR to n.
.IP
http enable http client connections.
.IP
nohttp disable http client connections.
.IP
httpport:n set \fB-httpport\fR to n.
.IP
httpdir:dir set \fB-httpdir\fR to dir (and enable http).
.IP
enablehttpproxy enable \fB-enablehttpproxy\fR mode.
.IP
noenablehttpproxy disable \fB-enablehttpproxy\fR mode.
.IP
alwaysshared enable \fB-alwaysshared\fR mode.
.IP
noalwaysshared disable \fB-alwaysshared\fR mode.
(may interfere with other options)
.IP
nevershared enable \fB-nevershared\fR mode.
.IP
nonevershared disable \fB-nevershared\fR mode.
(may interfere with other options)
.IP
dontdisconnect enable \fB-dontdisconnect\fR mode.
.IP
nodontdisconnect disable \fB-dontdisconnect\fR mode.
(may interfere with other options)
.IP
noremote disable the \fB-remote\fR command processing,
it cannot be turned back on.
......@@ -1138,33 +1220,37 @@ noflashcmap truecolor notruecolor overlay nooverlay
overlay_cursor overlay_yescursor nooverlay_nocursor
nooverlay_cursor nooverlay_yescursor overlay_nocursor
visual scale viewonly noviewonly shared noshared
forever noforever once deny lock nodeny unlock connect
allowonce allow localhost nolocalhost accept gone shm
noshm flipbyteorder noflipbyteorder onetile noonetile
blackout xinerama noxinerama xrandr noxrandr xrandr_mode
padgeom quiet q noquiet modtweak nomodtweak xkb noxkb
skip_keycodes add_keysyms noadd_keysyms clear_mods
noclear_mods clear_keys noclear_keys remap repeat
norepeat bell nobell sel nosel primary noprimary
cursorshape nocursorshape cursorpos nocursorpos cursor
show_cursor noshow_cursor nocursor xfixes noxfixes xwarp
xwarppointer noxwarp noxwarppointer buttonmap dragging
nodragging pointer_mode input_skip debug_pointer dp
nodebug_pointer nodp debug_keyboard dk nodebug_keyboard
nodk deferupdate defer wait nap nonap sb screen_blank
fs gaps grow fuzz progressive noremote
.IP
aro= display vncdisplay desktopname desktop auth
rootshift scale_str scaled_x scaled_y scale_numer
scale_denom scale_fac scaling_noblend scaling_nomult4
scaling_pad scaling_interpolate inetd safer unsafe
passwdfile using_shm logfile o rc norc h help V version
lastmod bg nofb sigpipe threads clients client_count
pid ext_xtest ext_xkb ext_xshm ext_xinerama ext_overlay
ext_xfixes ext_xdamage ext_xrandr rootwin num_buttons
button_mask mouse_x mouse_y bpp depth indexed_color
dpy_x dpy_y rfbport rfbwait rfbauth passwd alwaysshared
dontdisconnect httpdir enablehttpproxy
forever noforever once deny lock nodeny unlock
connect allowonce allow localhost nolocalhost accept
gone shm noshm flipbyteorder noflipbyteorder onetile
noonetile blackout xinerama noxinerama xrandr noxrandr
xrandr_mode padgeom quiet q noquiet modtweak nomodtweak
xkb noxkb skip_keycodes add_keysyms noadd_keysyms
clear_mods noclear_mods clear_keys noclear_keys
remap repeat norepeat fb nofb bell nobell sel
nosel primary noprimary cursorshape nocursorshape
cursorpos nocursorpos cursor show_cursor noshow_cursor
nocursor xfixes noxfixes alphacut alphafrac alpharemove
noalpharemove xwarp xwarppointer noxwarp noxwarppointer
buttonmap dragging nodragging pointer_mode input_skip
debug_pointer dp nodebug_pointer nodp debug_keyboard
dk nodebug_keyboard nodk deferupdate defer wait
rfbwait nap nonap sb screen_blank fs gaps grow fuzz
progressive rfbport http nohttp httpport httpdir
enablehttpproxy noenablehttpproxy alwaysshared
noalwaysshared nevershared noalwaysshared dontdisconnect
nodontdisconnect desktop noremote
.IP
aro= display vncdisplay desktopname auth rootshift
scale_str scaled_x scaled_y scale_numer scale_denom
scale_fac scaling_noblend scaling_nomult4 scaling_pad
scaling_interpolate inetd safer unsafe passwdfile
using_shm logfile o rc norc h help V version lastmod
bg sigpipe threads clients client_count pid ext_xtest
ext_xkb ext_xshm ext_xinerama ext_overlay ext_xfixes
ext_xdamage ext_xrandr rootwin num_buttons button_mask
mouse_x mouse_y bpp depth indexed_color dpy_x dpy_y
rfbauth passwd
.PP
\fB-sync\fR
.IP
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment