summaryrefslogtreecommitdiffstats
path: root/x11vnc/tkx11vnc.h
diff options
context:
space:
mode:
Diffstat (limited to 'x11vnc/tkx11vnc.h')
-rw-r--r--x11vnc/tkx11vnc.h7351
1 files changed, 0 insertions, 7351 deletions
diff --git a/x11vnc/tkx11vnc.h b/x11vnc/tkx11vnc.h
deleted file mode 100644
index 46f4bbc..0000000
--- a/x11vnc/tkx11vnc.h
+++ /dev/null
@@ -1,7351 +0,0 @@
-#ifndef _TKX11VNC_H
-#define _TKX11VNC_H
-#ifdef NOGUI
-char gui_code[] = "";
-#else
-/*
- * tkx11vnc.h: generated by 'tkx11vnc -spit'
- * Abandon all hope, ye who enter here...
- * ...edit tkx11vnc instead.
- */
- char gui_code[] =
-"#!/bin/sh\n"
-"# the next line restarts using wish. \\\n"
-"exec wish \"$0\" \"$@\"\n"
-"catch {rename send {}}\n"
-"#\n"
-"# Copyright (C) 2004-2009 Karl J. Runge <runge@karlrunge.com>\n"
-"# All rights reserved.\n"
-"#\n"
-"# This is free software; you can redistribute it and/or modify\n"
-"# it under the terms of the GNU General Public License as published by\n"
-"# the Free Software Foundation; either version 2 of the License, or\n"
-"# (at your option) any later version.\n"
-"#\n"
-"# This software is distributed in the hope that it will be useful,\n"
-"# but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-"# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
-"# GNU General Public License for more details.\n"
-"#\n"
-"# You should have received a copy of the GNU General Public License\n"
-"# along with this software; if not, write to the Free Software\n"
-"# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,\n"
-"# USA.\n"
-"\n"
-"#\n"
-"# tkx11vnc v0.2\n"
-"# This is a simple frontend to x11vnc. It uses the remote control\n"
-"# and query features (-remote/-query aka -R/-Q) to interact with it. \n"
-"# It is just a quick-n-dirty hack (it parses -help output, etc), but\n"
-"# it could be of use playing with or learning about the (way too) many\n"
-"# parameters x11vnc has.\n"
-"# \n"
-"# It can be used to interact with a running x11vnc (see the x11vnc\n"
-"# -gui option), or to set the parameters and then start up x11vnc. \n"
-"# \n"
-"\n"
-"#\n"
-"# Below is a simple picture of how the gui should be laid out and how\n"
-"# the menus should be organized. Most menu items correspond to remote\n"
-"# control commands. A trailing \":\" after the item name means it is a string\n"
-"# to be set rather than a boolean that can be toggled (e.g. the entry\n"
-"# box must be used).\n"
-"#\n"
-"# Some tweak options may be set in the prefix \"=\" string.\n"
-"# A means it is an \"Action\" (not a true variable)\n"
-"# R means it is an action only valid in remote mode.\n"
-"# S means it is an action only valid in startup mode.\n"
-"# Q means it is an action worth querying after running.\n"
-"# P means the string can be +/- appended/deleted (string may not\n"
-"# be the same after the remote command)\n"
-"# G means gui internal item\n"
-"# F means can be set via file browse\n"
-"# D means for simple gui\n"
-"# -C:val1,... means it will be a checkbox (radio button)\n"
-"# the \"-\" means no other options follow\n"
-"# 0 means to skip the item.\n"
-"# -- means add a separator\n"
-"#\n"
-"# The =GAL ... =GAL LOFF stuff is to provide submenus.\n"
-"#\n"
-"\n"
-"global env started time_count\n"
-"set started \"\"\n"
-"proc dtime {{msg \"\"}} {\n"
-" global started time_count\n"
-" if {$started == \"\"} {\n"
-" return\n"
-" }\n"
-" set diff [expr \"[exec gtod.bin] - $started\"]\n"
-" set diff [format \"%.2f\" $diff]\n"
-" incr time_count\n"
-" if {$msg == \"\"} {\n"
-" set msg $time_count\n"
-" }\n"
-" puts -nonewline stderr \"$msg $diff \" \n"
-" puts stderr [clock format [clock seconds]]\n"
-"}\n"
-"\n"
-"if [info exists env(X11VNC_GUI_TIME)] {\n"
-" global started time_count\n"
-" set started [exec gtod.bin]\n"
-" set time_count 0\n"
-" dtime \"S\"\n"
-"}\n"
-"\n"
-"proc set_template {} {\n"
-" global template\n"
-" set template \"\n"
-"Row: Actions Clients Permissions Keyboard Pointer Help\n"
-"Row: Displays Screen Tuning Debugging Misc\n"
-"\n"
-"Actions\n"
-" =SA start\n"
-" =RA stop\n"
-" --\n"
-" =DSA attach\n"
-" =DRA detach\n"
-" --\n"
-" =RA ping\n"
-" =RA update-all\n"
-" =GAL Settings::\n"
-" =GA save-settings\n"
-" =SFA load-settings:\n"
-" =SA defaults-all\n"
-" =0SA clear-all\n"
-" --\n"
-" =F rc:\n"
-" norc\n"
-" =GAL LOFF\n"
-" -- D\n"
-" =DRA stop+quit \n"
-" =DGA Quit \n"
-"\n"
-"Help\n"
-" =DGA gui\n"
-" =DGA all\n"
-"\n"
-"Clients\n"
-" =DRQA current:\n"
-" =DF connect:\n"
-" =DRQA disconnect:\n"
-" --\n"
-" accept:\n"
-" afteraccept:\n"
-" gone:\n"
-" vncconnect\n"
-" zeroconf\n"
-" -- D\n"
-" tightfilexfer\n"
-" ultrafilexfer\n"
-" proxy:\n"
-" =GAL Chat::\n"
-" chatwindow\n"
-" =DRA chaton\n"
-" =DRA chatoff\n"
-" =GAL LOFF\n"
-" =GAL Java-applet::\n"
-" =D http\n"
-" httpdir:\n"
-" httpport:\n"
-" https:\n"
-" httpsredir:\n"
-" enablehttpproxy\n"
-" =GAL LOFF\n"
-"\n"
-"Displays\n"
-" =D display:\n"
-" =F auth:\n"
-" =S reflect:\n"
-" =D desktop:\n"
-" =D rfbport:\n"
-" =S autoport:\n"
-" =0 gui:\n"
-"\n"
-"Screen\n"
-" =DRA refresh\n"
-" =RA reset\n"
-" =RA blacken\n"
-" -- D\n"
-" =D scale:\n"
-" scale_cursor:\n"
-" --\n"
-" =D solid\n"
-" solid_color:\n"
-" --\n"
-" =GAL OverlayVisuals::\n"
-" overlay\n"
-" overlay_nocursor\n"
-" 8to24\n"
-" 8to24_opts:\n"
-" =GAL LOFF\n"
-" =GAL 8-Bit-Color::\n"
-" flashcmap\n"
-" shiftcmap:\n"
-" notruecolor\n"
-" =GAL LOFF\n"
-" =GAL SubWindow::\n"
-" id:\n"
-" sid:\n"
-" =RA id_cmd:\n"
-" =GAL LOFF\n"
-" =GAL ResizeRotate::\n"
-" = xrandr\n"
-" =-C:resize,newfbsize,exit xrandr_mode:\n"
-" rotate:\n"
-" padgeom:\n"
-" =GAL LOFF\n"
-" =GAL Clipping::\n"
-" =P blackout:\n"
-" xinerama\n"
-" clip:\n"
-" =GAL LOFF\n"
-" =GAL Misc-Screen::\n"
-" fixscreen:\n"
-" visual:\n"
-" rawfb:\n"
-" pipeinput:\n"
-" uinput_accel:\n"
-" uinput_reset:\n"
-" uinput_always:\n"
-" 24to32\n"
-" =GAL LOFF\n"
-"\n"
-"Keyboard\n"
-" =D norepeat\n"
-" =D add_keysyms\n"
-" modtweak\n"
-" xkb\n"
-" --\n"
-" capslock\n"
-" skip_lockkeys\n"
-" --\n"
-" skip_keycodes:\n"
-" skip_dups\n"
-" sloppy_keys\n"
-" --\n"
-" =FP remap:\n"
-" clear_mods\n"
-" clear_keys\n"
-" clear_all\n"
-" =RA clear_locks\n"
-"\n"
-"Pointer\n"
-" =D-C:none,arrow,X,some,most cursor:\n"
-" =-C:1,2,3,4,5,6 arrow:\n"
-" --\n"
-" cursorpos\n"
-" =D nocursorshape\n"
-" --\n"
-" noxfixes\n"
-" cursor_drag\n"
-" =GAL AlphaBlending::\n"
-" noalphablend\n"
-" alphacut:\n"
-" alphafrac:\n"
-" alpharemove\n"
-" =GAL LOFF\n"
-" --\n"
-" buttonmap:\n"
-" --\n"
-" xwarppointer\n"
-" always_inject\n"
-"\n"
-"Misc\n"
-" =GD-C:full,icon,tray WindowView:\n"
-" =GD simple-gui\n"
-" -- D\n"
-" =GA all-settings\n"
-" =RA remote-cmd:\n"
-" =GAL Selection::\n"
-" =D nosel\n"
-" noprimary\n"
-" nosetprimary\n"
-" noclipboard\n"
-" nosetclipboard\n"
-" seldir:\n"
-" =GAL LOFF\n"
-" =GAL X-ext::\n"
-" xtrap\n"
-" noxrecord\n"
-" =RQA reset_record\n"
-" =GAL LOFF\n"
-" =GAL MacOSX::\n"
-" macnosaver\n"
-" macnowait\n"
-" macwheel:\n"
-" macnoswap\n"
-" macnoresize\n"
-" maciconanim:\n"
-" macmenu\n"
-" =GAL LOFF\n"
-" --\n"
-" 6\n"
-" noipv6\n"
-" noipv4\n"
-" --\n"
-" nofb\n"
-" =D nobell\n"
-" nolookup\n"
-" rfbversion:\n"
-" bg\n"
-" =S loop\n"
-" =S loopbg\n"
-" =S sleepin:\n"
-" =-C:ignore,exit sigpipe:\n"
-" =0 inetd\n"
-"\n"
-"Debugging\n"
-" debug_pointer\n"
-" debug_keyboard\n"
-" =F logfile:\n"
-" =GA show-logfile\n"
-" =GA tail-logfile\n"
-" quiet\n"
-" --\n"
-" =GA show-start-cmd\n"
-" =DG debug_gui\n"
-" =GAL Misc-Debug::\n"
-" debug_xevents\n"
-" debug_xdamage\n"
-" =-C:0,1,2,3 debug_wireframe:\n"
-" debug_scroll\n"
-" debug_tiles\n"
-" debug_grabs\n"
-" debug_sel\n"
-" debug_ncache\n"
-" dbg\n"
-" =GAL LOFF\n"
-"\n"
-"Permissions\n"
-" =DRQA lock\n"
-" =DRQA unlock\n"
-" =D shared\n"
-" =D forever\n"
-" --\n"
-" =DFP allow:\n"
-" =D localhost\n"
-" =RA allowonce:\n"
-" listen:\n"
-" -- D\n"
-" =D viewonly\n"
-" input:\n"
-" --\n"
-" =GAL Passwords::\n"
-" passwd:\n"
-" viewpasswd:\n"
-" =F passwdfile:\n"
-" =F rfbauth:\n"
-" usepw\n"
-" --\n"
-" unixpw\n"
-" unixpw_list:\n"
-" unixpw_nis\n"
-" unixpw_nis_list:\n"
-" =0 storepasswd\n"
-" =GAL LOFF\n"
-" =GAL SSL::\n"
-" ssl\n"
-" =F ssl_pem:\n"
-" stunnel\n"
-" =F stunnel_pem:\n"
-" =F ssldir:\n"
-" =F sslverify:\n"
-" ssltimeout:\n"
-" --\n"
-" enc:\n"
-" =GAL LOFF\n"
-" =GAL Misc-Perms::\n"
-" safer\n"
-" unsafe\n"
-" =RA noremote\n"
-" =0S alwaysshared\n"
-" =0S nevershared\n"
-" =0S dontdisconnect\n"
-" =SQA deny_all\n"
-" timeout:\n"
-" grabkbd\n"
-" grabptr\n"
-" grabalways\n"
-" grablocal:\n"
-" forcedpms\n"
-" clientdpms\n"
-" noserverdpms\n"
-" noultraext\n"
-" =GAL LOFF\n"
-"\n"
-"Tuning\n"
-" =D-C:0,1,2,3,4 pointer_mode:\n"
-" input_skip:\n"
-" allinput\n"
-" =D nodragging\n"
-" -- D\n"
-" speeds:\n"
-" =D wait:\n"
-" defer:\n"
-" =D nap\n"
-" screen_blank:\n"
-" --\n"
-" =GAL WireFrame::\n"
-" wireframe\n"
-" wireframe_mode:\n"
-" =-C:never,top,always wirecopyrect:\n"
-" =GAL LOFF\n"
-" =GAL ScrollCopyRect::\n"
-" =-C:never,keys,mouse,always scrollcopyrect:\n"
-" scr_area:\n"
-" scr_skip:\n"
-" scr_inc:\n"
-" scr_keys:\n"
-" scr_term:\n"
-" scr_keyrepeat:\n"
-" scr_parms:\n"
-" =GAL LOFF\n"
-" =GAL XDAMAGE::\n"
-" xdamage\n"
-" xd_area:\n"
-" xd_mem:\n"
-" =GAL LOFF\n"
-" =GAL Ncache::\n"
-" ncache\n"
-" ncache_size:\n"
-" ncache_cr\n"
-" ncache_no_moveraise\n"
-" ncache_no_dtchange\n"
-" ncache_old_wm\n"
-" ncache_no_rootpixmap\n"
-" ncache_keep_anims\n"
-" ncache_pad:\n"
-" =RA ncache_reset_rootpixmap\n"
-" =GAL LOFF\n"
-" --\n"
-" =GAL SharedMemory::\n"
-" noshm\n"
-" flipbyteorder\n"
-" onetile\n"
-" =GAL LOFF\n"
-" =GAL Misc-Tuning::\n"
-" progressive:\n"
-" fs:\n"
-" gaps:\n"
-" grow:\n"
-" fuzz:\n"
-" extra_fbur:\n"
-" wait_ui:\n"
-" setdefer:\n"
-" nowait_bog\n"
-" slow_fb:\n"
-" xrefresh:\n"
-" readtimeout:\n"
-" snapfb\n"
-" threads\n"
-" wmdt:\n"
-" rfbwait:\n"
-" nodpms\n"
-" nofbpm\n"
-" =GAL LOFF\n"
-"\"\n"
-"}\n"
-"\n"
-"proc set_internal_help {} {\n"
-" global helptext helpall\n"
-"\n"
-" # set some internal item help here:\n"
-" set helptext(start) \"\n"
-"Launch x11vnc with the settings you have prescribed in the gui.\n"
-"The x11vnc process is started in an xterm window so you can see the\n"
-"output, kill it, etc.\n"
-"\n"
-"By viewing this help item, the command built so far will be displayed\n"
-"in the gui text area. Have a look. If you Press start it will be shown\n"
-"as well and you will be asked to confirm running it.\n"
-"\n"
-"If you want to use a saved profile \\\"rc file\\\" you can do \\\"Misc -> rc\\\" and\n"
-"select the file and simply start x11vnc using the rc file. Alternatively,\n"
-"you could first use the \\\"Actions -> load-settings\\\" action to load in\n"
-"an \\\"rc file\\\" and then press \\\"Actions -> start\\\" to start up x11vnc\n"
-"based on those values.\n"
-"\"\n"
-" set helptext(stop) \"\n"
-"The \\\"Actions -> stop\\\" action sends a signal to the running x11vnc\n"
-"server indicating it should shutdown all connections and exit.\n"
-"\n"
-"The GUI stays running in case you want to start a new x11vnc or attach\n"
-"to another one. Use \\\"Actions -> Quit\\\" if you then want to have the\n"
-"gui exit. Use \\\"Actions -> stop+quit\\\" to have both exit at once.\n"
-"\"\n"
-"\n"
-" set helptext(show-start-cmd) \"\n"
-"Displays in the text area what the x11vnc start command (i.e. the command\n"
-"run by \\\"Actions -> start\\\") looks like for the current values of the\n"
-"settings. This can be done even in the attached state. Intended for\n"
-"debugging the gui. The help item for \\\"Actions -> start\\\" gives the\n"
-"same info.\n"
-"\n"
-"If you want to load in a saved profile \\\"rc file\\\" use \\\"Misc -> rc\\\"\n"
-"and select the file. \\\"Actions -> load-settings\\\" does a similar thing\n"
-"with an rc-file, but reading the file and setting the gui variables to\n"
-"its values.\n"
-"\"\n"
-"\n"
-" set helptext(debug_gui) \"\n"
-"Set debug_gui to get more output printed in the text area.\n"
-"\"\n"
-"\n"
-" set helptext(detach) \"\n"
-"No longer be associated with the x11vnc server. Switch to the\n"
-"non-connected state. The x11vnc server keeps running: it does not exit.\n"
-"\n"
-"You can either later reattach to it \\\"Actions -> attach\\\", or start\n"
-"up a new x11vnc \\\"Actions -> start\\\", or exit \\\"Actions -> Quit\\\".\n"
-"\"\n"
-"\n"
-" set helptext(attach) \"\n"
-"Attach to a running x11vnc server, if possible. Switches to connected\n"
-"state if successful. Usually the channel used to attach is via the X\n"
-"display (VNC_CONNECT rootwin property) being polled by the x11vnc server.\n"
-"To change or set the X display to use do \\\"Displays -> display\\\".\n"
-"\n"
-"Sometimes the \\\"-connect /path/to/filename\\\" is used as the communcation\n"
-"channel. The running x11vnc has to know that \\\"/path/to/filename\\\"\n"
-"is the communication channel (i.e. it is using the same -connect option).\n"
-"\"\n"
-"\n"
-" set helptext(ping) \"\n"
-"Check if x11vnc still responds to \\\"ping\\\" remote command.\n"
-"\"\n"
-"\n"
-" set helptext(update-all) \"\n"
-"Query the x11vnc server for the current values of all variables.\n"
-"Populate the values into the gui's database.\n"
-"\n"
-"Normally the gui will refresh this info every time it interacts with\n"
-"the x11vnc server (including after a few minutes of inactivity), so one\n"
-"doesn't need to use this action very often (unless something else is\n"
-"changing the state of the x11vnc server, or new clients have connected,\n"
-"etc).\n"
-"\"\n"
-"\n"
-" set helptext(clear-all) \"\n"
-"Forget any variable settings either entered in by you or set at the\n"
-"default. Basically sets everything to 0 or the string (unset).\n"
-"\n"
-"This action is only available in \\\"startup\\\" mode, not when connected\n"
-"to a running x11vnc server (in that case the variable settings reflect\n"
-"the state of the running x11vnc). To detach from a running x11vnc\n"
-"server use \\\"Actions -> detach\\\"; to completely stop the x11vnc server\n"
-"use \\\"Actions -> stop\\\".\n"
-"\"\n"
-"\n"
-" set helptext(defaults-all) \"\n"
-"Reset all variable settings to the default values. Basically sets\n"
-"everything to the default queries \\\"x11vnc -QD var\\\" retrieved at startup.\n"
-"\n"
-"This action is only available in \\\"startup\\\" mode, not when connected\n"
-"to a running x11vnc server (in that case the variable settings reflect\n"
-"the state of the running x11vnc). To detach from a running x11vnc\n"
-"server use \\\"Actions -> detach\\\"; to completely stop the x11vnc server\n"
-"use \\\"Actions -> stop\\\".\n"
-"\"\n"
-"\n"
-" set helptext(load-settings) \"\n"
-"Read in the \\\"rc file\\\" you prescribe in the dialog and then set the\n"
-"variables to those in the rc-file. Any variables not mentioned in the\n"
-"rc-file are set to their default value.\n"
-"\n"
-"You could then do \\\"Actions -> start\\\" to start x11vnc with these\n"
-"parameters. Or you could make some further changes to variables\n"
-"using the gui before starting x11vnc.\n"
-"\n"
-"This action is only available in \\\"startup\\\" mode, not when connected\n"
-"to a running x11vnc server (in that case the variable settings reflect\n"
-"the state of the running x11vnc). To detach from a running x11vnc\n"
-"server use \\\"Actions -> detach\\\"; to completely stop the x11vnc server\n"
-"use \\\"Actions -> stop\\\".\n"
-"\"\n"
-"\n"
-" set helptext(save-settings) \"\n"
-"Construct a ~/.x11vncrc file based on the current settings and\n"
-"offer to save it in a file (default ~/.x11vncrc). If saved in a\n"
-"file other than the default, you can access the profile by using\n"
-"the \\\"-rc <filename>\\\" option when starting x11vnc.\n"
-"\n"
-"If an rc file entry begins with \\\"#d\\\" that means the current\n"
-"setting is at the Default value and so you probably want to leave\n"
-"it commented out with the \\\"#\\\" character.\n"
-"\n"
-"If an rc file entry begins with \\\"#?\\\" that means we think\n"
-"you probably do not really want to force the value to this setting.\n"
-"\n"
-"In either case, feel free to uncomment the line and/or change any\n"
-"of the parameter values in the file. \n"
-"\"\n"
-"\n"
-" set helptext(all-settings) \"\n"
-"Displays the gui's database of all of the x11vnc server's current\n"
-"settings. Use \\\"Actions -> update-all\\\" or \\\"Control+R\\\" to\n"
-"refresh this list if it ever gets out of sync.\n"
-"\"\n"
-"\n"
-" set helptext(remote-cmd) \"\n"
-"Run a remote command (-R) or query (-Q) directly. Only a few\n"
-"remote commands are not on a menu, but for those few you can\n"
-"run the command directly this way. Just enter the command into\n"
-"the Entry box when prompted. Use the prefix \\\"Q:\\\" to indicate\n"
-"a -Q query. Examples: \\\"zero:20,20,100,100\\\", \\\"Q:ext_xfixes\\\" \n"
-"\"\n"
-"\n"
-" set helptext(stop+quit) \"\n"
-"Send the stop command to the x11vnc server, then terminate the tkx11vnc gui.\n"
-"\"\n"
-"\n"
-" set helptext(show-logfile) \"\n"
-"View the current contents of the logfile (if it exists and is accessible\n"
-"by the gui process).\n"
-"\"\n"
-"\n"
-" set helptext(tail-logfile) \"\n"
-"Run the tail(1) command with -f option on the logfile in an xterm.\n"
-"(if it exists and is accessible by the gui process).\n"
-"\"\n"
-"\n"
-" set helptext(Quit) \"\n"
-"Terminate the tkx11vnc gui. Any x11vnc server will be left running.\n"
-"\"\n"
-"\n"
-" set helptext(current) \"\n"
-"Shows a menu of currently connected VNC clients on the x11vnc server.\n"
-"\n"
-"Allows you to find more information about them, change their input\n"
-"permissions, or disconnect them.\n"
-"\n"
-"Note that the File transfer permission only applies to UltraVNC\n"
-"file transfer, not TightVNC file transfer.\n"
-"\n"
-"You will be prompted to confirm any disconnections.\n"
-"\"\n"
-"\n"
-" set helptext(client) \"\n"
-"After selecting a VNC client from the \\\"Clients -> current\\\" menu,\n"
-"you will be presented with a dialog that shows the information\n"
-"about the VNC client.\n"
-"\n"
-"You can choose to disconnect the client by clicking on the \n"
-"\\\"Disconnect\\\" checkbox and pressing \\\"OK\\\". There will be a\n"
-"confirmation dialog to doublecheck.\n"
-"\n"
-"Alternatively, you can fine tune the VNC client's input permissions\n"
-"by selecting any of the Keystrokes, Mouse-Motion, Button-Click,\n"
-"Clipboard-Input, or Files checkboxes and pressing \\\"OK\\\". This is like\n"
-"the \\\"-input\\\" option but on a per-client basis.\n"
-"\n"
-"To not change any aspects of the VNC client press \\\"Cancel\\\".\n"
-"\"\n"
-"\n"
-" set helptext(solid_color) \"\n"
-"Set the -solid color value.\n"
-"\"\n"
-"\n"
-" set helptext(xrandr_mode) \"\n"
-"Set the -xrandr mode value.\n"
-"\"\n"
-"\n"
-" set helptext(unixpw_list) \"\n"
-"Set the -unixpw usernames list value.\n"
-"\"\n"
-"\n"
-" set helptext(unixpw_nis_list) \"\n"
-"Set the -unixpw_nis usernames list value.\n"
-"\"\n"
-"\n"
-" set helptext(stunnel_pem) \"\n"
-"Set the -stunnel pem filename value.\n"
-"\"\n"
-"\n"
-" set helptext(ssl_pem) \"\n"
-"Set the -ssl pem filename value.\n"
-"\"\n"
-"\n"
-" set helptext(wireframe_mode) \"\n"
-"Set the -wireframe mode string value.\n"
-"\"\n"
-"\n"
-" set helptext(simple-gui) \"\n"
-"Toggle between menu items corresponding the most basic ones\n"
-"and all possible settings. I.e. toggle between a simple gui\n"
-"and one for power users.\n"
-"\"\n"
-"\n"
-" set helptext(Tray) \"\n"
-"The tray/icon mode (started with \\\"x11vnc -gui tray ...\\\", etc.) presents\n"
-"a small icon that indicates the status of the running x11vnc server.\n"
-"\n"
-"Depending on your environment, this icon may be embedded in a system\n"
-"tray or applet dock, or simply be a standalone window. \\\"-gui tray\\\"\n"
-"will attempt to embed the icon in the system tray, while \\\"-gui icon\\\"\n"
-"is for a standalone window. Use \\\"-gui tray=setpass\\\" (or icon=setpass)\n"
-"to be prompted to set the session password at startup.\n"
-"\n"
-"When the icon has a light background, that means no VNC viewers are\n"
-"currently connected to the VNC display.\n"
-"\n"
-"When the icon has a dark background (i.e. reverse-video), that means at\n"
-"least one VNC viewer is connected to the VNC display.\n"
-"\n"
-"Moving the mouse pointer over the icon will popup a \\\"status balloon\\\"\n"
-"indicating the VNC display name and the names and info of any connected VNC\n"
-"viewers. Press the middle mouse button if the balloon does not appear.\n"
-"\n"
-"Clicking the left or right mouse button on the icon displays a menu\n"
-"of actions:\n"
-"\n"
-" Properties - Brings up the Properties dialog to set some basic\n"
-" parameters. The full tkx11vnc GUI may be accessed\n"
-" via the \\\"Advanced ...\\\" button. Press \\\"Help\\\"\n"
-" in the Properties dialog for more info.\n"
-" \n"
-" Help - Displays this help text.\n"
-" \n"
-" New Client - Presents an entry box where you type in the name\n"
-" of a computer that is running a VNC viewer in\n"
-" \\\"listen\\\" mode (e.g. vncviewer -listen). For a\n"
-" non-standard listening port use \\\"host:port\\\".\n"
-"\n"
-" Pressing \\\"OK\\\" will initiate the reverse\n"
-" connection. Use a blank hostname to skip it.\n"
-" \n"
-" Disconnect - Shows a popup menu of connected clients. Click on\n"
-" one to disconnect it, or click on \\\"All Clients\\\"\n"
-" disconnect all clients.\n"
-"\n"
-" Window View - Switch between the \\\"full\\\" gui (also known as\n"
-" \\\"Advanced\\\"), \\\"icon\\\" mode (small icon window with\n"
-" popups), or \\\"tray\\\" mode (small icon embedded in the\n"
-" system tray). This is a shortcut for the action:\n"
-" \\\"Properties -> Advanced -> Misc -> WindowView\\\".\n"
-" \n"
-" Stop x11vnc - Directs the x11vnc server to disconnect all vncviewers\n"
-" and then exit. The tray/icon GUI then exits as well.\n"
-"\n"
-" Logfile - Show the logfile if x11vnc is being run with one.\n"
-"\n"
-" Custom - If you have a \\$HOME/.x11vnc.gui file each uncommented\n"
-" line in it becomes an additional menu item for this\n"
-" menu. The remote control command is run directly\n"
-" via \\\"x11vnc -R <command>\\\", or if prefixed with \n"
-" \\\"action:\\\" runs a gui internal action, or if \\\"sep\\\"\n"
-" adds a separator. Set X11VNC_CUSTOM_GUI to use\n"
-" a different filename. Example file contents:\n"
-"\n"
-" scale:3/4\n"
-" scale:1\n"
-" scale_cursor:1\n"
-" sep\n"
-" action:all-settings\n"
-" #debug_keyboard\n"
-" sep\n"
-" action:Quit\n"
-"\n"
-"Termination:\n"
-"\n"
-"If the x11vnc server stops for any reason, the tray/icon gui will exit.\n"
-"\n"
-"If you delete the tray/icon (e.g. X out button), that is the same\n"
-"as the \\\"Stop x11vnc\\\" action in the menu. (This will disconnect any\n"
-"VNC viewer you are currently using to access the display since the\n"
-"x11vnc server is terminated).\n"
-"\n"
-"To terminate the tray/icon gui window but not the x11vnc server press\n"
-"Control-C on the tray/icon window. You can also do this (and much\n"
-"more) via Properties -> Advanced -> Actions -> Quit\n"
-"\"\n"
-"\n"
-" set helptext(NewClient) \"\n"
-" New Client - Presents an entry box where you type in the name\n"
-" of a computer that is running a VNC viewer in\n"
-" \\\"listen\\\" mode (e.g. vncviewer -listen). For a\n"
-" non-standard listening port use \\\"host:port\\\".\n"
-"\n"
-" Pressing \\\"OK\\\" will initiate the reverse\n"
-" connection. Use a blank hostname to skip it, or\n"
-" delete (\\\"X-out\\\") the window.\n"
-" \n"
-"\"\n"
-"\n"
-" set helptext(Properties) \"\n"
-"The Properties dialog allows you to set some basic parameters of a\n"
-"running x11vnc server. After modifying them press \\\"OK\\\" or \\\"Apply\\\"\n"
-"to apply the changes, or press \\\"Cancel\\\" to skip applying them.\n"
-"\n"
-" Accept Connections:\n"
-"\n"
-" Toggles whether VNC viewers are allowed to connect or not. It corresponds\n"
-" to the \\\"-R unlock\\\" and \\\"-R lock\\\" remote-control commands.\n"
-"\n"
-" Ask for Confirmation:\n"
-"\n"
-" Toggles whether a popup menu will be presented at the X display when\n"
-" a new VNC viewer attempts to connect. The person sitting at the X\n"
-" display can choose to accept or reject the connection or accept the\n"
-" connection in ViewOnly mode. It corresponds to the \\\"-R accept:popup\\\"\n"
-" and \\\"-R accept:\\\" remote-control commands.\n"
-" \n"
-" All Clients ViewOnly:\n"
-"\n"
-" Toggles whether the entire VNC desktop is view only. All clients\n"
-" will only be able to watch when this is set (regardless of how they\n"
-" logged in). It corresponds to the \\\"-R viewonly\\\" and \\\"-R noviewonly\\\"\n"
-" remote-control commands.\n"
-" \n"
-" Shared:\n"
-"\n"
-" Toggles whether multiple simultaneous viewer connections are allowed\n"
-" or not. It corresponds to the \\\"-R shared\\\" and \\\"-R noshared\\\"\n"
-" remote-control commands.\n"
-"\n"
-" Advertise Service (Zeroconf):\n"
-"\n"
-" Toggles whether this VNC server should advertize itself via Zeroconf\n"
-" (also called Bonjour, mDNS, and avahi). Then VNC viewers can then find\n"
-" this service on the local network. It corresponds to the \\\"-R zeroconf\\\"\n"
-" and \\\"-R nozeroconf\\\" remote-control commands.\n"
-"\n"
-" Serve Java Viewer Applet:\n"
-"\n"
-" Toggles whether this VNC server should serve up a Java VNC Viewer\n"
-" applet via HTTP on http://hostname:5800/ (or port 5800+n for VNC\n"
-" port 5900+n). A java enabled Web Browser can then connect to the\n"
-" desktopby VNC. If SSL is active then the HTTPS URL https://hostname:5900/\n"
-" (etc.) will work as well. This requires the x11vnc java viewer jar file\n"
-" (shared/x11vnc/classes) to be installed. It corresponds to the\n"
-" \\\"-R http\\\" and \\\"-R nohttp\\\" remote commands.\n"
-"\n"
-" Solid Background Color:\n"
-"\n"
-" To improve VNC performance, if this option is set, then x11vnc will try\n"
-" to make the desktop background a solid color (which compresses extremely\n"
-" well compared to photo images, etc.) It corresponds to the \\\"-R solid\\\"\n"
-" and \\\"-R nosolid\\\" remote commands.\n"
-"\n"
-" Password:\n"
-"\n"
-" Lets you set the session password viewers may use to gain full access\n"
-" to the display. This will only work if x11vnc was started with the\n"
-" -gui icon or -gui tray mode.\n"
-" \n"
-" ViewOnly Password:\n"
-"\n"
-" Lets you set the session password viewers may use to gain view only\n"
-" access to the display. This will only work if x11vnc was started with\n"
-" the -gui icon or -gui tray mode.\n"
-"\n"
-"\n"
-" NOTE: These \\\"session\\\" passwords only last for the current x11vnc\n"
-" session (they are not remembered, see the -storepasswd, -passwdfile,\n"
-" and -rfbauth x11vnc options for using stored passwords).\n"
-"\n"
-" If you set \\\"Password\\\" to the empty string that makes the \\\"ViewOnly\n"
-" Password\\\" empty as well and removes the need for any password to log in.\n"
-"\n"
-" If you set \\\"ViewOnly Password\\\" to the empty string that just removes\n"
-" the ViewOnly log in aspect: \\\"Password\\\" is still required to log in.\n"
-"\n"
-" - The \\\"Help\\\" button shows this help text.\n"
-" \n"
-" - The \\\"Advanced ...\\\" button replaces the Properties dialog with the full\n"
-" tkx11vnc GUI. All dynamic settings can be modified in the full GUI.\n"
-"\n"
-"\n"
-"==========================================================================\n"
-"\n"
-"Don't Lock Yourself Out:\n"
-"\n"
-" If you are sitting at the physical X display you cannot get into too\n"
-" much trouble setting the Properties dialog values.\n"
-"\n"
-" However IF you are using a VNC Viewer to REMOTELY access the X display\n"
-" some items in the Properties dialog can lock you out of further access:\n"
-"\n"
-" \\\"Accept Connections\\\" if you disable this remotely, and\n"
-" accidentally disconnect your VNC viewer then you will not be\n"
-" able to reconnect.\n"
-" \n"
-" \\\"Ask for Confirmation\\\" if you enable this only someone\n"
-" sitting at the X display can confirm any new VNC connections.\n"
-" Furthermore, any current VNC viewers will be blocked while\n"
-" waiting for the confirmation (times out in 120 sec by default). \n"
-" \n"
-" \\\"All Clients ViewOnly\\\" if you enable this remotely, well\n"
-" you can no longer provide input to disable it.\n"
-" \n"
-" If you do lock yourself out you could log in remotely and start up\n"
-" a second x11vnc and connect to that one to try to fix things in the\n"
-" first one.\n"
-"\n"
-" Note that if there are two or more x11vnc's on the same display the\n"
-" use of the GUI may be ill-behaved. Terminate the second x11vnc as\n"
-" soon as you have fixed the setting in the first one. Use of a remote\n"
-" control command, e.g. \\\"x11vnc -R noviewonly\\\" or \\\"x11vnc -R unlock\\\"\n"
-" is a good way to avoid this problem.\n"
-"\"\n"
-"\n"
-" set helptext(all) $helpall\n"
-"\n"
-" set helptext(Misc-Tuning:) \"\n"
-"x11vnc has what seems like hundreds of tuning parameters! In this\n"
-"sub-menu we place some lesser used ones. Most likely you'll want to\n"
-"leave them at their default values, but you can try them out quickly\n"
-"with the gui to see if they improve things.\n"
-"\"\n"
-"\n"
-" set helptext(Passwords:) \"\n"
-"The items in this sub-menu pertain to setting passwords. Note that x11vnc\n"
-"has two types of password files: RealVNC-style ones (you can create them\n"
-"with x11vnc -storepasswd or other VNC utility program) you use these\n"
-"via -rfbauth; and plain-text file passwords you use via -passwdfile.\n"
-"\n"
-"Normally passwords cannot be changed by remote-control (e.g. the gui),\n"
-"but for the case of the \\\"Icon\\\" and \\\"Tray\\\" modes this constraint has\n"
-"been relaxed.\n"
-"\n"
-"In neither the RealVNC-style nor the plain-text file cases should the\n"
-"password files be readable by users you do not want to access the VNC\n"
-"server. Contrary to popular belief, the RealVNC-style passwords are\n"
-"not encrypted, merely obscured.\n"
-"\n"
-"x11vnc has the even less secure -passwd and -viewpasswd supplied on\n"
-"the command line. Be careful with these since they could be read by\n"
-"users with something like the ps(1) command. On some operating systems\n"
-"x11vnc tries to quickly overwrite them on the command line but it doesn't\n"
-"work everywhere.\n"
-"\n"
-"Regarding ViewOnly passwords (where a VNC client using that password\n"
-"can only watch the screen, not interact with it), this is not available\n"
-"with -rfbauth, but only with -passwdfile, -passwd, and -viewpasswd.\n"
-"\"\n"
-"\n"
-" set helptext(SSL:) \"\n"
-"In this sub-menu we provide the options related to SSL encrpytion\n"
-"and authentication.\n"
-"\n"
-"There is a built-in mode (-ssl) using the OpenSSL library, and a 2nd\n"
-"using the external stunnel program (-stunnel, that needs to be installed\n"
-"on the system). Either may require or benefit from having PEM certificate\n"
-"files specified.\n"
-"\n"
-"\"\n"
-"\n"
-" set helptext(Misc-Perms:) \"\n"
-"In this sub-menu we provide some lesser used permission options.\n"
-"\n"
-"Regarding -alwaysshared, -nevershared, and -dontdisconnect, you probably\n"
-"should never use them and just use x11vnc's -shared and -forever options\n"
-"instead (these give basically the same functionality and if you mixed\n"
-"them too much unexpected things may happen).\n"
-"\"\n"
-"#'\n"
-"\n"
-" set helptext(AlphaBlending:) \"\n"
-"In this sub-menu we provide some tweak parameters for cursors (little\n"
-"icon at the mouse pointer) that have transparency (i.e. an Alpha channel\n"
-"in addition to Red, Green, and Blue RGB channels). For these cursors,\n"
-"some of the graphics underneath the cursor is allowed to be blended in:\n"
-"e.g. a drop-shadow (a terrible effect IMNSHO).\n"
-"\n"
-"AlphaBlending for x11vnc is only available when the XFIXES X extension is\n"
-"present (since otherwise it cannot see the cursors at all and so applies\n"
-"heuristics to show some fake cursors). AlphaBlending is only a problem\n"
-"with x11vnc when the cursors are not opaque.\n"
-"\n"
-"Opaque cursors (e.g. bitmap or simply colored cursor) are rendered\n"
-"correctly by x11vnc. Only when there is transparency does x11vnc have\n"
-"to make some approximation to transform the cursor to be opaque (the\n"
-"VNC protocol does not provide for an alpha channel in cursors, only RGB).\n"
-"\n"
-"The items in this sub-menu let you tweak x11vnc's approximation scheme\n"
-"for cursors with transparency. Hopefully you won't have to use them.\n"
-"Certain cursor \\\"themes\\\" may require adjustment however.\n"
-"\"\n"
-"#'\n"
-" set helptext(OverlayVisuals:) \"\n"
-"In this sub-menu are some options that involve fixing color problems\n"
-"for \\\"Overlay\\\" or \\\"Multi-Depth\\\" visuals. This problem is rare\n"
-"since overlay and multi-depth visual video hardware is rare. \n"
-"Some Sun, SGI, and HP machines are known to have them.\n"
-"\n"
-"The short answer is if you have a multi-depth visual display (e.g. 8 and\n"
-"24 bits), and you see messed up colors in x11vnc try the \\\"-overlay\\\"\n"
-"option on Solaris or IRIX.\n"
-"\n"
-"A brief Background on pixels, color, and visuals:\n"
-"\n"
-" Pixels (picture elements) are kept in video memory as a certain number\n"
-" of bits-per-pixel (bpp). Most common are 8bpp, 16bpp, and 32bpp.\n"
-" Less common are 24bpp, 4bpp, and 1bpp (monochrome).\n"
-"\n"
-" How pixel values (i.e. values of the bits) are rendered into colors on\n"
-" the screen can be done via different \\\"Recipes\\\". These different\n"
-" recipes are referred to as \\\"visuals\\\". E.g. for 8bpp there is\n"
-" a PseudoColor visual that maintains a mapping (that can be changed\n"
-" dynamically) of the pixel values (256 possible ones) into RGB values.\n"
-" Other 8bpp visuals, e.g. StaticGrey and TrueColor have fixed, regular\n"
-" mappings and so provide less variation in kinds of colors.\n"
-"\n"
-" A visual's \\\"depth\\\" is how many of the pixels are used in the\n"
-" actual recipe. This may sound wasteful (i.e. not using some of the\n"
-" bits), but for 32bpp (4 billion colors) that is too much and nearly\n"
-" always only 24 for them are used. The most common Visual seems to\n"
-" be depth 24 TrueColor at 32bpp. This provides 16 million colors\n"
-" which is more than the number of pixels on most screens (1280x1024 =\n"
-" 1.3 million pixels). Another sometimes used visual that ignores some\n"
-" bits is depth 15 TrueColor at 16bpp.\n"
-"\n"
-"OK, now, finally, to the Overlay Visuals. Some hardware (or software\n"
-"emulations) allow different depth visuals to be used on the display\n"
-"at the same time. The pixels of windows using different depth visuals\n"
-"may overlap.\n"
-"\n"
-"The most common seems to be both 8 and 24 depth visuals on a 32bpp setup.\n"
-"24 of the pixels can be used for one visual and the remaining 8 for the\n"
-"other. This is sometimes referred to as \\\"8+24\\\" mode. Furthermore,\n"
-"a speedup is achieved because writing graphics data to, say, the 8bit\n"
-"visual does not destroy the image data in the 24bit visual. Evidently\n"
-"popup menus can be done very quickly this way: they use the 8bit visual\n"
-"and when the popup goes away the graphics data in the 24bit visual is\n"
-"immediately reexposed without having the application redraw it.\n"
-"\n"
-"Also, some legacy applications can only use 8bpp visuals. But in these\n"
-"days of high color graphics and web browsers one would like the rest\n"
-"of the desktop to use depth 24 visuals. They often work on the multi\n"
-"depth visuals.\n"
-"\n"
-"How does this effect x11vnc? x11vnc nearly always polls the root window\n"
-"(container of all other windows). The root window will be one depth,\n"
-"e.g. 8 or 24. Any windows using the *other* depth will appear to have\n"
-"messed up colors (or just be black or some other solid color) when viewed\n"
-"via x11vnc.\n"
-"\n"
-"How to fix? Solaris and IRIX provide an API to extract the full snapshot\n"
-"of the display with all the colors correct. It comes to x11vnc as depth\n"
-"24 TrueColor. To enable this use the \\\"-overlay\\\" option. Performance\n"
-"may be slower, but if the colors are correct that is a big improvement.\n"
-"\"\n"
-"\n"
-" set helptext(8-Bit-Color:) \"\n"
-"Some older displays (e.g. with limited Video RAM) use 8 bits-per-pixel\n"
-"color. This allows for only 256 different colors on the screen at the\n"
-"same time. This sometimes leads to problems with viewing these 8bpp\n"
-"displays via x11vnc. This sub-menu has some options that correspond to\n"
-"workarounds for this case. If you can configure the machine to use 16bpp\n"
-"it may be worth it to avoid the color problems (e.g. color flashing\n"
-"as the 8bit colormap is switched).\n"
-"\"\n"
-" set helptext(SubWindow:) \"\n"
-"This sub-menu has a couple options regarding having x11vnc poll a \n"
-"single window, not the entire display. This way just the window\n"
-"is shared.\n"
-"\n"
-"Note if the application pops up multiple windows they are not tracked\n"
-"and shared. So this is not application sharing. The application has to\n"
-"be very simple (e.g. a simple terminal or the image window on a webcam)\n"
-"for this mode to be usable.\n"
-"\"\n"
-" set helptext(ResizeRotate:) \"\n"
-"This sub-menu has some options regarding screens that support the X\n"
-"Resize, Reflection, and Rotation Extension (RANDR), and one expects screen\n"
-"resizing, reflection, or rotation to take place during the x11vnc session.\n"
-"This is pretty rare, but x11vnc seems to handle it reasonably well using\n"
-"this X extension.\n"
-"\n"
-"This mode is on by default in -id mode to try to track the changing\n"
-"size of the SubWindow. It is not on by default for full-screen mode\n"
-"because of the extra overhead, etc.\n"
-"\"\n"
-"\n"
-" set helptext(WireFrame:) \"\n"
-"This sub-menu has some options for the x11vnc wireframing speedup scheme.\n"
-"\n"
-"For x11vnc, Wireframing means to watch for toplevel windows being Opaquely\n"
-"Moved or Resized. When x11vnc detects this, it stops polling the screen\n"
-"and simply shows a \\\"wireframe\\\" outline of the window as it is being\n"
-"moved or resized. This avoids \\\"screen polling thrashing\\\" when the\n"
-"screen is changing so rapidly during this period. For various reasons\n"
-"this is usually much faster then letting the window manager do its\n"
-"own wireframing (you are encouraged to do Opaque moves and resizes\n"
-"when using x11vnc!)\n"
-"\n"
-"Also, once a moved window is released in its new position, x11vnc uses\n"
-"the VNC CopyRect encoding to very efficiently update the VNC viewers\n"
-"(each just copies the image data locally).\n"
-"\n"
-"This sort of scheme was used much in the 1990's on local displays because\n"
-"video hardware was slow at the time. x11vnc tries to use this same trick\n"
-"as a speedup for its activities (the network is much slower than video\n"
-"hardware writes, and the video hardware reads that x11vnc uses to poll\n"
-"the screen are still slow today).\n"
-"\"\n"
-"#'\"\n"
-"\n"
-" set helptext(Safe:) \"\n"
-"In this sub-menu are some options for making x11vnc operations\n"
-"more, or less, safe. E.g. disable the running of external commands, etc.\n"
-"\n"
-"You can also turn off the Remote control channel (NOTE that doing that\n"
-"will disable the GUI from being able to communicate with x11vnc).\n"
-"\"\n"
-"\n"
-" set helptext(X-ext:) \"\n"
-"In this sub-menu are a few rarely used options regarding some X extensions\n"
-"used by x11vnc.\n"
-"\"\n"
-" set helptext(Clipping:) \"\n"
-"In this sub-menu are some options regarding clipping or blacking out\n"
-"portions of the Screen. E.g. under XINERAMA when the multiple monitors\n"
-"are not the same size.\n"
-"\n"
-"\"\n"
-" set helptext(Misc-Screen:) \"\n"
-"In this sub-menu are some little used options modifying aspects of\n"
-"the screen source.\n"
-"\"\n"
-"\n"
-" set helptext(Settings:) \"\n"
-"In this sub-menu are some options for saving and loading option settings.\n"
-"The default file to store settings in is ~/.x11vncrc, but you can save\n"
-"different \\\"profiles\\\" in other files for later use.\n"
-"\n"
-"\"\n"
-" set helptext(Java-applet:) \"\n"
-"In this sub-menu are some options for running the built-in HTTP server\n"
-"that delivers the TightVNC Java VNC Viewer applet (VncViewer.jar) to\n"
-"clients. The viewer runs in their Web browser.\n"
-"\n"
-"The default port listened on is 5800, so the URL is typically:\n"
-"\n"
-" http://hostname:5800/\n"
-"\n"
-"but this can be altered by -httpport, etc.\n"
-"\"\n"
-"\n"
-" set helptext(Chat:) \"\n"
-"In this sub-menu are some options for enabling a local chat window\n"
-"and starting or stopping the current chat. This is the UltraVNC \n"
-"Text Chat support in x11vnc.\n"
-"\"\n"
-"\n"
-" set helptext(ScrollCopyRect:) \"\n"
-"This sub-menu has some options for the x11vnc Scroll detection and\n"
-"CopyRect speedup scheme.\n"
-"\n"
-"For this mode, x11vnc \\\"spies\\\" on communication between the X server and\n"
-"applications using the RECORD extension. It looks for various patterns\n"
-"to detect a scrolled window. This only works for some applications,\n"
-"fortunately some important ones.\n"
-"\n"
-"Once the scroll is detected it uses the VNC CopyRect encoding for a\n"
-"big speedup. Screen polling is also sped up for this scheme.\n"
-"\n"
-"There are many tweakable parameters for this mode and they are described\n"
-"in the sub-menu items.\n"
-"\"\n"
-"\n"
-" set helptext(XDAMAGE:) \"\n"
-"The DAMAGE X extension allows the X server to send signals to x11vnc\n"
-"telling it which regions of the screen have been changed. This improves\n"
-"x11vnc's performance markedly. The DAMAGE extension must be available\n"
-"on the display for this to work.\n"
-"\n"
-"Unfortunately DAMAGE cannot be trusted completely for the changed regions,\n"
-"because often the reported changed region is much larger than the actual\n"
-"changed regions. Nevertheless, x11vnc uses the DAMAGE information very\n"
-"effectively as hints to improve its performance.\n"
-"\n"
-"The items in the sub-menu allow tweaking x11vnc's DAMAGE algorithm.\n"
-"\"\n"
-"\n"
-" set helptext(Ncache:) \"\n"
-"A simple client-side (viewer) caching scheme is enabled with the\n"
-"\\\"-ncache n\\\" option. It simply uses \\\"n\\\" framebuffer sized areas\n"
-"below the actual display for caching window pixel data. \n"
-"\n"
-"Drawbacks are it uses a lot of RAM (roughly n times more), and the\n"
-"pixels cache area is visible in the viewers.\n"
-"\n"
-"The items in the sub-menu allow tweaking x11vnc's -ncache algorithm.\n"
-"\"\n"
-"\n"
-" set helptext(SharedMemory:) \"\n"
-"This sub-menu provides some options regarding SYSV shared memory usage\n"
-"(shm) by x11vnc. Usually you want shm turned on because the x11vnc\n"
-"process is nearly always running on the same machine the X server process\n"
-"is running on. SharedMemory gives a performance speedup. However, if you\n"
-"need to modify this scenario for special usage these options allow you to.\n"
-"\"\n"
-"\n"
-" set helptext(Misc-Debug:) \"\n"
-"This sub-menu contains a lot of debugging parameters usually used\n"
-"for debugging x11vnc itself. This is unlike the -debug_pointer and\n"
-"-debug_keyboard options that are useful in learning information, quirks,\n"
-"etc. about your local display and environment.\n"
-"\"\n"
-"\n"
-" set helptext(Selection:) \"\n"
-"This sub-menu contains some options centering around the Selection\n"
-"(also referred to as the Clipboard, Cutbuffers, etc). x11vnc will try\n"
-"to exchange the selections between the VNC viewers and the X server.\n"
-"You can adjust that behavior with these options.\n"
-"\"\n"
-"\n"
-" set helptext(WindowView) \"\n"
-"Set the Window View Mode for the gui. There are three modes:\n"
-"\n"
-" - full: Presents the full gui (Actions, Clients, etc, buttons,\n"
-" and the Text area and Set/Entry box).\n"
-"\n"
-" - icon: Presents a small icon instead of the full gui. Moving\n"
-" the mouse over it shows the VNC display name and any\n"
-" connected clients. Clicking on the icon pops up a menu\n"
-" of actions to perform. Among them is \\\"Properties\\\" that\n"
-" allows setting more parameters. Clicking on \\\"Advanced\\\"\n"
-" in \\\"Properties\\\" brings up the full gui.\n"
-"\n"
-" - tray: Attempt to embed the small icon in the system tray. If\n"
-" this fails it will resort to icon mode where the small icon\n"
-" is a standalone window.\n"
-"\n"
-"Note that in \\\"full\\\" mode if you delete the full gui window the gui\n"
-"terminates (but the x11vnc server keeps running). However under \\\"icon\\\"\n"
-"or \\\"tray\\\" mode if you bring up the full gui window via \\\"Properties ->\n"
-"Advanced\\\" and then delete it the gui does NOT terminate.\n"
-"\n"
-"Also note that by default in \\\"icon\\\" mode if you delete the icon\n"
-"window both the gui *and* the x11vnc server terminate.\n"
-"\"\n"
-"\n"
-" set helptext(gui) \"\n"
-"tkx11vnc is a simple frontend to x11vnc. Nothing fancy, it merely\n"
-"provides an interface to each of the many x11vnc command line options and\n"
-"remote control commands. See \\\"Help -> all\\\" for much info about x11vnc.\n"
-"\n"
-"For a simplier gui, run x11vnc in \\\"tray\\\" or \\\"icon\\\" mode such as\n"
-"\\\"-gui tray\\\", \\\"-gui icon\\\", or \\\"-gui tray=setpass\\\". In that\n"
-"mode the full gui is only available under \\\"Advanced ...\\\".\n"
-"\n"
-"Also, \\\"-gui ez\\\" will show fewer menu items (toggle via Misc -> simple_gui)\n"
-"\n"
-"All menu items have a (?) button one can click on to get more information\n"
-"about the option or command.\n"
-"\n"
-"There are two states tkx11vnc can be in:\n"
-"\n"
-" 1) Available to control a running x11vnc process.\n"
-"\n"
-" 2) Getting ready to start a x11vnc process.\n"
-"\n"
-"Most people will just use state 1).\n"
-"\n"
-"In state 1) the Menu items available in the menus are those that\n"
-"correspond to the x11vnc \\\"remote control\\\" commands. See the -remote\n"
-"entry under \\\"Help -> all\\\" for a complete list. Also available is\n"
-"the \\\"Actions -> stop\\\" item to shut down the running x11vnc server,\n"
-"thereby changing to state 2). There are other actions available too.\n"
-"\n"
-"In state 2) the Menu items available in the menus (\\\"Actions\\\", \\\"Clients\\\",\n"
-"etc.) are those that correspond to command line options used in starting\n"
-"an x11vnc process, and the \\\"Actions -> start\\\" item executes\n"
-"x11vnc thereby changing to state 1). To see what x11vnc startup command\n"
-"you have built so far, look at the (?) help for \\\"Actions -> start\\\"\n"
-"and it will show you what the command looks like.\n"
-"\n"
-"There is much overlap between the menu items available in state 1)\n"
-"and state 2), but it is worth keeping in mind it is not 100%.\n"
-"For example, you cannot set passwords or password files in state 1).\n"
-"(update: simple password setting is now allowed in \\\"tray\\\" or \\\"icon\\\" mode).\n"
-"\n"
-"\n"
-"Also note that there may be *two* separate X displays involved, not just\n"
-"one: 1) the X display x11vnc will be polling (and making available to\n"
-"VNC viewers), and 2) the X display this GUI is intended to display on.\n"
-"\n"
-"For example, one might use ssh to access the remote machine where the\n"
-"GUI would display on :11 and x11vnc would poll display :0. By default\n"
-"the gui will display on the value in the DISPLAY env. variable followed\n"
-"by the value from the -display option. To override this, use something\n"
-"like: \\\"-gui otherhost:0\\\", etc.\n"
-"\n"
-"\n"
-"GUI components: \n"
-"--- ----------\n"
-"\n"
-"1) At the top of the gui is a info text label where information will\n"
-" be posted, e.g. when traversing menu items text indicating how to get\n"
-" help on the item and its current value will be displayed.\n"
-"\n"
-"2) Below the info label is the area where the menu buttons, \\\"Actions\\\",\n"
-" \\\"Clients\\\", etc., are presented. If a menu item has a checkbox,\n"
-" it corresponds to a boolean on/off variable. Otherwise it is\n"
-" either a string variable, or an action not associated with a\n"
-" variable (for the most part).\n"
-"\n"
-"3) Below the menu button area is a label indicating the current x11vnc\n"
-" X display being polled and the corresponding VNC display name. Both\n"
-" will be \\\"(*none*)\\\" when there is no connection established.\n"
-"\n"
-"4) Below the x11 and vnc displays label is a text area there scrolling\n"
-" information about actions being taken and commands being run is displayed.\n"
-" To scroll click in the area and use PageUp/PageDown or the arrow keys.\n"
-"\n"
-"5) At the bottom is an entry area. When one selects a menu item that\n"
-" requires supplying a string value, the label will be set to the\n"
-" parameter name and one types in the new value. Then one presses the\n"
-" \\\"OK\\\" button or presses \\\"Enter\\\" to set the value. Or you can press\n"
-" \\\"Cancel\\\" or \\\"Escape\\\" to avoid changing the variable.\n"
-"\n"
-" Many variables are boolean toggles (for example, \\\"Permissions ->\n"
-" viewonly\\\") or Radio button selections. Selecting these menu items\n"
-" will NOT activate the entry area but rather toggle the variable\n"
-" immediately.\n"
-"\n"
-"\n"
-"CASCADES BUG: There is a bug not yet worked around for the cascade menus\n"
-"where the (?) help button gets in the way. To get the mouse over to\n"
-"the cascade menu click and release mouse to activate the cascade, then\n"
-"you can click on its items. Dragging with a mouse button held down will\n"
-"not work (sorry!).\n"
-"\n"
-"\n"
-"Key Bindings:\n"
-"\n"
-" In the Text Area: Control-/ selects all of the text.\n"
-" Anywhere: Control-d invokes \\\"Actions -> detach\\\"\n"
-" Anywhere: Control-a invokes \\\"Actions -> attach\\\"\n"
-" Anywhere: Control-p invokes \\\"Actions -> ping\\\"\n"
-" Anywhere: Control-u and Control-r invoke \\\"Actions -> update-all\\\"\n"
-"\"\n"
-"\n"
-"set under_wally \"\n"
-"Misc:\n"
-"\n"
-"Since x11vnc has so many settings and to avoid further confusion,\n"
-"the libvncserver options:\n"
-"\n"
-" -alwaysshared\n"
-" -nevershared\n"
-" -dontdisconnect\n"
-"\n"
-"are not available for changing in a running x11vnc (even though it\n"
-"is feasible). These options overlap with the x11vnc options -shared\n"
-"and -forever which are hopefully enough for most usage. They may be\n"
-"specified for x11vnc startup if desired.\n"
-"\n"
-"\"\n"
-"\n"
-"global beginner_mode\n"
-"if {$beginner_mode} {\n"
-" set helptext(gui) \"\n"
-"tkx11vnc is a simple frontend to x11vnc. It is currently running in\n"
-"\\\"ez\\\" or \\\"simple\\\" mode. For many more options run it in normal\n"
-"mode by toggling \\\"Misc -> simple_gui\\\".\n"
-"\n"
-"All menu items have a (?) button one can click on to get more information\n"
-"about the option or command.\n"
-"\n"
-"GUI components: \n"
-"--- ----------\n"
-"\n"
-"1) At the top of the gui is a info text label where information will\n"
-" be posted, e.g. when traversing menu items text indicating how to get\n"
-" help on the item and its current value will be displayed.\n"
-"\n"
-"2) Below the info label is the area where the menu buttons, \\\"Actions\\\",\n"
-" \\\"Clients\\\", etc., are presented. If a menu item has a checkbox,\n"
-" it corresponds to a boolean on/off variable. Otherwise it is\n"
-" either a string variable, or an action not associated with a\n"
-" variable (for the most part).\n"
-"\n"
-"3) Below the menu button area is a label indicating the current x11vnc\n"
-" X display being polled and the corresponding VNC display name. Both\n"
-" will be \\\"(*none*)\\\" when there is no connection established.\n"
-"\n"
-"4) Below the x11 and vnc displays label is a text area there scrolling\n"
-" information about actions being taken and commands being run is displayed.\n"
-" To scroll click in the area and use PageUp/PageDown or the arrow keys.\n"
-"\n"
-"5) At the bottom is an entry area. When one selects a menu item that\n"
-" requires supplying a string value, the label will be set to the\n"
-" parameter name and one types in the new value. Then one presses the\n"
-" \\\"OK\\\" button or presses \\\"Enter\\\" to set the value. Or you can press\n"
-" \\\"Cancel\\\" or \\\"Escape\\\" to avoid changing the variable.\n"
-"\n"
-" Many variables are boolean toggles (for example, \\\"Permissions ->\n"
-" viewonly\\\") or Radio button selections. Selecting these menu items\n"
-" will NOT activate the entry area but rather toggle the variable\n"
-" immediately.\n"
-"\n"
-"CASCADES BUG: There is a bug not yet worked around for the cascade menus\n"
-"where the (?) help button gets in the way. To get the mouse over to\n"
-"the cascade menu click and release mouse to activate the cascade, then\n"
-"you can click on its items. Dragging with a mouse button held down will\n"
-"not work (sorry!).\n"
-"\n"
-"\"\n"
-"}\n"
-"\n"
-"}\n"
-"\n"
-"proc center_win {w} {\n"
-" wm withdraw $w\n"
-" set x [expr [winfo screenwidth $w]/2 - [winfo reqwidth $w]/2];\n"
-" set y [expr [winfo screenheight $w]/2 - [winfo reqheight $w]/2];\n"
-" wm geometry $w +$x+$y\n"
-" wm deiconify $w\n"
-" update\n"
-"}\n"
-"\n"
-"proc textwidth {text} {\n"
-" set min 0;\n"
-" foreach line [split $text \"\\n\"] {\n"
-" set n [string length $line]\n"
-" if {$n > $min} {\n"
-" set min $n\n"
-" }\n"
-" }\n"
-" return $min\n"
-"}\n"
-"\n"
-"proc textheight {text} {\n"
-" set count 0;\n"
-" foreach line [split $text \"\\n\"] {\n"
-" incr count\n"
-" }\n"
-" return $count\n"
-"}\n"
-"\n"
-"proc set_name {name} {\n"
-" global full_win icon_mode\n"
-" global saved_set_name\n"
-"\n"
-" if {![info exists saved_set_name]} {\n"
-" set saved_set_name \"tkx11vnc\"\n"
-" }\n"
-" if {$name == \"RESTORE\"} {\n"
-" set name $saved_set_name\n"
-" } else {\n"
-" set saved_set_name $name\n"
-" }\n"
-" if {![info exists full_win]} {\n"
-" return\n"
-" }\n"
-" set w \".\"\n"
-" if {$icon_mode} {\n"
-" wm title $w \"$name\"\n"
-" wm iconname $w \"$name\"\n"
-" set w $full_win\n"
-" }\n"
-" wm title $w \"$name\"\n"
-" wm iconname $w \"$name\"\n"
-"}\n"
-"\n"
-"proc make_toplevel {w {title \"\"}} {\n"
-" catch {destroy $w}\n"
-" toplevel $w;\n"
-" bind $w <Escape> \"destroy $w\"\n"
-" if {$title != \"\"} {\n"
-" wm title $w $title\n"
-" wm iconname $w $title\n"
-" }\n"
-"}\n"
-"\n"
-"proc textwin {name title text {entry \"\"}} {\n"
-" global max_text_height max_text_width\n"
-" global bfont ffont\n"
-"\n"
-" set width [textwidth $text]\n"
-" incr width\n"
-" if {$width > $max_text_width} {\n"
-" set width $max_text_width\n"
-" }\n"
-" set height [textheight $text]\n"
-" if {$height > $max_text_height} {\n"
-" set height $max_text_height\n"
-" }\n"
-"\n"
-" set w \".text_$name\"\n"
-" make_toplevel $w $title\n"
-"\n"
-" frame $w.f -bd 0;\n"
-" pack $w.f -fill both -expand 1\n"
-" text $w.f.t -width $width -height $height -setgrid 1 -bd 2 \\\n"
-" -yscrollcommand \"$w.f.y set\" -relief ridge \\\n"
-" -font $ffont;\n"
-" scrollbar $w.f.y -orient v -relief sunken -command \"$w.f.t yview\";\n"
-" button $w.f.b -text \"Dismiss\" -command \"destroy $w\" -font $bfont \\\n"
-" -pady 2\n"
-"\n"
-" $w.f.t insert 1.0 $text;\n"
-"\n"
-" bind $w <Enter> \"focus $w.f.t\"\n"
-"\n"
-" if {$entry != \"\"} {\n"
-" # varname+Label Name\n"
-" set list [split $entry \"+\"]\n"
-" set varname [lindex $list 0]\n"
-" set labname [lindex $list 1]\n"
-" frame $w.f.ef -bd 1 -relief groove\n"
-" label $w.f.ef.l -text \"$labname\" -anchor w -font $bfont\n"
-" entry $w.f.ef.e -relief sunken -font $ffont \\\n"
-" -textvariable $varname\n"
-" button $w.f.ef.b -text \"OK\" -font $bfont \\\n"
-" -command \"set ${varname}_ok 1; destroy $w\" \n"
-" bind $w.f.ef.e <KeyPress-Return> \"set ${varname}_ok 1; destroy $w\"\n"
-" \n"
-" pack $w.f.ef.l -side left\n"
-" pack $w.f.ef.e -side left -fill x -expand 1\n"
-" pack $w.f.ef.b -side right\n"
-" }\n"
-"\n"
-" wm withdraw $w\n"
-" pack $w.f.b -side bottom -fill x \n"
-" if {$entry != \"\"} {\n"
-" pack $w.f.ef -side bottom -fill x \n"
-" bind $w <Enter> \"focus $w.f.ef.e\"\n"
-" $w.f.ef.e icursor end\n"
-" } else {\n"
-" bind $w <Enter> \"focus $w.f.t\"\n"
-" }\n"
-" pack $w.f.y -side right -fill y;\n"
-" pack $w.f.t -side top -fill both -expand 1;\n"
-" update\n"
-"\n"
-" center_win $w\n"
-"\n"
-" return $w\n"
-"}\n"
-"\n"
-"proc active_when_connected {item} {\n"
-" global helpremote helptext\n"
-" global icon_mode\n"
-"\n"
-" if {$icon_mode} {\n"
-" if {$item == \"passwd\"} {\n"
-" return 1\n"
-" }\n"
-" if {$item == \"viewpasswd\"} {\n"
-" return 1\n"
-" }\n"
-" }\n"
-"\n"
-" if {[opt_match G $item]} {\n"
-" return 1\n"
-" } elseif {[opt_match R $item]} {\n"
-" return 1\n"
-" } elseif {[opt_match S $item]} {\n"
-" return 0\n"
-" } elseif {[is_action $item]} {\n"
-" if {[opt_match R $item]} {\n"
-" return 1\n"
-" } else {\n"
-" return 0\n"
-" }\n"
-" } elseif {[info exists helpremote($item)]} {\n"
-" return 1\n"
-" } else {\n"
-" return 0\n"
-" }\n"
-"}\n"
-"\n"
-"proc active_when_starting {item} {\n"
-" global helpremote helptext beginner_mode\n"
-"\n"
-" if {$beginner_mode} {\n"
-" if {[opt_match G $item]} {\n"
-" return 1\n"
-" }\n"
-" if {$item == \"display\"} {\n"
-" return 1\n"
-" }\n"
-" if {$item == \"attach\"} {\n"
-" return 1\n"
-" }\n"
-" if {$item == \"debug_gui\"} {\n"
-" return 1\n"
-" }\n"
-" return 0\n"
-" }\n"
-"\n"
-" if {[opt_match G $item]} {\n"
-" return 1\n"
-" } elseif {[opt_match S $item]} {\n"
-" return 1\n"
-" } elseif {[opt_match R $item]} {\n"
-" return 0\n"
-" } elseif {[is_action $item]} {\n"
-" if {[opt_match S $item]} {\n"
-" return 1\n"
-" } else {\n"
-" return 0\n"
-" }\n"
-" } elseif {[info exists helptext($item)]} {\n"
-" return 1\n"
-" } else {\n"
-" return 0\n"
-" }\n"
-"}\n"
-"\n"
-"proc help_win {item} {\n"
-" global helptext helpremote menu_var\n"
-" global query_ans query_aro\n"
-" global beginner_mode\n"
-"\n"
-" set ok 0\n"
-" set text \"Help on $item:\\n\\n\"\n"
-"\n"
-" if {$item == \"NewClient\"} {\n"
-" ;\n"
-" } elseif {[is_gui_internal $item]} {\n"
-" if {$item != \"gui\" && $item != \"all\" && $item != \"Misc-Tuning:\" \\\n"
-" && $item != \"Properties\" && $item != \"Tray\"} {\n"
-" append text \" + Is a gui internal Action (cannot be set).\\n\";\n"
-" }\n"
-" } elseif {[is_action $item]} {\n"
-" append text \" + Is a remote control Action (cannot be set).\\n\";\n"
-" } elseif {[active_when_connected $item]} {\n"
-" append text \" + Can be changed in a running x11vnc.\\n\";\n"
-" } else {\n"
-" append text \" - Cannot be changed in a running x11vnc.\\n\";\n"
-" }\n"
-" if {$item == \"NewClient\"} {\n"
-" ;\n"
-" } elseif {[is_gui_internal $item]} {\n"
-" ;\n"
-" } elseif {[active_when_starting $item]} {\n"
-" append text \" + Can be set at x11vnc startup.\\n\";\n"
-" } else {\n"
-" if {! $beginner_mode} {\n"
-" append text \" - Cannot be set at x11vnc startup.\\n\";\n"
-" }\n"
-" }\n"
-" append text \"\\n\"\n"
-"\n"
-" if {[info exists helptext($item)]} {\n"
-" append text \"\\n\"\n"
-" if {[is_gui_internal $item]} {\n"
-" append text \"==== x11vnc help: ====\\n\";\n"
-" } else {\n"
-" append text \"==== x11vnc startup option help: ====\\n\";\n"
-" }\n"
-" append text \"\\n\"\n"
-" append text $helptext($item)\n"
-" append text \"\\n\"\n"
-" set ok 1\n"
-" }\n"
-"\n"
-" if {[info exists helpremote($item)]} {\n"
-" append text \"\\n\"\n"
-" append text \"==== x11vnc remote control help: ====\\n\";\n"
-" append text \"\\n\"\n"
-" append text $helpremote($item)\n"
-" set ok 1\n"
-" }\n"
-"\n"
-" if {![is_action $item] && [info exists menu_var($item)]} {\n"
-" global unset_str\n"
-" append text \"\\n\\n\"\n"
-" append text \"==== current $item value: ====\\n\";\n"
-" append text \"\\n\"\n"
-"\n"
-" if {$item == \"passwd\" || $item == \"viewpasswd\"} {\n"
-" ;\n"
-" } elseif {$menu_var($item) == \"\"} {\n"
-" append text \"$unset_str\\n\"\n"
-" } else {\n"
-" append text \"$menu_var($item)\\n\"\n"
-" }\n"
-" if {$item == \"http\" || $item == \"httpdir\" || $item == \"httpport\"} {\n"
-" global vnc_url;\n"
-" append text \"\\nURL: $vnc_url\\n\"\n"
-" }\n"
-" }\n"
-"\n"
-" if {$item == \"start\"} {\n"
-" set str [get_start_x11vnc_txt]\n"
-" append_text \"$str\\n\"\n"
-"# append text \"\\nPossible \\$HOME/.x11vncrc settings for this command:\\n\\n\"\n"
-"# set rctxt [get_start_x11vnc_cmd 1]\n"
-"# append text \"$rctxt\\n\"\n"
-" }\n"
-"\n"
-" regsub -all { } $item \" \" name\n"
-"\n"
-" if {$ok} {\n"
-" textwin $name \"x11vnc help: $item\" \"$text\";\n"
-" }\n"
-" return $ok\n"
-"}\n"
-"\n"
-"proc parse_help {} {\n"
-" global env x11vnc_prog;\n"
-" global helpall helptext;\n"
-"\n"
-" set helppipe [open \"| $x11vnc_prog -help\" \"r\"];\n"
-" if {$helppipe == \"\"} {\n"
-" puts stderr \"failed to run $x11vnc_prog -help\";\n"
-" exit 1;\n"
-" }\n"
-"\n"
-" set sawopts 0;\n"
-" set curropt \"\";\n"
-" while {[gets $helppipe line] > -1} {\n"
-" append helpall \"$line\\n\" \n"
-"\n"
-" # XXX\n"
-" if {[regexp {^Options:} $line]} {\n"
-" set sawopts 1;\n"
-" continue;\n"
-" }\n"
-" # XXX\n"
-" if {[regexp {^These options} $line]} {\n"
-" continue;\n"
-" }\n"
-" # tweak aliases:\n"
-" regsub {^-zeroconf} $line \"-zero_conf\" line\n"
-" regsub {^-avahi } $line \"-zeroconf\" line\n"
-"\n"
-" if {! $sawopts} {\n"
-" continue;\n"
-" }\n"
-" if {[regexp {^-([0-9A-z_][0-9A-z_]*)} $line match name]} {\n"
-" set allnames($name) 1;\n"
-" if {\"$curropt\" != \"no$name\" && \"no$curropt\" != \"$name\"} {\n"
-" set curropt $name;\n"
-" set helptext($curropt) \"$line\\n\";\n"
-" } else {\n"
-" append helptext($curropt) \"$line\\n\";\n"
-" }\n"
-" } elseif {$curropt != \"\"} {\n"
-" append helptext($curropt) \"$line\\n\";\n"
-" }\n"
-" }\n"
-" foreach name [array names allnames] {\n"
-" if {[regexp {^no} $name]} {\n"
-" regsub {^no} $name \"\" pair\n"
-" } else {\n"
-" set pair \"no$name\"\n"
-" }\n"
-" if {[info exists helptext($name)]} {\n"
-" if ![info exists helptext($pair)] {\n"
-" set helptext($pair) $helptext($name);\n"
-" }\n"
-" } elseif {[info exists helptext($pair)]} {\n"
-" if ![info exists helptext($name)] {\n"
-" set helptext($name) $helptext($pair);\n"
-" }\n"
-" }\n"
-" }\n"
-"\n"
-" set_internal_help\n"
-"}\n"
-"\n"
-"proc tweak_both {new old} {\n"
-" tweak_help $new $old\n"
-" tweak_remote_help $new $old\n"
-"}\n"
-"\n"
-"proc tweak_remote_help {new old} {\n"
-" global helpremote\n"
-" if ![info exists helpremote($new)] {\n"
-" if {[info exists helpremote($old)]} {\n"
-" set helpremote($new) $helpremote($old)\n"
-" }\n"
-" }\n"
-"}\n"
-"\n"
-"proc tweak_help {new old} {\n"
-" global helptext\n"
-" if ![info exists helptext($new)] {\n"
-" if {[info exists helptext($old)]} {\n"
-" set helptext($new) $helptext($old)\n"
-" }\n"
-" }\n"
-"}\n"
-"\n"
-"proc parse_remote_help {} {\n"
-" global helpremote helptext help_indent remote_name;\n"
-"\n"
-" set sawopts 0;\n"
-" set curropt \"\";\n"
-" set possopts \"\";\n"
-" set offset [expr $help_indent - 1];\n"
-" foreach line [split $helptext(remote) \"\\n\"] {\n"
-" \n"
-" set line [string range $line $offset end];\n"
-"\n"
-" # XXX\n"
-" if {[regexp {^The following -remote/-R commands} $line]} {\n"
-" set sawopts 1;\n"
-" continue;\n"
-" }\n"
-" # XXX\n"
-" if {[regexp {^The vncconnect.*command} $line]} {\n"
-" set sawopts 0;\n"
-" }\n"
-"\n"
-" if {! $sawopts} {\n"
-" continue;\n"
-" }\n"
-" if {[regexp {^([0-9A-z_][0-9A-z_:]*)} $line match name]} {\n"
-" regsub {:.*$} $name \"\" popt\n"
-" lappend possopts $popt\n"
-" if {\"$curropt\" != \"no$name\" && \"no$curropt\" != \"$name\"} {\n"
-" set curropt $name;\n"
-" regsub {:.*$} $curropt \"\" curropt\n"
-" set remote_name($curropt) $name\n"
-" set helpremote($curropt) \"$line\\n\";\n"
-" } else {\n"
-" append helpremote($curropt) \"$line\\n\";\n"
-" }\n"
-" } elseif {$curropt != \"\"} {\n"
-" append helpremote($curropt) \"$line\\n\";\n"
-" }\n"
-" }\n"
-"\n"
-" foreach popt $possopts {\n"
-" if {[info exists helpremote($popt)]} {\n"
-" continue\n"
-" }\n"
-" if {[regexp {^no} $popt]} {\n"
-" regsub {^no} $popt \"\" try\n"
-" } else {\n"
-" set try \"no$popt\"\n"
-" }\n"
-" if {[info exists helpremote($try)]} {\n"
-" set helpremote($popt) $helpremote($try)\n"
-" }\n"
-" }\n"
-"}\n"
-"\n"
-"proc parse_query_help {} {\n"
-" global query_ans query_aro query_ans_list query_aro_list helptext;\n"
-"\n"
-" set sawans 0;\n"
-" set sawaro 0;\n"
-" set ans_str \"\"\n"
-" set aro_str \"\"\n"
-"\n"
-" foreach line [split $helptext(query) \"\\n\"] {\n"
-"\n"
-" if {! $sawans && [regexp {^ *ans=} $line]} {\n"
-" set sawans 1\n"
-" }\n"
-" if {! $sawans} {\n"
-" continue\n"
-" }\n"
-"\n"
-" if {[regexp {^ *aro=} $line]} {\n"
-" set sawaro 1\n"
-" }\n"
-" if {$sawaro && [regexp {^[ ]*$} $line]} {\n"
-" set sawans 0\n"
-" break\n"
-" }\n"
-"\n"
-" regsub {ans=} $line \"\" line\n"
-" regsub {aro=} $line \"\" line\n"
-" set line [string trim $line]\n"
-"\n"
-" if {$sawaro} {\n"
-" set aro_str \"$aro_str $line\"\n"
-" } else {\n"
-" set ans_str \"$ans_str $line\"\n"
-" }\n"
-" }\n"
-"\n"
-" regsub -all { *} $ans_str \" \" ans_str\n"
-" regsub -all { *} $aro_str \" \" aro_str\n"
-"\n"
-" set ans_str [string trim $ans_str]\n"
-" set aro_str [string trim $aro_str]\n"
-" set query_ans_list [split $ans_str]\n"
-" set query_aro_list [split $aro_str]\n"
-"\n"
-" foreach item $query_ans_list {\n"
-" if {[regexp {^[ ]*$} $item]} {\n"
-" continue\n"
-" }\n"
-" set query_ans($item) 1\n"
-" }\n"
-" foreach item $query_aro_list {\n"
-" if {[regexp {^[ ]*$} $item]} {\n"
-" continue\n"
-" }\n"
-" set query_aro($item) 1\n"
-" }\n"
-"}\n"
-"\n"
-"proc in_debug_mode {} {\n"
-" global menu_var\n"
-" if {![info exists menu_var(debug_gui)]} {\n"
-" return 0\n"
-" }\n"
-" return $menu_var(debug_gui)\n"
-"}\n"
-"\n"
-"# Menubar utilities:\n"
-"proc menus_state {state} {\n"
-" global menu_b\n"
-"\n"
-" foreach case [array names menu_b] {\n"
-" set menu_button $menu_b($case)\n"
-" if {![winfo exists $menu_button]} {\n"
-" continue\n"
-" }\n"
-" $menu_button configure -state $state\n"
-" }\n"
-"}\n"
-"\n"
-"proc menus_enable {} {\n"
-" global menus_disabled\n"
-"\n"
-" menus_state \"normal\"\n"
-" set menus_disabled 0\n"
-"}\n"
-"\n"
-"proc menus_disable {} {\n"
-" global menus_disabled\n"
-"\n"
-" set menus_disabled 1\n"
-" menus_state \"disabled\"\n"
-"}\n"
-"\n"
-"# Entry box utilities:\n"
-"proc entry_state {x state} {\n"
-" global entry_box entry_label entry_ok entry_help entry_skip entry_browse\n"
-" global old_labels\n"
-" if {$x == \"all\"} {\n"
-" if {!$old_labels} {\n"
-" $entry_label configure -state $state\n"
-" }\n"
-" $entry_box configure -state $state\n"
-" $entry_ok configure -state $state\n"
-" $entry_skip configure -state $state\n"
-" $entry_help configure -state $state\n"
-" $entry_browse configure -state $state\n"
-" } elseif {$x == \"label\"} {\n"
-" if {!$old_labels} {\n"
-" $entry_label configure -state $state\n"
-" }\n"
-" } elseif {$x == \"box\"} {\n"
-" $entry_box configure -state $state\n"
-" } elseif {$x == \"ok\"} {\n"
-" $entry_ok configure -state $state\n"
-" } elseif {$x == \"skip\"} {\n"
-" $entry_skip configure -state $state\n"
-" } elseif {$x == \"help\"} {\n"
-" $entry_help configure -state $state\n"
-" } elseif {$x == \"browse\"} {\n"
-" $entry_browse configure -state $state\n"
-" }\n"
-"}\n"
-"\n"
-"proc entry_enable {{x \"all\"}} {\n"
-" entry_state $x normal\n"
-"}\n"
-"\n"
-"proc entry_disable {{x \"all\"}} {\n"
-" entry_state $x disabled\n"
-"}\n"
-"\n"
-"proc entry_browse_button {{show 1}} {\n"
-" global entry_browse\n"
-" if {$show} {\n"
-" pack $entry_browse -side left\n"
-" } else {\n"
-" pack forget $entry_browse\n"
-" }\n"
-"}\n"
-"proc entry_focus {} {\n"
-" global entry_box\n"
-" focus $entry_box\n"
-"}\n"
-"proc entry_select {} {\n"
-" global entry_box\n"
-" $entry_box selection range 0 end\n"
-"}\n"
-"proc entry_get {} {\n"
-" global entry_box\n"
-" return [$entry_box get]\n"
-"}\n"
-"proc entry_insert {str} {\n"
-" global entry_box\n"
-" entry_delete\n"
-" $entry_box insert end $str\n"
-" $entry_box icursor end\n"
-"}\n"
-"proc entry_delete {} {\n"
-" global entry_box\n"
-" $entry_box delete 0 end\n"
-"}\n"
-"\n"
-"\n"
-"# Utilities for remote control and updating vars.\n"
-"\n"
-"proc push_new_value {item name new {query 1}} {\n"
-" global menu_var always_update remote_output query_output\n"
-" global query_result_list\n"
-"\n"
-" set debug [in_debug_mode]\n"
-"\n"
-" set getout 0\n"
-" set print_getout 0;\n"
-"\n"
-" set do_query_all 0\n"
-"\n"
-" set newnew \"\"\n"
-" if {$item == \"disconnect\"} {\n"
-" set newnew \"N/A\"\n"
-" set do_query_all 1\n"
-" } elseif {$always_update} {\n"
-" set do_query_all 1\n"
-" }\n"
-"\n"
-" if {$item == \"remote-cmd\"} {\n"
-" # kludge for arbitrary remote command:\n"
-" if {[regexp {^Q:} $new]} {\n"
-" # extra kludge for Q:var to mean -Q var\n"
-" regsub {^Q:} $new \"\" new\n"
-" set qonly 1\n"
-" } else {\n"
-" set qonly 0\n"
-" }\n"
-" # need to extract item from new:\n"
-" set qtmp $new\n"
-" regsub {:.*$} $qtmp \"\" qtmp\n"
-" if {$qonly} {\n"
-" set rargs [list \"-Q\" \"$qtmp\"]\n"
-" set print_getout 1\n"
-" set qargs \"\"\n"
-" } else {\n"
-" set rargs [list \"-R\" \"$new\"]\n"
-" set qargs \"\"\n"
-" }\n"
-" set getout 1\n"
-"\n"
-" } elseif {[value_is_string $item]} {\n"
-" # string var:\n"
-" set rargs [list \"-R\" \"$name:$new\"]\n"
-" set qargs [list \"-Q\" \"$name\"]\n"
-" } else {\n"
-" # boolean var:\n"
-" set rargs [list \"-R\" \"$name\"]\n"
-" set qargs [list \"-Q\" \"$name\"]\n"
-" }\n"
-"\n"
-" if {! $query && ! $always_update} {\n"
-" set getout 1\n"
-" } elseif {$item == \"noremote\"} {\n"
-" set getout 1\n"
-" } elseif {[is_action $item] && ![opt_match Q $item] && $rargs != \"\"} {\n"
-" set getout 1\n"
-" } elseif {[regexp {^(sid|id)$} $item] && ![regexp {^0x} $new]} {\n"
-" set getout 1\n"
-" }\n"
-"\n"
-" set remote_output \"\"\n"
-" set query_output \"\"\n"
-"\n"
-" if {!$debug} {\n"
-" if [regexp {passwd} $rargs] {\n"
-" append_text \"x11vnc ...\"\n"
-" } else {\n"
-" append_text \"x11vnc $rargs ...\"\n"
-" }\n"
-" }\n"
-"\n"
-" if {$getout} {\n"
-" set remote_output [run_remote_cmd $rargs]\n"
-" if {$print_getout} {\n"
-" append_text \"\\t$remote_output\"\n"
-" }\n"
-" append_text \"\\n\"\n"
-" return\n"
-" }\n"
-"\n"
-" if {$do_query_all} {\n"
-" set all [all_query_vars]\n"
-" set qargs [list \"-Q\" $all]\n"
-"\n"
-" global last_query_all_time\n"
-" set last_query_all_time [clock seconds]\n"
-" }\n"
-"\n"
-" set rqargs [concat $rargs $qargs]\n"
-"\n"
-" set query [run_remote_cmd $rqargs]\n"
-" set query_output $query\n"
-"\n"
-" set query_result_list \"\"\n"
-"\n"
-" if {$newnew != \"\"} {\n"
-" set new $newnew\n"
-" }\n"
-"\n"
-" if {![see_if_ok $query $item \"$name:$new\"]} {\n"
-" # failed\n"
-" if {[regexp {^a..=} $query]} {\n"
-" # but some result came back\n"
-" # synchronize everything with a 2nd call.\n"
-" set query_output [query_all 1]\n"
-" } else {\n"
-" # server may be dead\n"
-" if {$item != \"ping\" && $item != \"attach\"} {\n"
-" try_connect\n"
-" }\n"
-" }\n"
-" } else {\n"
-" # succeeded\n"
-" # synchronize this variable (or variables)\n"
-" # for a speedup used the list parsed by see_if_ok.\n"
-" update_menu_vars \"USE_LIST\"\n"
-"\n"
-" if {$do_query_all} {\n"
-" global all_settings\n"
-" set all_settings $query\n"
-" }\n"
-" }\n"
-"}\n"
-"\n"
-"proc set_kmbc_str {} {\n"
-" global vl_bk vl_bm vl_bb vl_bc vl_bf vr_bk vr_bm vr_bb vr_bc vr_bf\n"
-"\n"
-" set str \"\"\n"
-" if {$vl_bk} {\n"
-" append str \"K\"\n"
-" }\n"
-" if {$vl_bm} {\n"
-" append str \"M\"\n"
-" }\n"
-" if {$vl_bb} {\n"
-" append str \"B\"\n"
-" }\n"
-" if {$vl_bc} {\n"
-" append str \"C\"\n"
-" }\n"
-" if {$vl_bf} {\n"
-" append str \"F\"\n"
-" }\n"
-" if {$vr_bk || $vr_bm || $vr_bb || $vr_bc || $vr_bf} {\n"
-" append str \",\"\n"
-" }\n"
-" if {$vr_bk} {\n"
-" append str \"K\"\n"
-" }\n"
-" if {$vr_bm} {\n"
-" append str \"M\"\n"
-" }\n"
-" if {$vr_bb} {\n"
-" append str \"B\"\n"
-" }\n"
-" if {$vr_bc} {\n"
-" append str \"C\"\n"
-" }\n"
-" if {$vr_bf} {\n"
-" append str \"F\"\n"
-" }\n"
-" entry_insert $str\n"
-"}\n"
-"\n"
-"proc insert_input_window {} {\n"
-" global text_area cleanup_window\n"
-" global ffont menu_var\n"
-" global vl_bk vl_bm vl_bb vl_bc vl_bf vr_bk vr_bm vr_bb vr_bc vr_bf\n"
-"\n"
-" append_text \"\\nUse these checkboxes to set the input permissions, \"\n"
-" append_text \"or type in the \\\"KMBCF...\\\"\\n\"\n"
-" append_text \"-input string manually. Then press \\\"OK\\\" or \\\"Cancel\\\".\\n\"\n"
-" append_text \"(note: an empty setting means use the default behavior, \"\n"
-" append_text \"see viewonly)\\n\\n\"\n"
-" set w \"$text_area.wk_f\"\n"
-" catch {destroy $w}\n"
-" frame $w -bd 1 -relief ridge -cursor {top_left_arrow}\n"
-" set fl $w.fl\n"
-" frame $fl\n"
-" set fr $w.fr\n"
-" frame $fr\n"
-" label $fl.l -font $ffont -text \"Normal clients: \"\n"
-" checkbutton $fl.bk -pady 1 -font $ffont -anchor w -variable vl_bk \\\n"
-" -pady 1 -command set_kmbc_str -text \"Keystrokes\" \n"
-" checkbutton $fl.bm -font $ffont -anchor w -variable vl_bm \\\n"
-" -pady 1 -command set_kmbc_str -text \"Mouse-Motion\" \n"
-" checkbutton $fl.bb -font $ffont -anchor w -variable vl_bb \\\n"
-" -pady 1 -command set_kmbc_str -text \"Button-Click\"\n"
-" checkbutton $fl.bc -font $ffont -anchor w -variable vl_bc \\\n"
-" -pady 1 -command set_kmbc_str -text \"Clipboard-Input\"\n"
-" checkbutton $fl.bf -font $ffont -anchor w -variable vl_bf \\\n"
-" -pady 1 -command set_kmbc_str -text \"Files\"\n"
-" label $fr.l -pady 1 -font $ffont -text \"View-Only clients:\"\n"
-" checkbutton $fr.bk -font $ffont -anchor w -variable vr_bk \\\n"
-" -pady 1 -command set_kmbc_str -text \"Keystrokes\" \n"
-" checkbutton $fr.bm -font $ffont -anchor w -variable vr_bm \\\n"
-" -pady 1 -command set_kmbc_str -text \"Mouse-Motion\" \n"
-" checkbutton $fr.bb -font $ffont -anchor w -variable vr_bb \\\n"
-" -pady 1 -command set_kmbc_str -text \"Button-Click\"\n"
-" checkbutton $fr.bc -font $ffont -anchor w -variable vr_bc \\\n"
-" -pady 1 -command set_kmbc_str -text \"Clipboard-Input\"\n"
-" checkbutton $fr.bf -font $ffont -anchor w -variable vr_bf \\\n"
-" -pady 1 -command set_kmbc_str -text \"Files\"\n"
-"\n"
-" if {[info exists menu_var(input)]} {\n"
-" set input_str $menu_var(input)\n"
-" } else {\n"
-" set input_str \"\"\n"
-" }\n"
-"\n"
-" if {[regexp {(.*),(.*)} $input_str match normal viewonly]} {\n"
-" ;\n"
-" } else {\n"
-" set normal $input_str\n"
-" set viewonly \"\"\n"
-" }\n"
-" set vl_bk 0\n"
-" set vl_bm 0\n"
-" set vl_bb 0\n"
-" set vl_bc 0\n"
-" set vl_bf 0\n"
-"\n"
-" set vr_bk 0\n"
-" set vr_bm 0\n"
-" set vr_bb 0\n"
-" set vr_bc 0\n"
-" set vr_bf 0\n"
-"\n"
-" if {[regexp -nocase {K} $normal]} {\n"
-" set vl_bk 1\n"
-" }\n"
-" if {[regexp -nocase {M} $normal]} {\n"
-" set vl_bm 1\n"
-" }\n"
-" if {[regexp -nocase {B} $normal]} {\n"
-" set vl_bb 1\n"
-" }\n"
-" if {[regexp -nocase {C} $normal]} {\n"
-" set vl_bc 1\n"
-" }\n"
-" if {[regexp -nocase {F} $normal]} {\n"
-" set vl_bf 1\n"
-" }\n"
-" if {[regexp -nocase {K} $viewonly]} {\n"
-" set vr_bk 1\n"
-" }\n"
-" if {[regexp -nocase {M} $viewonly]} {\n"
-" set vr_bm 1\n"
-" }\n"
-" if {[regexp -nocase {B} $viewonly]} {\n"
-" set vr_bb 1\n"
-" }\n"
-" if {[regexp -nocase {C} $viewonly]} {\n"
-" set vr_bc 1\n"
-" }\n"
-" if {[regexp -nocase {F} $viewonly]} {\n"
-" set vr_bf 1\n"
-" }\n"
-"\n"
-" pack $fl.l $fl.bk $fl.bm $fl.bb $fl.bc $fl.bf -side top -fill x\n"
-" pack $fr.l $fr.bk $fr.bm $fr.bb $fr.bc $fr.bf -side top -fill x\n"
-" pack $fl $fr -side left\n"
-" update\n"
-" update idletasks\n"
-" $text_area window create end -window $w\n"
-" $text_area see end\n"
-" $text_area insert end \"\\n\"\n"
-"# $text_area insert end \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\"\n"
-"\n"
-" set cleanup_window $w\n"
-"}\n"
-"\n"
-"proc set_ca_str {w} {\n"
-" global ca_bk ca_bm ca_bb ca_bc ca_bf ca_di\n"
-"\n"
-" if {$ca_di} {\n"
-" entry_insert \"disconnect\"\n"
-" $w.bk configure -state disabled\n"
-" $w.bm configure -state disabled\n"
-" $w.bb configure -state disabled\n"
-" $w.bc configure -state disabled\n"
-" $w.bf configure -state disabled\n"
-" return\n"
-" }\n"
-"\n"
-" $w.bk configure -state normal\n"
-" $w.bm configure -state normal\n"
-" $w.bb configure -state normal\n"
-" $w.bc configure -state normal\n"
-" $w.bf configure -state normal\n"
-"\n"
-" set str \"\"\n"
-" if {$ca_bk} {\n"
-" append str \"K\"\n"
-" }\n"
-" if {$ca_bm} {\n"
-" append str \"M\"\n"
-" }\n"
-" if {$ca_bb} {\n"
-" append str \"B\"\n"
-" }\n"
-" if {$ca_bc} {\n"
-" append str \"C\"\n"
-" }\n"
-" if {$ca_bf} {\n"
-" append str \"F\"\n"
-" }\n"
-" entry_insert $str\n"
-"}\n"
-"\n"
-"proc insert_client_action_window {input} {\n"
-" global text_area cleanup_window\n"
-" global ffont menu_var\n"
-" global ca_bk ca_bm ca_bb ca_bc ca_bf ca_di\n"
-"\n"
-" append_text \"\\nUse these checkboxes to set the input permissions \"\n"
-" append_text \"for this client\\n-OR- whether to disconnect it instead. \"\n"
-" append_text \"Then press \\\"OK\\\" or \\\"Cancel\\\".\\n\\n\"\n"
-" set w \"$text_area.ca_f\"\n"
-" catch {destroy $w}\n"
-" frame $w -bd 1 -relief ridge -cursor {top_left_arrow}\n"
-" checkbutton $w.di -pady 1 -font $ffont -anchor w -variable ca_di \\\n"
-" -pady 1 -command \"set_ca_str $w\" -text \"Disconnect \" \n"
-" checkbutton $w.bk -font $ffont -anchor w -variable ca_bk \\\n"
-" -pady 1 -command \"set_ca_str $w\" -text \"Keystrokes\" \n"
-" checkbutton $w.bm -font $ffont -anchor w -variable ca_bm \\\n"
-" -pady 1 -command \"set_ca_str $w\" -text \"Mouse-Motion\" \n"
-" checkbutton $w.bb -font $ffont -anchor w -variable ca_bb \\\n"
-" -pady 1 -command \"set_ca_str $w\" -text \"Button-Click\"\n"
-" checkbutton $w.bc -font $ffont -anchor w -variable ca_bc \\\n"
-" -pady 1 -command \"set_ca_str $w\" -text \"Clipboard\"\n"
-" checkbutton $w.bf -font $ffont -anchor w -variable ca_bf \\\n"
-" -pady 1 -command \"set_ca_str $w\" -text \"Files\"\n"
-"\n"
-" set ca_di 0\n"
-" set ca_bk 0\n"
-" set ca_bm 0\n"
-" set ca_bb 0\n"
-" set ca_bf 0\n"
-" set ca_bc 0\n"
-"\n"
-" if {[regexp -nocase {K} $input]} {\n"
-" set ca_bk 1\n"
-" }\n"
-" if {[regexp -nocase {M} $input]} {\n"
-" set ca_bm 1\n"
-" }\n"
-" if {[regexp -nocase {B} $input]} {\n"
-" set ca_bb 1\n"
-" }\n"
-" if {[regexp -nocase {C} $input]} {\n"
-" set ca_bc 1\n"
-" }\n"
-" if {[regexp -nocase {F} $input]} {\n"
-" set ca_bf 1\n"
-" }\n"
-"\n"
-" pack $w.di $w.bk $w.bm $w.bb $w.bc $w.bf -side left\n"
-" update\n"
-" update idletasks\n"
-" $text_area window create end -window $w\n"
-" $text_area see end\n"
-" $text_area insert end \"\\n\"\n"
-"\n"
-" set cleanup_window $w\n"
-"}\n"
-"\n"
-"proc cleanup_text_window {} {\n"
-" global cleanup_window\n"
-" if {[info exists cleanup_window]} {\n"
-" catch {destroy $cleanup_window}\n"
-" }\n"
-"}\n"
-"\n"
-"# For updating a string variable. Also used for simple OK/Cancel dialogs\n"
-"# with entry = 0.\n"
-"proc entry_dialog {item {entry 1}} {\n"
-" global menu_var entry_str entry_set entry_dialog_item\n"
-" global unset_str connected_to_x11vnc entry_box\n"
-"\n"
-" set entry_str \"Set $item\"\n"
-" set entry_set 0\n"
-" set entry_dialog_item $item\n"
-"\n"
-" entry_enable\n"
-" menus_disable\n"
-"\n"
-" if {$item == \"passwd\" || $item == \"viewpasswd\"} {\n"
-" $entry_box configure -show \"*\"\n"
-" }\n"
-"\n"
-" if {$entry} {\n"
-" entry_insert \"\"\n"
-" if {[info exists menu_var($item)] &&\n"
-" $menu_var($item) != $unset_str} {\n"
-" entry_insert $menu_var($item)\n"
-" entry_select\n"
-" }\n"
-"\n"
-" if {[is_browse $item]} {\n"
-" entry_browse_button\n"
-" }\n"
-" set_info \"Set parameter in entry box, \"\n"
-" entry_focus\n"
-" } else {\n"
-" entry_disable box\n"
-" }\n"
-"\n"
-" set clean_text_window 0;\n"
-"\n"
-" if {$item == \"input\"} {\n"
-" insert_input_window\n"
-" set clean_text_window 1\n"
-" }\n"
-"\n"
-" update\n"
-"\n"
-" # wait for user reply:\n"
-" vwait entry_set\n"
-"\n"
-" set rc $entry_set\n"
-" set entry_set 0\n"
-"\n"
-" set value [entry_get]\n"
-" update\n"
-"\n"
-" entry_browse_button 0\n"
-" set entry_str \"Set... :\"\n"
-"\n"
-" entry_delete\n"
-" entry_disable\n"
-" menus_enable\n"
-"\n"
-" if {$clean_text_window} {\n"
-" cleanup_text_window;\n"
-" }\n"
-"\n"
-" update\n"
-"\n"
-" if {! $entry} {\n"
-" ;\n"
-" } elseif {$rc} {\n"
-" set menu_var($item) $value\n"
-" } else {\n"
-" if {[in_debug_mode]} {\n"
-" append_text \"skipped setting $item\\n\"\n"
-" }\n"
-" }\n"
-"\n"
-" $entry_box configure -show \"\"\n"
-"\n"
-" return $rc\n"
-"}\n"
-"\n"
-"proc warning_dialog {msg {item \"gui\"} } {\n"
-" append_text $msg\n"
-" # just reuse the entry widgets for a yes/no dialog\n"
-" return [entry_dialog $item 0]\n"
-"}\n"
-"\n"
-"# For updating a boolean toggle:\n"
-"proc check_var {item} {\n"
-" global menu_var\n"
-"\n"
-" set inval $menu_var($item);\n"
-"\n"
-" if {$item == \"debug_gui\"} {\n"
-" return \"\";\n"
-" }\n"
-"\n"
-" set rname $item\n"
-" if {! $inval} {\n"
-" if {[regexp {^no} $item]} {\n"
-" regsub {^no} $rname \"\" rname\n"
-" } else {\n"
-" set rname \"no$rname\"\n"
-" }\n"
-" }\n"
-" return $rname\n"
-"}\n"
-"\n"
-"proc see_if_ok {query item expected} {\n"
-" global query_result_list\n"
-"\n"
-" set ok 0\n"
-" set found \"\"\n"
-"\n"
-" set query_result_list [split_query $query]\n"
-"\n"
-" foreach q $query_result_list {\n"
-" # XXX following will crash if $item is not a good regexp\n"
-" # need to protect it \\Q$item\\E style...\n"
-"# if {[regexp \"^$item:\" $q]} {\n"
-"# set found $q\n"
-"# }\n"
-" if {[string first \"$item:\" $q] == 0} {\n"
-" set found $q\n"
-" }\n"
-" if {$q == $expected} {\n"
-" set ok 1\n"
-" if {$found != \"\"} {\n"
-" break;\n"
-" }\n"
-" }\n"
-" }\n"
-" if {$found == \"\"} {\n"
-" set msg $query\n"
-" regsub {^a..=} $msg {} msg\n"
-" if {[string length $msg] > 60} {\n"
-" set msg [string range $msg 0 60]\n"
-" }\n"
-" } else {\n"
-" set msg $found\n"
-" }\n"
-" if {!$ok && $found != \"\"} {\n"
-" # check for floating point match:\n"
-" set v1 \"\"\n"
-" set v2 \"\"\n"
-" regexp {:([0-9.][0-9.]*)$} $found m0 v1\n"
-" regexp {:([0-9.][0-9.]*)$} $expected m0 v2\n"
-" if {$v1 != \"\" && $v2 != \"\"} {\n"
-" set diff \"\"\n"
-" catch {set diff [expr \"$v1 - $v2\"]}\n"
-" if {$diff != \"\"} {\n"
-" if {$diff < 0} {\n"
-" set diff [expr \"0.0 - $diff\"]\n"
-" }\n"
-" if {$diff < 0.00001} {\n"
-" set ok 1\n"
-" }\n"
-" }\n"
-" }\n"
-" }\n"
-" if {$ok} {\n"
-" append_text \"\\tSet OK ($msg)\\n\"\n"
-" return 1\n"
-"\n"
-" } elseif {[opt_match P $item] && [regexp {:(-|\\+)} $expected]} {\n"
-" # e.g. blackout:+30x30+20+20\n"
-" append_text \"\\t($msg)\\n\"\n"
-" return 1\n"
-" } elseif {[regexp {:[0-9]\\.[0-9]} $expected]} {\n"
-" append_text \"\\t($msg)\\n\"\n"
-" return 1\n"
-" } elseif {$item == \"connect\" || $item == \"disconnect\"\n"
-" || $item == \"client\" || $item == \"client_input\"} {\n"
-" append_text \"\\t($msg)\\n\"\n"
-" return 1\n"
-" } elseif {$item == \"passwd\" || $item == \"viewpasswd\"} {\n"
-" append_text \"\\t($msg)\\n\"\n"
-" return 1\n"
-" } else {\n"
-" append_text \"\\t*FAILED* $msg\\n\"\n"
-" return 0\n"
-" }\n"
-"}\n"
-"\n"
-"proc get_default_vars {} {\n"
-" global default_var env\n"
-"\n"
-" set qry [all_query_vars]\n"
-"\n"
-" append qry \",vncconnect\"\n"
-"\n"
-" set q \"\"\n"
-" set i 0\n"
-" set all \"\"\n"
-" foreach s [split $qry \",\"] {\n"
-" if {$q != \"\"} {\n"
-" append q \",\"\n"
-" }\n"
-" append q $s\n"
-" incr i\n"
-" 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"
-" append all $a\n"
-" set q \"\"\n"
-" set i 0\n"
-" }\n"
-" }\n"
-" 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"
-" append all $a\n"
-" }\n"
-"\n"
-"# old way, qry too long...\n"
-"# set qargs [list \"-QD\" $qry]\n"
-"# set all [run_remote_cmd $qargs]\n"
-"\n"
-" if {[regexp {ans=} $all]} {\n"
-" #append_text \"Retrieved all default settings.\\n\"\n"
-" } else {\n"
-" #append_text \"Failed to retrieve default settings.\\n\"\n"
-" }\n"
-"\n"
-" set query_result_list [split_query $all]\n"
-"\n"
-" set default_var(gui) \"\"\n"
-"\n"
-" foreach piece $query_result_list {\n"
-" if {[regexp {^([^:][^:]*):(.*)$} $piece m0 item val]} {\n"
-" if {$val == \"N/A\"} {\n"
-" if {$item == \"vncconnect\"} {\n"
-" set val 1\n"
-" } else {\n"
-" set val \"\"\n"
-" }\n"
-" }\n"
-" if {$item == \"display\"} {\n"
-" set val \"\"\n"
-" } elseif {$item == \"desktop\"} {\n"
-" set val \"\"\n"
-" } elseif {$item == \"auth\"} {\n"
-" set val \"\"\n"
-" } elseif {$item == \"gui\"} {\n"
-" continue\n"
-" } \n"
-" # some hacks we do here for now..\n"
-" if {$item == \"cursor\" && $val == \"\"} {\n"
-" set val \"most\"\n"
-" } elseif {$item == \"scrollcopyrect\" && $val == \"\"} {\n"
-" set val \"always\"\n"
-" } elseif {$item == \"wirecopyrect\" && $val == \"\"} {\n"
-" set val \"always\"\n"
-"# } elseif {$item == \"overlay_nocursor\" && $val == 0} {\n"
-"# set val 1\n"
-" }\n"
-"\n"
-" set default_var($item) $val\n"
-"#puts \"default: $item -> $val\"\n"
-" }\n"
-" }\n"
-"}\n"
-"\n"
-"proc tilde_expand {file} {\n"
-" global env\n"
-" if {[file exists $file]} {\n"
-" return $file\n"
-" }\n"
-"\n"
-" set user \"\"\n"
-" if {[info exists env(USER)]} {\n"
-" set user $env(USER)\n"
-" }\n"
-" if {$user == \"\" && [info exists env(LOGNAME)]} {\n"
-" set user $env(LOGNAME)\n"
-" }\n"
-"\n"
-" set home \"\"\n"
-" if {[info exists env(HOME)]} {\n"
-" set home $env(HOME)\n"
-" } elseif {$user != \"\"} {\n"
-" set home \"/home/$user\"\n"
-" }\n"
-"\n"
-" if {[regexp {^~} $file]} {\n"
-" if {[regexp {^~/} $file]} {\n"
-" if {$home != \"\"} {\n"
-" regsub {^~} $file $home file\n"
-" }\n"
-" } else {\n"
-" regsub {^~} $file \"/home/\" file\n"
-" }\n"
-" }\n"
-" return $file\n"
-"}\n"
-"\n"
-"proc insert_cmdline_vars {} {\n"
-" global env cmd_var menu_var default_var x11vnc_cmdline\n"
-" if {![info exists x11vnc_cmdline]} {\n"
-" return\n"
-" }\n"
-" if {$x11vnc_cmdline == \"\"} {\n"
-" return\n"
-" }\n"
-" set cmd_var(novar) 1 \n"
-" set str [string trim $x11vnc_cmdline]\n"
-"\n"
-" while {[regexp -- {^-} $str]} {\n"
-" if {[regexp -- {^--*([^ \\t][^ \\t]*)(.*)$} $str m var rest]} {\n"
-" set rest [string trim $rest]\n"
-" set var [string trim $var]\n"
-" if {[regexp {^\\{\\{([^\\}]*)\\}\\}(.*)} $rest m val rest]} {\n"
-" set str [string trim $rest]\n"
-" set cmd_var($var) $val\n"
-" } else {\n"
-" set str $rest\n"
-" set cmd_var($var) \"boolean\"\n"
-" }\n"
-" } else {\n"
-" break\n"
-" }\n"
-" }\n"
-"\n"
-" if {[info exists cmd_var(rc)]} {\n"
-" load_settings $cmd_var(rc)\n"
-" } elseif {[info exists cmd_var(norc)]} {\n"
-" ;\n"
-" } else {\n"
-" set filex [tilde_expand \"~/.x11vncrc\"]\n"
-" if {[file exists $filex]} {\n"
-" load_settings $filex\n"
-" }\n"
-" }\n"
-"\n"
-" foreach var [array names cmd_var] {\n"
-" if {$var == \"novar\"} {\n"
-" continue\n"
-" }\n"
-" if {[regexp {^[ \\t]*$} $var]} {\n"
-" continue\n"
-" }\n"
-" if {[info exists menu_var($var)]} {\n"
-" if {$cmd_var($var) == \"boolean\"} {\n"
-" set menu_var($var) 1\n"
-" } else {\n"
-" set menu_var($var) $cmd_var($var)\n"
-" }\n"
-" }\n"
-" }\n"
-"}\n"
-"\n"
-"proc copy_default_vars {} {\n"
-" global menu_var default_var\n"
-" foreach item [array names default_var] {\n"
-" if {[info exists menu_var($item)]} {\n"
-" if {[info exists default_var($item)]} {\n"
-" set menu_var($item) $default_var($item)\n"
-" }\n"
-" }\n"
-" }\n"
-" foreach item [array names menu_var] {\n"
-" if {[info exists default_var($item)]} {\n"
-" set menu_var($item) $default_var($item)\n"
-" }\n"
-" }\n"
-"}\n"
-"\n"
-"proc update_menu_vars {{query \"\"}} {\n"
-" global all_settings menu_var query_result_list\n"
-" global x11vnc_icon_mode\n"
-"\n"
-" set debug [in_debug_mode]\n"
-"\n"
-" if {$query == \"USE_LIST\"} {\n"
-" ;\n"
-" } elseif {$query == \"\"} {\n"
-" set query_result_list [split_query $all_settings]\n"
-" } else {\n"
-" set query_result_list [split_query $query]\n"
-" }\n"
-"\n"
-" foreach piece $query_result_list {\n"
-"#puts stderr \"UMV: $piece\"\n"
-" if [regexp {icon_mode:0} $piece] {\n"
-" set x11vnc_icon_mode 0\n"
-" #puts stderr \"x11vnc_icon_mode: $x11vnc_icon_mode\"\n"
-" }\n"
-" if [regexp {icon_mode:1} $piece] {\n"
-" set x11vnc_icon_mode 1\n"
-" #puts stderr \"x11vnc_icon_mode: $x11vnc_icon_mode\"\n"
-" }\n"
-" # XXX ipv6\n"
-" if {[regexp {^([^:][^:]*):(.*)$} $piece m0 item val]} {\n"
-" if {[info exists menu_var($item)]} {\n"
-" set old $menu_var($item)\n"
-"#puts stderr \" $old\"\n"
-" if {$val == \"N/A\"} {\n"
-" continue\n"
-" }\n"
-" set menu_var($item) $val\n"
-" }\n"
-" if {$item == \"clients\"} {\n"
-" update_clients_menu $val\n"
-" } elseif {$item == \"display\"} {\n"
-" set_x11_display $val\n"
-" } elseif {$item == \"vncdisplay\"} {\n"
-" set_vnc_display $val\n"
-" } elseif {$item == \"http_url\"} {\n"
-" set_vnc_url $val\n"
-" }\n"
-" }\n"
-" }\n"
-"}\n"
-"\n"
-"proc load_settings {{file \"\"}} {\n"
-" global menu_var default_var env\n"
-"\n"
-" if {$file == \"\"} {\n"
-" if {![info exists menu_var(load-settings)]} {\n"
-" return\n"
-" }\n"
-" set file $menu_var(load-settings)\n"
-" }\n"
-" if {$file == \"\"} {\n"
-" return\n"
-" }\n"
-"\n"
-" set fh \"\"\n"
-" set filex [tilde_expand $file]\n"
-" catch {set fh [open $filex \"r\"]}\n"
-"\n"
-" if {$fh == \"\"} {\n"
-" append_text \"load_settings: *** failed to open $filex ***\\n\"\n"
-" return\n"
-" }\n"
-" copy_default_vars\n"
-"\n"
-" set str \"\"\n"
-" while {[gets $fh line] > -1} {\n"
-" regsub -all {\\\\#} $line {__QUOTED_HASH__} line\n"
-" if {[regexp {^[ \\t]*#} $line]} {\n"
-" continue\n"
-" }\n"
-" for {set i 0} {$i < 5} {incr i} {\n"
-" regsub {#.*$} $line \"\" line\n"
-" }\n"
-" if {[regexp {^[ \\t]*$} $line]} {\n"
-" continue\n"
-" }\n"
-" regsub -all {__QUOTED_HASH__} $line {#} line\n"
-" if {[regexp {\\\\$} $line]} {\n"
-" regsub {\\\\$} $line \" \" line\n"
-" append str \"$line\"\n"
-" } else {\n"
-" append str \"$line\\n\"\n"
-" }\n"
-" }\n"
-" close $fh\n"
-"\n"
-" set count 0\n"
-" set parms \"\"\n"
-"\n"
-" foreach line [split $str \"\\n\"] {\n"
-" set line [string trim $line]\n"
-" regsub {^--*} $line \"\" line\n"
-" regsub -all {[ \\t][ \\t]*} $line \" \" line\n"
-" set list [split $line]\n"
-" set item [lindex $list 0]\n"
-" set value [lindex $list 1]\n"
-" if {[regexp {^[ \\t]*$} $item]} {\n"
-" continue\n"
-" }\n"
-" if {$item == \"gui\"} {\n"
-" continue\n"
-" }\n"
-" if {[info exists menu_var($item)]} {\n"
-" if {[value_is_bool $item]} {\n"
-" set menu_var($item) 1\n"
-" incr count\n"
-" append parms \" -$item\\n\"\n"
-" } elseif {[value_is_string $item]} {\n"
-" if {$value != \"\"} {\n"
-" set menu_var($item) $value\n"
-" set nitem [get_nitem $item]\n"
-" append parms \" -$nitem $value\\n\"\n"
-" incr count\n"
-" }\n"
-" }\n"
-" }\n"
-" }\n"
-" append_text \"loaded $count parameter settings from $filex\"\n"
-" if {$count > 0} {\n"
-" append_text \":\\n\"\n"
-" append_text $parms\n"
-" } else {\n"
-" append_text \".\\n\"\n"
-" }\n"
-"}\n"
-"\n"
-"proc save_settings {} {\n"
-" set rc_text [get_settings_rcfile]\n"
-"\n"
-" set top \"#\n"
-"# This file is based on the current x11vnc settings and can be used as\n"
-"# as a ~/.x11vncrc defaults file. If saved to another filename, these\n"
-"# settings can be passed to x11vnc at startup via \\\"-rc <filename>\\\".\n"
-"#\n"
-"# The rc file comment character is \\\"#\\\". Use \\\"\\\\#\\\" for the literal char.\n"
-"# You can continue lines using \\\"\\\\\\\" as the last character of a line.\n"
-"#\n"
-"# Lines beginning with \\\"#d\\\" indicate the parameter value is at its default\n"
-"# setting and you probably want to leave it commented out.\n"
-"#\n"
-"# Lines beginning with \\\"#?\\\" indicate parameters you probably do not\n"
-"# want to hardwire to the current setting (uncomment if you want that).\n"
-"# \n"
-"# Some parameters are boolean, e.g. -forever, and take no value; while\n"
-"# the others, e.g. -wait 50, take a string or numerical value.\n"
-"#\n"
-"# For booleans, the line will end with comment \\\"default: on\\\" or\n"
-"# \\\"default: off\\\" indicating the default setting. (Note: often\n"
-"# \\\"-nofoobar\\\" corresponds to option \\\"-foobar\\\" and the former is\n"
-"# \\\"the default\\\", e.g. -norepeat).\n"
-"#\n"
-"# For string or numerical options, the value \\\"\\\" in a line below\n"
-"# means the default is unset and you will need to supply some non-empty\n"
-"# value to use the parameter. For reference, if the default differs\n"
-"# from your value it placed at the end of the line as a comment.\n"
-"# \n"
-"# Feel free to uncomment or comment any of the lines or to change any\n"
-"# of the values of the parameters. Don't be surprised that most if not\n"
-"# all of the lines below are commented out (x11vnc has so many parameters,\n"
-"# most of them will be at their default values).\n"
-"#-------------------------------------------------------------------------\n"
-"\n"
-"\"\n"
-"\n"
-" set rc_text \"$top$rc_text\"\n"
-"\n"
-" global env save_settings_var save_settings_var_ok\n"
-" if {[info exists env(HOME)]} {\n"
-" set save_settings_var \"$env(HOME)/.x11vncrc\"\n"
-" } else {\n"
-" set save_settings_var \".x11vncrc\"\n"
-" }\n"
-" set save_settings_var_ok 0\n"
-"\n"
-" set w [textwin \"save_settings\" \"Save Settings...\" $rc_text \\\n"
-" \"save_settings_var+Save as:\"]\n"
-"\n"
-" tkwait window $w\n"
-"\n"
-" if {$save_settings_var_ok == 1} {\n"
-" set file $save_settings_var\n"
-" if {$file == \"\"} {\n"
-" return\n"
-" }\n"
-" set file [tilde_expand $file]\n"
-" append_text \"\\nSaving current settings to $file ...\\n\" \n"
-" if {[file exists $file]} {\n"
-" set backup \"${file}~\"\n"
-" append_text \"Backing up $file -> $backup ...\\n\"\n"
-" catch {file delete -force $backup}\n"
-" set emsg \"*** Backup to $backup failed. ***\\n\"\n"
-" if {![file exists $backup]} {\n"
-" catch {file copy -force $file $backup}\n"
-" if {![file exists $backup]} {\n"
-" append_text $emsg\n"
-" bell\n"
-" }\n"
-" } else {\n"
-" append_text $emsg\n"
-" bell\n"
-" }\n"
-" }\n"
-" set fh \"\"\n"
-" catch {set fh [open $file \"w\"]}\n"
-" if {$fh != \"\"} {\n"
-" puts $fh $rc_text\n"
-" close $fh\n"
-" if {![file exists $file]} {\n"
-" append_text \"*** Saving to $file failed. ***\\n\"\n"
-" bell\n"
-" } else {\n"
-" append_text \"Done.\\n\"\n"
-" }\n"
-" } else {\n"
-" append_text \"*** Open of $file failed. ***\\n\"\n"
-" bell\n"
-" }\n"
-" }\n"
-"}\n"
-"\n"
-"proc clear_all {} {\n"
-" global menu_var unset_str\n"
-"\n"
-" set debug [in_debug_mode]\n"
-" \n"
-" foreach item [array names menu_var] {\n"
-" if {$item == \"debug_gui\"} {\n"
-" continue\n"
-" }\n"
-" if {[info exists menu_var($item)]} {\n"
-" if {[is_action $item]} {\n"
-" set menu_var($item) \"\"\n"
-" } elseif {[value_is_bool $item]} {\n"
-" set menu_var($item) 0\n"
-" } elseif {[value_is_string $item]} {\n"
-" set menu_var($item) $unset_str\n"
-" }\n"
-" }\n"
-" }\n"
-" append_text \"Cleared all settings.\\n\"\n"
-"}\n"
-"\n"
-"proc defaults_all {} {\n"
-" copy_default_vars\n"
-" append_text \"Reset all variables to default values.\\n\"\n"
-"}\n"
-"\n"
-"proc all_query_vars {} {\n"
-" global query_ans_list query_aro_list all_settings\n"
-" global cache_all_query_vars\n"
-" \n"
-" if {$cache_all_query_vars != \"\"} {\n"
-" return $cache_all_query_vars\n"
-" }\n"
-"\n"
-" set qry \"\"\n"
-" foreach item $query_ans_list {\n"
-" if {$qry == \"\"} {\n"
-" set qry $item\n"
-" } else {\n"
-" append qry \",$item\"\n"
-" }\n"
-" }\n"
-" foreach item $query_aro_list {\n"
-" if {$qry == \"\"} {\n"
-" set qry $item\n"
-" } else {\n"
-" append qry \",$item\"\n"
-" }\n"
-" }\n"
-" set cache_all_query_vars $qry\n"
-"\n"
-" global env\n"
-" if [info exists env(TKX11VNC_PRINT_ALL_VARS)] {\n"
-" puts \"--------------- BEGIN ALL VARS ---------------\"\n"
-" puts $qry\n"
-" puts \"--------------- END ALL VARS ---------------\"\n"
-" }\n"
-"\n"
-" return $qry\n"
-"}\n"
-"\n"
-"proc query_all {{quiet 0}} {\n"
-" global query_ans_list query_aro_list all_settings\n"
-" global last_query_all_time\n"
-"\n"
-" dtime 1\n"
-" set qry [all_query_vars]\n"
-"\n"
-" set qargs [list \"-Q\" $qry]\n"
-" set all [run_remote_cmd $qargs]\n"
-"\n"
-" if {[regexp {ans=} $all]} {\n"
-" if {! $quiet} {\n"
-" append_text \"Retrieved all current settings.\\n\"\n"
-" }\n"
-" set all_settings $all\n"
-" update_menu_vars $all\n"
-" } else {\n"
-" if {! $quiet} {\n"
-" append_text \"Failed to retrieve current settings.\\n\"\n"
-" }\n"
-" }\n"
-" set last_query_all_time [clock seconds]\n"
-" dtime 2\n"
-" return $all\n"
-"}\n"
-"\n"
-"proc set_info {str} {\n"
-" global info_str info_label\n"
-"#set w1 [$info_label cget -width]\n"
-"#set w2 [winfo width $info_label]\n"
-"#puts \"set_info: w=$w1 winfo=$w2\"\n"
-"#append_text \"$str\\n\"\n"
-" set info_str \"$str\"\n"
-" update\n"
-"}\n"
-"\n"
-"proc append_text {str} {\n"
-" global text_area text_area_str\n"
-"\n"
-" if {![info exists text_area_str]} {\n"
-" set text_area_str \"\"\n"
-" }\n"
-" append text_area_str $str\n"
-"\n"
-" if {![info exists text_area]} {\n"
-" puts stderr $str\n"
-" return\n"
-" }\n"
-" if {$text_area == \"\"} {\n"
-" puts stderr $str\n"
-" return\n"
-" }\n"
-" if {![winfo exists $text_area]} {\n"
-" puts stderr $str\n"
-" return\n"
-" }\n"
-" \n"
-" $text_area insert end $str\n"
-" $text_area see end\n"
-"}\n"
-"\n"
-"proc show_all_settings {} {\n"
-" global all_settings\n"
-" global client_sock client_tail\n"
-" global x11vnc_client_file\n"
-"\n"
-" set txt \"\\nRead-Write settings:\\n\\n\"\n"
-" foreach item [split_query $all_settings] {\n"
-" regsub {:} $item {: } item\n"
-" append txt \" $item\\n\"\n"
-" if {[regexp {noremote} $item]} {\n"
-" append txt \"\\nRead-Only settings:\\n\\n\"\n"
-" }\n"
-" }\n"
-" append txt \"\\nInternal settings:\\n\\n\"\n"
-" append txt \"x11vnc_client_file: $x11vnc_client_file\\n\"\n"
-" if {[info exists client_tail]} {\n"
-" append txt \"client_tail: $client_tail\\n\"\n"
-" } else {\n"
-" append txt \"client_tail: unset\\n\"\n"
-" }\n"
-" if {[info exists client_sock]} {\n"
-" append txt \"client_sock: $client_sock\\n\"\n"
-" } else {\n"
-" append txt \"client_sock: unset\\n\"\n"
-" }\n"
-" set estr \"\"\n"
-" catch {set estr [exec env | grep -i X11VNC]}\n"
-" append txt \"$estr\\n\"\n"
-" textwin \"Settings\" \"All Current Settings\" $txt\n"
-"}\n"
-"\n"
-"proc show_logfile {} {\n"
-" global menu_var unset_str\n"
-"\n"
-" set logfile [tilde_expand $menu_var(logfile)]\n"
-" \n"
-" if {$logfile == \"\" || $logfile == $unset_str} {\n"
-" set txt \"\\nNo logfile was specified at x11vnc startup.\\n\\n\" \n"
-" } elseif {![file exists $logfile]} {\n"
-" set txt \"\\nLogfile \\\"$logfile\\\" does not exist.\\n\\n\"\n"
-" } else {\n"
-" set fh \"-3\"\n"
-" set err \"\"\n"
-" catch {set fh [open $logfile \"r\"]} err\n"
-" if {$fh == \"-3\"} {\n"
-" set txt \"\\nError opening \\\"$logfile\\\" $err.\\n\\n\"\n"
-" } else {\n"
-" set txt \"\\nLogfile \\\"$logfile\\\" current contents:\\n\"\n"
-" while {[gets $fh line] > -1} {\n"
-" append txt \"$line\\n\"\n"
-" }\n"
-" close $fh\n"
-" }\n"
-" }\n"
-" textwin \"Logfile\" \"Logfile\" $txt\n"
-"}\n"
-"\n"
-"proc tail_logfile {} {\n"
-" global menu_var unset_str ffont\n"
-" set logfile $menu_var(logfile)\n"
-" \n"
-" set txt \"\"\n"
-" if {$logfile == \"\" || $logfile == $unset_str} {\n"
-" set txt \"\\nNo logfile was specified at x11vnc startup.\\n\\n\" \n"
-" } elseif {![file exists $logfile]} {\n"
-" set txt \"\\nLogfile \\\"$logfile\\\" does not exist.\\n\\n\"\n"
-" } else {\n"
-" set cmd \"\"\n"
-" set xterm_cmd \"xterm -sb -fn $ffont -geometry 80x45 -title x11vnc-logfile -e\"\n"
-" set cmd [split $xterm_cmd]\n"
-" lappend cmd \"tail\"\n"
-" lappend cmd \"-3000f\"\n"
-" lappend cmd $logfile\n"
-" lappend cmd \"&\"\n"
-" catch {[eval exec $cmd]}\n"
-" }\n"
-" if {$txt != \"\"} {\n"
-" textwin \"Logfile\" \"Logfile\" $txt\n"
-" }\n"
-"}\n"
-"\n"
-"proc set_connected {yesno} {\n"
-" global connected_to_x11vnc\n"
-" set orig $connected_to_x11vnc\n"
-" \n"
-" if {$yesno == \"yes\"} {\n"
-" set connected_to_x11vnc 1\n"
-" } else {\n"
-" set connected_to_x11vnc 0\n"
-" no_x11_display\n"
-" no_vnc_display\n"
-" }\n"
-" if {$orig != $connected_to_x11vnc} {\n"
-" set_widgets\n"
-" }\n"
-"}\n"
-"\n"
-"proc detach_from_display {} {\n"
-" global connected_to_x11vnc reply_xdisplay x11vnc_xdisplay\n"
-" set str \"Detaching from X display.\"\n"
-" if {$reply_xdisplay != \"\"} {\n"
-" set str \"Detaching from $reply_xdisplay.\"\n"
-" } elseif {$x11vnc_xdisplay != \"\"} {\n"
-" set str \"Detaching from $x11vnc_xdisplay.\"\n"
-" }\n"
-" if {$connected_to_x11vnc} {\n"
-" append_text \"$str\\n\"\n"
-" }\n"
-" set_connected no\n"
-"}\n"
-"\n"
-"proc do_stop_quit {} {\n"
-" push_new_value \"stop\" \"stop\" 1 0\n"
-" set_connected no\n"
-" update\n"
-" after 250\n"
-" destroy .\n"
-"}\n"
-"\n"
-"# Menu item is an action:\n"
-"proc do_action {item} {\n"
-" global menu_var connected_to_x11vnc beginner_mode\n"
-"\n"
-" if {[in_debug_mode]} {\n"
-" append_text \"action: \\\"$item\\\"\\n\"\n"
-" }\n"
-"#puts \"action: \\\"$item\\\"\\n\"\n"
-"\n"
-" if {$item == \"ping\"} {\n"
-" if {$beginner_mode} {\n"
-" try_connect_and_query_all\n"
-" } else {\n"
-" try_connect\n"
-" }\n"
-" return\n"
-" } elseif {$item == \"start\"} {\n"
-" start_x11vnc\n"
-" return\n"
-" } elseif {$item == \"detach\"} {\n"
-" detach_from_display\n"
-" return\n"
-" } elseif {$item == \"attach\"} {\n"
-" try_connect_and_query_all\n"
-" return\n"
-" } elseif {$item == \"update-all\"} {\n"
-" query_all\n"
-" return\n"
-" } elseif {$item == \"clear-all\"} {\n"
-" clear_all\n"
-" return\n"
-" } elseif {$item == \"defaults-all\"} {\n"
-" defaults_all\n"
-" return\n"
-" } elseif {$item == \"save-settings\"} {\n"
-" save_settings\n"
-" return\n"
-" } elseif {$item == \"show-start-cmd\"} {\n"
-" show_start_cmd\n"
-" return\n"
-" } elseif {$item == \"all-settings\"} {\n"
-" show_all_settings\n"
-" return\n"
-" } elseif {$item == \"show-logfile\"} {\n"
-" show_logfile\n"
-" return\n"
-" } elseif {$item == \"tail-logfile\"} {\n"
-" tail_logfile\n"
-" return\n"
-" } elseif {$item == \"Misc-Tuning:\"} {\n"
-" menu_help \"$item\"\n"
-" return\n"
-" } elseif {$item == \"WindowView\"} {\n"
-" change_view_state\n"
-" return\n"
-" } elseif {$item == \"quit\" || $item == \"Quit\"} {\n"
-" destroy .\n"
-" exit 0\n"
-" } elseif {$item == \"stop+quit\"} {\n"
-" do_stop_quit\n"
-" }\n"
-"\n"
-" if {[value_is_string $item]} {\n"
-" if {! [entry_dialog $item]} {\n"
-" return\n"
-" }\n"
-" set new $menu_var($item)\n"
-" set name $item\n"
-" } else {\n"
-" set new 1\n"
-" set name $item\n"
-" }\n"
-"\n"
-" if {$item == \"load-settings\"} {\n"
-" load_settings\n"
-" return\n"
-" }\n"
-"\n"
-" if {! $connected_to_x11vnc} {\n"
-" ;\n"
-" } elseif {[regexp {^(stop|quit|exit|shutdown)$} $item]} {\n"
-" # just do -R\n"
-" append_text \"stopping remote x11vnc server...\\n\"\n"
-" push_new_value $item $name $new 0\n"
-" set_connected no\n"
-" \n"
-" } elseif {[opt_match Q $item]} {\n"
-" push_new_value $item $name $new 1\n"
-" } else {\n"
-" push_new_value $item $name $new 0\n"
-" }\n"
-"}\n"
-"\n"
-"proc ptime {time} {\n"
-" set usec [lindex [split $time] 0]\n"
-" set sec [format \"%.3f\" [expr \"$usec / 1000000.0\"]]\n"
-" puts \"time: $sec secs.\"\n"
-"}\n"
-"\n"
-"proc do_var {item} {\n"
-" global connected_to_x11vnc item_cascade menu_var\n"
-"\n"
-" set debug [in_debug_mode]\n"
-"\n"
-" set string 0\n"
-" if {[is_action $item] || $item == \"WindowView\"} {\n"
-" # Menu item is action:\n"
-" if {$debug} {\n"
-" ptime [time {do_action $item}]\n"
-" } else {\n"
-" do_action $item\n"
-" }\n"
-" return\n"
-" }\n"
-"\n"
-" if {[value_is_string $item]} {\n"
-" # Menu item is a string:\n"
-" if {$item_cascade($item) != \"\"} {\n"
-" # Cascade sets variable automatically\n"
-" } else {\n"
-" # Otherwise Entry box\n"
-" if {![entry_dialog $item]} {\n"
-" return\n"
-" }\n"
-" }\n"
-" set new $menu_var($item)\n"
-" set name $item\n"
-" } else {\n"
-" # Menu item is a boolean:\n"
-" set name [check_var $item]\n"
-" if {$name == \"\"} {\n"
-" return\n"
-" }\n"
-" set new 1\n"
-" }\n"
-" if {$connected_to_x11vnc} {\n"
-" if {$debug} {\n"
-" ptime [time {push_new_value $item $name $new 1}]\n"
-" } else {\n"
-" push_new_value $item $name $new 1\n"
-" }\n"
-"\n"
-" if {$item == \"http\"} {\n"
-" global vnc_url\n"
-" append_text \" URL: $vnc_url\\n\"\n"
-" }\n"
-" }\n"
-"}\n"
-"\n"
-"proc menu_help {item} {\n"
-" if ![help_win $item] {\n"
-" textwin \"nohelp\" \"No help available\" \\\n"
-" \"Sorry, no help avaiable for \\\"$item\\\"\"\n"
-" }\n"
-"}\n"
-"\n"
-"proc opt_match {c item} {\n"
-" global item_opts\n"
-" if {[info exists item_opts($item)]} {\n"
-" if {[regexp \"^\\[A-z\\]*$c\" $item_opts($item)]} {\n"
-" return 1\n"
-" }\n"
-" }\n"
-" return 0\n"
-"}\n"
-"\n"
-"proc is_action {item} {\n"
-" return [opt_match A $item]\n"
-"}\n"
-"\n"
-"proc is_gui_internal {item} {\n"
-" if {$item == \"Properties\"} {\n"
-" return 1\n"
-" }\n"
-" if {$item == \"Tray\"} {\n"
-" return 1\n"
-" }\n"
-" return [opt_match G $item]\n"
-"}\n"
-"\n"
-"proc is_browse {item} {\n"
-" return [opt_match F $item]\n"
-"}\n"
-"\n"
-"proc value_is_string {item} {\n"
-" global item_bool\n"
-" if {![info exists item_bool($item)]} {\n"
-" return 0\n"
-" }\n"
-" if {! $item_bool($item)} {\n"
-" return 1\n"
-" } else {\n"
-" return 0\n"
-" }\n"
-"}\n"
-"\n"
-"proc value_is_bool {item} {\n"
-" global item_bool\n"
-" if {![info exists item_bool($item)]} {\n"
-" return 0\n"
-" }\n"
-" if {$item_bool($item)} {\n"
-" return 1\n"
-" } else {\n"
-" return 0\n"
-" }\n"
-"}\n"
-"\n"
-"proc split_query0 {query} {\n"
-" # original slower way with regexp/regsub\n"
-" regsub -all {aro=} $query {ans=} query\n"
-" set items {}\n"
-" while {1} {\n"
-" if {! [regexp {^ans=(.*)$} $query m0 m1]} {\n"
-" break\n"
-" }\n"
-" set item $m1\n"
-" set m2 \"\"\n"
-" regexp {,ans=.*$} $item m2\n"
-" regsub {,ans=.*$} $item \"\" item\n"
-" if {$item != \"\"} {\n"
-" lappend items $item\n"
-" }\n"
-" set query $m2\n"
-" regsub {^,} $query \"\" query\n"
-" }\n"
-" return $items\n"
-"}\n"
-"\n"
-"proc split_query {query} {\n"
-" regsub -all {aro=} $query {ans=} query\n"
-" set items {}\n"
-" while {1} {\n"
-" set n [string first \"ans=\" $query]\n"
-" if {$n < 0} {\n"
-" break\n"
-" }\n"
-" set from [expr $n+4]\n"
-"\n"
-" set m [string first \",ans=\" $query]\n"
-" if {$m < 0} {\n"
-" set more 0\n"
-" set item [string range $query $from end]\n"
-" } else {\n"
-" set more 1\n"
-" set to [expr $m-1]\n"
-" set item [string range $query $from $to]\n"
-" }\n"
-" if {$item != \"\"} {\n"
-" lappend items $item\n"
-" }\n"
-" if {$more} {\n"
-" incr m\n"
-" set query [string range $query $m end]\n"
-" } else {\n"
-" set query \"\"\n"
-" }\n"
-" }\n"
-" return $items\n"
-"}\n"
-"\n"
-"proc set_x11_display {name} {\n"
-" global x11_display\n"
-" set x11_display \"x11vnc X display: $name\"\n"
-" set_name \"tkx11vnc - $name\"\n"
-"}\n"
-"proc set_vnc_display {name} {\n"
-" global vnc_display icon_mode\n"
-" set vnc_display \"VNC display: $name\"\n"
-"\n"
-" if {$icon_mode} {\n"
-" set_icon_label\n"
-" }\n"
-"}\n"
-"proc set_vnc_url {name} {\n"
-" global vnc_url\n"
-" set vnc_url $name\n"
-"}\n"
-"proc no_x11_display {} {\n"
-" set_x11_display \"(*none*)\"\n"
-" set_name \"tkx11vnc\"\n"
-"}\n"
-"proc no_vnc_display {} {\n"
-" set_vnc_display \"(*none*)\"\n"
-"}\n"
-"proc no_vnc_url {} {\n"
-" set_vnc_url \"(*none*)\"\n"
-"}\n"
-"\n"
-"proc get_vnc_display_number {} {\n"
-" global vnc_display\n"
-" if ![info exists vnc_display] {\n"
-" return \"none\"\n"
-" }\n"
-" if {$vnc_display == \"\"} {\n"
-" return \"none\"\n"
-" }\n"
-" set str $vnc_display\n"
-" regsub {VNC display: *} $str \"\" str\n"
-" if [regexp {:([0-9][0-9]*)} $str m0 n] {\n"
-" return $n\n"
-" }\n"
-" return \"none\"\n"
-"}\n"
-"\n"
-"proc fetch_displays {} {\n"
-"\n"
-" set qargs [list \"-Q\" \"display,vncdisplay\"]\n"
-" set result [run_remote_cmd $qargs]\n"
-"\n"
-" set got_x11 0\n"
-" set got_vnc 0\n"
-" set got_url 0\n"
-"\n"
-" foreach item [split_query $result] {\n"
-" if {[regexp {^display:(.*)$} $item m0 m1]} {\n"
-" set_x11_display $m1\n"
-" set got_x11 1\n"
-" } elseif {[regexp {^vncdisplay:(.*)$} $item m0 m1]} {\n"
-" set_vnc_display $m1\n"
-" set got_vnc 1\n"
-" } elseif {[regexp {^http_url:(.*)$} $item m0 m1]} {\n"
-" set_vnc_url $m1\n"
-" set got_url 1\n"
-" }\n"
-" }\n"
-" if {! $got_x11} {\n"
-" no_x11_display\n"
-" }\n"
-" if {! $got_vnc} {\n"
-" no_vnc_display\n"
-" }\n"
-" if {! $got_url} {\n"
-" no_vnc_url\n"
-" }\n"
-"}\n"
-"\n"
-"proc client_dialog {client} {\n"
-" set cid \"\"\n"
-" set host \"\"\n"
-" set ip \"\"\n"
-" global menu_var text_area cleanup_window item_bool\n"
-"\n"
-" #<id>:<ip>:<port>:<user>:<unix>:<hostname>:<input>:<loginview>:<time>\n"
-" append_text \"\\nClient info string:\\n - $client\\n\\n\"\n"
-" if {[regexp {^(.*):(.*):(.*):(.*):(.*):(.*):(.*):(.*):(.*)$} \\\n"
-" $client m0 m1 m2 m3 m4 m5 m6 m7 m8 m9]} {\n"
-" set cid $m1\n"
-" set ip $m2\n"
-" set port $m3\n"
-" set user $m4\n"
-" set unix $m5\n"
-" set host $m6\n"
-" regsub {\\..*$} $host \"\" host\n"
-" set input $m7\n"
-" set logvo $m8\n"
-" set ltime $m9\n"
-" append_text \"Host: $host, Port: $port, User: $user\"\n"
-" if {$unix != \"\" && $unix != \"none\"} {\n"
-" append_text \", Unix: $unix\"\n"
-" }\n"
-" append_text \", IP: $ip, Id: $cid\\n\"\n"
-" append_text \" - originally logged in as: \"\n"
-" if {$logvo == \"1\" } {\n"
-" append_text \"View-Only Client\"\n"
-" } else {\n"
-" append_text \"Normal Client\"\n"
-" }\n"
-" if {$ltime != \"\"} {\n"
-" set tim [clock format $ltime]\n"
-" append_text \", $tim\"\n"
-" }\n"
-" append_text \"\\n\"\n"
-" append_text \" - currently allowed input: \"\n"
-" set sk 0\n"
-" set sm 0\n"
-" set sb 0\n"
-" set sc 0\n"
-" set sf 0\n"
-" if {[regexp -nocase {K} $input]} {\n"
-" append_text \"Keystrokes\"\n"
-" set sk 1\n"
-" }\n"
-" if {[regexp -nocase {M} $input]} {\n"
-" if {$sk} {\n"
-" append_text \", \"\n"
-" }\n"
-" append_text \"Mouse-Motion\"\n"
-" set sm 1\n"
-" }\n"
-" if {[regexp -nocase {B} $input]} {\n"
-" if {$sk || $sm} {\n"
-" append_text \", \"\n"
-" }\n"
-" append_text \"Button-Click\"\n"
-" set sb 1\n"
-" }\n"
-" if {[regexp -nocase {C} $input]} {\n"
-" if {$sk || $sm || $sb} {\n"
-" append_text \", \"\n"
-" }\n"
-" append_text \"Clipboard\"\n"
-" set sm 1\n"
-" }\n"
-" if {[regexp -nocase {F} $input]} {\n"
-" if {$sk || $sm || $sb || $sf} {\n"
-" append_text \", \"\n"
-" }\n"
-" append_text \"Files\"\n"
-" set sf 1\n"
-" }\n"
-" if {! $sk && ! $sm && ! $sb && ! $sm && ! $sf} {\n"
-" append_text \"None\"\n"
-" }\n"
-" append_text \"\\n\"\n"
-" }\n"
-" if {$cid == \"\"} {\n"
-" append_text \"Invalid client info string: $client\\n\"\n"
-" return\n"
-" }\n"
-"\n"
-" regsub -all {_} $input \"\" input\n"
-" set menu_var(client) \"$input\"\n"
-" set item_bool(client) 0\n"
-"\n"
-" insert_client_action_window $input\n"
-" set rc [entry_dialog client 1]\n"
-"\n"
-" cleanup_text_window\n"
-"\n"
-" set val $menu_var(client)\n"
-" #puts \"rc: $rc val: $val\"\n"
-"\n"
-" if {! $rc} {\n"
-" return;\n"
-" } elseif {[regexp -nocase {(disconnect|close)} $val]} {\n"
-" disconnect_dialog $client\n"
-" } else {\n"
-" regsub -all -nocase {[^KMBCF]} $val \"\" val\n"
-" set item_bool(client_input) 0\n"
-" push_new_value \"client_input\" \"client_input\" \"$cid:$val\" 0\n"
-" }\n"
-"}\n"
-"\n"
-"proc disconnect_dialog {client} {\n"
-" set cid \"\"\n"
-" set host \"\"\n"
-" set msg \"\\n\"\n"
-" append msg \"*** Client info string:\\n $client\\n\"\n"
-" if {[regexp {^(.*):(.*):(.*):(.*):(.*):(.*):(.*):(.*):(.*)$} \\\n"
-" $client m0 m1 m2 m3 m4 m5 m6 m7 m8 m9]} {\n"
-" set cid $m1\n"
-" set ip $m2\n"
-" set port $m3\n"
-" set user $m4\n"
-" set unix $m5\n"
-" set host $m6\n"
-" regsub {\\..*$} $host \"\" host\n"
-" set input $m7\n"
-" set logvo $m8\n"
-" set ltime $m9\n"
-" append_text \"Host: $host, Port: $port, IP: $ip, User: $user\"\n"
-" if {$unix != \"\" && $unix != \"none\"} {\n"
-" append_text \", Unix: $unix\"\n"
-" }\n"
-" append_text \", Id: $cid\\n\"\n"
-" }\n"
-" if {$cid == \"\"} {\n"
-" append_text \"Invalid client info string: $client\\n\"\n"
-" return\n"
-" }\n"
-" append msg \"*** To *DISCONNECT* this client press \\\"OK\\\" again, otherwise press \\\"Cancel\\\"\\n\"\n"
-" bell\n"
-" if {[warning_dialog $msg \"current\"]} {\n"
-" push_new_value \"disconnect\" \"disconnect\" $cid 1\n"
-" } else {\n"
-" append_text \"disconnect cancelled.\\n\"\n"
-" }\n"
-"}\n"
-"\n"
-"proc update_clients_and_repost {} {\n"
-" global item_cascade menu_m menu_b\n"
-"\n"
-" append_text \"Refreshing connected clients list... \"\n"
-" query_all 1\n"
-" update\n"
-"\n"
-" set saw 0\n"
-" set casc $item_cascade(current)\n"
-" set last [$casc index end]\n"
-" for {set i 0} {$i <= $last} {incr i} {\n"
-" if {[$casc type $i] == \"separator\"} {\n"
-" continue\n"
-" }\n"
-" set name [$casc entrycget $i -label]\n"
-" if {[regexp {^num-clients} $name]} {\n"
-" continue\n"
-" }\n"
-" if {[regexp {^refresh-list} $name]} {\n"
-" continue\n"
-" }\n"
-" if {! $saw} {\n"
-" append_text \"\\n\"\n"
-" }\n"
-" set saw 1\n"
-" append_text \"client: $name\\n\"\n"
-" }\n"
-" if {! $saw} {\n"
-" append_text \"done.\\n\"\n"
-" }\n"
-"}\n"
-"\n"
-"proc update_clients_menu {list} {\n"
-" global item_cascade ffont\n"
-" global saved_clients_str\n"
-"\n"
-" if {![info exists saved_clients_str]} {\n"
-" set saved_clients_str \"\"\n"
-" }\n"
-" if {$list == \"INIT\"} {\n"
-" set list $saved_clients_str\n"
-" } else {\n"
-" set saved_clients_str $list\n"
-" }\n"
-"\n"
-" set subm $item_cascade(current);\n"
-" catch {destroy $subm}\n"
-" menu $subm -tearoff 0 -font $ffont\n"
-" $subm add command\n"
-" $subm add command -label \"refresh-list\" \\\n"
-" -command \"update_clients_and_repost\"\n"
-" $subm add separator\n"
-" set count 0\n"
-" foreach client [split $list \",\"] {\n"
-" if {![regexp {^[a-z0-9]*[a-z0-9]:} $client]} {\n"
-" #append_text \"Skipping client line: \"\n"
-" #append_text $client\n"
-" #append_text \"\\n\"\n"
-" continue\n"
-" }\n"
-" regsub -all {[{}()~!$&*|;'\"`{}<>\\[\\]]} $client \"\" client\n"
-" #'\n"
-" if {[regexp {^(.*):(.*):(.*):(.*):(.*):(.*):(.*):(.*):(.*)$} \\\n"
-" $client m0 m1 m2 m3 m4 m5 m6 m7 m8 m9]} {\n"
-" set id $m1\n"
-" set user $m4\n"
-" set unix $m5\n"
-" set host $m6\n"
-" regsub {\\..*$} $host \"\" host\n"
-" set clabel \"$host $id\"\n"
-" if {$unix != \"\" && $unix != \"none\"} {\n"
-" set clabel \"$unix@$clabel\"\n"
-" } elseif {$user != \"unknown-user\"} {\n"
-" set clabel \"$user@$clabel\"\n"
-" }\n"
-" } else {\n"
-" regsub {:.*$} $client \"\" clabel\n"
-" }\n"
-" $subm add command -label \"$clabel\" \\\n"
-" -command \"client_dialog \\{$client\\}\"\n"
-" incr count\n"
-" }\n"
-" $subm entryconfigure 0 -label \"num-clients: $count\"\n"
-"}\n"
-"\n"
-"proc set_widgets {} {\n"
-" global connected_to_x11vnc item_case item_menu item_entry menu_m\n"
-"\n"
-" foreach item [array names item_case] {\n"
-" if ![info exists item_case($item)] { continue; }\n"
-" set case $item_case($item)\n"
-" if ![info exists item_menu($item)] { continue; }\n"
-" set menu $item_menu($item)\n"
-" if ![info exists item_entry($item)] { continue; }\n"
-" set entry $item_entry($item)\n"
-" if {$entry < 0} {\n"
-" # skip case under beginner_mode \n"
-" continue\n"
-" }\n"
-" set type [$menu type $entry]\n"
-" if {$type == \"separator\" || $type == \"tearoff\"} {\n"
-" continue\n"
-" }\n"
-" if {![winfo exists $menu]} {\n"
-" continue\n"
-" }\n"
-" if {$connected_to_x11vnc} {\n"
-" if {[active_when_connected $item]} {\n"
-" $menu entryconfigure $entry -state normal\n"
-" } else {\n"
-" $menu entryconfigure $entry -state disabled\n"
-" }\n"
-" } else {\n"
-" if {[active_when_starting $item]} {\n"
-" $menu entryconfigure $entry -state normal\n"
-" } else {\n"
-" $menu entryconfigure $entry -state disabled\n"
-" }\n"
-" }\n"
-" }\n"
-"}\n"
-"\n"
-"proc toggle_simple_gui {} {\n"
-" global beginner_mode simple_gui_created\n"
-" global connected_to_x11vnc make_gui_count\n"
-"\n"
-" if {$beginner_mode} {\n"
-" append_text \"\\nSwitching to simple-gui mode.\\n\"\n"
-" } else {\n"
-" append_text \"\\nSwitching to power-user gui mode.\\n\"\n"
-" }\n"
-"\n"
-" if {$make_gui_count == 1} {\n"
-" incr make_gui_count\n"
-" }\n"
-" set simple_gui_created 1\n"
-" make_menu_items\n"
-" set_widgets\n"
-" set_internal_help\n"
-" append_text \"\\n\"\n"
-"}\n"
-"\n"
-"proc little_qs {m} {\n"
-" global bfont ffont beginner_mode\n"
-" global helpremote helptext helplabel\n"
-" global tk_version osname\n"
-"\n"
-" if {$tk_version < 8.0} {\n"
-" return\n"
-" }\n"
-" if {$osname == \"Darwin\"} {\n"
-" return\n"
-" }\n"
-"\n"
-" set n [$m index end]\n"
-"\n"
-" for {set i 0} {$i <= $n} {incr i} {\n"
-" set type [$m type $i]\n"
-"#puts \"$m - $i - $type\"\n"
-" if {$type == \"separator\"} {\n"
-" $m add separator\n"
-" } elseif {$type == \"tearoff\"} {\n"
-" continue;\n"
-" } else {\n"
-" set label [$m entrycget $i -label]\n"
-" set str \"\"\n"
-" if {[info exists helpremote($label)]} {\n"
-" set str \"(?)\"\n"
-" } elseif {[info exists helptext($label)]} {\n"
-" set str \"(?)\"\n"
-" }\n"
-" $m add command -label $str \\\n"
-" -font $ffont \\\n"
-" -command \"menu_help $label\";\n"
-"\n"
-" if {$str == \"\"} {\n"
-" $m entryconfigure end -state disabled\n"
-" }\n"
-" set arg \"$m,$i\"\n"
-"#puts \"helplabel: $arg -> $label\"\n"
-" set helplabel($arg) $label\n"
-" set j [$m index end]\n"
-" set arg \"$m,$j\"\n"
-" set helplabel($arg) $label\n"
-" }\n"
-" if {$i == 0} {\n"
-" $m entryconfigure end -columnbreak 1\n"
-" }\n"
-" }\n"
-"\n"
-" menu_bindings $m\n"
-"}\n"
-"\n"
-"proc make_menu_items {} {\n"
-" global template \n"
-" global menu_b menu_m menu_count\n"
-" global item_opts item_bool item_case item_menu item_entry menu_var unset_str\n"
-" global item_cascade\n"
-" global bfont ffont beginner_mode simple_gui_created\n"
-" global helptext helpremote helplabel\n"
-"\n"
-" # some tweaks...\n"
-" if {![info exists menu_var(deny)]} {\n"
-" set menu_var(deny) 0\n"
-" }\n"
-"\n"
-" set case \"\";\n"
-" set L_casc \"\"\n"
-" set L_casc_count 0\n"
-" set L_menus [list]\n"
-"\n"
-" # Extract the menu items:\n"
-" foreach line [split $template \"\\n\"] {\n"
-" if {[regexp {^Row:} $line]} {\n"
-" continue\n"
-" }\n"
-" if {[regexp {^[A-z]} $line]} {\n"
-" set case [string trim $line]\n"
-"\n"
-" if {$simple_gui_created} {\n"
-" set i0 0\n"
-" #if {$case == \"Misc\"} { # kludge for simple_gui\n"
-" # set i0 1\n"
-" #}\n"
-" catch {$menu_m($case) delete $i0 end}\n"
-" }\n"
-" set menu_count($case) 0\n"
-" continue;\n"
-" }\n"
-"\n"
-" set item [string trim $line]\n"
-" regsub -all { *} $item \" \" item\n"
-" if {$item == \"\"} {\n"
-" continue;\n"
-" }\n"
-" set opts \"\"\n"
-" if {[regexp {^=} $item]} {\n"
-" set opts [lindex [split $item] 0]\n"
-" regsub {^=} $opts \"\" opts\n"
-" set item [lindex [split $item] 1]\n"
-" }\n"
-" if {[regexp {^0} $opts]} {\n"
-" continue;\n"
-" }\n"
-" if {[regexp {:$} $item]} {\n"
-" set bool 0\n"
-" } else {\n"
-" set bool 1\n"
-" }\n"
-" regsub {:$} $item {} item\n"
-"\n"
-" if {$item == \"LOFF\"} {\n"
-" set L_casc \"\"\n"
-" continue\n"
-" }\n"
-"\n"
-" if {$item == \"-- D\"} {\n"
-" set beginner_sep 1\n"
-" set item \"--\"\n"
-" } else {\n"
-" set beginner_sep 0\n"
-" }\n"
-"\n"
-" set item_opts($item) $opts\n"
-" set item_case($item) $case\n"
-" set item_bool($item) $bool\n"
-" set item_cascade($item) \"\"\n"
-"\n"
-" if {$L_casc == \"\"} {\n"
-" set item_entry($item) $menu_count($case)\n"
-" set m $menu_m($case)\n"
-" } else {\n"
-" # hack for cascades for crowded menus. See =GAL opts.\n"
-" set item_entry($item) $L_casc_count\n"
-" set m $L_casc\n"
-" }\n"
-"\n"
-" set mvar 0 \n"
-"\n"
-" if {$beginner_mode && ! $beginner_sep && ![opt_match D $item]} {\n"
-" set item_entry($item) \"-1\"\n"
-" continue;\n"
-" }\n"
-"\n"
-" set item_menu($item) $m\n"
-"\n"
-" if {0} { puts \"ITEM: $item\\t- $opts\\t- $case\\t- \\\n"
-" $bool\\t- $menu_count($case)\" }\n"
-"\n"
-" # Create the menu items, its variables, etc., etc.\n"
-"\n"
-" if {$item == \"--\"} {\n"
-" $m add separator\n"
-"\n"
-" } elseif {$item == \"Quit\"} {\n"
-" # Quit item must shut us down:\n"
-" $m add command -label \"$item\" -underline 0 \\\n"
-" -font $ffont \\\n"
-" -command {destroy .; exit 0}\n"
-"\n"
-" } elseif {$case == \"Help\"} {\n"
-" # Help is simple help:\n"
-" $m add command -label \"$item\" \\\n"
-" -font $ffont \\\n"
-" -command \"menu_help $item\"\n"
-"\n"
-" } elseif {[opt_match L $item]} {\n"
-" # Special sub-menu cascade (=GAL ends with LOFF)\n"
-" set subm $m.casc_L$menu_count($case)\n"
-" catch {destroy $subm}\n"
-" menu $subm -tearoff 0 -font $ffont\n"
-" set item_cascade($item) $subm\n"
-" $m add cascade -label \"$item\" \\\n"
-" -font $ffont \\\n"
-" -menu $subm\n"
-" set L_casc $subm\n"
-" set L_casc_count -1\n"
-" lappend L_menus $L_casc\n"
-"\n"
-" } elseif {$item == \"current\"} {\n"
-" # Current clients cascade\n"
-" set subm $m.current_cascade\n"
-" catch {destroy $subm}\n"
-" set item_cascade($item) $subm\n"
-" update_clients_menu \"INIT\"\n"
-" $m add cascade -label \"$item\" \\\n"
-" -font $ffont \\\n"
-" -menu $subm\n"
-"\n"
-" } elseif {[is_action $item]} {\n"
-" # Action\n"
-" $m add command -label \"$item\" \\\n"
-" -font $ffont \\\n"
-" -command \"do_var $item\"\n"
-" if {![info exists menu_var($item)]} {\n"
-" set menu_var($item) \"\"; # for convenience\n"
-" }\n"
-"\n"
-" } elseif {! $item_bool($item)} {\n"
-" # String\n"
-" if {[regexp -- {-C:(.*)} $item_opts($item) m0 m1]} {\n"
-" # Radiobutton select\n"
-" set subm $m.radio_cascade$menu_count($case)\n"
-" catch {destroy $subm}\n"
-" menu $subm -tearoff 0 -font $ffont\n"
-" foreach val [split $m1 \",\"] {\n"
-" $subm add radiobutton -label \"$val\" \\\n"
-" -command \"do_var $item\" \\\n"
-" -value \"$val\" \\\n"
-" -font $ffont \\\n"
-" -variable menu_var($item)\n"
-" }\n"
-" $m add cascade -label \"$item\" \\\n"
-" -font $ffont \\\n"
-" -menu $subm\n"
-" set item_cascade($item) $subm\n"
-" } else {\n"
-" # Arbitrary_string\n"
-" $m add command -label \"$item\" \\\n"
-" -font $ffont \\\n"
-" -command \"do_var $item\"\n"
-" }\n"
-" set mvar 1\n"
-"\n"
-" } elseif {$item == \"simple-gui\"} {\n"
-" $m add checkbutton -label \"$item\" \\\n"
-" -command \"toggle_simple_gui\" \\\n"
-" -font $ffont \\\n"
-" -variable beginner_mode\n"
-" } else {\n"
-" # Boolean\n"
-" $m add checkbutton -label \"$item\" \\\n"
-" -command \"do_var $item\" \\\n"
-" -font $ffont \\\n"
-" -variable menu_var($item)\n"
-" if {![info exists menu_var($item)]} {\n"
-" set menu_var($item) 0\n"
-" }\n"
-" }\n"
-"\n"
-" if {$L_casc_count == -1} {\n"
-" incr menu_count($case)\n"
-" incr L_casc_count\n"
-" } elseif {$L_casc != \"\"} {\n"
-" incr L_casc_count\n"
-" } else {\n"
-" incr menu_count($case)\n"
-" }\n"
-"\n"
-" if {$mvar} {\n"
-" if {![info exists menu_var($item)]} {\n"
-" set menu_var($item) $unset_str\n"
-" }\n"
-" }\n"
-" }\n"
-"\n"
-" # Now make the little \"(?)\" help buttons\n"
-" global osname\n"
-" foreach case [array names menu_m] {\n"
-" if {$case == \"Help\"} {\n"
-" continue;\n"
-" }\n"
-" little_qs $menu_m($case);\n"
-" }\n"
-" foreach m $L_menus {\n"
-" little_qs $m\n"
-" }\n"
-"}\n"
-"\n"
-"proc check_update_vars {} {\n"
-" global last_query_all_time query_all_freq icon_mode\n"
-" global connected_to_x11vnc client_tail client_sock\n"
-"\n"
-" set now [clock seconds]\n"
-"\n"
-" set delay $query_all_freq\n"
-" if {$client_tail != \"\" && $client_sock == \"\"} {\n"
-" set delay [expr 2 * $query_all_freq]\n"
-" }\n"
-"\n"
-" if {$connected_to_x11vnc} {\n"
-" set quiet 0\n"
-" set refresh [expr \"$last_query_all_time + $delay\"]\n"
-"\n"
-" # puts \"menu_posted $now $last_query_all_time\"\n"
-" # puts \"menu_posted $refresh\"\n"
-"\n"
-" if {$now > $refresh} {\n"
-" append_text \"Refreshing current settings... \"\n"
-" query_all $quiet\n"
-" if {$quiet} {\n"
-" append_text \"done\\n\"\n"
-" }\n"
-" }\n"
-" }\n"
-"}\n"
-"\n"
-"proc menu_posted {} {\n"
-" check_update_vars\n"
-"}\n"
-"\n"
-"proc props_widgets {state} {\n"
-" global props_buttons\n"
-" foreach w $props_buttons {\n"
-" $w configure -state $state \n"
-" }\n"
-" update\n"
-"}\n"
-"\n"
-"proc props_apply {} {\n"
-" global props_accept props_confirm props_viewonly props_shared \n"
-" global props_zeroconf props_javaview props_solid\n"
-" global props_passwd props_viewpasswd\n"
-" global prop0_accept prop0_confirm prop0_viewonly prop0_shared\n"
-" global prop0_zeroconf prop0_javaview prop0_solid\n"
-" global prop0_passwd prop0_viewpasswd\n"
-" global menu_var\n"
-" global client_sock\n"
-"\n"
-" props_widgets disabled\n"
-"\n"
-" set aft 500\n"
-" if {[info exists client_sock]} {\n"
-" if {$client_sock != \"\"} {\n"
-" set aft 150\n"
-" }\n"
-" }\n"
-" set did 0\n"
-"\n"
-" set fail 0\n"
-"\n"
-" if {$props_confirm != $prop0_confirm} {\n"
-" if {$did > 0} {after $aft}; incr did\n"
-" if {$props_confirm} {\n"
-" push_new_value \"accept\" \"accept\" \"popup\" 1\n"
-" } else {\n"
-" push_new_value \"accept\" \"accept\" \"\" 1\n"
-" }\n"
-" if {$menu_var(accept) == \"popup\"} {\n"
-" set props_confirm 1\n"
-" } elseif {$menu_var(accept) == \"\"} {\n"
-" set props_confirm 0\n"
-" }\n"
-" if {$props_confirm == $prop0_confirm} {incr fail}\n"
-" set prop0_confirm $props_confirm\n"
-" }\n"
-"\n"
-" if {$props_viewonly != $prop0_viewonly} {\n"
-" if {$did > 0} {after $aft}; incr did\n"
-" if {$props_viewonly} {\n"
-" push_new_value \"viewonly\" \"viewonly\" 1 1\n"
-" } else {\n"
-" push_new_value \"viewonly\" \"noviewonly\" 1 1\n"
-" }\n"
-" if {$menu_var(viewonly)} {\n"
-" set props_viewonly 1\n"
-" } else {\n"
-" set props_viewonly 0\n"
-" }\n"
-" if {$props_viewonly == $prop0_viewonly} {incr fail}\n"
-" set prop0_viewonly $props_viewonly\n"
-" }\n"
-"\n"
-" if {$props_shared != $prop0_shared} {\n"
-" if {$did > 0} {after $aft}; incr did\n"
-" if {$props_shared} {\n"
-" push_new_value \"shared\" \"shared\" 1 1\n"
-" } else {\n"
-" push_new_value \"shared\" \"noshared\" 1 1\n"
-" }\n"
-" if {$menu_var(shared)} {\n"
-" set props_shared 1\n"
-" } else {\n"
-" set props_shared 0\n"
-" }\n"
-" if {$props_shared == $prop0_shared} {incr fail}\n"
-" set prop0_shared $props_shared\n"
-" }\n"
-"\n"
-" if {$props_zeroconf != $prop0_zeroconf} {\n"
-" if {$did > 0} {after $aft}; incr did\n"
-" if {$props_zeroconf} {\n"
-" push_new_value \"zeroconf\" \"zeroconf\" 1 1\n"
-" } else {\n"
-" push_new_value \"zeroconf\" \"nozeroconf\" 1 1\n"
-" }\n"
-" if {$menu_var(zeroconf)} {\n"
-" set props_zeroconf 1\n"
-" } else {\n"
-" set props_zeroconf 0\n"
-" }\n"
-" if {$props_zeroconf == $prop0_zeroconf} {incr fail}\n"
-" set prop0_zeroconf $props_zeroconf\n"
-" }\n"
-"\n"
-" if {$props_javaview != $prop0_javaview} {\n"
-" if {$did > 0} {after $aft}; incr did\n"
-" if {$props_javaview} {\n"
-" push_new_value \"http\" \"http\" 1 1\n"
-" } else {\n"
-" push_new_value \"http\" \"nohttp\" 1 1\n"
-" }\n"
-" if {$menu_var(http)} {\n"
-" set props_javaview 1\n"
-" } else {\n"
-" set props_javaview 0\n"
-" }\n"
-" if {$props_javaview == $prop0_javaview} {incr fail}\n"
-" set prop0_javaview $props_javaview\n"
-" }\n"
-"\n"
-" if {$props_solid != $prop0_solid} {\n"
-" if {$did > 0} {after $aft}; incr did\n"
-" if {$props_solid} {\n"
-" push_new_value \"solid\" \"solid\" 1 1\n"
-" } else {\n"
-" push_new_value \"solid\" \"nosolid\" 1 1\n"
-" }\n"
-" if {$menu_var(solid)} {\n"
-" set props_solid 1\n"
-" } else {\n"
-" set props_solid 0\n"
-" }\n"
-" if {$props_solid == $prop0_solid} {incr fail}\n"
-" set prop0_solid $props_solid\n"
-" }\n"
-"\n"
-" set fpw 0\n"
-" if {$props_passwd != $prop0_passwd} {\n"
-" set fpw 1\n"
-" }\n"
-" set vpw 0\n"
-" if {$props_viewpasswd != $prop0_viewpasswd} {\n"
-" set vpw 1\n"
-" }\n"
-"\n"
-" set pw_ord [list]\n"
-" if {!$fpw && !$vpw } {\n"
-" # neither change\n"
-" ;\n"
-" } elseif {$fpw && !$vpw} {\n"
-" # full password change\n"
-" if {$props_passwd == \"\"} {\n"
-" if {$prop0_viewpasswd != \"\"} {\n"
-" # set view to \"\" as well and first\n"
-" set props_viewpasswd \"\"\n"
-" set pw_ord [list vpw fpw]\n"
-" } else {\n"
-" set pw_ord [list fpw]\n"
-" }\n"
-" } else {\n"
-" # assume view state OK\n"
-" set pw_ord [list fpw]\n"
-" }\n"
-" \n"
-" } elseif {!$fpw && $vpw} {\n"
-" # view password change\n"
-" if {$props_viewpasswd == \"\"} {\n"
-" # assume full state OK\n"
-" set pw_ord [list vpw]\n"
-" } else {\n"
-" if {$prop0_passwd == \"\"} {\n"
-" # could be trouble, x11vnc makes random\n"
-" # full passwd...\n"
-" set pw_ord [list vpw]\n"
-" } else {\n"
-" # OK, full non-null.\n"
-" set pw_ord [list vpw]\n"
-" }\n"
-" }\n"
-" } elseif {$fpw && $vpw} {\n"
-" # both full and view password change\n"
-" if {$props_passwd == \"\" && $props_viewpasswd == \"\"} {\n"
-" # OK, do view first\n"
-" set pw_ord [list vpw fpw]\n"
-" } elseif {$props_passwd == \"\" && $props_viewpasswd != \"\"} {\n"
-" # Not good, do view first anyway x11vnc will fix.\n"
-" set pw_ord [list vpw fpw]\n"
-" } elseif {$props_passwd != \"\" && $props_viewpasswd == \"\"} {\n"
-" # OK, view first\n"
-" set pw_ord [list vpw fpw]\n"
-" } elseif {$props_passwd != \"\" && $props_viewpasswd != \"\"} {\n"
-" # OK, full first\n"
-" set pw_ord [list fpw vpw]\n"
-" }\n"
-" }\n"
-"\n"
-" foreach case $pw_ord {\n"
-" if {$case == \"fpw\"} {\n"
-" if {$did > 0} {after $aft}; incr did\n"
-" push_new_value \"passwd\" \"passwd\" \"$props_passwd\" 1\n"
-" if {$props_passwd == $prop0_passwd} {incr fail}\n"
-" set prop0_passwd $props_passwd\n"
-" }\n"
-" if {$case == \"vpw\"} {\n"
-" if {$did > 0} {after $aft}; incr did\n"
-" push_new_value \"viewpasswd\" \"viewpasswd\" \"$props_viewpasswd\" 1\n"
-" if {$props_viewpasswd == $prop0_viewpasswd} {incr fail}\n"
-" set prop0_viewpasswd $props_viewpasswd\n"
-" }\n"
-" }\n"
-"\n"
-" if {$props_accept != $prop0_accept} {\n"
-" if {$did > 0} {after $aft}; incr did\n"
-" if {$props_accept} {\n"
-" push_new_value \"unlock\" \"unlock\" 1 0\n"
-" } else {\n"
-" push_new_value \"lock\" \"lock\" 1 0\n"
-" }\n"
-" if {$props_accept == $prop0_accept} {incr fail}\n"
-" set prop0_accept $props_accept\n"
-" }\n"
-"\n"
-" props_widgets normal\n"
-" if {$fail > 0} {\n"
-" return 0\n"
-" } else {\n"
-" return 1\n"
-" }\n"
-"}\n"
-"\n"
-"proc props_advanced {} {\n"
-" global icon_mode props_win full_win\n"
-" global props_advanced_first\n"
-"\n"
-" if ![info exists props_advanced_first] {\n"
-" center_win $full_win\n"
-" set props_advanced_first 1\n"
-" set first 1\n"
-" } else {\n"
-" set first 0\n"
-" }\n"
-" update\n"
-" wm deiconify $full_win\n"
-" update\n"
-"\n"
-" if {$first} {\n"
-" set w $full_win\n"
-" wm minsize $w [winfo width $w] [winfo height $w]\n"
-" }\n"
-" push_new_value \"remote-cmd\" \"remote-cmd\" \"Q:clients\" 1\n"
-"}\n"
-"\n"
-"proc do_props {} {\n"
-" global props_accept props_confirm props_viewonly props_shared\n"
-" global props_zeroconf props_javaview props_solid\n"
-" global props_passwd props_viewpasswd\n"
-" global prop0_accept prop0_confirm prop0_viewonly prop0_shared\n"
-" global prop0_zeroconf prop0_javaview prop0_solid\n"
-" global prop0_passwd prop0_viewpasswd\n"
-" global menu_var unset_str\n"
-" global have_labelframes ffont bfont\n"
-" global props_buttons icon_noadvanced\n"
-" global icon_mode icon_mode_at_startup\n"
-" global screen_height screen_width\n"
-" global do_props_msg\n"
-"\n"
-" set msg \"\"\n"
-" if {[info exists do_props_msg]} {\n"
-" set msg $do_props_msg\n"
-" }\n"
-"\n"
-" check_update_vars\n"
-"\n"
-" set pady 0.5m\n"
-" set pady 0.3m\n"
-" if {$screen_height <= 360} {\n"
-" set pady 0m\n"
-" }\n"
-"\n"
-" if [info exists menu_var(deny)] {\n"
-" if {$menu_var(deny) == $unset_str || $menu_var(deny) == 0} {\n"
-" set props_accept 1\n"
-" } else {\n"
-" set props_accept 0\n"
-" }\n"
-" } else {\n"
-" set menu_var(deny) 0\n"
-" set props_accept 1\n"
-" }\n"
-" set prop0_accept $props_accept\n"
-"\n"
-" if [info exists menu_var(accept)] {\n"
-" if {$menu_var(accept) == $unset_str || $menu_var(accept) == \"\"} {\n"
-" set props_confirm 0\n"
-" } else {\n"
-" set props_confirm 1\n"
-" }\n"
-" } else {\n"
-" set menu_var(accept) \"\"\n"
-" set props_confirm 0\n"
-" }\n"
-" set prop0_confirm $props_confirm\n"
-"\n"
-" if [info exists menu_var(viewonly)] {\n"
-" if {$menu_var(viewonly) == $unset_str || $menu_var(viewonly) == \"\"} {\n"
-" set props_viewonly 0\n"
-" } elseif ($menu_var(viewonly)) {\n"
-" set props_viewonly 1\n"
-" } else {\n"
-" set props_viewonly 0\n"
-" }\n"
-" } else {\n"
-" set menu_var(viewonly) 0\n"
-" set props_viewonly 0\n"
-" }\n"
-" set prop0_viewonly $props_viewonly\n"
-"\n"
-" if [info exists menu_var(shared)] {\n"
-" if {$menu_var(shared) == $unset_str || $menu_var(shared) == \"\"} {\n"
-" set props_shared 0\n"
-" } elseif ($menu_var(shared)) {\n"
-" set props_shared 1\n"
-" } else {\n"
-" set props_shared 0\n"
-" }\n"
-" } else {\n"
-" set menu_var(shared) 0\n"
-" set props_shared 0\n"
-" }\n"
-" set prop0_shared $props_shared\n"
-"\n"
-" if [info exists menu_var(zeroconf)] {\n"
-" if {$menu_var(zeroconf) == $unset_str || $menu_var(zeroconf) == \"\"} {\n"
-" set props_zeroconf 0\n"
-" } elseif ($menu_var(zeroconf)) {\n"
-" set props_zeroconf 1\n"
-" } else {\n"
-" set props_zeroconf 0\n"
-" }\n"
-" } else {\n"
-" set menu_var(zeroconf) 0\n"
-" set props_zeroconf 0\n"
-" }\n"
-" set prop0_zeroconf $props_zeroconf\n"
-"\n"
-" if [info exists menu_var(http)] {\n"
-" if {$menu_var(http) == $unset_str || $menu_var(http) == \"\"} {\n"
-" set props_javaview 0\n"
-" } elseif ($menu_var(http)) {\n"
-" set props_javaview 1\n"
-" } else {\n"
-" set props_javaview 0\n"
-" }\n"
-" } else {\n"
-" set menu_var(http) 0\n"
-" set props_javaview 0\n"
-" }\n"
-" set prop0_javaview $props_javaview\n"
-"\n"
-" if [info exists menu_var(solid)] {\n"
-" if {$menu_var(solid) == $unset_str || $menu_var(solid) == \"\"} {\n"
-" set props_solid 0\n"
-" } elseif ($menu_var(solid)) {\n"
-" set props_solid 1\n"
-" } else {\n"
-" set props_solid 0\n"
-" }\n"
-" } else {\n"
-" set menu_var(solid) 0\n"
-" set props_solid 0\n"
-" }\n"
-" set prop0_solid $props_solid\n"
-"\n"
-" if ![info exists props_passwd] {\n"
-" set props_passwd \"\"\n"
-" }\n"
-" set prop0_passwd $props_passwd\n"
-"\n"
-" if ![info exists props_viewpasswd] {\n"
-" set props_viewpasswd \"\"\n"
-" }\n"
-" set prop0_viewpasswd $props_viewpasswd\n"
-"\n"
-" if [info exists props_buttons] {\n"
-" catch {unset props_buttons}\n"
-" }\n"
-" set props_buttons [list]\n"
-"\n"
-" set wp .props\n"
-" set w $wp\n"
-" catch {destroy $wp}\n"
-" toplevel $wp\n"
-" wm title $wp \"x11vnc Properties\"\n"
-" frame $w.lf\n"
-" set w $w.lf\n"
-" set b1 \"$w.buttons1\"\n"
-" frame $b1\n"
-" button $b1.ok -text OK -command \"if {\\[props_apply\\]} {destroy $wp}\" -font $bfont\n"
-" button $b1.cancel -text Cancel -command \"destroy $wp\" -font $bfont\n"
-" button $b1.apply -text Apply -command \"props_apply\" -font $bfont\n"
-"\n"
-" bind $w <KeyPress-Escape> \"destroy $wp\"\n"
-"\n"
-" pack $b1.ok $b1.cancel $b1.apply -side left -expand 0\n"
-" lappend props_buttons $b1.apply $b1.cancel $b1.ok\n"
-"\n"
-" set b2 \"$w.buttons2\"\n"
-" frame $b2\n"
-"\n"
-" button $b2.advanced -text \" Advanced ... \" \\\n"
-" -command \"destroy $wp; props_advanced\" -font $bfont\n"
-" if {! $icon_noadvanced} {\n"
-" lappend props_buttons $b2.advanced\n"
-" pack $b2.advanced -side left -expand 0\n"
-" }\n"
-"\n"
-" button $b2.help -text \" Help \" -command \"menu_help Properties\" -font $bfont\n"
-" lappend props_buttons $b2.help\n"
-" pack $b2.help -side left -expand 0\n"
-"\n"
-" set pw \"$w.passwd\"\n"
-" if {$have_labelframes} {\n"
-" labelframe $pw -text \"Password\" -font $bfont\n"
-" } else {\n"
-" frame $pw\n"
-" set l $pw.l\n"
-" label $l -text \"Password:\" -justify left -anchor w -font $bfont\n"
-" pack $pw.l -fill x -expand 1 -padx 1m -pady 0m -side top\n"
-" }\n"
-" entry $pw.e -show \"*\" -textvariable props_passwd -font $bfont\n"
-" pack $pw.e -fill x -expand 1 -padx 1m -pady $pady -side top\n"
-"\n"
-" global x11vnc_icon_mode\n"
-" if {! $x11vnc_icon_mode} {\n"
-" catch { $pw.e configure -state disabled}\n"
-" if {! $have_labelframes} {\n"
-" catch { $pw.l configure -state disabled}\n"
-" }\n"
-" } else {\n"
-" lappend props_buttons $pw.e\n"
-" }\n"
-"\n"
-"\n"
-" set vp \"$w.viewpw\"\n"
-" if {$have_labelframes} {\n"
-" labelframe $vp -text \"ViewOnly Password\" -font $bfont\n"
-" } else {\n"
-" frame $vp\n"
-" set l $vp.l\n"
-" label $l -text \"ViewOnly Password:\" -justify left -anchor w -font $bfont\n"
-" pack $vp.l -fill x -expand 1 -padx 1m -pady 0m -side top\n"
-" }\n"
-" entry $vp.e -show \"*\" -textvariable props_viewpasswd -font $bfont\n"
-" pack $vp.e -fill x -expand 1 -padx 1m -pady $pady -side top\n"
-"\n"
-" if {! $x11vnc_icon_mode} {\n"
-" catch { $vp.e configure -state disabled}\n"
-" if {! $have_labelframes} {\n"
-" catch { $vp.l configure -state disabled}\n"
-" }\n"
-" } else {\n"
-" lappend props_buttons $vp.e\n"
-" }\n"
-"\n"
-" if {! $icon_mode_at_startup} {\n"
-" $vp.e configure -state disabled\n"
-" catch {$vp.l configure -state disabled}\n"
-" catch {$vp configure -state disabled}\n"
-" catch {$vp configure -foreground grey60}\n"
-" $pw.e configure -state disabled\n"
-" catch {$pw.l configure -state disabled}\n"
-" catch {$pw configure -state disabled}\n"
-" catch {$pw configure -foreground grey60}\n"
-" }\n"
-"\n"
-" set sb \"$w.solid\"\n"
-" frame $sb\n"
-" checkbutton $sb.button -text \"Solid Background Color\" \\\n"
-" -variable props_solid -anchor w -font $bfont\n"
-" pack $sb.button -fill x -expand 1 -padx 1m -pady $pady\n"
-"\n"
-" set jv \"$w.javaview\"\n"
-" frame $jv\n"
-" checkbutton $jv.button -text \"Serve Java Viewer Applet\" \\\n"
-" -variable props_javaview -anchor w -font $bfont\n"
-" pack $jv.button -fill x -expand 1 -padx 1m -pady $pady\n"
-"\n"
-" set zc \"$w.zeroconf\"\n"
-" frame $zc\n"
-" checkbutton $zc.button -text \"Advertise Service (Zeroconf)\" \\\n"
-" -variable props_zeroconf -anchor w -font $bfont\n"
-" pack $zc.button -fill x -expand 1 -padx 1m -pady $pady\n"
-"\n"
-" set sh \"$w.shared\"\n"
-" frame $sh\n"
-" checkbutton $sh.button -text \"Shared\" \\\n"
-" -variable props_shared -anchor w -font $bfont\n"
-" pack $sh.button -fill x -expand 1 -padx 1m -pady $pady\n"
-"\n"
-" set vo \"$w.viewonly\"\n"
-" frame $vo\n"
-" checkbutton $vo.button -text \"All Clients ViewOnly\" \\\n"
-" -variable props_viewonly -anchor w -font $bfont\n"
-" pack $vo.button -fill x -expand 1 -padx 1m -pady $pady\n"
-"\n"
-" set cf \"$w.confirm\"\n"
-" frame $cf\n"
-" checkbutton $cf.button -text \"Ask for Confirmation\" \\\n"
-" -variable props_confirm -anchor w -font $bfont\n"
-" pack $cf.button -fill x -expand 1 -padx 1m -pady $pady\n"
-"\n"
-" set ac \"$w.accept\"\n"
-" frame $ac\n"
-" checkbutton $ac.button -text \"Accept Connections\" \\\n"
-" -variable props_accept -anchor w -font $bfont\n"
-" pack $ac.button -fill x -expand 1 -padx 1m -pady $pady\n"
-"\n"
-" set px \"6m\"\n"
-" pack $b1 -side bottom -fill x -pady $pady -padx $px\n"
-" pack $b2 -side bottom -fill x -pady $pady -padx $px\n"
-" pack $vp -side bottom -fill x -pady $pady -padx $px\n"
-" pack $pw -side bottom -fill x -pady $pady -padx $px\n"
-" pack $sb -side bottom -fill x -pady 0m -padx $px\n"
-" pack $jv -side bottom -fill x -pady 0m -padx $px\n"
-" pack $zc -side bottom -fill x -pady 0m -padx $px\n"
-" pack $sh -side bottom -fill x -pady 0m -padx $px\n"
-" pack $vo -side bottom -fill x -pady 0m -padx $px\n"
-" pack $cf -side bottom -fill x -pady 0m -padx $px\n"
-" pack $ac -side bottom -fill x -pady 0m -padx $px\n"
-"\n"
-" global show_props_instructions\n"
-" if {![info exists show_props_instructions]} {\n"
-" set show_props_instructions 1\n"
-" }\n"
-"\n"
-" wm withdraw .props\n"
-"\n"
-" set wl $w\n"
-"\n"
-" pack $wl -side left\n"
-"\n"
-" if {$msg != \"\"} {\n"
-" set tw [textwidth $msg]\n"
-" set th [textheight $msg]\n"
-" set th [expr $th - 1]\n"
-" set ms \".props.msg\"\n"
-" text $ms -font $ffont -relief ridge -width $tw -height $th\n"
-" $ms insert 1.0 $msg\n"
-"\n"
-" set si \"$wl.instructions\"\n"
-" frame $si\n"
-" checkbutton $si.button -text \"Show Instructions\" \\\n"
-" -variable show_props_instructions -anchor w -font $bfont \\\n"
-" -command \"toggle_instructions $ms $pady $px\"\n"
-"\n"
-" pack $si.button -fill x -expand 1 -padx 1m -pady $pady\n"
-" pack $si -side bottom -fill x -pady 0m -padx $px\n"
-"\n"
-" if {$show_props_instructions} {\n"
-" pack $ms -side left -fill both\n"
-" }\n"
-"\n"
-" update\n"
-" }\n"
-"\n"
-"\n"
-" lappend props_buttons $ac.button $cf.button $vo.button $sh.button $zc.button $jv.button $sb.button\n"
-"\n"
-" \n"
-" set w .props\n"
-" update\n"
-" wm resizable $w 1 0\n"
-" center_win $w\n"
-" update\n"
-"\n"
-" #wm minsize $w [winfo width $w] [winfo height $w]\n"
-"\n"
-" tkwait window $w\n"
-" set show_props_instructions 0\n"
-"}\n"
-"\n"
-"proc toggle_instructions {ms pady px} {\n"
-" global show_props_instructions\n"
-" if {$show_props_instructions} {\n"
-" pack $ms -side left -fill both\n"
-" } else {\n"
-" pack forget $ms\n"
-" }\n"
-" catch {pack .props}\n"
-" update\n"
-"}\n"
-"\n"
-"proc do_new_client {} {\n"
-" global newclient ffont bfont\n"
-"\n"
-" set w .newclient\n"
-" catch {destroy $w}\n"
-" toplevel $w\n"
-" label $w.l -text \"Hostname: \" -font $bfont\n"
-" set newclient \"\"\n"
-" entry $w.e -width 16 -textvariable newclient -font $bfont \n"
-" button $w.b -text OK -command \"destroy $w\" -font $bfont\n"
-" button $w.h -text Help -command \"menu_help NewClient\" -font $bfont\n"
-" bind $w.e <Return> \"update; after 100; destroy $w\"\n"
-"\n"
-" wm title $w \"New Client\"\n"
-"\n"
-" pack $w.l $w.e $w.h $w.b -side left -pady 1m -padx 0.5m\n"
-" focus $w.e\n"
-" center_win $w\n"
-" update \n"
-" \n"
-" tkwait window $w\n"
-"\n"
-" regsub -all {[{}()~!$&*|;'\"`{}<>\\[\\]]} $newclient \"\" newclient\n"
-" #'\n"
-" if {$newclient != \"\"} {\n"
-" push_new_value \"connect\" \"connect\" \"$newclient\" 1\n"
-" }\n"
-"}\n"
-"\n"
-"proc do_disconnect_all {} {\n"
-" push_new_value \"disconnect\" \"disconnect\" \"all\" 1\n"
-"}\n"
-"\n"
-"proc do_disconnect_client {id} {\n"
-" push_new_value \"disconnect\" \"disconnect\" \"$id\" 1\n"
-"}\n"
-"\n"
-"proc popup_post {m} {\n"
-" global popup_cascade_posted client_balloon\n"
-" global client_id_list\n"
-"\n"
-" set popup_cascade_posted 0\n"
-" \n"
-" set wd \"$m.disconnect\"\n"
-"\n"
-" if {![winfo exists $wd]} {\n"
-" return\n"
-" }\n"
-"\n"
-" catch {$wd delete 0 end}\n"
-"\n"
-" $wd add command -label \"Disconnect client:\"\n"
-" $wd add separator\n"
-" $wd add command -label \"All Clients\" -command do_disconnect_all\n"
-"\n"
-" if {![info exists client_id_list]} {\n"
-" return\n"
-" }\n"
-"\n"
-" foreach client $client_id_list {\n"
-" if {$client == \"\"} {\n"
-" continue\n"
-" }\n"
-" if {[regexp {^([^:]*):(.*)$} $client mat id lab]} {\n"
-" set nid [expr \"$id + 0\"]\n"
-" $wd add command -label \"$nid $lab\" \\\n"
-" -command \"do_disconnect_client $id\"\n"
-" }\n"
-" }\n"
-"}\n"
-"\n"
-"proc pmenu {m x y} {\n"
-" if {![winfo exists $m]} {\n"
-" return\n"
-" }\n"
-" set x [expr $x-10]\n"
-" set y [expr $y-10]\n"
-" $m post $x $y\n"
-" # XXX more care needed\n"
-" grab set -global $m\n"
-"}\n"
-"\n"
-"proc set_client_balloon {str} {\n"
-" global client_balloon vnc_display\n"
-" global client_id_list\n"
-"\n"
-" set client_id_list [list]\n"
-" \n"
-" set client_balloon \"$vnc_display\"\n"
-" set count 0\n"
-" regsub -all {^.*aro=clients:} $str \"\" str\n"
-" regsub -all {aro=.*$} $str \"\" str\n"
-" regsub -all {ans=.*$} $str \"\" str\n"
-" foreach client [split $str \",\"] {\n"
-" #puts \"client: $client\"\n"
-" if [regexp {^[ ]*$} $client] {\n"
-" continue\n"
-" }\n"
-" if {[regexp {^(.*):(.*):(.*):(.*):(.*):(.*):(.*):(.*):(.*)$} \\\n"
-" $client m0 m1 m2 m3 m4 m5 m6 m7 m8 m9]} {\n"
-" set id $m1\n"
-" set nid [expr \"$m1 + 0\"]\n"
-" set ip $m2\n"
-" set port $m3\n"
-" set user $m4\n"
-" set unix $m5\n"
-" if {[string length $user] >= 24} {\n"
-" # weird identd hash...\n"
-" set user [string range $user 0 8]\n"
-" set user \"${user}...\"\n"
-" }\n"
-" if {$unix != \"\" && $unix != \"none\"} {\n"
-" set user $unix\n"
-" }\n"
-" set host $m6\n"
-" set input $m7\n"
-" set vo $m8\n"
-" set ltime $m9\n"
-" if [regexp {^[ ]*$} $host] {\n"
-" set host $ip\n"
-" }\n"
-" set client_balloon \"${client_balloon}\\n$nid $user\\@$host\"\n"
-" if {$vo == \"1\"} {\n"
-" set client_balloon \"${client_balloon} - view\"\n"
-" lappend client_id_list \"$id:$user\\@$host - view\"\n"
-" } else {\n"
-" set client_balloon \"${client_balloon} - full\"\n"
-" lappend client_id_list \"$id:$user\\@$host - full\"\n"
-" }\n"
-" } else {\n"
-" set i [expr $count+1]\n"
-" if {$i == 1} {\n"
-" set client_balloon \"${client_balloon}\\nunknown-host$i\"\n"
-" }\n"
-" }\n"
-" incr count\n"
-" }\n"
-" if {$count == 0} {\n"
-" set client_balloon \"${client_balloon}\\nNo connections.\"\n"
-" }\n"
-" icon_win_cfg $count\n"
-"}\n"
-"\n"
-"proc read_client_info {channel} {\n"
-" global x11vnc_client_file client_str client_info_read\n"
-" global read_client_info_lock\n"
-" global read_clients\n"
-" set db 0\n"
-"\n"
-" set read_clients 0\n"
-"\n"
-" if {![info exists read_client_info_lock]} {\n"
-" set read_client_info_lock 0\n"
-" }\n"
-"\n"
-" if {$channel != \"\"} {\n"
-"\n"
-" if {$read_client_info_lock} {\n"
-" return\n"
-" }\n"
-" set read_client_info_lock 1\n"
-" after 100\n"
-" set str \"\"\n"
-" set count [gets $channel str]\n"
-" if {$db} {puts stderr \"read_client_info-$channel: $str\"}\n"
-"\n"
-" if {$count == -1 || [eof $channel]} {\n"
-" close $channel\n"
-" catch {file delete $x11vnc_client_file}\n"
-" set read_client_info_lock 0\n"
-" clean_icon_exit\n"
-" }\n"
-" if {$count > 0 && ![regexp {^[ ]*$} $str]} {\n"
-" set client_info_read 1\n"
-" if {$str == \"quit\"} {\n"
-" catch {file delete $x11vnc_client_file}\n"
-" set read_client_info_lock 0\n"
-" clean_icon_exit\n"
-" } elseif {$str == \"skip\"} {\n"
-" ;\n"
-" } elseif [regexp {^clients:} $str] {\n"
-" regsub {^clients:} $str \"\" str\n"
-" set read_clients 1\n"
-" if {$str == \"none\"} {\n"
-" set str \"\"\n"
-" }\n"
-" update_clients_menu $str\n"
-" set client_str $str\n"
-" set_client_balloon $str\n"
-" }\n"
-" }\n"
-" set read_client_info_lock 0\n"
-" }\n"
-"}\n"
-"\n"
-"proc check_set_vnc_display {} {\n"
-" \n"
-" global read_clients check_set_vnc_display_done\n"
-"\n"
-" if {[info exists check_set_vnc_display_done]} {\n"
-" return\n"
-" }\n"
-" if {[info exists read_clients]} {\n"
-" if {$read_clients} {\n"
-" after 250\n"
-" query_all\n"
-" global client_str\n"
-" set_client_balloon $client_str\n"
-" set check_set_vnc_display_done 1\n"
-" }\n"
-" }\n"
-"}\n"
-"\n"
-"proc read_client_tail {} {\n"
-" global client_tail\n"
-"\n"
-" if {$client_tail != \"\"} {\n"
-" read_client_info $client_tail\n"
-" check_set_vnc_display\n"
-" }\n"
-"}\n"
-"\n"
-"proc read_client_sock {} {\n"
-" global client_sock\n"
-"\n"
-" if {$client_sock != \"\"} {\n"
-" read_client_info $client_sock\n"
-" check_set_vnc_display\n"
-" }\n"
-"}\n"
-"\n"
-"proc show_client_balloon {} {\n"
-" global icon_mode icon_win props_win full_win\n"
-" global client_balloon ffont connected_to_x11vnc\n"
-"\n"
-" set noinfo \"tkx11vnc: no client information\"\n"
-" set noinfo \"$noinfo\\navailable from x11vnc ...\"\n"
-" if ![info exists client_balloon] {\n"
-" set client_balloon $noinfo\n"
-" }\n"
-" if {$client_balloon == \"\"} {\n"
-" set client_balloon $noinfo\n"
-" }\n"
-" if {! [info exists icon_win]} {\n"
-" return\n"
-" } elseif {$icon_win == \"\"} {\n"
-" return\n"
-" } elseif {! [winfo exists $icon_win]} {\n"
-" return\n"
-" }\n"
-"\n"
-" set x [expr [winfo rootx $icon_win] + ([winfo width $icon_win]/2)]\n"
-" set y [expr [winfo rooty $icon_win] + [winfo height $icon_win] + 4]\n"
-"\n"
-" set infotext $client_balloon\n"
-" if {!$connected_to_x11vnc} {\n"
-" set infotext \"Not currently attached to x11vnc\\nLast available info:\\n$infotext\"\n"
-" }\n"
-"\n"
-" set w .client_balloon\n"
-" catch {destroy $w}\n"
-" toplevel $w -bg black -screen [winfo screen $icon_win]\n"
-" wm overrideredirect $w 1\n"
-" label $w.l -text \"$infotext\" -relief flat -bg \"#ffffaa\" -fg black \\\n"
-" -padx 2 -pady 0 -anchor w -justify left -font $ffont\n"
-" pack $w.l -side left -padx 1 -pady 1\n"
-"\n"
-" set w2 [winfo reqwidth $w.l]\n"
-" set h2 [winfo reqheight $w.l]\n"
-"\n"
-" set W [winfo screenwidth $w]\n"
-" set H [winfo screenheight $w]\n"
-"\n"
-" if {[expr $x+$w2] > $W} {\n"
-" set w3 [winfo width $icon_win]\n"
-" set x [expr \"$W - $w2 - $w3 - 4\"] \n"
-" }\n"
-" if {[expr $y+$h2] > $H} {\n"
-" set h3 [winfo height $icon_win]\n"
-" set y [expr \"$H - $h2 - $h3 - 4\"] \n"
-" }\n"
-"\n"
-" wm geometry $w +${x}+${y}\n"
-"}\n"
-"\n"
-"proc kill_client_balloon {} {\n"
-" global client_balloon_id client_balloon_win\n"
-" if [info exists client_balloon_id] {\n"
-" catch {after cancel $client_balloon_id}\n"
-" }\n"
-" if [winfo exists .client_balloon] {\n"
-" destroy .client_balloon\n"
-" }\n"
-"}\n"
-"\n"
-"proc icon_win_cfg {clients} {\n"
-" global icon_win client_tail client_sock client_info_read\n"
-"\n"
-" if {! [info exists icon_win]} {\n"
-" return\n"
-" } elseif {$icon_win == \"\"} {\n"
-" return\n"
-" } elseif {! [winfo exists $icon_win]} {\n"
-" return\n"
-" }\n"
-" if {$clients > 0} {\n"
-" $icon_win configure -bg black -fg white\n"
-" } else {\n"
-" $icon_win configure -bg white -fg black\n"
-" }\n"
-"\n"
-" if {$client_tail == \"\" || !$client_info_read} {\n"
-" if {$client_sock == \"\"} {\n"
-" $icon_win configure -fg red\n"
-" }\n"
-" }\n"
-"}\n"
-"\n"
-"proc server_accept {sock addr port} {\n"
-" global socket_cookie server socket_got_callback\n"
-" global client_tail client_sock\n"
-" set db 0\n"
-"\n"
-" if {$db} {puts stderr \"sock=$sock addr=$addr port=$port\"}\n"
-"\n"
-" update; update idletasks\n"
-" after 50\n"
-" update; update idletasks\n"
-" set count [gets $sock str]\n"
-"\n"
-" if {$count >= 0} {\n"
-" set str [string trim $str]\n"
-" if {$db} {puts stderr \"server_accept: \\\"$str\\\"\"}\n"
-" if {$str == \"COOKIE:$socket_cookie\"} {\n"
-" set client_sock $sock\n"
-" if {$db} {puts stderr \"cookie matched. $client_sock\"}\n"
-" } else {\n"
-" if {$db} {puts stderr \"cookie NO matched.\"}\n"
-" }\n"
-" }\n"
-" catch {close $server}\n"
-" set socket_got_callback 1\n"
-" if {$db} {puts stderr \"socket_got_callback $socket_got_callback\"}\n"
-"}\n"
-"\n"
-"proc try_client_info_sock {} {\n"
-" global socket_cookie server socket_got_callback\n"
-" global x11vnc_started x11vnc_xdisplay hostname client_sock\n"
-" global x11vnc_xdisplay0 menu_var\n"
-"\n"
-" set db 0\n"
-"#dtime t1\n"
-" set start 13037\n"
-" set tries 100\n"
-" set socket_got_callback 0\n"
-"\n"
-" set xd $x11vnc_xdisplay\n"
-" if {$xd == \"\" && $x11vnc_xdisplay0 != \"\"} {\n"
-" set xd $x11vnc_xdisplay0\n"
-" }\n"
-" if {$xd == \"\" && [info exists menu_var(display)]} {\n"
-" set xd $menu_var(display)\n"
-" }\n"
-"\n"
-" set myaddr \"\"\n"
-" regsub {\\..*$} $hostname \"\" shost\n"
-" if {$x11vnc_started} {\n"
-" set myaddr \"127.0.0.1\"\n"
-" } elseif {$xd != \"\"} {\n"
-" if {[regexp {^:} $xd]} {\n"
-" set myaddr \"127.0.0.1\"\n"
-" } elseif {[regexp -nocase \"^$shost\" $xd]} {\n"
-" set myaddr \"127.0.0.1\"\n"
-" } elseif {[regexp -nocase \"^localhost\" $xd]} {\n"
-" set myaddr \"127.0.0.1\"\n"
-" } else {\n"
-" set myaddr $hostname\n"
-" }\n"
-" } else {\n"
-" set myaddr $hostname\n"
-" }\n"
-" \n"
-" for {set i 0} {$i <= $tries} {incr i} {\n"
-" set port [expr $start + $i]\n"
-" set server [socket -server server_accept -myaddr $myaddr $port]\n"
-" if {$server == \"\"} {\n"
-" continue\n"
-" }\n"
-" if {[eof $server]} {\n"
-" continue\n"
-" }\n"
-" set err \"\"\n"
-" catch {set err [fconfigure $server -error]}\n"
-" #puts \"err: $server: $err\"\n"
-" if {$err == \"\"} {\n"
-" break\n"
-" }\n"
-" }\n"
-" if {$server == \"\"} {\n"
-" append_text \"try_client_info_sock: server socket failed.\\n\"\n"
-" return\n"
-" }\n"
-" if {! $x11vnc_started} {\n"
-" run_remote_cmd [list \"-nosync\" \"-R\" \"noop\"]\n"
-" if {$db} {dtime A}\n"
-" after 250\n"
-" if {$db} {dtime A}\n"
-" }\n"
-"\n"
-" # set the cookie to some obscured randomness\n"
-" set socket_cookie [clock clicks]\n"
-" set r [expr rand()]\n"
-" if {$r != \"\"} {\n"
-" append socket_cookie $r\n"
-" }\n"
-" set r \"\"\n"
-" catch {set r [winfo id .]}\n"
-" if {$r != \"\"} {\n"
-" append socket_cookie $r\n"
-" }\n"
-" if {[regexp {([0-9])([0-9])$} [clock clicks] m m1 m2]} {\n"
-" regsub -all {\\.} $socket_cookie $m1 socket_cookie\n"
-" regsub -all {x} $socket_cookie $m2 socket_cookie\n"
-" }\n"
-" run_remote_cmd [list \"-nosync\" \"-R\" \\\n"
-" \"client_info_sock:$myaddr:$port:$socket_cookie\"]\n"
-"#dtime t2\n"
-" if {$db} {puts \"client_info_sock:$myaddr:$port:$socket_cookie\"}\n"
-" for {set i 0} {$i < 10} {incr i} {\n"
-" after 50\n"
-" update; update idletasks\n"
-"#dtime aa\n"
-" if {$socket_got_callback != 0} {\n"
-"#puts \"break-\"\n"
-" break\n"
-" }\n"
-" }\n"
-"#dtime t3\n"
-"\n"
-" set aftid \"\"\n"
-" if {$socket_got_callback == 0} {\n"
-" set aftid [after 10000 {set socket_got_callback 2}]\n"
-" tkwait variable socket_got_callback\n"
-" }\n"
-"\n"
-" if {$aftid != \"\"} {\n"
-" catch {after cancel $aftid}\n"
-" }\n"
-"\n"
-" if {$socket_got_callback != 1} {\n"
-" puts stderr \"try_client_info_sock failed: no callback\\n\"\n"
-" catch {close $server}\n"
-" } else {\n"
-" setup_client_sock 1\n"
-" }\n"
-"#dtime t4\n"
-"}\n"
-"\n"
-"proc set_icon_label {} {\n"
-" global icon_win\n"
-"\n"
-" set lab [get_icon_label]\n"
-"\n"
-" if {! [info exists icon_win]} {\n"
-" return\n"
-" } elseif {$icon_win == \"\"} {\n"
-" return\n"
-" } elseif {! [winfo exists $icon_win]} {\n"
-" return\n"
-" }\n"
-" \n"
-" if {[info exists icon_win]} {\n"
-" $icon_win configure -text $lab\n"
-" }\n"
-"}\n"
-"\n"
-"proc get_icon_label {{set 0}} {\n"
-" global icon_minimal \n"
-"\n"
-" set lab0 \"x11\\nvnc\"\n"
-" \n"
-" if {$icon_minimal} {\n"
-" set lab [get_vnc_display_number]\n"
-" if {$lab != \"none\"} {\n"
-" #set lab \" :$lab\"\n"
-" set lab \":$lab\"\n"
-" } else {\n"
-" set lab \"-\"\n"
-" }\n"
-" } else {\n"
-" set lab $lab0\n"
-" }\n"
-" return $lab\n"
-"}\n"
-"\n"
-"# currently unused\n"
-"proc lmenu {menu} {\n"
-" global popup_cascade_posted\n"
-" global left_iconwin_menu\n"
-" set left_iconwin_menu 1\n"
-" after 100\n"
-" update\n"
-" if {!$popup_cascade_posted && $left_iconwin_menu} {\n"
-" for {set i 0} {$i < 3} {incr i} {\n"
-" after 100\n"
-" update\n"
-" }\n"
-" if {!$popup_cascade_posted && $left_iconwin_menu} {\n"
-" $menu unpost\n"
-" return\n"
-" }\n"
-" }\n"
-" # kludge for WindowView\n"
-" if {$popup_cascade_posted} {\n"
-" focus $menu\n"
-" }\n"
-"}\n"
-"\n"
-"proc old_balloon {} {\n"
-" global client_str saved_clients_str\n"
-" set str \"\"\n"
-" if {[info exists client_str]} {\n"
-" if {$client_str != \"\"} {\n"
-" set str $client_str\n"
-" }\n"
-" }\n"
-" if {$str == \"\"} {\n"
-" if {[info exists saved_clients_str]} {\n"
-" set str $saved_clients_str\n"
-" }\n"
-" }\n"
-" if {$str != \"\"} {\n"
-" set_client_balloon $str\n"
-" }\n"
-"}\n"
-"\n"
-"proc get_custom_menu_items {} {\n"
-" global env custom_last_read\n"
-"\n"
-" if {![info exists custom_last_read]} {\n"
-" set custom_last_read 0\n"
-" }\n"
-" if {[info exists env(X11VNC_CUSTOM_GUI)]} {\n"
-" set custom \"$env(X11VNC_CUSTOM_GUI)\"\n"
-" } elseif {![info exists env(HOME)]} {\n"
-" return [list \"none\"]\n"
-" } else {\n"
-" set custom \"$env(HOME)/.x11vnc.gui\"\n"
-" }\n"
-" if {![file exists $custom]} {\n"
-" return [list \"none\"]\n"
-" }\n"
-"\n"
-"# if {[file mtime $custom] <= $custom_last_read} {\n"
-"# return [list \"nochange\"]\n"
-"# }\n"
-"\n"
-" set in \"\"\n"
-" catch {set in [open $custom \"r\"]} \n"
-" if {$in == \"\"} {\n"
-" return [list \"none\"]\n"
-" }\n"
-"\n"
-" set custom_last_read [clock seconds]\n"
-"\n"
-" set count 0\n"
-" while {[gets $in line] > -1} {\n"
-" if {[regexp {^[ \\t]*#} $line]} {\n"
-" continue\n"
-" }\n"
-" set line [string trim $line]\n"
-" if {$line != \"\"} {\n"
-" lappend items $line\n"
-" incr count\n"
-" }\n"
-" }\n"
-" close $in\n"
-" \n"
-" if {$count > 0} {\n"
-" return $items\n"
-" } else {\n"
-" return [list \"none\"]\n"
-" }\n"
-"}\n"
-"\n"
-"proc make_custom_menu {menu font} {\n"
-" set items [get_custom_menu_items]\n"
-" set i0 [lindex $items 0]\n"
-" catch {$menu delete 0 end}\n"
-" if {$i0 != \"none\"} {\n"
-" $menu add command -font $font -label \"Custom items:\"\n"
-" $menu add separator\n"
-" foreach item $items {\n"
-" if {$item == \"sep\" || $item == \"separator\"} {\n"
-" $menu add separator\n"
-" continue\n"
-" }\n"
-" if {[regexp {^action:(.*)$} $item m action]} {\n"
-" $menu add command -font $font -label \"$action\" \\\n"
-" -command \"do_var $action\"\n"
-" continue\n"
-" }\n"
-" $menu add command -font $font -label \"$item\" \\\n"
-" -command \"run_remote_cmd \\[list \\\"-R\\\" \\\"$item\\\"\\]\"\n"
-" }\n"
-" }\n"
-"}\n"
-"\n"
-"proc make_icon {} {\n"
-" global icon_mode icon_embed_id icon_win props_win full_win\n"
-" global tray_embed tray_running env\n"
-" global x11vnc_client_file client_tail client_sock client_str saved_clients_str\n"
-" global client_balloon_id\n"
-" global bfont sfont snfont ffont\n"
-" global icon_minimal gui_start_mode\n"
-" global popup_cascade_posted menu_var x11vnc_gui_geom\n"
-" set min_x 24\n"
-" set min_y 24\n"
-" \n"
-" set font $bfont\n"
-" set mfont $font\n"
-"\n"
-" if {$tray_embed} {\n"
-" set font $sfont\n"
-" set mfont $snfont\n"
-" }\n"
-" if {[info exists env(X11VNC_ICON_FONT)]} {\n"
-" set font $env(X11VNC_ICON_FONT)\n"
-" }\n"
-" if {[regexp {([0-9][0-9]*)x([0-9][0-9]*)} $x11vnc_gui_geom m mx my]} {\n"
-" if {$mx < $min_x} {\n"
-" set min_x $mx\n"
-" }\n"
-" if {$my < $min_y} {\n"
-" set min_y $my\n"
-" }\n"
-" }\n"
-" wm minsize . $min_x $min_y\n"
-"\n"
-" if {$tray_embed && $tray_running} {\n"
-" wm withdraw .\n"
-" }\n"
-"\n"
-" set l .icon\n"
-" set icon_win $l\n"
-" catch destroy {$icon_win}\n"
-" if {$icon_minimal} {\n"
-" set bw 1\n"
-" } else {\n"
-" set bw 5\n"
-" }\n"
-" set lab [get_icon_label]\n"
-" label $l -text $lab -borderwidth $bw -font $font\n"
-" icon_win_cfg 0\n"
-"\n"
-"\n"
-" set popup_cascade_posted 0\n"
-" pack $l -fill both -expand 1\n"
-" set menu \"$l.menu\"\n"
-" menu $menu -tearoff 0 -postcommand \"popup_post $menu\"\n"
-" $menu add command -font $mfont -label \"Properties\" -command do_props\n"
-" $menu add command -font $mfont -label \"Help\" -command \"menu_help Tray\"\n"
-" $menu add command -font $mfont -label \"Logfile\" -command show_logfile\n"
-" $menu add separator\n"
-" $menu add command -font $mfont -label \"New Client\" -command do_new_client\n"
-"\n"
-" set wd \"$menu.disconnect\"\n"
-" catch {destroy $wd}\n"
-" menu $wd -tearoff 0 -font $ffont \\\n"
-" -postcommand {set popup_cascade_posted 1}\n"
-" $wd add command -label \"Disconnect client:\"\n"
-" $wd add separator\n"
-" $wd add command -label \"All Clients\" -command do_disconnect_all\n"
-" $menu add cascade -font $mfont -label \"Disconnect:\" -menu $wd\n"
-"\n"
-" $menu add separator\n"
-"\n"
-" set wv \"$menu.windowview\"\n"
-" catch {destroy $wv}\n"
-" menu $wv -tearoff 0 -font $ffont \\\n"
-" -postcommand {set popup_cascade_posted 1}\n"
-" foreach val {full icon tray} {\n"
-" $wv add radiobutton -label \"$val\" \\\n"
-" -value \"$val\" -font $ffont \\\n"
-" -command \"do_var WindowView\" \\\n"
-" -variable menu_var(WindowView)\n"
-" }\n"
-" $menu add cascade -font $mfont -label \"Window View:\" -menu $wv\n"
-"\n"
-" $menu add command -font $mfont -label \"Dismiss\" -command \"$menu unpost\"\n"
-" $menu add command -font $mfont -label \"Stop x11vnc\" -command clean_icon_exit\n"
-"\n"
-" set items [get_custom_menu_items]\n"
-" set i0 [lindex $items 0]\n"
-" if {$i0 != \"none\" && $i0 != \"nochange\"} {\n"
-" $menu add separator\n"
-" set cm \"$menu.custom\"\n"
-" catch {destroy $cm}\n"
-" menu $cm -tearoff 0 -font $ffont \\\n"
-" -postcommand \"set popup_cascade_posted 1; make_custom_menu $cm $ffont\"\n"
-" $menu add cascade -font $mfont -label \"Custom:\" -menu $cm\n"
-" }\n"
-"\n"
-" bind $icon_win <ButtonRelease-1> \"pmenu $menu %X %Y\"\n"
-" bind $icon_win <ButtonRelease-3> \"pmenu $menu %X %Y\"\n"
-" bind $icon_win <Enter> {set client_balloon_id [after 500 show_client_balloon]}\n"
-" bind $icon_win <Button> {kill_client_balloon}\n"
-" bind $icon_win <Leave> {kill_client_balloon}\n"
-" bind $icon_win <Shift-ButtonRelease-1> {kill_client_balloon; show_client_balloon}\n"
-" bind $icon_win <ButtonRelease-2> {kill_client_balloon; show_client_balloon}\n"
-"# bind $menu <Leave> \"lmenu $menu\"\n"
-"# bind $menu <Enter> \"set left_iconwin_menu 0\"\n"
-"# bind $menu <KeyPress-Escape> \"$menu unpost\"\n"
-"\n"
-" bind . <Control-KeyPress-c> {destroy .; exit 0}\n"
-"\n"
-" if {!$tray_embed || !$tray_running} {\n"
-" global x11vnc_gui_geom\n"
-" if {$x11vnc_gui_geom != \"\"} {\n"
-" set doit 1\n"
-" if {[regexp {x} $x11vnc_gui_geom]} {\n"
-" if {$gui_start_mode == \"full\"} {\n"
-" set doit 0\n"
-" }\n"
-" } \n"
-" if {$doit} {\n"
-" wm geometry . $x11vnc_gui_geom\n"
-" }\n"
-" }\n"
-" }\n"
-" wm iconname . \"tkx11vnc\"\n"
-" wm title . \"tkx11vnc\"\n"
-" update\n"
-" if {$tray_embed && $tray_running} {\n"
-" #wm deiconify .; # why did we have this???\n"
-" #after 10000 {wm deiconify .; puts \"reqheight [winfo reqheight .]\"; puts \"reqwidth [winfo reqwidth .]\"; puts \"height [winfo height .]\"; puts \"width [winfo width .]\"}\n"
-" } else {\n"
-" wm deiconify .\n"
-" }\n"
-" update\n"
-"\n"
-"#puts \"reqheight [winfo reqheight .]\"\n"
-"#puts \"reqwidth [winfo reqwidth .]\"\n"
-"#puts \"height [winfo height .]\"\n"
-"#puts \"width [winfo width .]\"\n"
-"#puts \"AAA\"\n"
-"\n"
-" old_balloon\n"
-"}\n"
-"\n"
-"proc setup_client_channel {} {\n"
-" global client_sock client_tail\n"
-"\n"
-"# XXX/setup_client_channel\n"
-" if {$client_sock == \"\" } {\n"
-" stop_watch on\n"
-" try_client_info_sock\n"
-" if {$client_sock == \"\" } {\n"
-" after 500\n"
-" try_client_info_sock\n"
-" }\n"
-" stop_watch off\n"
-" }\n"
-" if {$client_tail == \"\" && $client_sock == \"\"} {\n"
-" set m \"\\n\"\n"
-" set m \"${m}tkx11vnc:\\n\"\n"
-" set m \"${m}\\n\"\n"
-" set m \"${m} Warning -- running in icon/tray mode but the\\n\"\n"
-" set m \"${m} connected client info channel from x11vnc is\\n\"\n"
-" set m \"${m} not working. The viewer client list and icon\\n\"\n"
-" set m \"${m} color indicator will not be accurate.\\n\"\n"
-" set m \"${m}\\n\"\n"
-" set m \"${m} You may need to restart \\\"x11vnc -gui tray ...\\\"\\n\"\n"
-" set m \"${m} for this to work properly.\\n\"\n"
-" set m \"${m}\\n\"\n"
-" textwin \"Warning\" \"Warning\" $m\n"
-" update\n"
-" }\n"
-" dtime C\n"
-"}\n"
-"\n"
-"proc clean_client_tail {} {\n"
-" global client_tail client_info_read\n"
-" if [info exists client_tail] {\n"
-" if {$client_tail != \"\"} {\n"
-" set p \"\"\n"
-" catch {set p [pid $client_tail]}\n"
-" if {$p != \"\"} {\n"
-" catch {exec kill -TERM $p >/dev/null 2>/dev/null}\n"
-" }\n"
-" catch {close $client_tail}\n"
-" set client_tail \"\"\n"
-" }\n"
-" }\n"
-" set client_info_read 0\n"
-"}\n"
-"\n"
-"proc clean_icon_exit {} {\n"
-" clean_client_tail\n"
-" push_new_value \"stop\" \"stop\" 1 0\n"
-" set_connected no\n"
-" update\n"
-" destroy .\n"
-" exit\n"
-"}\n"
-"\n"
-"proc make_gui {mode} {\n"
-" global icon_mode tray_embed tray_running full_win icon_win\n"
-" global top_widget_names x11vnc_gui_geom\n"
-" global gui_current_state make_gui_count\n"
-" global x11vnc_connect connected_to_x11vnc\n"
-" global x11_display\n"
-" global gui_start_mode\n"
-"\n"
-" incr make_gui_count\n"
-"\n"
-" if {$gui_start_mode == \"\"} {\n"
-" set gui_start_mode $mode\n"
-" }\n"
-"\n"
-" wm withdraw .\n"
-"\n"
-" set full_geom \"\"\n"
-" if {[winfo exists .full]} {\n"
-" catch {set full_geom [wm geometry .full]}\n"
-" }\n"
-"\n"
-" set fw .full\n"
-" set full_win $fw\n"
-" catch {pack forget $full_win}\n"
-" catch {pack forget $icon_win}\n"
-" catch {destroy $full_win}\n"
-" catch {destroy $icon_win}\n"
-"\n"
-" wm minsize . 1 1\n"
-"\n"
-" set gui_current_state \"\"\n"
-"\n"
-" if {$mode == \"full\"} {\n"
-" frame $fw\n"
-" set icon_mode 0\n"
-"\n"
-" wm protocol . WM_DELETE_WINDOW \"destroy .; exit\"\n"
-" make_widgets $fw\n"
-"\n"
-" set w \".\"\n"
-" wm geometry $w \"\"\n"
-" if {$x11vnc_gui_geom != \"\"} {\n"
-" set doit 1\n"
-" if {[regexp {x} $x11vnc_gui_geom]} {\n"
-" if {$gui_start_mode != $mode} {\n"
-" set doit 0\n"
-" }\n"
-" }\n"
-" if {$doit} {\n"
-" wm geometry $w $x11vnc_gui_geom\n"
-" }\n"
-" }\n"
-" pack $fw -fill both -expand 1\n"
-"\n"
-" } elseif {$mode == \"icon\" || $mode == \"tray\"} {\n"
-"\n"
-" toplevel $fw\n"
-" wm withdraw $fw\n"
-"\n"
-" wm protocol $fw WM_DELETE_WINDOW \"wm withdraw .full\"\n"
-" wm protocol . WM_DELETE_WINDOW \"clean_icon_exit\"\n"
-" \n"
-" if {$mode == \"icon\"} {\n"
-" set tray_embed 0\n"
-" } elseif {$mode == \"tray\"} {\n"
-" set tray_embed 1\n"
-" }\n"
-" set icon_mode 1\n"
-" make_widgets $fw\n"
-" set w $fw\n"
-" make_icon\n"
-" wm geometry $fw \"\"\n"
-" wm geometry . \"\"\n"
-" } else {\n"
-" return\n"
-" }\n"
-" set_view_variable $mode\n"
-" set gui_current_state $mode\n"
-"\n"
-"\n"
-" update\n"
-" if {!$tray_embed || !$tray_running} {\n"
-" wm deiconify .\n"
-" }\n"
-" update idletasks\n"
-" wm minsize $w [winfo width $w] [winfo height $w]\n"
-" if {$mode == \"full\" && $make_gui_count > 1} {\n"
-" center_win .\n"
-" }\n"
-"\n"
-"\n"
-" if {$make_gui_count == 1} {\n"
-" copy_default_vars\n"
-" if {$x11vnc_connect} {\n"
-" try_connect_and_query_all\n"
-" } else {\n"
-" insert_cmdline_vars\n"
-" }\n"
-" } else {\n"
-" set_name \"RESTORE\"\n"
-" }\n"
-"\n"
-" setup_client_tail\n"
-"\n"
-" set_widgets\n"
-"\n"
-" if {$mode == \"tray\"} {\n"
-" setup_tray_embed\n"
-" }\n"
-"}\n"
-"\n"
-"proc make_widgets {top} {\n"
-" global template make_gui_count\n"
-" global menu_b menu_m menu_count\n"
-" global item_opts item_bool item_case item_menu item_entry menu_var unset_str\n"
-" global item_cascade\n"
-" global info_label info_str x11_display vnc_display\n"
-" global text_area text_area_str\n"
-" global entry_box entry_str entry_set entry_label entry_ok entry_browse\n"
-" global entry_help entry_skip\n"
-" global bfont ffont beginner_mode\n"
-" global helptext helpremote helplabel\n"
-" global icon_mode icon_win props_win full_win\n"
-" global top_widget_names\n"
-" global screen_height screen_width\n"
-"\n"
-"\n"
-" # Make the top label\n"
-" set label_width 84\n"
-" if {$screen_width <= 400} {\n"
-" set label_width 64\n"
-" }\n"
-" set info_label \"$top.info\"\n"
-" label $info_label -textvariable info_str -bd 2 -relief groove \\\n"
-" -anchor w -width $label_width -font $ffont\n"
-" pack $info_label -side top -fill x -expand 0\n"
-"\n"
-" set top_widget_names(info) $info_label\n"
-"\n"
-" # Extract the Rows:\n"
-" set row 0;\n"
-" set colmax 0;\n"
-" foreach line [split $template \"\\n\"] {\n"
-" if {[regexp {^Row: (.*)} $line rest]} {\n"
-" set col 0\n"
-" foreach case [split $rest] {\n"
-" if {$case == \"\" || $case == \"Row:\"} {\n"
-" continue\n"
-" }\n"
-" set menu_row($case) $row\n"
-" set menu_col($case) $col\n"
-"\n"
-" lappend cases($col) $case;\n"
-" set len [string length $case]\n"
-" if {[info exists max_len($col)]} {\n"
-" if {$len > $max_len($col)} {\n"
-" set max_len($col) $len\n"
-" }\n"
-" } else {\n"
-" set max_len($col) $len\n"
-" }\n"
-" incr col\n"
-" if {$col > $colmax} {\n"
-" set colmax $col\n"
-" }\n"
-" }\n"
-" incr row;\n"
-" }\n"
-" }\n"
-"\n"
-" # Make frames for the rows and make the menu buttons.\n"
-" set f \"$top.menuframe\"\n"
-" frame $f\n"
-" for {set c 0} {$c < $colmax} {incr c} {\n"
-" set colf \"$f.menuframe$c\"\n"
-" frame $colf\n"
-" pack $colf -side left -fill y\n"
-" set fbg [$colf cget -background]\n"
-" foreach case $cases($c) {\n"
-" set menub \"$colf.menu$case\";\n"
-" set menu \"$colf.menu$case.menu\";\n"
-" set menu_b($case) $menub\n"
-" set menu_m($case) $menu\n"
-" set ul 0\n"
-" foreach char [split $case \"\"] {\n"
-" set char [string tolower $char]\n"
-" if {![info exists underlined($char)]} {\n"
-" set underlined($char) 1\n"
-" break\n"
-" }\n"
-" incr ul\n"
-" }\n"
-" global osname\n"
-" set tstr \"$case\"\n"
-" if {$osname == \"Darwin\"} {\n"
-" #set tstr \" $case \"\n"
-" }\n"
-" menubutton $menub -text \"$tstr\" -underline $ul \\\n"
-" -anchor w -menu $menu -background $fbg \\\n"
-" -font $bfont\n"
-" pack $menub -side top -fill x\n"
-" menu $menu -tearoff 0 -postcommand menu_posted\n"
-" }\n"
-" }\n"
-" pack $f -side top -fill x\n"
-" set top_widget_names(menuframe) $f\n"
-"\n"
-" make_menu_items\n"
-"\n"
-" # Make the x11 and vnc display label bar:\n"
-" set df \"$top.displayframe\"\n"
-" frame $df -bd 1 -relief groove\n"
-" set top_widget_names(displayframe) $df\n"
-"\n"
-" set df_x11 \"$df.xdisplay\"\n"
-"\n"
-" if {$make_gui_count == 1} {\n"
-" no_x11_display\n"
-" }\n"
-" set lw [expr {$label_width / 2}]\n"
-" label $df_x11 -textvariable x11_display -width $lw -anchor w \\\n"
-" -font $ffont\n"
-"\n"
-" set df_vnc \"$df.vdisplay\"\n"
-"\n"
-" if {$make_gui_count == 1} {\n"
-" no_vnc_display\n"
-" }\n"
-" label $df_vnc -textvariable vnc_display -width $lw -anchor w \\\n"
-" -font $ffont\n"
-"\n"
-" pack $df_x11 $df_vnc -side left \n"
-" pack $df -side top -fill x\n"
-"\n"
-" # text area\n"
-" global text_height\n"
-" set text_area \"$top.text\"\n"
-" if {$screen_width <= 400} {\n"
-" text $text_area -height $text_height -width $label_width \\\n"
-" -relief ridge -font $ffont\n"
-" } else {\n"
-" text $text_area -height $text_height -relief ridge -font $ffont\n"
-" }\n"
-" pack $text_area -side top -fill both -expand 1\n"
-" set top_widget_names(text) $text_area\n"
-"\n"
-"\n"
-" if {$text_area_str == \"\"} {\n"
-" set str \"Click Help -> gui for overview.\"\n"
-" append_text \"\\n$str\\n\\n\"\n"
-" } else {\n"
-" append_text $text_area_str\n"
-" }\n"
-"\n"
-" # Make entry box stuff\n"
-" set ef \"$top.entryframe\"\n"
-" frame $ef -bd 1 -relief groove\n"
-" set top_widget_names(entryframe) $ef\n"
-"\n"
-" # Entry Label\n"
-" set ef_label \"$ef.label\"\n"
-" label $ef_label -textvariable entry_str -anchor w -font $bfont\n"
-"\n"
-" set entry_str \"Set... : \"\n"
-" set ef_entry \"$ef.entry\"\n"
-" entry $ef_entry -relief sunken -font $ffont\n"
-" bind $ef_entry <KeyPress-Return> {set entry_set 1}\n"
-" bind $ef_entry <KeyPress-Escape> {set entry_set 0}\n"
-"\n"
-" set ok_s \"OK\"\n"
-" set cancel_s \"Cancel\"\n"
-" set help_s \"Help\"\n"
-" set browse_s \"Browse...\"\n"
-" global osname\n"
-" if {$osname == \"Darwin\"} {\n"
-" set ok_s \" OK \"\n"
-" set cancel_s \" Cancel \"\n"
-" set help_s \" Help \"\n"
-" set browse_s \" Browse... \"\n"
-" }\n"
-"\n"
-" # Entry OK button\n"
-" set bpx \"1m\"\n"
-" set bpy \"1\"\n"
-" set hlt \"0\"\n"
-" set ef_ok \"$ef.ok\"\n"
-" button $ef_ok -text $ok_s -pady $bpy -padx $bpx -command {set entry_set 1} \\\n"
-" -highlightthickness $hlt \\\n"
-" -font $bfont\n"
-"\n"
-" # Entry Skip button\n"
-" set ef_skip \"$ef.skip\"\n"
-" button $ef_skip -text $cancel_s -pady $bpy -padx $bpx -command {set entry_set 0} \\\n"
-" -highlightthickness $hlt \\\n"
-" -font $bfont\n"
-"\n"
-" # Entry Help button\n"
-" set ef_help \"$ef.help\"\n"
-" button $ef_help -text $help_s -pady $bpy -padx $bpx -command \\\n"
-" {menu_help $entry_dialog_item} -font $bfont \\\n"
-" -highlightthickness $hlt\n"
-"\n"
-" # Entry Browse button\n"
-" set ef_browse \"$ef.browse\"\n"
-" button $ef_browse -text $browse_s -pady $bpy -padx $bpx -font $bfont \\\n"
-" -highlightthickness $hlt \\\n"
-" -command {entry_insert [tk_getOpenFile]} \n"
-"\n"
-" pack $ef_label -side left\n"
-" pack $ef_entry -side left -fill x -expand 1\n"
-" pack $ef_ok -side right\n"
-" pack $ef_skip -side right\n"
-" pack $ef_help -side right\n"
-" pack $ef -side bottom -fill x\n"
-"\n"
-" set entry_ok $ef_ok\n"
-" set entry_skip $ef_skip\n"
-" set entry_help $ef_help\n"
-" set entry_box $ef_entry\n"
-" set entry_browse $ef_browse\n"
-" set entry_label $ef_label\n"
-" entry_disable\n"
-"\n"
-"}\n"
-"\n"
-"proc menu_bindings {m} {\n"
-" set db 0\n"
-" if {$db} {puts \"menu_bindings $m\"}\n"
-"\n"
-" bind $m <<MenuSelect>> {\n"
-"#syntax hilite bug \\\n"
-"MenuSelect>>\n"
-" set n [%W index active]\n"
-" set db 0\n"
-" if {$db} {puts stderr \"menu_bindings %W $n\"}\n"
-" set label \" \"\n"
-" if {$n != \"none\"} {\n"
-" set str %W,$n\n"
-" set which \"\"\n"
-"\n"
-" if {$db} {puts \"menu_bindings $str\"}\n"
-" if {[info exists helplabel($str)]} {\n"
-" set vname [format %%-16s $helplabel($str)]\n"
-" set label \"Click (?) for help on: $vname\"\n"
-" set which $helplabel($str)\n"
-" }\n"
-" if {$which == \"\"} {\n"
-" ;\n"
-" } elseif {$which == \"passwd\" || $which == \"viewpasswd\"} {\n"
-" ;\n"
-" } elseif {[is_action $which]} {\n"
-" if {[info exists menu_var($which)] \n"
-" && $menu_var($which) != \"\"} {\n"
-" set label \"$label value: $menu_var($which)\"\n"
-" } else {\n"
-" set label \"$label (is action)\"\n"
-" }\n"
-" } elseif {[info exists menu_var($which)]} {\n"
-" set label \"$label value: $menu_var($which)\"\n"
-" if {$which == \"http\"} {\n"
-" global vnc_url\n"
-" set label \"$label URL: $vnc_url\"\n"
-" }\n"
-" }\n"
-" }\n"
-" set_info $label\n"
-" }\n"
-"}\n"
-"\n"
-"proc key_bindings {} {\n"
-" global env menus_disabled\n"
-" if {[info exists env(USER)] && $env(USER) == \"runge\"} {\n"
-" # quick restart\n"
-" bind . <Control-KeyPress-k> {exec $argv0 $argv &; destroy .}\n"
-" }\n"
-" bind . <Control-KeyPress-p> { \\\n"
-" global menus_disabled; \\\n"
-" if {!$menus_disabled} {try_connect_and_query_all} \\\n"
-" }\n"
-" bind . <Control-KeyPress-u> { \\\n"
-" global menus_disabled; \\\n"
-" if {!$menus_disabled} {query_all 0} \\\n"
-" }\n"
-" bind . <Control-KeyPress-r> { \\\n"
-" global menus_disabled; \\\n"
-" if {!$menus_disabled} {query_all 0} \\\n"
-" }\n"
-" bind . <Control-KeyPress-d> { \\\n"
-" global menus_disabled; \\\n"
-" if {!$menus_disabled} {detach_from_display} \\\n"
-" }\n"
-" bind . <Control-KeyPress-a> { \\\n"
-" global menus_disabled; \\\n"
-" if {!$menus_disabled} {try_connect_and_query_all} \\\n"
-" }\n"
-"}\n"
-"\n"
-"proc stop_watch {onoff} {\n"
-" global orig_cursor text_area entry_box\n"
-"\n"
-" set widgets [list .]\n"
-" if [info exists text_area] {\n"
-" if {$text_area != \"\"} {\n"
-" lappend widgets $text_area\n"
-" }\n"
-" }\n"
-" if [info exists entry_box] {\n"
-" if {$entry_box != \"\"} {\n"
-" lappend widgets $entry_box\n"
-" }\n"
-" }\n"
-"\n"
-" if {$onoff == \"on\"} {\n"
-" foreach item $widgets {\n"
-" if {![winfo exists $item]} {\n"
-" continue\n"
-" }\n"
-" $item config -cursor {watch}\n"
-" }\n"
-" } else {\n"
-" foreach item $widgets {\n"
-" if {![winfo exists $item]} {\n"
-" continue\n"
-" }\n"
-" $item config -cursor {}\n"
-" }\n"
-" }\n"
-" update\n"
-"}\n"
-"\n"
-"proc double_check_noremote {} {\n"
-" set msg \"\\n\\n\"\n"
-" append msg \"*** WARNING: setting \\\"noremote\\\" will disable ALL remote control commands (i.e.\\n\"\n"
-" append msg \"*** WARNING: *this* gui will be locked out). Do you really want to do this?\\n\"\n"
-" append msg \"*** WARNING: If so, press \\\"OK\\\", otherwise press \\\"Cancel\\\"\\n\"\n"
-" append msg \"\\n\"\n"
-" bell\n"
-" return [warning_dialog $msg \"noremote\"]\n"
-"}\n"
-"\n"
-"proc get_settings_rcfile {} {\n"
-" global menu_var default_var unset_str\n"
-" global x11vnc_gui_params\n"
-"\n"
-" set rc_txt \"\"\n"
-"\n"
-" set menu_var(gui) $x11vnc_gui_params\n"
-"\n"
-" foreach item [lsort [array names menu_var]] {\n"
-" if {$item == \"gui\"} {\n"
-" ;\n"
-" } elseif {![active_when_starting $item]} {\n"
-" continue\n"
-" } elseif {[is_action $item]} {\n"
-" continue\n"
-" }\n"
-" if {$item == \"debug_gui\"} {\n"
-" continue\n"
-" } elseif {$item == \"WindowView\"} {\n"
-" continue\n"
-" } elseif {$item == \"rc\" || $item == \"norc\"} {\n"
-" continue\n"
-" } elseif {$item == \"loop\"} {\n"
-" continue\n"
-" } elseif {$item == \"loopbg\"} {\n"
-" continue\n"
-" }\n"
-"\n"
-" set def \"\"\n"
-" if {[info exists default_var($item)]} {\n"
-" set def $default_var($item)\n"
-" }\n"
-"\n"
-"\n"
-" set qst \"\"\n"
-" set hmm \"#? \"\n"
-" if {$item == \"display\"} {\n"
-" set qst $hmm\n"
-" } elseif {$item == \"desktop\"} {\n"
-" set qst $hmm\n"
-" } elseif {$item == \"dontdisconnect\"} {\n"
-" set qst $hmm\n"
-" } elseif {$item == \"alwaysshared\"} {\n"
-" 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"
-" set mv $def\n"
-" } else {\n"
-" set mv $menu_var($item)\n"
-" }\n"
-"#puts \"item=$item def=$def mv=$mv\"\n"
-" if {$mv == $unset_str} {\n"
-" set mv \"\"\n"
-" }\n"
-" set ntab 3\n"
-"\n"
-" if {$item == \"gui\" || [value_is_string $item]} {\n"
-" set nitem [get_nitem $item]\n"
-"\n"
-" if {$mv == \"\" && $def != \"\"} {\n"
-" set qst $hmm\n"
-" }\n"
-" set n 0\n"
-" if {$qst != \"\"} {\n"
-" append rc_txt $qst\n"
-" incr n [string length $qst]\n"
-" } elseif {$mv == $def} {\n"
-" append rc_txt \"#d \"\n"
-" incr n [string length \"#d \"]\n"
-" }\n"
-" set mt $mv\n"
-" regsub -all {#} $mt {\\#} mt\n"
-" if {$mt == \"\"} {\n"
-" set mt {\"\"}\n"
-" }\n"
-" append rc_txt \"-$nitem $mt\"\n"
-"\n"
-" if {$mv != $def} {\n"
-" set m [string length \"-$nitem $mt\"]\n"
-" incr n $m\n"
-" set n [expr $n / 8]\n"
-" set c 0\n"
-" for {set i $n} {$i <= $ntab} {incr i} {\n"
-" append rc_txt \"\\t\"\n"
-" incr c\n"
-" }\n"
-" if {$c == 0} {\n"
-" append rc_txt \"\\t\"\n"
-" }\n"
-" regsub -all {#} $def {\\#} def\n"
-" if {$def == \"\"} {\n"
-" set def {\"\"}\n"
-" }\n"
-" append rc_txt \"# default: $def\"\n"
-" }\n"
-" append rc_txt \"\\n\"\n"
-"\n"
-" } elseif {[value_is_bool $item]} {\n"
-" set n 0\n"
-" if {$qst != \"\"} {\n"
-" append rc_txt $qst\n"
-" incr n [string length $qst]\n"
-" } elseif {$mv == $def} {\n"
-" append rc_txt \"#d \"\n"
-" incr n [string length \"#d \"]\n"
-" }\n"
-" if {$def == 1} {\n"
-" set dv \"on\"\n"
-" } else {\n"
-" set dv \"off\"\n"
-" }\n"
-" append rc_txt \"-$item\"\n"
-" set m [string length \"-$item\"]\n"
-" incr n $m\n"
-" set n [expr $n / 8]\n"
-" for {set i $n} {$i <= $ntab} {incr i} {\n"
-" append rc_txt \"\\t\"\n"
-" }\n"
-" append rc_txt \"# default: $dv\"\n"
-" append rc_txt \"\\n\"\n"
-"\n"
-" }\n"
-" }\n"
-" return $rc_txt\n"
-"}\n"
-"\n"
-"proc double_check_start_x11vnc {} {\n"
-" global hostname\n"
-" set msg [get_start_x11vnc_txt]\n"
-" bell\n"
-" append msg \"\\n\"\n"
-" append msg \"*** To run the above command on machine \\\"$hostname\\\" (thereby\\n\"\n"
-" append msg \"*** starting x11vnc) press \\\"OK\\\", otherwise press \\\"Cancel\\\".\\n\"\n"
-" return [warning_dialog $msg \"start\"]\n"
-"}\n"
-"\n"
-"proc get_start_x11vnc_txt {} {\n"
-" set cmd [get_start_x11vnc_cmd]\n"
-" set str [join $cmd]\n"
-" set msg \"\"\n"
-" append msg \"\\n\"\n"
-" append msg \"==== The command built so far is: ====\\n\";\n"
-" append msg \"\\n\"\n"
-" append msg \"$str\\n\"\n"
-" return $msg\n"
-"}\n"
-"\n"
-"proc show_start_cmd {} {\n"
-" set msg [get_start_x11vnc_txt]\n"
-" append_text \"$msg\\n\"\n"
-"}\n"
-"\n"
-"proc get_nitem {item} {\n"
-" set nitem $item\n"
-" if {$nitem == \"screen_blank\"} {\n"
-" set nitem \"sb\"\n"
-" } elseif {$nitem == \"xrandr_mode\"} {\n"
-" set nitem \"xrandr\"\n"
-" } elseif {$nitem == \"unixpw_list\"} {\n"
-" set nitem \"unixpw\"\n"
-" } elseif {$nitem == \"unixpw_nis_list\"} {\n"
-" set nitem \"unixpw_nis\"\n"
-" } elseif {$nitem == \"stunnel_pem\"} {\n"
-" set nitem \"stunnel\"\n"
-" } elseif {$nitem == \"ssl_pem\"} {\n"
-" set nitem \"ssl\"\n"
-" } elseif {$nitem == \"wireframe_mode\"} {\n"
-" set nitem \"wireframe\"\n"
-" } elseif {$nitem == \"solid_color\"} {\n"
-" set nitem \"solid\"\n"
-" }\n"
-" return $nitem\n"
-"}\n"
-"\n"
-"proc get_start_x11vnc_cmd {{show_rc 0}} {\n"
-" global cmd_var menu_var default_var unset_str x11vnc_prog\n"
-"\n"
-" set xterm_cmd \"xterm -iconic -geometry 80x35 -title x11vnc-console -e\"\n"
-"\n"
-" set cmd [split $xterm_cmd]\n"
-"\n"
-" lappend cmd $x11vnc_prog\n"
-"\n"
-" lappend cmd \"-gui\"\n"
-" lappend cmd \"none\"\n"
-"\n"
-" set rc_txt \"\"\n"
-"\n"
-" set saw_id 0\n"
-"\n"
-" foreach item [lsort [array names menu_var]] {\n"
-" if {$item == \"gui\"} {\n"
-" continue\n"
-" } elseif {![active_when_starting $item]} {\n"
-" continue\n"
-" } elseif {[is_action $item]} {\n"
-" continue\n"
-" } elseif {$item == \"debug_gui\"} {\n"
-" continue\n"
-" } elseif {$item == \"WindowView\"} {\n"
-" continue\n"
-" }\n"
-"\n"
-" if {$item == \"id\" || $item == \"sid\"} {\n"
-" set val $menu_var($item);\n"
-" if {$val == \"0x0\" || $val == \"root\"} {\n"
-" continue\n"
-" }\n"
-" }\n"
-" if {$item == \"sid\" && $saw_id} {\n"
-" continue\n"
-" }\n"
-" if {$item == \"id\"} {\n"
-" set saw_id 1\n"
-" } elseif {$item == \"httpport\" && $menu_var($item) == \"0\"} {\n"
-" continue\n"
-" } elseif {$item == \"progressive\" && $menu_var($item) == \"0\"} {\n"
-" continue\n"
-" } elseif {$item == \"dontdisconnect\" && $menu_var($item) == \"-1\"} {\n"
-" continue\n"
-" } elseif {$item == \"alwaysshared\" && $menu_var($item) == \"-1\"} {\n"
-" continue\n"
-" }\n"
-"\n"
-" if {[value_is_bool $item]} {\n"
-" if {[info exists menu_var($item)]} {\n"
-" set add 1\n"
-" if {[info exists default_var($item)]} {\n"
-" if {$menu_var($item) == $default_var($item)} {\n"
-" set add 0;\n"
-" }\n"
-" } elseif {! $menu_var($item)} {\n"
-" set add 0\n"
-" }\n"
-" if {$add} {\n"
-" lappend cmd \"-$item\"\n"
-" append rc_txt \"-$item\\n\"\n"
-" }\n"
-" }\n"
-" } elseif {[value_is_string $item]} {\n"
-" if {![info exists menu_var($item)]} {\n"
-" continue\n"
-" }\n"
-" if {$menu_var($item) != \"\" && $menu_var($item) != $unset_str} {\n"
-" set add 1\n"
-" set nitem [get_nitem $item]\n"
-"\n"
-" if {[info exists default_var($item)]} {\n"
-" if {$menu_var($item) == $default_var($item)} {\n"
-" set add 0;\n"
-" }\n"
-" }\n"
-" if {$add} {\n"
-" lappend cmd \"-$nitem\"\n"
-" set mv $menu_var($item)\n"
-"\n"
-" if {[regexp {^~} $mv]} {\n"
-" if {$item == \"auth\" ||\n"
-" $item == \"rc\" ||\n"
-" $item == \"accept\" || \n"
-" $item == \"connect\" || \n"
-" $item == \"allow\" || \n"
-" $item == \"passwdfile\" || \n"
-" $item == \"o\" || \n"
-" $item == \"logfile\" || \n"
-" $item == \"remap\" || \n"
-" $item == \"httpdir\"} { \n"
-" set mv [tilde_expand $mv]\n"
-" }\n"
-" }\n"
-" \n"
-" lappend cmd $mv\n"
-" set mt $mv\n"
-" regsub -all {#} $mt {\\#} mt\n"
-" append rc_txt \"-$nitem $mt\\n\"\n"
-" }\n"
-" }\n"
-" }\n"
-" }\n"
-" lappend cmd \"2>\"\n"
-" lappend cmd \"/dev/null\"\n"
-" lappend cmd \"&\"\n"
-" \n"
-" if {$show_rc} {\n"
-" return $rc_txt\n"
-" } else {\n"
-" return $cmd\n"
-" }\n"
-"}\n"
-"\n"
-"proc start_x11vnc {} {\n"
-" global menu_var unset_str\n"
-" global x11vnc_prog x11vnc_xdisplay\n"
-" global connected_to_x11vnc\n"
-"\n"
-" if {$connected_to_x11vnc} {\n"
-" append_text \"\\n\"\n"
-" append_text \"WARNING: Still connected to an x11vnc server.\\n\"\n"
-" append_text \"WARNING: Use \\\"stop\\\" or \\\"detach\\\" first.\\n\"\n"
-" return 0\n"
-" }\n"
-"\n"
-" if {![double_check_start_x11vnc]} {\n"
-" return\n"
-" }\n"
-"\n"
-" set x11vnc_xdisplay \"\"\n"
-" if {[info exists menu_var(display)]} {\n"
-" if {$menu_var(display) != \"\" && $menu_var(display) != $unset_str} {\n"
-" set x11vnc_xdisplay $menu_var(display)\n"
-" }\n"
-" }\n"
-"\n"
-" set cmd [get_start_x11vnc_cmd]\n"
-"\n"
-" set str [join $cmd]\n"
-" regsub { -e} $str \" -e \\\\\\n \" str\n"
-"\n"
-" if {0} {\n"
-" puts \"running: $str\"\n"
-" foreach word $cmd {\n"
-" puts \" word: $word\"\n"
-" }\n"
-" }\n"
-"\n"
-" append_text \"Starting x11vnc in an iconified xterm with command:\\n\"\n"
-" append_text \" $str\\n\\n\"\n"
-" catch {[eval exec $cmd]}\n"
-" after 500\n"
-" try_connect_and_query_all 3\n"
-" if {!$connected_to_x11vnc} {\n"
-" append_text \"\\nStarting x11vnc seems to have failed.\\n\"\n"
-" if {[regexp -- {-o } $str] || [regexp -- {-logfile} $str]} {\n"
-" append_text \"Examine the logfile (Debugging -> show-logfile) for error messages.\\n\"\n"
-" } else {\n"
-" append_text \"Rerun with a logfile (if needed) and examine the logfile\\n\"\n"
-" append_text \"(Debugging -> show-logfile) for error messages.\\n\"\n"
-" }\n"
-" }\n"
-"}\n"
-"\n"
-"proc run_remote_cmd_via_sock {opts} {\n"
-" global client_sock\n"
-"\n"
-" set db 0\n"
-" if {[file channels $client_sock] == \"\"} {\n"
-" set client_sock \"\"\n"
-" return \"fail\"\n"
-" }\n"
-" if {[eof $client_sock]} {\n"
-" catch {close $client_sock}\n"
-" set client_sock \"\"\n"
-" return \"fail\"\n"
-" }\n"
-" set result \"\"\n"
-" \n"
-" setup_client_sock 0\n"
-"\n"
-" set docmd \"\"\n"
-" foreach opt $opts {\n"
-" if {$opt == \"-R\"} {\n"
-" set docmd \"-R\"\n"
-" continue\n"
-" } elseif {$opt == \"-Q\"} {\n"
-" set docmd \"-Q\"\n"
-" continue\n"
-" }\n"
-"\n"
-" if {$docmd == \"\"} {\n"
-" continue\n"
-" } elseif {$docmd == \"-R\"} {\n"
-" set str \"cmd=$opt\"\n"
-" } elseif {$docmd == \"-Q\"} {\n"
-" set str \"qry=$opt\"\n"
-" } else {\n"
-" set docmd \"\"\n"
-" continue\n"
-" }\n"
-"\n"
-" if {$db} {puts stderr \"run_remote_cmd_via_sock: $docmd \\\"$str\\\"\"}\n"
-" catch {puts $client_sock $str}\n"
-" if {$db} {puts stderr \"run_remote_cmd_via_sock: flush\"}\n"
-" catch {flush $client_sock}\n"
-" if {$db} {puts stderr \"run_remote_cmd_via_sock: gets\"}\n"
-" catch {gets $client_sock res}\n"
-" if {$db} {puts stderr \"run_remote_cmd_via_sock: \\\"$res\\\"\"}\n"
-" set res [string trim $res]\n"
-"\n"
-" if [regexp {=clients:} $res] {\n"
-" regsub {^.*=clients:} $res \"\" cres\n"
-" regsub {,aro=.*$} $cres \"\" cres\n"
-" regsub {,ans=.*$} $cres \"\" cres\n"
-" if {$cres == \"none\"} {\n"
-" set cres \"\"\n"
-" }\n"
-" update_clients_menu $cres\n"
-" set client_str $cres\n"
-" set_client_balloon $cres\n"
-" }\n"
-"\n"
-" if [regexp {^clients:} $res] {\n"
-" regsub {^clients:} $res \"\" tmp\n"
-" if {$tmp == \"none\"} {\n"
-" set tmp \"\"\n"
-" }\n"
-" update_clients_menu $tmp\n"
-" set client_str $tmp\n"
-" set_client_balloon $tmp\n"
-"\n"
-" if ![regexp {^clients} $opt] {\n"
-" # we could block here...\n"
-" if {$db} {puts stderr \"run_remote_cmd_via_sock: gets\"}\n"
-" gets $client_sock res\n"
-" if {$db} {puts stderr \"run_remote_cmd_via_sock: \\\"$res\\\"\"}\n"
-" set res [string trim $res]\n"
-" }\n"
-" }\n"
-"\n"
-" set docmd \"\"\n"
-"\n"
-" if {$res != \"\"} {\n"
-" append result \"$res\\n\"\n"
-" }\n"
-" }\n"
-" \n"
-" setup_client_sock 1\n"
-"\n"
-" set result [string trim $result]\n"
-"\n"
-" return $result\n"
-"}\n"
-"\n"
-"proc run_remote_cmd {opts} {\n"
-" global menu_var x11vnc_prog x11vnc_cmdline x11vnc_xdisplay\n"
-" global x11vnc_auth_file x11vnc_connect_file\n"
-" global client_sock\n"
-"\n"
-" set debug [in_debug_mode]\n"
-"\n"
-" if {[lindex $opts 0] == \"-R\" && [lindex $opts 1] == \"noremote\"} {\n"
-" set str [join $opts]\n"
-" if ![double_check_noremote] {\n"
-" append_text \"skipping: x11vnc $str\"\n"
-" return \"\"\n"
-" } else {\n"
-" append_text \"running: x11vnc $str (please do \\\"Actions -> detach\\\" to clean things up)\\n\"\n"
-" append_text \"subsequent -R/-Q commands should fail...\"\n"
-" }\n"
-" }\n"
-"\n"
-" if {$client_sock != \"\"} {\n"
-" menus_disable\n"
-" stop_watch on\n"
-" set result [run_remote_cmd_via_sock $opts]\n"
-" stop_watch off\n"
-" menus_enable\n"
-" if {$result != \"fail\"} {\n"
-" return $result\n"
-" }\n"
-" }\n"
-"\n"
-" set cmd \"\"\n"
-"\n"
-" lappend cmd $x11vnc_prog;\n"
-"\n"
-" if {$x11vnc_connect_file != \"\"} {\n"
-" lappend cmd \"-connect\"\n"
-" lappend cmd $x11vnc_connect_file\n"
-" } else {\n"
-" if {$x11vnc_xdisplay != \"\"} {\n"
-" lappend cmd \"-display\"\n"
-" lappend cmd $x11vnc_xdisplay\n"
-" }\n"
-" if {$x11vnc_auth_file != \"\"} {\n"
-" lappend cmd \"-auth\"\n"
-" lappend cmd $x11vnc_auth_file\n"
-" }\n"
-" }\n"
-" lappend cmd \"-sync\"\n"
-" foreach word $opts {\n"
-" lappend cmd $word\n"
-" }\n"
-" lappend cmd \"2>\"\n"
-" lappend cmd \"/dev/null\"\n"
-"\n"
-" if {0 || $debug} {\n"
-" set str [join $cmd]\n"
-" puts \"running: $str\"\n"
-" foreach word $cmd {\n"
-" puts \" word: $word\"\n"
-" }\n"
-" }\n"
-"\n"
-" set output \"\"\n"
-" menus_disable\n"
-"\n"
-" stop_watch on\n"
-" catch {set output [eval exec $cmd]}\n"
-" stop_watch off\n"
-"\n"
-" menus_enable\n"
-" if {$debug} {\n"
-" if {[string length $output] > 100} {\n"
-" set str [string range $output 0 100]\n"
-" append_text \"output: $str ...\\n\"\n"
-" } else {\n"
-" append_text \"output: $output\\n\"\n"
-" }\n"
-" }\n"
-" return $output\n"
-"}\n"
-"\n"
-"proc try_connect_and_query_all {{n 2}} {\n"
-" for {set i 0} {$i < $n} {incr i} {\n"
-" if {$i > 0} {\n"
-" after 500\n"
-" append_text \"trying again ...\\n\"\n"
-" }\n"
-" if {[try_connect]} {\n"
-" query_all\n"
-" break\n"
-" }\n"
-" }\n"
-"}\n"
-"\n"
-"proc try_connect {} {\n"
-" global x11vnc_xdisplay connected_to_x11vnc reply_xdisplay\n"
-" global menu_var unset_str\n"
-"\n"
-" set db 0\n"
-"#dtime c1\n"
-"\n"
-" if {! $connected_to_x11vnc} {\n"
-" if {[info exists menu_var(display)]} {\n"
-" set d $menu_var(display)\n"
-" if {$d != \"\" && $d != $unset_str && $d != $x11vnc_xdisplay} {\n"
-" set x11vnc_xdisplay $menu_var(display)\n"
-" append_text \"Setting X display to: $x11vnc_xdisplay\\n\"\n"
-" }\n"
-" }\n"
-" }\n"
-"\n"
-" set_info \"Pinging $x11vnc_xdisplay ...\"\n"
-" set rargs [list \"-Q\" \"ping\"]\n"
-" set result [run_remote_cmd $rargs]\n"
-"#dtime c2a\n"
-"\n"
-" if {$db} {puts \"try_connect: \\\"$result\\\"\"}\n"
-"\n"
-" if {[regexp {^ans=ping:} $result]} {\n"
-" regsub {^ans=ping:} $result {} reply_xdisplay\n"
-" set msg \"Connected to $reply_xdisplay\"\n"
-" set_info $msg\n"
-" append_text \"$msg\\n\"\n"
-" set_connected yes\n"
-"\n"
-" setup_client_channel\n"
-"#dtime c2b\n"
-" setup_client_sock 1\n"
-" setup_client_tail\n"
-"\n"
-" fetch_displays\n"
-"#dtime c3a\n"
-" return 1\n"
-" } else {\n"
-" set str \"x11vnc server.\"\n"
-" if {$x11vnc_xdisplay != \"\"} {\n"
-" set str $x11vnc_xdisplay\n"
-" }\n"
-" set msg \"No reply from $str\"\n"
-" set_info $msg\n"
-" append_text \"$msg\\n\"\n"
-" set_connected no\n"
-" return 0\n"
-" }\n"
-"}\n"
-"\n"
-"proc set_view_variable {val} {\n"
-" global menu_var\n"
-" set menu_var(WindowView) $val\n"
-"}\n"
-"proc get_view_variable {} {\n"
-" global menu_var\n"
-" if {![info exists menu_var(WindowView)]} {\n"
-" set menu_var(WindowView) \"none\"\n"
-" }\n"
-" return $menu_var(WindowView)\n"
-"}\n"
-"\n"
-"proc dono {a b c} {\n"
-" exit 1;\n"
-"}\n"
-"\n"
-"proc do_port_prompt {} {\n"
-" global bfont ffont\n"
-" global port_reply port_set\n"
-"\n"
-" set guess 5900\n"
-" for {set i 0} {$i < 50} {incr i} {\n"
-" set fh \"\"\n"
-" set try [expr $guess + $i]\n"
-" catch {set fh [socket -server dono $try]}\n"
-" if {$fh != \"\"} {\n"
-" catch {close $fh}\n"
-" set guess $try\n"
-" break;\n"
-" }\n"
-" }\n"
-" set hn \"\"\n"
-" catch {set hn [exec uname -n]}\n"
-" if {$hn == \"\"} {\n"
-" set hn \"hostname\"\n"
-" }\n"
-"\n"
-" set text \" Set the x11vnc Listening Port:\n"
-"\n"
-" VNC Display :0 corresponds to TCP port 5900\n"
-" VNC Display :1 corresponds to TCP port 5901\n"
-" etc.\n"
-"\n"
-" In the Entry below, indicate a Port for x11vnc to listen on. \n"
-"\n"
-" Note that to connect to x11vnc, a VNC Viewer will need to\n"
-" know your selection, for example:\n"
-"\n"
-" vncviewer $hn:0\n"
-" vncviewer $hn:1\n"
-" etc.\n"
-"\n"
-" Your firewall may block incoming connections to TCP ports;\n"
-" if it does you may need to reconfigure it. \n"
-" \n"
-" You can also set some additional parameters:\n"
-"\n"
-" - Enable SSL encryption.\n"
-" (requires an SSL enabled vncviewer, such as SSVNC) \n"
-" - Listen only on localhost. (e.g. for an SSH tunnel)\n"
-" - Enable UltraVNC or TightVNC File transfer.\n"
-"\"\n"
-" set port_set $guess\n"
-" set port_reply \"\"\n"
-"\n"
-" toplevel .pp\n"
-" wm title .pp \"Select x11vnc port\"\n"
-"\n"
-" wm protocol . WM_DELETE_WINDOW \"destroy .; exit\"\n"
-" wm protocol .pp WM_DELETE_WINDOW \"destroy .pp; exit\"\n"
-"\n"
-" label .pp.m -text \"$text\" -relief ridge -justify left -font $ffont\n"
-"\n"
-" global tk_version\n"
-" set tkold 0\n"
-" if [info exists tk_version] {\n"
-" if [regexp {^8\\.[0-3]$} $tk_version] {\n"
-" set tkold 1\n"
-" }\n"
-" if [regexp {^[3-7]\\.} $tk_version] {\n"
-" set tkold 1\n"
-" }\n"
-" }\n"
-"\n"
-" if {$tkold} {\n"
-" frame .pp.f -bd 1 -relief ridge\n"
-" } else {\n"
-" frame .pp.f -bd 1 -relief ridge -pady 2\n"
-" }\n"
-" label .pp.f.l -text \"Port: \" -font $bfont\n"
-" entry .pp.f.e -width 8 -textvariable port_set -font $ffont\n"
-" global enable_ssl; set enable_ssl 0\n"
-" if [info exists env(X11VNC_SSL_ENABLED)] {\n"
-" set enable_ssl 1\n"
-" }\n"
-" checkbutton .pp.f.ssl -relief raised -pady 3 -padx 3 -text \"Enable SSL\" -variable enable_ssl -font $bfont\n"
-" global localhost; set localhost 0\n"
-" if [info exists env(X11VNC_LOCALHOST_ENABLED)] {\n"
-" set localhost 1\n"
-" }\n"
-" checkbutton .pp.f.loc -relief raised -pady 3 -padx 3 -text \"Listen on localhost\" -variable localhost -font $bfont\n"
-" pack .pp.f.l .pp.f.e -side left\n"
-" pack .pp.f.loc .pp.f.ssl -side right\n"
-"\n"
-" if {$tkold} {\n"
-" frame .pp.t -bd 1 -relief ridge\n"
-" } else {\n"
-" frame .pp.t -bd 1 -relief ridge -pady 2\n"
-" }\n"
-" global file_transfer; set file_transfer \"none\"\n"
-" if [info exists env(X11VNC_FILETRANSFER_ENABLED)] {\n"
-" set file_transfer $env(X11VNC_FILETRANSFER_ENABLED)\n"
-" }\n"
-" label .pp.t.l -text \"File Transfer: \" -font $bfont\n"
-" radiobutton .pp.t.none -text \"None\" -variable file_transfer -value \"none\" -font $bfont\n"
-" radiobutton .pp.t.ultra -text \"UltraVNC\" -variable file_transfer -value \"ultra\" -font $bfont\n"
-" radiobutton .pp.t.tight -text \"TightVNC\" -variable file_transfer -value \"tight\" -font $bfont\n"
-" pack .pp.t.l .pp.t.none .pp.t.ultra .pp.t.tight -side left\n"
-"\n"
-" frame .pp.o -bd 1 -relief ridge\n"
-" button .pp.o.ok -text \"OK\" -command \"set port_reply 1; destroy .pp\" -font $bfont\n"
-" button .pp.o.cancel -text \"Cancel\" -command \"set port_reply 0; destroy .pp\" -font $bfont\n"
-" pack .pp.o.ok .pp.o.cancel -side left -fill x -expand 1\n"
-" pack .pp.m -side top -fill x -expand 1 \n"
-" pack .pp.f .pp.t .pp.o -side top -fill x\n"
-"\n"
-" focus .pp.f.e\n"
-" .pp.f.e icursor end\n"
-"\n"
-" wm withdraw .pp\n"
-" update\n"
-" center_win .pp\n"
-"\n"
-" wm minsize .pp [winfo width .pp] [winfo height .pp]\n"
-"\n"
-" bind .pp.f.e <KeyPress-Return> \"set port_reply 1; destroy .pp\"\n"
-"\n"
-" vwait port_reply\n"
-"\n"
-" if {$port_reply} {\n"
-" regsub -all {^:} $port_set \"\" port_set\n"
-" regsub -all {[ \\t]} $port_set \"\" port_set\n"
-" if {[regexp {^[0-9][0-9]*$} $port_set]} {\n"
-" if {$port_set < 0} {\n"
-" set port_set [expr 0 - $port_set]\n"
-" } elseif {$port_set < 200} {\n"
-" set port_set [expr $port_set + 5900]\n"
-" } \n"
-" puts \"$port_set:ssl${enable_ssl}:localhost$localhost:ft_$file_transfer\"\n"
-" }\n"
-" }\n"
-"}\n"
-"\n"
-"proc change_view_state {} {\n"
-" global menu_var gui_current_state\n"
-"\n"
-" set new [get_view_variable]\n"
-"\n"
-" if {![info exists gui_current_state]} {\n"
-" set gui_current_state \"\"\n"
-" }\n"
-" set old $gui_current_state\n"
-" #puts \"$old -> $new\"\n"
-"\n"
-" if {$old == $new} {\n"
-" return\n"
-" }\n"
-"\n"
-" if {$old == \"full\" || $old == \"icon\" || $old == \"tray\"} {\n"
-" ;\n"
-" } else {\n"
-" set old \"none\"\n"
-" }\n"
-"\n"
-" if {$new == \"full\" || $new == \"icon\" || $new == \"tray\"} {\n"
-" if {$old == \"tray\"} {\n"
-" # sigh XReparentWindow would be too easy...\n"
-" # undo_tray_embed\n"
-" restart_everything $new\n"
-" destroy .\n"
-" exit\n"
-" }\n"
-" make_gui $new\n"
-" if {$new == \"tray\"} {\n"
-" wm withdraw .\n"
-" }\n"
-" } else {\n"
-" set_view_variable $old\n"
-" }\n"
-"}\n"
-"\n"
-"proc setup_client_tail {} {\n"
-" global client_tail\n"
-" if {$client_tail != \"\"} {\n"
-" fileevent $client_tail readable read_client_tail\n"
-" }\n"
-"}\n"
-"\n"
-"proc setup_client_sock {{enable 1}} {\n"
-" global client_sock\n"
-" if {$client_sock != \"\"} {\n"
-" if {$enable} {\n"
-" fileevent $client_sock readable read_client_sock\n"
-" } else {\n"
-" fileevent $client_sock readable \"\"\n"
-" }\n"
-" }\n"
-"}\n"
-"\n"
-"proc setup_tray_embed {} {\n"
-" update\n"
-" set w [winfo width .]\n"
-" set h [winfo height .]\n"
-" if {$w < 24} {\n"
-" set w 24\n"
-" }\n"
-" if {$h < 24} {\n"
-" set h 24\n"
-" }\n"
-" wm minsize . $w $h\n"
-" set wid [winfo id .] \n"
-" push_new_value \"remote-cmd\" \"remote-cmd\" \"trayembed:$wid\" 0\n"
-"}\n"
-"\n"
-"proc restart_everything {gui_mode} {\n"
-" global env gui_argv0 x11vnc_prog full_win\n"
-" global icon_mode_at_startup\n"
-" global tray_embed tray_running\n"
-" if {$gui_mode == \"full\"} {\n"
-" set env(X11VNC_ICON_MODE) 0\n"
-" } elseif {$gui_mode == \"icon\"} {\n"
-" set env(X11VNC_ICON_MODE) 1\n"
-" } elseif {$gui_mode == \"tray\"} {\n"
-" if {$tray_running} {\n"
-" set env(X11VNC_ICON_MODE) \"RUNNING\"\n"
-" } else {\n"
-" set env(X11VNC_ICON_MODE) \"TRAY\"\n"
-" }\n"
-" }\n"
-" puts stderr \"\"\n"
-" puts stderr \"tkx11vnc: restarting gui to leave tray mode.\"\n"
-" puts stderr \" new gui will be running in the background.\"\n"
-" puts stderr \" use kill(1) rather than Ctrl-C to kill it.\"\n"
-" puts stderr \"\"\n"
-" if {[info exists env(X11VNC_RESTART_DEPTH)]} {\n"
-" set n $env(X11VNC_RESTART_DEPTH)\n"
-" incr n\n"
-" set env(X11VNC_RESTART_DEPTH) $n\n"
-" } else {\n"
-" set env(X11VNC_RESTART_DEPTH) 0\n"
-" }\n"
-" set env(X11VNC_ICON_SETPASS) \"\"\n"
-"\n"
-" if {![info exists env(X11VNC_WISHCMD)]} {\n"
-" puts stderr \"failure in restart_everything.\"\n"
-" exit 1;\n"
-" }\n"
-"\n"
-" set code [exec $x11vnc_prog -printgui]\n"
-" if {[string length $code] < 20000} {\n"
-" puts stderr \"failure in restart_everything.\"\n"
-" exit 1;\n"
-" }\n"
-" set tmp \"/tmp/x11vnc[pid]\"\n"
-" append tmp [clock clicks]\n"
-" set tmp2 \"\"\n"
-" catch {set tmp2 [exec mktemp $tmp.XXXXXX 2>/dev/null]}\n"
-" if {$tmp2 != \"\" && [file exists $tmp2]} {\n"
-" set tmp $tmp2\n"
-" } else {\n"
-" file delete -force $tmp\n"
-" if {[file exists $tmp]} {\n"
-" puts stderr \"failure in restart_everything.\"\n"
-" exit 1;\n"
-" }\n"
-" }\n"
-" set fh [open $tmp \"a\"]\n"
-" if {![file owned $tmp]} {\n"
-" puts stderr \"failure in restart_everything.\"\n"
-" exit 1;\n"
-" }\n"
-" file attributes $tmp -permissions \"0400\"\n"
-" puts $fh $code\n"
-" close $fh\n"
-"\n"
-" #puts stderr [exec ls -l $tmp]\n"
-"\n"
-" wm withdraw .\n"
-" catch {wm withdraw $full_win}\n"
-" update\n"
-"\n"
-" exec $env(X11VNC_WISHCMD) $tmp &\n"
-" after 2000\n"
-" file delete -force $tmp\n"
-" \n"
-" destroy .\n"
-" exit\n"
-"}\n"
-"\n"
-"proc undo_tray_embed {} {\n"
-" set wid [winfo id .] \n"
-" push_new_value \"remote-cmd\" \"remote-cmd\" \"trayunembed:$wid\" 0\n"
-"}\n"
-"\n"
-"############################################################################\n"
-"# main:\n"
-"\n"
-"if [info exists env(X11VNC_GUI_TIME)] {\n"
-" dtime M\n"
-"}\n"
-"\n"
-"wm withdraw .\n"
-"\n"
-"global env x11vnc_prog x11vnc_cmdline x11vnc_xdisplay x11vnc_connect;\n"
-"global x11vnc_xdisplay0\n"
-"global x11vnc_client_file x11vnc_gui_geom x11vnc_started vnc_url\n"
-"global x11vnc_gui_params\n"
-"global x11vnc_auth_file x11vnc_connect_file beginner_mode simple_gui_created\n"
-"global helpall helptext helpremote helplabel hostname osname\n"
-"global all_settings reply_xdisplay always_update\n"
-"global max_text_height max_text_width\n"
-"global text_height\n"
-"global menu_var unset_str menus_disabled\n"
-"global bfont ffont sfont snfont old_labels have_labelframes\n"
-"global connected_to_x11vnc\n"
-"global cache_all_query_vars\n"
-"global last_query_all_time query_all_freq client_tail client_sock client_info_read\n"
-"global icon_mode icon_mode_at_startup x11vnc_icon_mode\n"
-"global tray_embed tray_running icon_setpasswd icon_embed_id\n"
-"global icon_noadvanced icon_minimal\n"
-"global make_gui_count text_area_str\n"
-"global gui_argv0 gui_start_mode\n"
-"global screen_height screen_width\n"
-"\n"
-"set unset_str \"(unset)\"\n"
-"set vnc_url $unset_str\n"
-"set connected_to_x11vnc 0\n"
-"set menus_disabled 0\n"
-"set max_text_height 40\n"
-"set max_text_width 90\n"
-"set text_height 14\n"
-"set bfont \"-adobe-helvetica-bold-r-*-*-*-120-*-*-*-*-*-*\"\n"
-"set sfont \"-adobe-helvetica-bold-r-*-*-*-100-*-*-*-*-*-*\"\n"
-"set snfont \"-adobe-helvetica-medium-r-*-*-*-100-*-*-*-*-*-*\"\n"
-"set ffont \"fixed\"\n"
-"\n"
-"set got_helv 0\n"
-"catch {\n"
-" foreach fam [font families] {\n"
-" if {$fam == \"helvetica\"} {\n"
-" set got_helv 1\n"
-" }\n"
-" if {$fam == \"Helvetica\"} {\n"
-" set got_helv 1\n"
-" }\n"
-" }\n"
-"}\n"
-"\n"
-"if {$got_helv} {\n"
-" set bfont \"Helvetica -12 bold\"\n"
-" set sfont \"Helvetica -10 bold\"\n"
-" set snfont \"Helvetica -10\"\n"
-"}\n"
-"\n"
-"set ls \"\"\n"
-"catch {set ls [font metrics $bfont -linespace]}\n"
-"if {$ls != \"\" && $ls > 14} {\n"
-" # some recent setups have BIG rendering for the above fonts.\n"
-" # on recent (8/08) debian these are really ragged:\n"
-" set bfont \"-adobe-helvetica-bold-r-*-*-*-90-*-*-*-*-*-*\"\n"
-" set sfont \"-adobe-helvetica-bold-r-*-*-*-75-*-*-*-*-*-*\"\n"
-" set snfont \"-adobe-helvetica-medium-r-*-*-*-75-*-*-*-*-*-*\"\n"
-"\n"
-" set ls \"\"\n"
-" catch {set ls [font metrics $bfont -linespace]}\n"
-" if {$ls != \"\" && $ls < 14} {\n"
-" # these are bigger but look better... but for how long?\n"
-" set bfont \"-adobe-helvetica-bold-r-*-*-*-100-*-*-*-*-*-*\"\n"
-" set sfont \"-adobe-helvetica-bold-r-*-*-*-80-*-*-*-*-*-*\"\n"
-" set snfont \"-adobe-helvetica-medium-r-*-*-*-80-*-*-*-*-*-*\"\n"
-"\n"
-" # maybe consider... {-font font Font {Helvetica -12 bold} {Helvetica -12 bold}}\n"
-" # or stick with system font like ssvnc.\n"
-" }\n"
-"}\n"
-"\n"
-"# need to check if \"fixed\" font under XFT on tk8.5 is actually fixed width!!\n"
-"set ls \"\"\n"
-"catch {set ls [font metrics $ffont -linespace]}\n"
-"set fs \"\"\n"
-"catch {set fs [font metrics $ffont -fixed]}\n"
-"set redo 0\n"
-"if {$fs != \"\" && $fs != \"1\"} {\n"
-" set redo 1\n"
-"}\n"
-"if {$ls != \"\" && $ls > 14} {\n"
-" set redo 1\n"
-"}\n"
-"if {$redo} {\n"
-" foreach fn [font names] {\n"
-" if {$fn == \"TkFixedFont\"} {\n"
-" set ffont $fn\n"
-" break\n"
-" }\n"
-" }\n"
-"}\n"
-"\n"
-"set help_indent 24;\n"
-"set reply_xdisplay \"\"\n"
-"set all_settings \"None so far.\"\n"
-"set always_update 1\n"
-"set cache_all_query_vars \"\"\n"
-"set query_all_freq 120\n"
-"set last_query_all_time [clock seconds]\n"
-"set client_tail \"\"\n"
-"set client_sock \"\"\n"
-"set client_info_read 0\n"
-"set make_gui_count 0\n"
-"set text_area_str \"\"\n"
-"set gui_argv0 $argv0\n"
-"set gui_start_mode \"\"\n"
-"\n"
-"if {$tk_version < 8.0} {\n"
-" puts stderr \"\"\n"
-" puts stderr \"*** tkx11vnc: tk version is old $tk_version, please use 8.0 or higher.\"\n"
-" puts stderr \"*** will try to continue with reduced functionality...\"\n"
-" puts stderr \"\"\n"
-"}\n"
-"if {[regexp {^[34]} $tk_version] || $tk_version == \"8.0\"} {\n"
-" set old_labels 1\n"
-"} else {\n"
-" set old_labels 0\n"
-"}\n"
-"set have_labelframes 1\n"
-"if {$tk_version < 8.4} {\n"
-" set have_labelframes 0\n"
-"}\n"
-"\n"
-"set screen_height [winfo screenheight .]\n"
-"set screen_width [winfo screenwidth .]\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"
-" set max_text_height $env(X11VNC_GUI_TEXT_HEIGHT)\n"
-"}\n"
-"if {[info exists env(X11VNC_GUI_TEXT_WIDTH)]} {\n"
-" set max_text_width $env(X11VNC_GUI_TEXT_WIDTH)\n"
-"}\n"
-"\n"
-"if {\"$argv\" == \"-spit\"} {\n"
-" set fh [open $argv0 r]\n"
-" puts \"#ifndef _TKX11VNC_H\"\n"
-" puts \"#define _TKX11VNC_H\"\n"
-" puts \"#ifdef NOGUI\"\n"
-" puts \"char gui_code\\[\\] = \\\"\\\";\"\n"
-" puts \"#else\"\n"
-" puts \"/*\"\n"
-" puts \" * tkx11vnc.h: generated by 'tkx11vnc -spit'\"\n"
-" puts \" * Abandon all hope, ye who enter here...\"\n"
-" puts \" * ...edit tkx11vnc instead.\"\n"
-" puts \" */\"\n"
-" puts \" char gui_code\\[\\] =\"\n"
-" while {[gets $fh line] > -1} {\n"
-" regsub -all {\\\\} $line {\\\\\\\\} line\n"
-" regsub -all {\"} $line {\\\\\"} line\n"
-" puts \"\\\"$line\\\\n\\\"\"\n"
-" }\n"
-" puts \"#endif\"\n"
-" puts \"/* ifdef NOGUI */\"\n"
-" puts \"#endif\"\n"
-" puts \"/* ifndef _TKX11VNC_H */\"\n"
-" close $fh\n"
-" puts \";\"\n"
-" exit 0\n"
-"}\n"
-"\n"
-"set_view_variable \"full\"\n"
-"\n"
-"#puts [exec env | grep X11VNC]\n"
-"\n"
-"# Read environment for clues:\n"
-"\n"
-"set x11vnc_client_file \"\";\n"
-"if {[info exists env(X11VNC_CLIENT_FILE)]} {\n"
-" set x11vnc_client_file $env(X11VNC_CLIENT_FILE);\n"
-" set file $x11vnc_client_file\n"
-"\n"
-" set client_tail \"\"\n"
-" if {[file exists $file] && [file isfile $file]} {\n"
-" if {[file readable $file] && [file owned $file]} {\n"
-" set client_tail [open \"|tail -f $x11vnc_client_file\" \"r\"]\n"
-" }\n"
-" }\n"
-" if {$client_tail != \"\"} {\n"
-" gets $client_tail tmp\n"
-" if [eof $client_tail] {\n"
-"#puts \"eof $client_tail\"\n"
-" clean_client_tail\n"
-" set client_tail \"\"\n"
-" }\n"
-" }\n"
-" catch {file delete -force $x11vnc_client_file}\n"
-"}\n"
-"\n"
-"if {[info exists env(X11VNC_PROG)]} {\n"
-" set x11vnc_prog $env(X11VNC_PROG);\n"
-"} else {\n"
-" set x11vnc_prog \"x11vnc\";\n"
-"}\n"
-"\n"
-"if {[info exists env(X11VNC_CMDLINE)]} {\n"
-" set x11vnc_cmdline $env(X11VNC_CMDLINE);\n"
-"} else {\n"
-" set x11vnc_cmdline \"\";\n"
-"}\n"
-"\n"
-"if {[info exists env(X11VNC_CONNECT)]} {\n"
-" set x11vnc_connect 1\n"
-"} else {\n"
-" set x11vnc_connect 0;\n"
-"}\n"
-"\n"
-"if {[info exists env(X11VNC_GUI_GEOM)]} {\n"
-" set x11vnc_gui_geom $env(X11VNC_GUI_GEOM);\n"
-"} else {\n"
-" set x11vnc_gui_geom \"\"\n"
-"}\n"
-"if {[info exists env(X11VNC_GUI_PARAMS)]} {\n"
-" set x11vnc_gui_params $env(X11VNC_GUI_PARAMS);\n"
-"} else {\n"
-" set x11vnc_gui_params \"\"\n"
-"}\n"
-"\n"
-"if {[info exists env(X11VNC_FONT_BOLD)]} {\n"
-" set bfont $env(X11VNC_FONT_BOLD)\n"
-"}\n"
-"if {[info exists env(X11VNC_FONT_BOLD_SMALL)]} {\n"
-" set sfont $env(X11VNC_FONT_BOLD_SMALL)\n"
-"}\n"
-"if {[info exists env(X11VNC_FONT_REG_SMALL)]} {\n"
-" set snfont $env(X11VNC_FONT_REG_SMALL)\n"
-"}\n"
-"if {[info exists env(X11VNC_FONT_FIXED)]} {\n"
-" set ffont $env(X11VNC_FONT_FIXED)\n"
-"}\n"
-"\n"
-"if {[info exists env(X11VNC_CONNECT_FILE)]} {\n"
-" set x11vnc_connect_file $env(X11VNC_CONNECT_FILE);\n"
-"} else {\n"
-" set x11vnc_connect_file \"\";\n"
-"}\n"
-"\n"
-"set x11vnc_started 0\n"
-"if {[info exists env(X11VNC_STARTED)]} {\n"
-" set x11vnc_started 1\n"
-"}\n"
-"\n"
-"set x11vnc_xdisplay \"\"\n"
-"if {[info exists env(X11VNC_XDISPLAY)]} {\n"
-" set x11vnc_xdisplay $env(X11VNC_XDISPLAY);\n"
-" set x11vnc_connect 1\n"
-"\n"
-"} elseif {$argv != \"\" && [regexp {:[0-9]} $argv]} {\n"
-" set env(X11VNC_XDISPLAY) \"$argv\"\n"
-" set x11vnc_xdisplay \"$argv\"\n"
-" set x11vnc_connect 1\n"
-"\n"
-"} elseif {[info exists env(DISPLAY)]} {\n"
-" set x11vnc_xdisplay $env(DISPLAY);\n"
-"} else {\n"
-" set x11vnc_xdisplay \":0\";\n"
-"}\n"
-"set x11vnc_xdisplay0 $x11vnc_xdisplay\n"
-"\n"
-"if {[info exists env(X11VNC_AUTH_FILE)]} {\n"
-" set x11vnc_auth_file $env(X11VNC_AUTH_FILE)\n"
-"} else {\n"
-" set x11vnc_auth_file \"\"\n"
-"}\n"
-"\n"
-"set simple_gui_created 0\n"
-"if {[info exists env(X11VNC_SIMPLE_GUI)]} {\n"
-" set beginner_mode 1\n"
-"} else {\n"
-" set beginner_mode 0\n"
-"}\n"
-"\n"
-"set icon_mode 0\n"
-"set x11vnc_icon_mode 0\n"
-"set tray_embed 0\n"
-"set tray_running 0\n"
-"\n"
-"if {![info exists env(X11VNC_ICON_MODE_AT_STARTUP)]} {\n"
-" if {[info exists env(X11VNC_ICON_MODE)]} {\n"
-" if {$env(X11VNC_ICON_MODE) != 0} {\n"
-" set env(X11VNC_ICON_MODE_AT_STARTUP) 1\n"
-" } else {\n"
-" set env(X11VNC_ICON_MODE_AT_STARTUP) 0\n"
-" }\n"
-" } else {\n"
-" set env(X11VNC_ICON_MODE_AT_STARTUP) 0\n"
-" }\n"
-"}\n"
-"set icon_mode_at_startup $env(X11VNC_ICON_MODE_AT_STARTUP)\n"
-"\n"
-"if {![info exists env(X11VNC_ICON_MODE)]} {\n"
-" set icon_mode 0\n"
-"} elseif {$env(X11VNC_ICON_MODE) == \"\" || $env(X11VNC_ICON_MODE) == \"0\"} {\n"
-" set icon_mode 0\n"
-"} else {\n"
-" set icon_mode 1\n"
-" set_view_variable \"icon\"\n"
-" if [regexp -nocase {TRAY} $env(X11VNC_ICON_MODE)] {\n"
-" set tray_embed 1\n"
-" }\n"
-" if [regexp -nocase {RUNNING} $env(X11VNC_ICON_MODE)] {\n"
-" set tray_running 1\n"
-" }\n"
-"}\n"
-"\n"
-"set icon_setpasswd 0\n"
-"if {[info exists env(X11VNC_ICON_SETPASS)]} {\n"
-" if {$env(X11VNC_ICON_SETPASS) != \"\"} {\n"
-" set icon_setpasswd 1\n"
-" }\n"
-"}\n"
-"\n"
-"set icon_noadvanced 0\n"
-"if {[info exists env(X11VNC_ICON_NOADVANCED)]} {\n"
-" set icon_noadvanced 1\n"
-"}\n"
-"\n"
-"set icon_minimal 0\n"
-"if {[info exists env(X11VNC_ICON_MINIMAL)]} {\n"
-" set icon_minimal 1\n"
-"}\n"
-"\n"
-"if {[info exists env(X11VNC_ICON_EMBED_ID)]} {\n"
-" set icon_embed_id $env(X11VNC_ICON_EMBED_ID)\n"
-"} else {\n"
-" set icon_embed_id \"\"\n"
-"}\n"
-"\n"
-"\n"
-"set hostname [exec uname -n]\n"
-"set osname [exec uname]\n"
-"\n"
-"if {[regexp -nocase {IRIX} $osname]} {\n"
-" # IRIX \"fixed\" font is huge and doublespaced... \n"
-" set ffont $snfont\n"
-"}\n"
-"if {[regexp -nocase {Darwin} $osname]} {\n"
-" set ffont {Monaco 10}\n"
-" set bfont {system}\n"
-"}\n"
-"\n"
-"if {\"$argv\" == \"-portprompt\"} {\n"
-" do_port_prompt\n"
-" exit 0\n"
-"}\n"
-"\n"
-"#puts [exec env]\n"
-"#puts \"x11vnc_xdisplay: $x11vnc_xdisplay\"\n"
-"\n"
-"set env(X11VNC_STD_HELP) 1\n"
-"\n"
-"# scrape the help output for the text and remote control vars:\n"
-"parse_help;\n"
-"parse_remote_help;\n"
-"parse_query_help;\n"
-"\n"
-"# tweaks to duplicate help text:\n"
-"tweak_remote_help lock deny\n"
-"tweak_remote_help unlock deny\n"
-"\n"
-"tweak_both quiet q\n"
-"tweak_help logfile o\n"
-"tweak_both xwarppointer xwarp\n"
-"tweak_both screen_blank sb\n"
-"\n"
-"set_template\n"
-"\n"
-"set_name \"tkx11vnc\"\n"
-"\n"
-"key_bindings;\n"
-"\n"
-"get_default_vars\n"
-"\n"
-"dtime D\n"
-"\n"
-"proc check_setpasswd {} {\n"
-" global env icon_setpasswd\n"
-" global do_props_msg\n"
-" set do_props_msg \"\"\n"
-" if {$icon_setpasswd} {\n"
-" set m \"\\n\"\n"
-" set m \"${m} Note the x11vnc icon in the system tray.\\n\" \n"
-" set m \"${m} This panel is its 'Properties' dialog.\\n\" \n"
-" set m \"${m}\\n\" \n"
-" set m \"${m} To specify a Session Password and to\\n\" \n"
-" set m \"${m} allow VNC viewers to connect, follow\\n\" \n"
-" set m \"${m} these steps:\\n\" \n"
-" set m \"${m}\\n\" \n"
-" set m \"${m} Enter a passwd in the Password field\\n\" \n"
-" set m \"${m} (it can be left blank.) You can also\\n\" \n"
-" set m \"${m} supply a ViewOnly passwd if desired.\\n\" \n"
-" set m \"${m}\\n\" \n"
-" set m \"${m} Set 'Accept Connections' and then Press \\n\" \n"
-" set m \"${m} 'Apply' to allow incoming connections.\\n\" \n"
-" set m \"${m}\\n\" \n"
-" set m \"${m} No Viewer can connect until you do this.\\n\" \n"
-" set m \"${m}\\n\" \n"
-" set m \"${m} The passwords are only for this x11vnc\\n\" \n"
-" set m \"${m} session and are not saved. Run x11vnc\\n\" \n"
-" set m \"${m} manually for more control (e.g. -rfbauth \\n\" \n"
-" set m \"${m} for a saved password.)\\n\" \n"
-" set m \"${m}\\n\" \n"
-" set m \"${m} See 'Help' for details on each option.\\n\" \n"
-"\n"
-" global x11vnc_cmdline\n"
-"\n"
-" set dossl 0\n"
-" if {[info exists x11vnc_cmdline]} {\n"
-" if [regexp -- {-ssl} $x11vnc_cmdline] {\n"
-" set dossl 1\n"
-" }\n"
-" }\n"
-" if {$dossl || [info exists env(X11VNC_GOT_SSL)]} {\n"
-" set m \"${m}\\n\" \n"
-" set m \"${m} SSL encryption mode active. You can\\n\" \n"
-" set m \"${m} find your Public Cert in the Logfile\\n\" \n"
-" set m \"${m} and also the ~/.vnc/certs directory.\\n\" \n"
-" }\n"
-"\n"
-" if {[info exists env(X11VNC_SETPASS_FAIL)]} {\n"
-" set pp 5900\n"
-" if {[info exists env(X11VNC_GOT_RFBPORT_VAL)]} {\n"
-" if {$env(X11VNC_GOT_RFBPORT_VAL) > 0} {\n"
-" set pp $env(X11VNC_GOT_RFBPORT_VAL)\n"
-" }\n"
-" }\n"
-" \n"
-" set m \" The x11vnc program failed to start! \\n\"\n"
-" set m \"${m}\\n\" \n"
-" set m \"${m} Maybe there is another VNC server\\n\"\n"
-" set m \"${m} already listening on port $pp?\\n\"\n"
-" set m \"${m}\\n\" \n"
-" set m \"${m} You will need to start over after\\n\"\n"
-" set m \"${m} you make sure x11vnc can start.\\n\"\n"
-" }\n"
-" \n"
-" set do_props_msg $m\n"
-" do_props\n"
-" }\n"
-"}\n"
-"\n"
-"if {0} {\n"
-" if {[info exists env(X11VNC_ICON_SETPASS)]} {\n"
-" if {$env(X11VNC_ICON_SETPASS) == \"2\"} {\n"
-" global icon_mode_at_startup icon_mode\n"
-" set icon_mode_at_startup 1\n"
-" set icon_mode 2\n"
-" }\n"
-" }\n"
-"}\n"
-"\n"
-"if {$icon_mode} {\n"
-" if {$icon_mode == 2} {\n"
-" make_gui \"full\"\n"
-" } elseif {$tray_embed} {\n"
-" make_gui \"tray\"\n"
-" } else {\n"
-" make_gui \"icon\"\n"
-" }\n"
-" dtime G\n"
-" old_balloon\n"
-" check_setpasswd\n"
-" push_new_value \"remote-cmd\" \"remote-cmd\" \"Q:clients\" 1\n"
-"} else {\n"
-" make_gui \"full\"\n"
-" dtime G\n"
-" check_setpasswd\n"
-"}\n"
-"\n"
-"\n"
-"# main loop.\n"
-#endif
-/* ifdef NOGUI */
-#endif
-/* ifndef _TKX11VNC_H */
-;
OpenPOWER on IntegriCloud