diff options
author | runge <runge> | 2005-07-18 02:21:14 +0000 |
---|---|---|
committer | runge <runge> | 2005-07-18 02:21:14 +0000 |
commit | 37f23b2c074e6cde6d5fa0387cdef1517bdedb0c (patch) | |
tree | 6a637d1427d9409bb55c224ed51feef5ffabfaa1 /x11vnc/tkx11vnc | |
parent | 57d2ea65910a122d6011e205e20388518b9d68e5 (diff) | |
download | libtdevnc-37f23b2c074e6cde6d5fa0387cdef1517bdedb0c.tar.gz libtdevnc-37f23b2c074e6cde6d5fa0387cdef1517bdedb0c.zip |
x11vnc: more gui fixes, gui requests via client_sock, PASSWD_REQUIRED build opt.
Diffstat (limited to 'x11vnc/tkx11vnc')
-rwxr-xr-x | x11vnc/tkx11vnc | 454 |
1 files changed, 386 insertions, 68 deletions
diff --git a/x11vnc/tkx11vnc b/x11vnc/tkx11vnc index 4549c11..b642909 100755 --- a/x11vnc/tkx11vnc +++ b/x11vnc/tkx11vnc @@ -22,7 +22,7 @@ catch {rename send {}} # USA. # -# tkx11vnc v0.1 +# tkx11vnc v0.2 # This is a simple frontend to x11vnc. It uses the remote control # and query features (-remote/-query aka -R/-Q) to interact with it. # It is just a quick-n-dirty hack (it parses -help output, etc), but @@ -559,7 +559,9 @@ of actions: Pressing \"OK\" will initiate the reverse connection. Use a blank hostname to skip it. - Disconnect All - Disconnects all current VNC viewers. + Disconnect - Shows a popup menu of connected clients. Click on + one to disconnect it, or click on \"All Clients\" + disconnect all clients. Window View - Switch between the \"full\" gui (also known as \"Advanced\"), \"icon\" mode (small icon window with @@ -571,11 +573,29 @@ of actions: and then exit. The tray/icon GUI then exits as well. +Termination: + If the x11vnc server stops for any reason, the tray/icon gui will exit. If you delete the tray/icon (e.g. X out button), that is the same as the \"Stop x11vnc\" action in the menu. (This will disconnect any -VNC viewer you are currently using to access the display). +VNC viewer you are currently using to access the display since the +x11vnc server is terminated). + +To terminate the tray/icon gui window but not the x11vnc server press +Control-C on the tray/icon window. You can also do this (and much +more) via Properties -> Advanced -> Actions -> Quit +" + + set helptext(NewClient) " + New Client - Presents an entry box where you type in the name + of a computer that is running a VNC viewer in + \"listen\" mode (e.g. vncviewer -listen). For a + non-standard listening port use \"host:port\". + + Pressing \"OK\" will initiate the reverse + connection. Use a blank hostname to skip it. + " set helptext(Properties) " @@ -622,7 +642,39 @@ the ViewOnly log in aspect: \"Password\" is still required to log in. - The \"Advanced ...\" button replaces the Properties dialog with the full tkx11vnc GUI. All dynamic settings can be modified in the full GUI. -" + + +-------------------------------------------------------------------- +Don't Lock Yourself Out: + + If you are sitting at the physical X display you cannot get into too + much trouble setting the Properties dialog values. + + However IF you are using a VNC Viewer to REMOTELY access the X display + some items in the Properties dialog can lock you out of further access: + + \"Accept Connections\" if you disable this remotely, and + accidentally disconnect your VNC viewer then you will not be + able to reconnect. + + \"Ask for Confirmation\" if you enable this only someone + sitting at the X display can confirm any new VNC connections. + Furthermore, any current VNC viewers will be blocked while + waiting for the confirmation (times out in 120 sec by default). + + \"All Clients ViewOnly\" if you enable this remotely, well + you can no longer provide input to disable it. + + If you do lock yourself out you could log in remotely and start up + a second x11vnc and connect to that one to try to fix things in the + first one. + + Note that if there are two or more x11vnc's on the same display the + use of the GUI may be ill-behaved. Terminate the second x11vnc as + soon as you have fixed the setting in the first one. Use of a remote + control command, e.g. \"x11vnc -R noviewonly\" or \"x11vnc -R unlock\" + is a good way to avoid this problem. +" set helptext(all) $helpall @@ -1099,10 +1151,11 @@ proc set_name {name} { if {![info exists full_win]} { return } + set w "." if {$icon_mode} { + wm title $w "$name" + wm iconname $w "$name" set w $full_win - } else { - set w "." } wm title $w "$name" wm iconname $w "$name" @@ -2635,14 +2688,32 @@ proc append_text {str} { proc show_all_settings {} { global all_settings - set txt "\nRead-Write setting:\n\n" + global client_sock client_tail + global x11vnc_client_file + + set txt "\nRead-Write settings:\n\n" foreach item [split_query $all_settings] { regsub {:} $item {: } item append txt " $item\n" if {[regexp {noremote} $item]} { - append txt "\nRead-Only setting:\n\n" + append txt "\nRead-Only settings:\n\n" } } + append txt "\nInternal settings:\n\n" + append txt "x11vnc_client_file: $x11vnc_client_file\n" + if {[info exists client_tail]} { + append txt "client_tail: $client_tail\n" + } else { + append txt "client_tail: unset\n" + } + if {[info exists client_sock]} { + append txt "client_sock: $client_sock\n" + } else { + append txt "client_sock: unset\n" + } + set estr "" + catch {set estr [exec env | grep -i X11VNC]} + append txt "$estr\n" textwin "Settings" "All Current Settings" $txt } @@ -3573,16 +3644,15 @@ proc make_menu_items {} { } } -proc menu_posted {} { +proc check_update_vars {} { global last_query_all_time query_all_freq icon_mode - global connected_to_x11vnc client_tail + global connected_to_x11vnc client_tail client_sock set now [clock seconds] - if {$icon_mode && $client_tail != ""} { + set delay $query_all_freq + if {$client_tail != "" && $client_sock == ""} { set delay [expr 2 * $query_all_freq] - } else { - set delay $query_all_freq } if {$connected_to_x11vnc} { @@ -3602,6 +3672,10 @@ proc menu_posted {} { } } +proc menu_posted {} { + check_update_vars +} + proc props_widgets {state} { global props_buttons foreach w $props_buttons { @@ -3616,20 +3690,30 @@ proc props_apply {} { global prop0_accept prop0_confirm prop0_viewonly prop0_shared global prop0_passwd prop0_viewpasswd global menu_var + global client_sock props_widgets disabled + set aft 500 + if {[info exists client_sock]} { + if {$client_sock != ""} { + set aft 150 + } + } + set did 0 + if {$props_accept != $prop0_accept} { + if {$did > 0} {after $aft}; incr did if {$props_accept} { push_new_value "unlock" "unlock" 1 0 } else { push_new_value "lock" "lock" 1 0 } set prop0_accept $props_accept - after 500 } if {$props_confirm != $prop0_confirm} { + if {$did > 0} {after $aft}; incr did if {$props_confirm} { push_new_value "accept" "accept" "popup" 1 } else { @@ -3641,10 +3725,10 @@ proc props_apply {} { set props_confirm 0 } set prop0_confirm $props_confirm - after 500 } if {$props_viewonly != $prop0_viewonly} { + if {$did > 0} {after $aft}; incr did if {$props_viewonly} { push_new_value "viewonly" "viewonly" 1 1 } else { @@ -3656,10 +3740,10 @@ proc props_apply {} { set props_viewonly 0 } set prop0_viewonly $props_viewonly - after 500 } if {$props_shared != $prop0_shared} { + if {$did > 0} {after $aft}; incr did if {$props_shared} { push_new_value "shared" "shared" 1 1 } else { @@ -3671,7 +3755,6 @@ proc props_apply {} { set props_shared 0 } set prop0_shared $props_shared - after 500 } set fpw 0 @@ -3736,14 +3819,14 @@ proc props_apply {} { foreach case $pw_ord { if {$case == "fpw"} { + if {$did > 0} {after $aft}; incr did push_new_value "passwd" "passwd" "$props_passwd" 1 set prop0_passwd $props_passwd - after 500 } if {$case == "vpw"} { + if {$did > 0} {after $aft}; incr did push_new_value "viewpasswd" "viewpasswd" "$props_viewpasswd" 1 set prop0_viewpasswd $props_viewpasswd - after 500 } } @@ -3779,6 +3862,8 @@ proc do_props {{msg ""}} { global have_labelframes ffont bfont global props_buttons icon_noadvanced + check_update_vars + if [info exists menu_var(deny)] { if {$menu_var(deny) == $unset_str || $menu_var(deny) == 0} { set props_accept 1 @@ -3856,6 +3941,8 @@ proc do_props {{msg ""}} { button $b1.cancel -text Cancel -command "destroy $w" -font $bfont button $b1.apply -text Apply -command "props_apply" -font $bfont + bind $w <KeyPress-Escape> "destroy $w" + pack $b1.apply $b1.cancel $b1.ok -side right -expand 1 lappend props_buttons $b1.apply $b1.cancel $b1.ok @@ -3965,11 +4052,12 @@ proc do_new_client {} { set newclient "" entry $w.e -width 16 -textvariable newclient -font $bfont button $w.b -text OK -command "destroy $w" -font $bfont + button $w.h -text Help -command "menu_help NewClient" -font $bfont bind $w.e <Return> "update; after 100; destroy $w" wm title $w "New Client" - pack $w.l $w.e $w.b -side left -pady 1m -padx 1m + pack $w.l $w.e $w.h $w.b -side left -pady 1m -padx 0.5m focus $w.e center_win $w update @@ -3987,6 +4075,43 @@ proc do_disconnect_all {} { push_new_value "disconnect" "disconnect" "all" 1 } +proc do_disconnect_client {id} { + push_new_value "disconnect" "disconnect" "$id" 1 +} + +proc popup_post {m} { + global popup_cascade_posted client_balloon + global client_id_list + + set popup_cascade_posted 0 + + set wd "$m.disconnect" + + if {![winfo exists $wd]} { + return + } + + catch {$wd delete 0 end} + + $wd add command -label "Disconnect client:" + $wd add separator + $wd add command -label "All Clients" -command do_disconnect_all + + if {![info exists client_id_list]} { + return + } + + foreach client $client_id_list { + if {$client == ""} { + continue + } + if {[regexp {^([^:]*):(.*)$} $client mat id lab]} { + $wd add command -label "$lab" \ + -command "do_disconnect_client $id" + } + } +} + proc pmenu {m x y} { if {![winfo exists $m]} { return @@ -3998,6 +4123,9 @@ proc pmenu {m x y} { proc set_client_balloon {str} { global client_balloon vnc_display + global client_id_list + + set client_id_list [list] set client_balloon "$vnc_display" set count 0 @@ -4023,8 +4151,10 @@ proc set_client_balloon {str} { set client_balloon "${client_balloon}\n$user\@$host" if {$vo == "1"} { set client_balloon "${client_balloon} - view" + lappend client_id_list "$id:$user\@$host - view" } else { set client_balloon "${client_balloon} - full" + lappend client_id_list "$id:$user\@$host - full" } } else { set i [expr $count+1] @@ -4038,26 +4168,37 @@ proc set_client_balloon {str} { icon_win_cfg $count } -proc read_client_info {} { - global x11vnc_client_file client_tail client_str - global client_tail_read +proc read_client_info {channel} { + global x11vnc_client_file client_str client_info_read + global read_client_info_lock set db 0 - if {$client_tail != ""} { + if {![info exists read_client_info_lock]} { + set read_client_info_lock 0 + } + + if {$channel != ""} { + + if {$read_client_info_lock} { + return + } + set read_client_info_lock 1 after 100 set str "" - set count [gets $client_tail str] - if {$db} {puts stderr "read_client_info: $str"} + set count [gets $channel str] + if {$db} {puts stderr "read_client_info-$channel: $str"} - if {$count == -1 || [eof $client_tail]} { - close $client_tail + if {$count == -1 || [eof $channel]} { + close $channel catch {file delete $x11vnc_client_file} + set read_client_info_lock 0 clean_icon_exit } if {$count > 0 && ![regexp {^[ ]*$} $str]} { - set client_tail_read 1 + set client_info_read 1 if {$str == "quit"} { catch {file delete $x11vnc_client_file} + set read_client_info_lock 0 clean_icon_exit } elseif {$str != "skip"} { if {$str == "none"} { @@ -4068,6 +4209,23 @@ proc read_client_info {} { set_client_balloon $str } } + set read_client_info_lock 0 + } +} + +proc read_client_tail {} { + global client_tail + + if {$client_tail != ""} { + read_client_info $client_tail + } +} + +proc read_client_sock {} { + global client_sock + + if {$client_sock != ""} { + read_client_info $client_sock } } @@ -4129,20 +4287,30 @@ proc kill_client_balloon {} { } proc icon_win_cfg {clients} { - global icon_win client_tail client_tail_read + global icon_win client_tail client_sock client_info_read + + if {![info exists icon_win]} { + return + } + if {$icon_win == ""} { + return + } if {$clients > 0} { $icon_win configure -bg black -fg white } else { $icon_win configure -bg white -fg black } - if {$client_tail == "" || !$client_tail_read} { - $icon_win configure -fg red + + if {$client_tail == "" || !$client_info_read} { + if {$client_sock == ""} { + $icon_win configure -fg red + } } } proc server_accept {sock addr port} { global socket_cookie server socket_got_callback - global client_tail + global client_tail client_sock set db 0 if {$db} {puts stderr "sock=$sock addr=$addr port=$port"} @@ -4156,8 +4324,8 @@ proc server_accept {sock addr port} { set str [string trim $str] if {$db} {puts stderr "server_accept: \"$str\""} if {$str == "COOKIE:$socket_cookie"} { - set client_tail $sock - if {$db} {puts stderr "cookie matched. $client_tail"} + set client_sock $sock + if {$db} {puts stderr "cookie matched. $client_sock"} } else { if {$db} {puts stderr "cookie NO matched."} } @@ -4169,17 +4337,39 @@ proc server_accept {sock addr port} { proc try_client_info_sock {} { global socket_cookie server socket_got_callback - global x11vnc_started hostname + global x11vnc_started x11vnc_xdisplay hostname client_sock + global x11vnc_xdisplay0 menu_var + + set db 0 set start 13037 set tries 100 set socket_got_callback 0 + set xd $x11vnc_xdisplay + if {$xd == "" && $x11vnc_xdisplay0 != ""} { + set xd $x11vnc_xdisplay0 + } + if {$xd == "" && [info exists menu_var(display)]} { + set xd $menu_var(display) + } + + set myaddr "" + regsub {\..*$} $hostname "" shost if {$x11vnc_started} { set myaddr "127.0.0.1" + } elseif {$xd != ""} { + if {[regexp {^:} $xd]} { + set myaddr "127.0.0.1" + } elseif {[regexp -nocase "^$shost" $xd]} { + set myaddr "127.0.0.1" + } elseif {[regexp -nocase "^localhost" $xd]} { + set myaddr "127.0.0.1" + } else { + set myaddr $hostname + } } else { set myaddr $hostname } - set socket_cookie [clock clicks] for {set i 0} {$i <= $tries} {incr i} { set port [expr $start + $i] @@ -4203,8 +4393,25 @@ proc try_client_info_sock {} { } run_remote_cmd [list "-nosync" "-R" "noop"] after 500 + + # set the cookie to some obscured randomness + set socket_cookie [clock clicks] + set r [expr rand()] + if {$r != ""} { + append socket_cookie $r + } + set r "" + catch {set r [winfo id .]} + if {$r != ""} { + append socket_cookie $r + } + if {[regexp {([0-9])([0-9])$} [clock clicks] m m1 m2]} { + regsub -all {\.} $socket_cookie $m1 socket_cookie + regsub -all {x} $socket_cookie $m2 socket_cookie + } run_remote_cmd [list "-nosync" "-R" \ "client_info_sock:$myaddr:$port:$socket_cookie"] + if {$db} {puts "client_info_sock:$myaddr:$port:$socket_cookie"} after 500 set aftid "" @@ -4221,7 +4428,7 @@ proc try_client_info_sock {} { puts stderr "try_client_info_sock failed: no callback\n" catch {close $server} } else { - setup_client_tail + setup_client_sock 1 } } @@ -4252,11 +4459,11 @@ proc get_icon_label {{set 0}} { } proc lmenu {menu} { - global window_view_posted + global popup_cascade_posted after 100 - if {!$window_view_posted} { + if {!$popup_cascade_posted} { after 100 - if {!$window_view_posted} { + if {!$popup_cascade_posted} { $menu unpost return } @@ -4286,11 +4493,11 @@ proc old_balloon {} { proc make_icon {} { global icon_mode icon_embed_id icon_win props_win full_win global tray_embed tray_running env - global x11vnc_client_file client_tail client_str saved_clients_str + global x11vnc_client_file client_tail client_sock client_str saved_clients_str global client_balloon_id global bfont sfont snfont ffont global icon_minimal gui_start_mode - global window_view_posted menu_var x11vnc_gui_geom + global popup_cascade_posted menu_var x11vnc_gui_geom set min_x 24 set min_y 24 @@ -4331,28 +4538,37 @@ proc make_icon {} { icon_win_cfg 0 - set window_view_posted 0 + set popup_cascade_posted 0 pack $l -fill both -expand 1 set menu "$l.menu" - menu $menu -tearoff 0 -postcommand {set window_view_posted 0} + menu $menu -tearoff 0 -postcommand "popup_post $menu" $menu add command -font $mfont -label "Properties" -command do_props $menu add command -font $mfont -label "Help" -command "menu_help Tray" $menu add separator $menu add command -font $mfont -label "New Client" -command do_new_client - $menu add command -font $mfont -label "Disconnect All" -command do_disconnect_all + + set wd "$menu.disconnect" + catch {destroy $wd} + menu $wd -tearoff 0 -font $ffont \ + -postcommand {set popup_cascade_posted 1} + $wd add command -label "Disconnect client:" + $wd add separator + $wd add command -label "All Clients" -command do_disconnect_all + $menu add cascade -font $mfont -label "Disconnect:" -menu $wd + $menu add separator - set wv "$menu.casc1" + set wv "$menu.windowview" catch {destroy $wv} menu $wv -tearoff 0 -font $ffont \ - -postcommand {set window_view_posted 1} + -postcommand {set popup_cascade_posted 1} foreach val {full icon tray} { $wv add radiobutton -label "$val" \ -value "$val" -font $ffont \ -command "do_var WindowView" \ -variable menu_var(WindowView) } - $menu add cascade -font $mfont -label "Window View" -menu $wv + $menu add cascade -font $mfont -label "Window View:" -menu $wv $menu add command -font $mfont -label "Stop x11vnc" -command clean_icon_exit @@ -4363,7 +4579,9 @@ proc make_icon {} { bind $icon_win <Leave> {kill_client_balloon} bind $icon_win <ButtonPress-2> {kill_client_balloon; show_client_balloon} bind $menu <Leave> "lmenu $menu" - bind $menu <KeyPress-Escape> "$menu unpost" +## bind $menu <KeyPress-Escape> "$menu unpost" + + bind . <Control-KeyPress-c> {destroy .; exit 0} if {!$tray_embed || !$tray_running} { global x11vnc_gui_geom @@ -4379,18 +4597,27 @@ proc make_icon {} { } } } + wm iconname . "tkx11vnc" + wm title . "tkx11vnc" wm deiconify . - if {$client_tail == "" } { + old_balloon +} + +proc setup_client_channel {} { + global client_sock client_tail + +# XXX/setup_client_channel + if {$client_sock == "" } { stop_watch on try_client_info_sock - if {$client_tail == "" } { + if {$client_sock == "" } { after 500 try_client_info_sock } stop_watch off } - if {$client_tail == "" } { + if {$client_tail == "" && $client_sock == ""} { set m "\n" set m "${m}tkx11vnc:\n" set m "${m}\n" @@ -4405,12 +4632,10 @@ proc make_icon {} { textwin "Warning" "Warning" $m update } - - old_balloon } proc clean_client_tail {} { - global client_tail client_tail_read + global client_tail client_info_read if [info exists client_tail] { if {$client_tail != ""} { set p "" @@ -4422,7 +4647,7 @@ proc clean_client_tail {} { set client_tail "" } } - set client_tail_read 0 + set client_info_read 0 } proc clean_icon_exit {} { @@ -4521,6 +4746,7 @@ proc make_gui {mode} { center_win . } + if {$make_gui_count == 1} { copy_default_vars if {$x11vnc_connect} { @@ -4531,13 +4757,13 @@ proc make_gui {mode} { } else { set_name "RESTORE" } + + setup_client_tail + set_widgets - if {$mode == "icon" || $mode == "tray"} { - setup_client_tail - if {$mode == "tray"} { - setup_tray_embed - } + if {$mode == "tray"} { + setup_tray_embed } } @@ -4776,7 +5002,7 @@ proc key_bindings {} { global env menus_disabled if {[info exists env(USER)] && $env(USER) == "runge"} { # quick restart - bind . <Control-KeyPress-c> {exec $argv0 $argv &; destroy .} + bind . <Control-KeyPress-k> {exec $argv0 $argv &; destroy .} } bind . <Control-KeyPress-p> { \ global menus_disabled; \ @@ -5172,9 +5398,67 @@ proc start_x11vnc {} { } } +proc run_remote_cmd_via_sock {opts} { + global client_sock + + set db 0 + if {[eof $client_sock]} { + close $client_sock + set client_sock "" + return "fail" + } + set result "" + + setup_client_sock 0 + + set docmd "" + foreach opt $opts { + if {$opt == "-R"} { + set docmd "-R" + continue + } elseif {$opt == "-Q"} { + set docmd "-Q" + continue + } + + if {$docmd == ""} { + continue + } elseif {$docmd == "-R"} { + set str "cmd=$opt" + } elseif {$docmd == "-Q"} { + set str "qry=$opt" + } else { + set docmd "" + continue + } + + if {$db} {puts stderr "run_remote_cmd_via_sock: $docmd \"$str\""} + puts $client_sock $str + if {$db} {puts stderr "run_remote_cmd_via_sock: flush"} + flush $client_sock + if {$db} {puts stderr "run_remote_cmd_via_sock: gets"} + gets $client_sock res + if {$db} {puts stderr "run_remote_cmd_via_sock: \"$res\""} + set res [string trim $res] + + set docmd "" + + if {$res != ""} { + append result "$res\n" + } + } + + setup_client_sock 1 + + set result [string trim $result] + + return $result +} + proc run_remote_cmd {opts} { global menu_var x11vnc_prog x11vnc_cmdline x11vnc_xdisplay global x11vnc_auth_file x11vnc_connect_file + global client_sock set debug [in_debug_mode] @@ -5189,6 +5473,17 @@ proc run_remote_cmd {opts} { } } + if {$client_sock != ""} { + menus_disable + stop_watch on + set result [run_remote_cmd_via_sock $opts] + stop_watch off + menus_enable + if {$result != "fail"} { + return $result + } + } + set cmd "" lappend cmd $x11vnc_prog; @@ -5212,7 +5507,6 @@ proc run_remote_cmd {opts} { } lappend cmd "2>" lappend cmd "/dev/null" -# lappend cmd "/tmp/nono" if {0 || $debug} { set str [join $cmd] @@ -5228,7 +5522,6 @@ proc run_remote_cmd {opts} { stop_watch on catch {set output [eval exec $cmd]} stop_watch off -#puts stderr [exec cat /tmp/nono] menus_enable if {$debug} { @@ -5259,6 +5552,8 @@ proc try_connect {} { global x11vnc_xdisplay connected_to_x11vnc reply_xdisplay global menu_var unset_str + set db 0 + if {! $connected_to_x11vnc} { if {[info exists menu_var(display)]} { set d $menu_var(display) @@ -5273,12 +5568,19 @@ proc try_connect {} { set rargs [list "-Q" "ping"] set result [run_remote_cmd $rargs] + if {$db} {puts "try_connect: \"$result\""} + if {[regexp {^ans=ping:} $result]} { regsub {^ans=ping:} $result {} reply_xdisplay set msg "Connected to $reply_xdisplay" set_info $msg append_text "$msg\n" set_connected yes + + setup_client_channel + setup_client_sock 1 + setup_client_tail + fetch_displays return 1 } else { @@ -5344,7 +5646,18 @@ proc change_view_state {} { proc setup_client_tail {} { global client_tail if {$client_tail != ""} { - fileevent $client_tail readable read_client_info + fileevent $client_tail readable read_client_tail + } +} + +proc setup_client_sock {{enable 1}} { + global client_sock + if {$client_sock != ""} { + if {$enable} { + fileevent $client_sock readable read_client_sock + } else { + fileevent $client_sock readable "" + } } } @@ -5438,6 +5751,7 @@ proc undo_tray_embed {} { # main: global env x11vnc_prog x11vnc_cmdline x11vnc_xdisplay x11vnc_connect; +global x11vnc_xdisplay0 global x11vnc_client_file x11vnc_gui_geom x11vnc_started vnc_url global x11vnc_gui_params global x11vnc_auth_file x11vnc_connect_file beginner_mode simple_gui_created @@ -5449,7 +5763,7 @@ global bfont ffont sfont snfont old_labels have_labelframes global connected_to_x11vnc global delay_sleep extra_sleep extra_sleep_split global cache_all_query_vars -global last_query_all_time query_all_freq client_tail client_tail_read +global last_query_all_time query_all_freq client_tail client_sock client_info_read global icon_mode tray_embed tray_running icon_setpasswd icon_embed_id global icon_noadvanced icon_minimal global make_gui_count text_area_str @@ -5473,7 +5787,8 @@ set cache_all_query_vars "" set query_all_freq 120 set last_query_all_time [clock seconds] set client_tail "" -set client_tail_read 0 +set client_sock "" +set client_info_read 0 set make_gui_count 0 set text_area_str "" set gui_argv0 $argv0 @@ -5539,6 +5854,7 @@ if {[info exists env(X11VNC_CLIENT_FILE)]} { if {$client_tail != ""} { gets $client_tail tmp if [eof $client_tail] { +puts "eof $client_tail" clean_client_tail set client_tail "" } @@ -5586,6 +5902,7 @@ if {[info exists env(X11VNC_STARTED)]} { set x11vnc_started 1 } +set x11vnc_xdisplay "" if {[info exists env(X11VNC_XDISPLAY)]} { set x11vnc_xdisplay $env(X11VNC_XDISPLAY); set x11vnc_connect 1 @@ -5600,6 +5917,7 @@ if {[info exists env(X11VNC_XDISPLAY)]} { } else { set x11vnc_xdisplay ":0"; } +set x11vnc_xdisplay0 $x11vnc_xdisplay if {[info exists env(X11VNC_AUTH_FILE)]} { set x11vnc_auth_file $env(X11VNC_AUTH_FILE) |