diff options
Diffstat (limited to 'x11vnc/tkx11vnc.h')
-rw-r--r-- | x11vnc/tkx11vnc.h | 7351 |
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 */ -; |