Welcome to Proxy32 documentation!

Contents:

  • 1. Introduction
    • 1.1. Purpose
      • 1.1.1. About author
      • 1.1.2. About Proxy32 software
    • 1.2. Download and installation
    • 1.3. Proxy32 License
    • 1.4. Links to 3rd party components and their licenses
      • 1.4.1. Linked at code level
      • 1.4.2. Integrated at inter-process level
  • 2. Launchers
    • 2.1. Purpose
      • 2.1.1. About author
      • 2.1.2. About Proxy32 software
    • 2.2. Launchers and LauncherTree
    • 2.3. Quick overview of Launcher types
    • 2.4. TERMINAL Launchers
  • 3. Terminal
    • 3.1. Purpose
      • 3.1.1. About author
      • 3.1.2. About Proxy32 software
    • 3.2. Proxy32 built-in terminal
    • 3.3. General information
      • 3.3.1. What is terminal emulator?
      • 3.3.2. Terminal screen scrollback buffer
      • 3.3.3. Search in the terminal scrollback buffer
      • 3.3.4. Copy and paste via clipboard
      • 3.3.5. Sharing terminal session between multiple users
    • 3.4. Description of the Proxy32 built-in terminal
      • 3.4.1. Capabilities of the built-in terminal
        • 3.4.1.1. General information
        • 3.4.1.2. Controls in the built-in terminal window
        • 3.4.1.3. Scrolling in the built-in terminal
        • 3.4.1.4. Bookmarking and text search in the scroll back buffer of the built-in terminal
        • 3.4.1.5. Copy and Paste operations in the built-in terminal
        • 3.4.1.6. Sharing Terminal Session with Remote users
        • 3.4.1.7. Flow control in the terminal
      • 3.4.2. Creating, connecting, disconnecting and re-connecting windows of the built-in terminal
        • 3.4.2.1. Brief introductory information
        • 3.4.2.2. Ways to create and connect window of the built-in terminal
        • 3.4.2.3. Using launchers to create and connect windows of the built-in terminal
        • 3.4.2.4. Disconnect, re-connect and terminal state indication (button CONNECT/DISCONNECT)
        • 3.4.2.5. Using substitution parameters in the launchers for creation and connection of the built-in terminal windows
        • 3.4.2.6. AUTOLOGIN and passwords
      • 3.4.3. Creating launchers for Proxy32 built-in terminal
        • 3.4.3.1. Creating SHELL-TERMINAL launchers with the “New” button
        • 3.4.3.2. Creating SHELL-TERMINAL launchers with Proxy32 TreeNode Editor
        • 3.4.3.3. Editing (modifying) SHELL-TERMINAL launchers
        • 3.4.3.4. Creating and editing TELNET-TERMINAL and COM-PORT-TERMINAL launchers
        • 3.4.3.5. Automating work in the built-in terminal
      • 3.4.4. Terminal Menu Reference
        • 3.4.4.1. Menu “File”
        • 3.4.4.2. Menu “Edit”
        • 3.4.4.3. Menu “Control”
          • 3.4.4.3.1. Command “Control/Show LauncherTree Favorites Menu”
          • 3.4.4.3.2. Submenu “Control/Connect via TELNET, COM-PORT or SHELL”
          • 3.4.4.3.3. Submenu “Control/Sharing Terminal Session with other users”
          • 3.4.4.3.4. Command “Control/Send TELNET/COM-PORT Break (Break key)”
          • 3.4.4.3.5. Submenu “Control/Log File and Scroll Buffer”
          • 3.4.4.3.6. Submenu “Control/LINE TERMINATORS”
          • 3.4.4.3.7. Submenu “Control/TERMINAL WINDOW RESIZE AND NAWS”
          • 3.4.4.3.8. Submenu “Control/TERMINAL SPARE BOOLEAN SETTINGS”
          • 3.4.4.3.9. Submenu “Control/TERMINAL EMULATOR SETTINGS”
          • 3.4.4.3.10. Submenu “Control/WORKAROUNDS”
        • 3.4.4.4. Menu “View”
        • 3.4.4.5. Menu “HelpOnMouseAndKbd”
    • 3.5. Terminal Specifications
      • 3.5.1. Supported Terminal Control Sequences
        • 3.5.1.1. SGR (“Select Graphic Rendition”) Control Sequence
  • 4. Context Help Pages
    • 4.1. IDH_LAUNCHERTREE_ACTIONSTRING_TOOLTIPS_ENABLED
    • 4.2. IDH_LAUNCHERTREE_ACTIVE_TERMINAL_GETS_FOCUS_AFTER_TERMINAL_COMMAND_SCRIPT_PLUGIN_LAUNCHER_EXECUTION
    • 4.3. IDH_LAUNCHERTREE_BUTTON_LOAD_ALL_CONFIG
    • 4.4. IDH_LAUNCHERTREE_BUTTON_LOGFILE_VIEWER
    • 4.5. IDH_LAUNCHERTREE_BUTTON_MACRO_CONFIG
    • 4.6. IDH_LAUNCHERTREE_BUTTON_MACRO_PLAYBACK
    • 4.7. IDH_LAUNCHERTREE_BUTTON_MACRO_RECORD
    • 4.8. IDH_LAUNCHERTREE_BUTTON_SAVE_ALL_CONFIG
    • 4.9. IDH_LAUNCHERTREE_CYGWIN_HOME_PAGE
    • 4.10. IDH_LAUNCHERTREE_CYGWIN_RECREATE_PASSWD_AND_GROUP_FILES_WITH_ALL_LOCAL_USERS_AND_CURRENT_DOMAIN_USER
    • 4.11. IDH_LAUNCHERTREE_CYGWIN_VIEW_LICENSE
    • 4.12. IDH_LAUNCHERTREE_CYGWIN_VIEW_USER_GUIDE
    • 4.13. IDH_LAUNCHERTREE_EDIT_CLIPBOARD_SELECTION_MAX_SIZE_BYTES
    • 4.14. IDH_LAUNCHERTREE_EDIT_DIALOG_FONT_POINT_SIZE
    • 4.15. IDH_LAUNCHERTREE_EDIT_INITIAL_TSS_PORT_NUMBER
    • 4.16. IDH_LAUNCHERTREE_FAVORITES
    • 4.17. IDH_LAUNCHERTREE_FAVORITES_EMPTY_SLOT
    • 4.18. IDH_LAUNCHERTREE_FAVORITES00
    • 4.19. IDH_LAUNCHERTREE_FAVORITES01
    • 4.20. IDH_LAUNCHERTREE_FAVORITES02
    • 4.21. IDH_LAUNCHERTREE_FAVORITES03
    • 4.22. IDH_LAUNCHERTREE_FAVORITES04
    • 4.23. IDH_LAUNCHERTREE_FAVORITES05
    • 4.24. IDH_LAUNCHERTREE_FAVORITES06
    • 4.25. IDH_LAUNCHERTREE_FAVORITES07
    • 4.26. IDH_LAUNCHERTREE_FAVORITES08
    • 4.27. IDH_LAUNCHERTREE_FAVORITES09
    • 4.28. IDH_LAUNCHERTREE_HELP_ABOUT
    • 4.29. IDH_LAUNCHERTREE_HELP_CHECK_FOR_NEW_VERSION
    • 4.30. IDH_LAUNCHERTREE_HELP_CONTENTS
    • 4.31. IDH_LAUNCHERTREE_HELP_HOME_PAGE
    • 4.32. IDH_LAUNCHERTREE_HELP_WHATISTHIS
    • 4.33. IDH_LAUNCHERTREE_LIST_APPLICATIONS
    • 4.34. IDH_LAUNCHERTREE_LOADSAVECONFIG_CHECK_EXISTENCE_OF_SCRIPTS
    • 4.35. IDH_LAUNCHERTREE_LOADSAVECONFIG_DELETE_TREE
    • 4.36. IDH_LAUNCHERTREE_LOADSAVECONFIG_EXPORT_FULL_CONFIG_TO_SELECTED_DIRECTORY
    • 4.37. IDH_LAUNCHERTREE_LOADSAVECONFIG_IMPORT_FULL_CONFIG_FROM_SELECTED_DIRECTORY
    • 4.38. IDH_LAUNCHERTREE_LOADSAVECONFIG_LOAD_APPEND_PARMS_PASSWORDS_FROM_FILE
    • 4.39. IDH_LAUNCHERTREE_LOADSAVECONFIG_LOAD_APPEND_TREE_FROM_FILE
    • 4.40. IDH_LAUNCHERTREE_LOADSAVECONFIG_LOAD_PARMS_PASSWORDS_FROM_FILE
    • 4.41. IDH_LAUNCHERTREE_LOADSAVECONFIG_LOAD_TREE_FROM_FILE
    • 4.42. IDH_LAUNCHERTREE_LOADSAVECONFIG_MENU
    • 4.43. IDH_LAUNCHERTREE_LOADSAVECONFIG_SAVE_PARMS_PASSWORDS_TO_FILE
    • 4.44. IDH_LAUNCHERTREE_LOADSAVECONFIG_SAVE_TREE_TO_FILE
    • 4.45. IDH_LAUNCHERTREE_PARMS_APPEND_AND_UPDATE_PROXY_PARAMETERS_FROM_FILE
    • 4.46. IDH_LAUNCHERTREE_PARMS_APPEND_AND_UPDATE_PROXY_PARAMETERS_FROM_FILE_WITHOUT_DECRYPTION
    • 4.47. IDH_LAUNCHERTREE_PARMS_APPEND_PROXY_PARAMETERS_FROM_FILE
    • 4.48. IDH_LAUNCHERTREE_PARMS_DELETE_NON_PERSISTENT_PROXY_PARAMETERS
    • 4.49. IDH_LAUNCHERTREE_PARMS_EDIT_NON_PERSISTENT_PROXY_PARAMETERS
    • 4.50. IDH_LAUNCHERTREE_PARMS_EDIT_PERSISTENT_PROXY_PARAMETERS
    • 4.51. IDH_LAUNCHERTREE_PARMS_EDIT_PROXY_PARAMETERS
    • 4.52. IDH_LAUNCHERTREE_PARMS_MERGE_PROXY_PARAMETERS
    • 4.53. IDH_LAUNCHERTREE_PARMS_SAVE_PROXY_PARAMETERS_TO_FILE
    • 4.54. IDH_LAUNCHERTREE_PARMS_SAVE_PROXY_PARAMETERS_TO_FILE_WITHOUT_ENCRYPTION
    • 4.55. IDH_LAUNCHERTREE_PARMS_SEARCH_PROXY_PARAMETERS
    • 4.56. IDH_LAUNCHERTREE_PARMS_SORT_PROXY_PARAMETERS
    • 4.57. IDH_LAUNCHERTREE_PARMS_TIDY_PROXY_PARAMETERS
    • 4.58. IDH_LAUNCHERTREE_PARMS_UPDATE_PROXY_PARAMETERS_FROM_FILE
    • 4.59. IDH_LAUNCHERTREE_POPUPMENU_ADD_AHK_SCRIPT
    • 4.60. IDH_LAUNCHERTREE_POPUPMENU_ADD_COMMAND
    • 4.61. IDH_LAUNCHERTREE_POPUPMENU_ADD_COMPORT_TERMINAL
    • 4.62. IDH_LAUNCHERTREE_POPUPMENU_ADD_CSVPARMS
    • 4.63. IDH_LAUNCHERTREE_POPUPMENU_ADD_IPLUGIN
    • 4.64. IDH_LAUNCHERTREE_POPUPMENU_ADD_ISCRIPT
    • 4.65. IDH_LAUNCHERTREE_POPUPMENU_ADD_YAMLPARMS
    • 4.66. IDH_LAUNCHERTREE_POPUPMENU_ADD_LAUNCH
    • 4.67. IDH_LAUNCHERTREE_POPUPMENU_ADD_LUA_SCRIPT
    • 4.68. IDH_LAUNCHERTREE_POPUPMENU_ADD_PLUGIN
    • 4.69. IDH_LAUNCHERTREE_POPUPMENU_ADD_PYTHON_SCRIPT
    • 4.70. IDH_LAUNCHERTREE_POPUPMENU_ADD_SCRIPT
    • 4.71. IDH_LAUNCHERTREE_POPUPMENU_ADD_SHELL_TERMINAL
    • 4.72. IDH_LAUNCHERTREE_POPUPMENU_ADD_SUBTREE
    • 4.73. IDH_LAUNCHERTREE_POPUPMENU_ADD_TELNET_TERMINAL
    • 4.74. IDH_LAUNCHERTREE_POPUPMENU_ADD_VIEWER
    • 4.75. IDH_LAUNCHERTREE_POPUPMENU_CHECK_EXISTENCE_OF_SCRIPTS_FROM_ITEM
    • 4.76. IDH_LAUNCHERTREE_POPUPMENU_DELETE_CLICKED_ITEM
    • 4.77. IDH_LAUNCHERTREE_POPUPMENU_EDIT_CLICKED_ITEM
    • 4.78. IDH_LAUNCHERTREE_POPUPMENU_EDIT_SCRIPT_FROM_CLICKED_ITEM
    • 4.79. IDH_LAUNCHERTREE_POPUPMENU_EXECUTE_RIGHTCLICKED_ITEM
    • 4.80. IDH_LAUNCHERTREE_POPUPMENU_INSERT_TREE_FROM_FILE_UNDER_RIGHTCLICKED_ITEM
    • 4.81. IDH_LAUNCHERTREE_POPUPMENU_MERGE_PROXY_PARAMETERS_FROM_ITEM
    • 4.82. IDH_LAUNCHERTREE_POPUPMENU_SAVE_ITEM_TO_FILE
    • 4.83. IDH_LAUNCHERTREE_POPUPMENU_SEARCH_ADD_HOTKEY_TO_RIGHTCLICKED_LAUNCHER
    • 4.84. IDH_LAUNCHERTREE_POPUPMENU_SEARCH_ADD_RIGHTCLICKED_TO_FAVORITES
    • 4.85. IDH_LAUNCHERTREE_POPUPMENU_SEARCH_CLEAR_FAVORITES_MENU
    • 4.86. IDH_LAUNCHERTREE_POPUPMENU_SEARCH_CLEAR_SEARCH_IN_RIGHTCLICKED_ITEM
    • 4.87. IDH_LAUNCHERTREE_POPUPMENU_SEARCH_EXPAND_TO_SHOW_ALL_IN_SUBTREE
    • 4.88. IDH_LAUNCHERTREE_POPUPMENU_SEARCH_EXPAND_TO_SHOW_TAGGED_IN_SUBTREE
    • 4.89. IDH_LAUNCHERTREE_POPUPMENU_SEARCH_IN_RIGHTCLICKED_ITEM
    • 4.90. IDH_LAUNCHERTREE_POPUPMENU_SEARCH_TAG_RIGHTCLICKED
    • 4.91. IDH_LAUNCHERTREE_POPUPMENU_SEARCH_UNTAG_RIGHTCLICKED
    • 4.92. IDH_LAUNCHERTREE_SEARCH_CLEAR_SEARCH
    • 4.93. IDH_LAUNCHERTREE_SEARCH_EXPAND_TO_SHOW_ALL
    • 4.94. IDH_LAUNCHERTREE_SEARCH_EXPAND_TO_SHOW_TAGGED
    • 4.95. IDH_LAUNCHERTREE_SEARCH_SEARCH_TREE
    • 4.96. IDH_LAUNCHERTREE_SEARCH_TAG_SELECTED
    • 4.97. IDH_LAUNCHERTREE_SEARCH_UNTAG_SELECTED
    • 4.98. IDH_LAUNCHERTREE_SELECT_TERMINAL_LOG_VIEWER_APPLICATION
    • 4.99. IDH_LAUNCHERTREE_ShowActionStringOnTheTreeNodes
    • 4.100. IDH_LAUNCHERTREE_ShowActionStringInTreeNodesToolTipWindow
    • 4.101. IDH_LAUNCHERTREE_SHOW_ADD_NEW_TREE_ITEM_POPUP_MENU
    • 4.102. IDH_LAUNCHERTREE_SHOW_WORKSPACENAVIGATOR
    • 4.103. IDH_LAUNCHERTREE_TOOLTIPS_BACKGROUND_COLOR
    • 4.104. IDH_LAUNCHERTREE_TOOLTIPS_FONT
    • 4.105. IDH_LAUNCHERTREE_TOOLTIPS_TEXT_COLOR
    • 4.106. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_AHK_SCRIPT
    • 4.107. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_COMMAND
    • 4.108. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_COMPORT_TERMINAL
    • 4.109. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_CSVPARMS
    • 4.110. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_IPLUGIN
    • 4.111. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_ISCRIPT
    • 4.112. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_YAMLPARMS
    • 4.113. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_LAUNCH
    • 4.114. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_LUA_SCRIPT
    • 4.115. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_PLUGIN
    • 4.116. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_PYTHON_SCRIPT
    • 4.117. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_SCRIPT
    • 4.118. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_SHELL_TERMINAL
    • 4.119. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_SUBTREE
    • 4.120. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_TELNET_TERMINAL
    • 4.121. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_VIEWER
    • 4.122. IDH_LAUNCHERTREE_TREENODE_COMMAND_BEFORETYPEDELAY_0
    • 4.123. IDH_LAUNCHERTREE_TREENODE_COMMAND_BEFORETYPEDELAY_1600
    • 4.124. IDH_LAUNCHERTREE_TREENODE_COMMAND_BEFORETYPEDELAY_200
    • 4.125. IDH_LAUNCHERTREE_TREENODE_COMMAND_BEFORETYPEDELAY_400
    • 4.126. IDH_LAUNCHERTREE_TREENODE_COMMAND_BEFORETYPEDELAY_800
    • 4.127. IDH_LAUNCHERTREE_TREENODE_COMMAND_INTERCHARDELAY_0
    • 4.128. IDH_LAUNCHERTREE_TREENODE_COMMAND_INTERCHARDELAY_1
    • 4.129. IDH_LAUNCHERTREE_TREENODE_COMMAND_INTERCHARDELAY_10
    • 4.130. IDH_LAUNCHERTREE_TREENODE_COMMAND_INTERCHARDELAY_100
    • 4.131. IDH_LAUNCHERTREE_TREENODE_COMMAND_INTERCHARDELAY_2
    • 4.132. IDH_LAUNCHERTREE_TREENODE_COMMAND_INTERCHARDELAY_200
    • 4.133. IDH_LAUNCHERTREE_TREENODE_COMMAND_INTERCHARDELAY_25
    • 4.134. IDH_LAUNCHERTREE_TREENODE_COMMAND_INTERCHARDELAY_400
    • 4.135. IDH_LAUNCHERTREE_TREENODE_COMMAND_INTERCHARDELAY_5
    • 4.136. IDH_LAUNCHERTREE_TREENODE_COMMAND_INTERCHARDELAY_50
    • 4.137. IDH_LAUNCHERTREE_TREENODE_COMMAND_INTERCHARDELAY_800
    • 4.138. IDH_LAUNCHERTREE_TREENODE_COMMAND_MODIFIER_TO_CHARDELAY_0
    • 4.139. IDH_LAUNCHERTREE_TREENODE_COMMAND_MODIFIER_TO_CHARDELAY_1
    • 4.140. IDH_LAUNCHERTREE_TREENODE_COMMAND_MODIFIER_TO_CHARDELAY_10
    • 4.141. IDH_LAUNCHERTREE_TREENODE_COMMAND_MODIFIER_TO_CHARDELAY_100
    • 4.142. IDH_LAUNCHERTREE_TREENODE_COMMAND_MODIFIER_TO_CHARDELAY_2
    • 4.143. IDH_LAUNCHERTREE_TREENODE_COMMAND_MODIFIER_TO_CHARDELAY_200
    • 4.144. IDH_LAUNCHERTREE_TREENODE_COMMAND_MODIFIER_TO_CHARDELAY_25
    • 4.145. IDH_LAUNCHERTREE_TREENODE_COMMAND_MODIFIER_TO_CHARDELAY_400
    • 4.146. IDH_LAUNCHERTREE_TREENODE_COMMAND_MODIFIER_TO_CHARDELAY_5
    • 4.147. IDH_LAUNCHERTREE_TREENODE_COMMAND_MODIFIER_TO_CHARDELAY_50
    • 4.148. IDH_LAUNCHERTREE_TREENODE_COMMAND_MODIFIER_TO_CHARDELAY_800
    • 4.149. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_TO_CHARDELAY_0
    • 4.150. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_TO_CHARDELAY_1
    • 4.151. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_TO_CHARDELAY_10
    • 4.152. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_TO_CHARDELAY_100
    • 4.153. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_TO_CHARDELAY_2
    • 4.154. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_TO_CHARDELAY_200
    • 4.155. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_TO_CHARDELAY_25
    • 4.156. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_TO_CHARDELAY_400
    • 4.157. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_TO_CHARDELAY_5
    • 4.158. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_TO_CHARDELAY_50
    • 4.159. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_TO_CHARDELAY_800
    • 4.160. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_CR
    • 4.161. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_CRNL
    • 4.162. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_NL
    • 4.163. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_NONE
    • 4.164. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINETERMINATOR_CR
    • 4.165. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINETERMINATOR_CRNL
    • 4.166. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINETERMINATOR_NL
    • 4.167. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINETERMINATOR_NONE
    • 4.168. IDH_LAUNCHERTREE_TREENODE_COMMAND_MOUSEMOVECLICK_CLICK
    • 4.169. IDH_LAUNCHERTREE_TREENODE_COMMAND_MOUSEMOVECLICK_MOVE
    • 4.170. IDH_LAUNCHERTREE_TREENODE_COMMAND_MOUSEMOVECLICK_OFF
    • 4.171. IDH_LAUNCHERTREE_TREENODE_COMMAND_SUBST_CMD_INTO_CMD_OFF
    • 4.172. IDH_LAUNCHERTREE_TREENODE_COMMAND_SUBST_CMD_INTO_CMD_ON
    • 4.173. IDH_LAUNCHERTREE_TREENODE_DELETE_SELECTED_ITEM
    • 4.174. IDH_LAUNCHERTREE_TREENODE_EDIT_SCRIPT_FROM_SELECTED_ITEM
    • 4.175. IDH_LAUNCHERTREE_TREENODE_EDIT_SELECTED_ITEM
    • 4.176. IDH_LAUNCHERTREE_TREENODE_EXECUTE_SELECTED_ITEM
    • 4.177. IDH_LAUNCHERTREE_TREENODE_INSERT_TREE_FROM_FILE_UNDER_SELECTED_ITEM
    • 4.178. IDH_LAUNCHERTREE_TREENODE_SAVE_ITEM_TO_FILE
    • 4.179. IDH_LAUNCHERTREE_USE_CLIPBOARD_SELECTION_MAX_SIZE_BYTES
    • 4.180. IDH_LAUNCHERTREE_USE_INITIAL_TSS_PORT_NUMBER
    • 4.181. IDH_LAUNCHERTREE_LAUNCHER_TOOLTIPS_ENABLED
    • 4.182. IDH_LAUNCHERTREE_VIEW_INITIAL_SCRIPT_EDITOR_BACKGROUND_COLOR
    • 4.183. IDH_LAUNCHERTREE_VIEW_INITIAL_SCRIPT_EDITOR_FONT
    • 4.184. IDH_LAUNCHERTREE_VIEW_INITIAL_SCRIPT_EDITOR_TEXT_COLOR
    • 4.185. IDH_LAUNCHERTREE_VIEW_INITIAL_TERMINAL_BACKGROUND_COLOR
    • 4.186. IDH_LAUNCHERTREE_VIEW_INITIAL_TERMINAL_FONT
    • 4.187. IDH_LAUNCHERTREE_VIEW_INITIAL_TERMINAL_FOREGROUND_COLOR
    • 4.188. IDH_LAUNCHERTREE_VIEW_LAUNCHERTREE_BACKGROUND_COLOR
    • 4.189. IDH_LAUNCHERTREE_VIEW_LAUNCHERTREE_FONT
    • 4.190. IDH_LAUNCHERTREE_VIEW_LAUNCHERTREE_TEXT_COLOR
    • 4.191. IDH_LAUNCHERTREE_WINDOW_MENUBAR_HELP_POPUP_MENU
    • 4.192. IDH_LAUNCHERTREE_WINDOW_MENUBAR_LOADSAVECONFIG_POPUP_MENU
    • 4.193. IDH_LAUNCHERTREE_WINDOW_MENUBAR_PARMS_POPUP_MENU
    • 4.194. IDH_LAUNCHERTREE_WINDOW_MENUBAR_SEARCH_POPUP_MENU
    • 4.195. IDH_LAUNCHERTREE_WINDOW_MENUBAR_SETTINGS_POPUP_MENU
    • 4.196. IDH_LAUNCHERTREE_WINDOW_MENUBAR_TREENODE_POPUP_MENU
    • 4.197. IDH_LAUNCHERTREE_WINDOW_TOOLTIPS_ENABLED
    • 4.198. IDH_MAIN_WINDOW_MENUBAR_Add_Drag_Handle_to_Selector_And_LauncherTree_On_Frame_Removal
    • 4.199. IDH_MAIN_WINDOW_MENUBAR_COMMAND_BEFORETYPEDELAY
    • 4.200. IDH_MAIN_WINDOW_MENUBAR_COMMAND_INTERCHARDELAY
    • 4.201. IDH_MAIN_WINDOW_MENUBAR_COMMAND_MODIFIER_TO_CHARDELAY
    • 4.202. IDH_MAIN_WINDOW_MENUBAR_COMMAND_LINEBREAK_TO_CHARDELAY
    • 4.203. IDH_MAIN_WINDOW_MENUBAR_COMMAND_LINEBREAK
    • 4.204. IDH_MAIN_WINDOW_MENUBAR_COMMAND_LINETERMINATOR
    • 4.205. IDH_MAIN_WINDOW_MENUBAR_COMMAND_MOUSEMOVECLICK
    • 4.206. IDH_MAIN_WINDOW_MENUBAR_COMMAND_SUBST_CMD_INTO_CMD
    • 4.207. IDH_MAIN_WINDOW_MENUBAR_COMMAND_SUBST_CMD_INTO_CMD_SEARCH
    • 4.208. IDH_MAIN_WINDOW_MENUBAR_COMMAND_SUBST_CMD_INTO_CMD_SET
    • 4.209. IDH_MAIN_WINDOW_MENUBAR_COMMAND_SUBST_CMD_INTO_CMD_SHOW
    • 4.210. IDH_MAIN_WINDOW_MENUBAR_EnforceApplicationWindowTitleGivenByTheUser
    • 4.211. IDH_MAIN_WINDOW_MENUBAR_Floater_Windows_Behavior
    • 4.212. IDH_MAIN_WINDOW_MENUBAR_Keep_LauncherTree_Sizing_Border_On_Frame_Removal
    • 4.213. IDH_MAIN_WINDOW_MENUBAR_Keep_Main_Window_Sizing_Border_On_Frame_Removal
    • 4.214. IDH_MAIN_WINDOW_MENUBAR_Keep_Selector_Sizing_Border_On_Frame_Removal
    • 4.215. IDH_MAIN_WINDOW_MENUBAR_LauncherTreeWindowAndSelectorWindowAdjustSizeAndPositionOnWorkspaceResizeAndMovement
    • 4.216. IDH_MAIN_WINDOW_MENUBAR_LauncherTreeWindowAndSelectorWindowMovementFollowsWorkspaceWindowLeftTopCornerMovement
    • 4.217. IDH_MAIN_WINDOW_MENUBAR_LauncherTreeWindowAndSelectorWindowSizeAndPositionAreIndependentFromWorkspaceWindow
    • 4.218. IDH_MAIN_WINDOW_MENUBAR_LeftDoubleClickOnMainWindowTitleExecutesAssignedActions
    • 4.219. IDH_MAIN_WINDOW_MENUBAR_Maximization_Rectangle_of_Main_Window
    • 4.220. IDH_MAIN_WINDOW_MENUBAR_MaximizeApplicationWindowOnSelectionFromSelectorList
    • 4.221. IDH_MAIN_WINDOW_MENUBAR_MaximizeMainWindowExpandsTo_Virtual_Desktop_minus_Taskbar
    • 4.222. IDH_MAIN_WINDOW_MENUBAR_MaximizeMainWindowExpandsTo_VIRTUAL_SCREEN_MINUS_TASKBAR
    • 4.223. IDH_MAIN_WINDOW_MENUBAR_MaximizeMainWindowExpandsToCURRENT_MONITOR_MINUS_TASKBAR
    • 4.224. IDH_MAIN_WINDOW_MENUBAR_MaximizeMainWindowExpandsToCurrentMonitor_minus_Taskbar
    • 4.225. IDH_MAIN_WINDOW_MENUBAR_MaximizeMainWindowExpandsToFIRST_AND_SECOND_MONITOR_MINUS_TASKBAR
    • 4.226. IDH_MAIN_WINDOW_MENUBAR_MaximizeMainWindowExpandsToFIRST_AND_THIRD_MONITOR_MINUS_TASKBAR
    • 4.227. IDH_MAIN_WINDOW_MENUBAR_MaximizeMainWindowExpandsToFIRST_MONITOR_MINUS_TASKBAR
    • 4.228. IDH_MAIN_WINDOW_MENUBAR_MaximizeMainWindowExpandsToSECOND_AND_THIRD_MONITOR_MINUS_TASKBAR
    • 4.229. IDH_MAIN_WINDOW_MENUBAR_MaximizeMainWindowExpandsToSECOND_MONITOR_MINUS_TASKBAR
    • 4.230. IDH_MAIN_WINDOW_MENUBAR_MaximizeMainWindowExpandsToTHIRD_MONITOR_MINUS_TASKBAR
    • 4.231. IDH_MAIN_WINDOW_MENUBAR_MaximizeMainWindowExpandsToVIRTUAL_SCREEN
    • 4.232. IDH_MAIN_WINDOW_MENUBAR_MaximizeMainWindowExpandsToVirtualDesktop
    • 4.233. IDH_MAIN_WINDOW_MENUBAR_RearrangeMinimizedApplicationWindowsOnMainWindowResize
    • 4.234. IDH_MAIN_WINDOW_MENUBAR_Release_All_Windows_From_The_List
    • 4.235. IDH_MAIN_WINDOW_MENUBAR_Remove_Frame_From_LauncherTree_Window
    • 4.236. IDH_MAIN_WINDOW_MENUBAR_Remove_Frame_From_Main_Window
    • 4.237. IDH_MAIN_WINDOW_MENUBAR_Remove_Frame_From_Selector_Window
    • 4.238. IDH_MAIN_WINDOW_MENUBAR_SmallSelectorWindow
    • 4.239. IDH_MAIN_WINDOW_MENUBAR_Start_Window_Selection_By_Mouse
    • 4.240. IDH_MAIN_WINDOW_MENUBAR_Start_Window_Selection_By_Name
    • 4.241. IDH_MAIN_WINDOW_MENUBAR_SWITCH_TO_ANOTHER_WINDOW_IN_WORKSPACE
    • 4.242. IDH_MAIN_WINDOW_MENUBAR_SWITCH_TO_WS0
    • 4.243. IDH_MAIN_WINDOW_MENUBAR_SWITCH_TO_WS1
    • 4.244. IDH_MAIN_WINDOW_MENUBAR_SWITCH_TO_WS2
    • 4.245. IDH_MAIN_WINDOW_MENUBAR_SWITCH_TO_WS3
    • 4.246. IDH_MAIN_WINDOW_MENUBAR_SWITCH_TO_WS4
    • 4.247. IDH_MAIN_WINDOW_MENUBAR_SWITCH_TO_WS5
    • 4.248. IDH_MAIN_WINDOW_MENUBAR_TileCascadeMaximizeWillNotOverlapWithLauncherTreeAndSelectorWindows
    • 4.249. IDH_MAIN_WINDOW_MENUBAR_TileCascadeMaximizeWillUseMaximizeRectangleOfWorkspaceWindowInsteadOfClientRectangle
    • 4.250. IDH_MAIN_WINDOW_MENUBAR_Workspace_CtrlRightClickPopup
    • 4.251. IDH_MAIN_WINDOW_MENUBAR_WORKSPACENAVIGATOR
    • 4.252. IDH_MAIN_WINDOW_POPUPMENU_ADD_ROW_TO_TILED_LAYOUT
    • 4.253. IDH_MAIN_WINDOW_POPUPMENU_ARRANGE_MINIMIZED_WORKSPACE_CHILDREN
    • 4.254. IDH_MAIN_WINDOW_POPUPMENU_CAPTURE_MOUSE_COORDINATES_IN_ACTIVE_WINDOW
      • 4.254.1. Capturing one mouse position at the time:
      • 4.254.2. Capturing multiple mouse positions in quick succession:
      • 4.254.3. Deleting all mouse positions:
      • 4.254.4. Deleting last mouse position:
      • 4.254.5. Display all mouse positions:
      • 4.254.6. Shift all captured mouse positions by capturing new mouseposition[00]:
      • 4.254.7. Using mouse positions stored in COMMAND/SCRIPT launcher:
      • 4.254.8. Using mouse positions stored in AHK-SCRIPT launcher:
      • 4.254.9. Using mouse positions stored in SUBTREE launcher:
      • 4.254.10. Using mouse positions when COMMAND WRAPPER mode is enabled:
    • 4.255. IDH_MAIN_WINDOW_POPUPMENU_CASCADE
    • 4.256. IDH_MAIN_WINDOW_POPUPMENU_CHANGE_TITLE_OF_SELECTED_WINDOW
    • 4.257. IDH_MAIN_WINDOW_POPUPMENU_CLOSE_NONMINIMIZED_WORKSPACE_CHILDREN
    • 4.258. IDH_MAIN_WINDOW_POPUPMENU_COPY_MOUSE_CAPTURED_COORDINATES
      • 4.258.1. Paste all mouse positions:
    • 4.259. IDH_MAIN_WINDOW_POPUPMENU_DELETE_MOUSE_CAPTURED_COORDINATES
      • 4.259.1. Deleting all mouse positions:
    • 4.260. IDH_MAIN_WINDOW_POPUPMENU_DOCK_SELECTOR_AND_LAUNCHERTREE_INSIDE_OF_WS_BOTTOM_RIGHT
    • 4.261. IDH_MAIN_WINDOW_POPUPMENU_DOCK_SELECTOR_AND_LAUNCHERTREE_INSIDE_OF_WS_TOP_LEFT
    • 4.262. IDH_MAIN_WINDOW_POPUPMENU_DOCK_SELECTOR_AND_LAUNCHERTREE_OUTSIDE_OF_WS_BOTTOM_RIGHT
    • 4.263. IDH_MAIN_WINDOW_POPUPMENU_DOCK_SELECTOR_AND_LAUNCHERTREE_OUTSIDE_OF_WS_TOP_LEFT
    • 4.264. IDH_MAIN_WINDOW_POPUPMENU_EDIT_AUTOGRAB_DEFINITIONS
    • 4.265. IDH_MAIN_WINDOW_POPUPMENU_EDIT_LAUNCHER_HOTKEY_DEFINITIONS
    • 4.266. IDH_MAIN_WINDOW_POPUPMENU_EDIT_MOUSE_ACTIONS_DEFINITIONS
    • 4.267. IDH_MAIN_WINDOW_POPUPMENU_EDIT_VIEWER_DEFINITIONS
    • 4.268. IDH_MAIN_WINDOW_POPUPMENU_EDIT_WORKSPACE_HOTKEY_DEFINITIONS
    • 4.269. IDH_MAIN_WINDOW_POPUPMENU_RESET_ALL_FONTS_TO_DEFAULTS
    • 4.270. IDH_MAIN_WINDOW_POPUPMENU_TREE_FONT_INCREMENT
    • 4.271. IDH_MAIN_WINDOW_POPUPMENU_TREE_FONT_DECREMENT
    • 4.272. IDH_MAIN_WINDOW_POPUPMENU_TOOLTIPS_FONT_INCREMENT
    • 4.273. IDH_MAIN_WINDOW_POPUPMENU_TOOLTIPS_FONT_DECREMENT
    • 4.274. IDH_MAIN_WINDOW_POPUPMENU_DIALOG_FONT_INCREMENT
    • 4.275. IDH_MAIN_WINDOW_POPUPMENU_DIALOG_FONT_DECREMENT
    • 4.276. IDH_MAIN_WINDOW_POPUPMENU_TERMINAL_FONT_INCREMENT
    • 4.277. IDH_MAIN_WINDOW_POPUPMENU_TERMINAL_FONT_DECREMENT
    • 4.278. IDH_MAIN_WINDOW_POPUPMENU_EDITOR_FONT_INCREMENT
    • 4.279. IDH_MAIN_WINDOW_POPUPMENU_EDITOR_FONT_DECREMENT
    • 4.280. IDH_MAIN_WINDOW_POPUPMENU_PUTTY_REGISTRY_EXPORT
    • 4.281. IDH_MAIN_WINDOW_POPUPMENU_PUTTY_REGISTRY_IMPORT
    • 4.282. IDH_MAIN_WINDOW_POPUPMENU_SUBSTITUTION_PARAMETERS_EDIT
    • 4.283. IDH_MAIN_WINDOW_POPUPMENU_SUBSTITUTION_PARAMETERS_DELETE
    • 4.284. IDH_MAIN_WINDOW_POPUPMENU_FTS_INDEX_RECREATE
    • 4.285. IDH_MAIN_WINDOW_POPUPMENU_FTS_INDEX_ENABLE
    • 4.286. IDH_MAIN_WINDOW_POPUPMENU_FTS_INDEX_CASE_INSENSITIVE
    • 4.287. IDH_MAIN_WINDOW_POPUPMENU_FTS_IS_INDEXING_LINKED_FILES
    • 4.288. IDH_MAIN_WINDOW_POPUPMENU_FTS_INDEX_DELIMITER_LIST
    • 4.289. IDH_MAIN_WINDOW_POPUPMENU_FTS_INDEX_SEARCH_FILE_EXTENSIONS_LIST
    • 4.290. IDH_MAIN_WINDOW_POPUPMENU_ENABLE_AUTOGRAB
    • 4.291. IDH_MAIN_WINDOW_POPUPMENU_ENABLE_CLICK_MOUSEPOSITION_INCREMENT_AFTER_COMMAND_EXECUTION
    • 4.292. IDH_MAIN_WINDOW_POPUPMENU_ENABLE_LINE_NUMBER_INCREMENT_AFTER_NON_CSV_SCRIPT_EXECUTION
    • 4.293. IDH_MAIN_WINDOW_POPUPMENU_ENABLE_LINE_NUMBER_INCREMENT_AFTER_CSV_SCRIPT_EXECUTION
    • 4.294. IDH_MAIN_WINDOW_POPUPMENU_ENABLE_AUTOEXECUTE_CSV_SCRIPT_BEFORE_WHEN_IT_IS_FIRST_SIBLING_OF_EXECUTED
    • 4.295. IDH_MAIN_WINDOW_POPUPMENU_ENABLE_CSV_PARMS_ARE_CREATED_WITH_DO_NOT_ASK_AGAIN_SET
    • 4.296. IDH_MAIN_WINDOW_POPUPMENU_ENABLE_LUA_PARSING_BEFORE_PARAMETER_SUBSTITUTION
    • 4.297. IDH_MAIN_WINDOW_POPUPMENU_ENABLE_LUA_TEMPLATING_ENGINE_PARSER
    • 4.298. IDH_MAIN_WINDOW_POPUPMENU_ENABLE_X10_TYPING_DELAYS
    • 4.299. IDH_MAIN_WINDOW_POPUPMENU_ENABLE_PYT_PARSING_BEFORE_PARAMETER_SUBSTITUTION
    • 4.300. IDH_MAIN_WINDOW_POPUPMENU_ENABLE_PYT_TEMPLATING_ENGINE_PARSER
    • 4.301. IDH_MAIN_WINDOW_POPUPMENU_MOVE_TO_FIRST_LINE_FROM_SELECTED_LINE_IN_SCRIPT_EDITOR
    • 4.302. IDH_MAIN_WINDOW_POPUPMENU_MOVE_TO_PREV_LINE_FROM_SELECTED_LINE_IN_SCRIPT_EDITOR
    • 4.303. IDH_MAIN_WINDOW_POPUPMENU_MOVE_TO_NEXT_LINE_FROM_SELECTED_LINE_IN_SCRIPT_EDITOR
    • 4.304. IDH_MAIN_WINDOW_POPUPMENU_EXECUTE_COMMAND_FROM_SELECTED_LINE_IN_SCRIPT_EDITOR_WITH_WRAPPER_DISABLED
    • 4.305. IDH_MAIN_WINDOW_POPUPMENU_EXECUTE_COMMAND_FROM_SELECTED_LINE_IN_SCRIPT_EDITOR_WITH_WRAPPER_DISABLED_AND_MOVE_SELECTION_TO_NEXT_LINE
    • 4.306. IDH_MAIN_WINDOW_POPUPMENU_EXECUTE_COMMAND_FROM_SELECTED_LINE_IN_SCRIPT_EDITOR
    • 4.307. IDH_MAIN_WINDOW_POPUPMENU_EXECUTE_COMMAND_FROM_SELECTED_LINE_IN_SCRIPT_EDITOR_AND_MOVE_SELECTION_TO_NEXT_LINE
    • 4.308. IDH_MAIN_WINDOW_POPUPMENU_EXIT_PROXY_APPLICATION
    • 4.309. IDH_MAIN_WINDOW_POPUPMENU_INVOKE_PROXY_OPTIONS_DIALOG
    • 4.310. IDH_MAIN_WINDOW_POPUPMENU_MAXIMIZE_WORKSPACE
    • 4.311. IDH_MAIN_WINDOW_POPUPMENU_MINIMIZE_WORKSPACE_CHILDREN
    • 4.312. IDH_MAIN_WINDOW_POPUPMENU_TARGET_WINDOW_FOR_DIRECT_TILE_BUTTONS_A
    • 4.313. IDH_MAIN_WINDOW_POPUPMENU_TARGET_WINDOW_FOR_DIRECT_TILE_BUTTONS_W
    • 4.314. IDH_MAIN_WINDOW_POPUPMENU_TARGET_WINDOW_FOR_DIRECT_TILE_BUTTONS_S
    • 4.315. IDH_MAIN_WINDOW_POPUPMENU_TARGET_WINDOW_FOR_DIRECT_TILE_BUTTONS_L
    • 4.316. IDH_MAIN_WINDOW_POPUPMENU_TARGET_WINDOW_FOR_DIRECT_TILE_BUTTONS_SL
    • 4.317. IDH_MAIN_WINDOW_POPUPMENU_TARGET_WINDOW_FOR_DIRECT_TILE_BUTTONS_SLW
    • 4.318. IDH_MAIN_WINDOW_POPUPMENU_TARGET_WINDOW_FOR_DIRECT_TILE_BUTTONS_G
    • 4.319. IDH_MAIN_WINDOW_POPUPMENU_TARGET_WINDOW_FOR_DIRECT_TILE_BUTTONS_O
    • 4.320. IDH_MAIN_WINDOW_POPUPMENU_MOVE_TO_MONITOR_BIG_1
    • 4.321. IDH_MAIN_WINDOW_POPUPMENU_MOVE_TO_MONITOR_BIG_2
    • 4.322. IDH_MAIN_WINDOW_POPUPMENU_MOVE_TO_MONITOR_BIG_3
    • 4.323. IDH_MAIN_WINDOW_POPUPMENU_MOVE_TO_MONITOR_BIG_4
    • 4.324. IDH_MAIN_WINDOW_POPUPMENU_NORMALIZE
    • 4.325. IDH_MAIN_WINDOW_POPUPMENU_PASTE_MOUSE_CAPTURED_COORDINATES
      • 4.325.1. Deleting all mouse positions:
    • 4.326. IDH_MAIN_WINDOW_POPUPMENU_REINITIALIZE_LUA_GLOBAL_STATE
    • 4.327. IDH_MAIN_WINDOW_POPUPMENU_REINITIALIZE_PYT_GLOBAL_STATE
    • 4.328. IDH_MAIN_WINDOW_POPUPMENU_RELEASE_ALL_WINDOWS_FROM_LIST
    • 4.329. IDH_MAIN_WINDOW_POPUPMENU_RELEASE_CURRENT_WINDOW_FROM_LIST
    • 4.330. IDH_MAIN_WINDOW_POPUPMENU_SEARCH_FOR_MOUSE_CAPTURED_COORDINATES
    • 4.331. IDH_MAIN_WINDOW_POPUPMENU_SELECT_WORKSPACE_BACKGROUND_BMP_FILE
    • 4.332. IDH_MAIN_WINDOW_POPUPMENU_SELECTOR_WINDOW_SHOW_MENU_BAR_UNDER_TITLE_BAR
    • 4.333. IDH_MAIN_WINDOW_POPUPMENU_SET_SHARED_INPUT_MODE_TO_DISABLED_FOR_ALL_NONMINIMIZED_TERMINALS_IN_WORKSPACE
    • 4.334. IDH_MAIN_WINDOW_POPUPMENU_SET_SHARED_INPUT_MODE_TO_SLAVE_FOR_ALL_NONMINIMIZED_TERMINALS_IN_WORKSPACE
    • 4.335. IDH_MAIN_WINDOW_POPUPMENU_SHOW_HIDE_SELECTOR_AND_LAUNCHERTREE_WINDOWS
    • 4.336. IDH_MAIN_WINDOW_POPUPMENU_SHOW_MOUSE_CAPTURED_COORDINATES
      • 4.336.1. Display all mouse positions:
    • 4.337. IDH_MAIN_WINDOW_POPUPMENU_START_WINDOW_SELECTION_BY_MOUSE
    • 4.338. IDH_MAIN_WINDOW_POPUPMENU_START_WINDOW_SELECTION_BY_NAME
    • 4.339. IDH_MAIN_WINDOW_POPUPMENU_SWITCH_TO_ANOTHER_WINDOW_IN_WORKSPACE
    • 4.340. IDH_MAIN_WINDOW_POPUPMENU_SWITCH_TO_WS0
    • 4.341. IDH_MAIN_WINDOW_POPUPMENU_SWITCH_TO_WS1
    • 4.342. IDH_MAIN_WINDOW_POPUPMENU_SWITCH_TO_WS2
    • 4.343. IDH_MAIN_WINDOW_POPUPMENU_SWITCH_TO_WS3
    • 4.344. IDH_MAIN_WINDOW_POPUPMENU_SWITCH_TO_WS4
    • 4.345. IDH_MAIN_WINDOW_POPUPMENU_SWITCH_TO_WS5
    • 4.346. IDH_MAIN_WINDOW_POPUPMENU_TILE_IN_ONE_HALF_BIG_1
    • 4.347. IDH_MAIN_WINDOW_POPUPMENU_TILE_IN_ONE_HALF_BIG_2
    • 4.348. IDH_MAIN_WINDOW_POPUPMENU_TILE_IN_ONE_HALF_BIG_3
    • 4.349. IDH_MAIN_WINDOW_POPUPMENU_TILE_IN_ONE_HALF_BIG_4
    • 4.350. IDH_MAIN_WINDOW_POPUPMENU_TILE_IN_ONE_QUARTER_BIG_1
    • 4.351. IDH_MAIN_WINDOW_POPUPMENU_TILE_IN_ONE_QUARTER_BIG_2
    • 4.352. IDH_MAIN_WINDOW_POPUPMENU_TILE_IN_ONE_QUARTER_BIG_3
    • 4.353. IDH_MAIN_WINDOW_POPUPMENU_TILE_IN_ONE_QUARTER_BIG_4
    • 4.354. IDH_MAIN_WINDOW_POPUPMENU_TILE_IN_ONE_ROW
    • 4.355. IDH_MAIN_WINDOW_POPUPMENU_TILE_SET_GRID_SIZE
    • 4.356. IDH_MAIN_WINDOW_POPUPMENU_TILE_SET_LEFT_TOP_POSITION_ON_THE_GRID
    • 4.357. IDH_MAIN_WINDOW_POPUPMENU_TILE_SET_RIGHT_BOTTOM_POSITION_ON_THE_GRID
    • 4.358. IDH_MAIN_WINDOW_POPUPMENU_TILE_TO_FULL_MONITOR_BIG
    • 4.359. IDH_MAIN_WINDOW_POPUPMENU_TILE_TO_HALF_OF_SLOT_BIG
    • 4.360. IDH_MAIN_WINDOW_POPUPMENU_TILE_TO_QUADRANT_OF_SLOT_BIG
    • 4.361. IDH_MAIN_WINDOW_POPUPMENU_SET_NESTED_TILE_RECT_AS_LAST_MANUALLY_SELECTED_TILE_SLOT_BIG
    • 4.362. IDH_MAIN_WINDOW_POPUPMENU_TILE_TO_THIRD_OF_SLOT_BIG
    • 4.363. IDH_MAIN_WINDOW_POPUPMENU_TILE_WITH_CURRENT_NUMBERS_OF_ROWS
    • 4.364. IDH_MAIN_WINDOW_POPUPMENU_TOGGLE_MAXIMIZE_WORKSPACE
    • 4.365. IDH_MAIN_WINDOW_POPUPMENU_TOGGLE_MINIMIZE_WORKSPACE
    • 4.366. IDH_MAIN_WINDOW_POPUPMENU_UNMINIMIZE_WORKSPACE_CHILDREN
    • 4.367. IDH_MAIN_WINDOW_POPUPMENU_WORKSPACE_WINDOW_SHOW_MENU_BAR_UNDER_TITLE_BAR
    • 4.368. IDH_MAIN_WINDOW_POPUPMENU_WORKSPACE_WINDOWS_BACKGROUND_IS_BITMAP_INSTEAD_OF_PLAIN_COLOR
    • 4.369. IDH_MAIN_WINDOW_POPUPSUBMENU_ARRANGE_WINDOWS_IN_THE_CURRENT_WORKSPACE
    • 4.370. IDH_MAIN_WINDOW_POPUPSUBMENU_AUTOMATIC_WINDOW_POSITIONING
    • 4.371. IDH_MAIN_WINDOW_POPUPSUBMENU_EDIT_HOTKEY_AND_MOUSE_ACTIONS_DEFINITIONS
    • 4.372. IDH_MAIN_WINDOW_POPUPSUBMENU_PUT_EXTERNAL_WINDOWS_INTO_WORKSPACE
    • 4.373. IDH_MAIN_WINDOW_POPUPSUBMENU_SET_BACKGROUND_OF_THE_CURRENT_WORKSPACE
    • 4.374. IDH_MAIN_WINDOW_POPUPSUBMENU_SHOW_HIDE_DOCK_FLOATING_WINDOWS
    • 4.375. IDH_MAIN_WINDOW_POPUPSUBMENU_SWITCH_WORKSPACE
    • 4.376. IDH_OPTIONS_PAGE_DEBUG_SETTINGS
    • 4.377. IDH_OPTIONS_PAGE_EXIT_SHUTDOWN
    • 4.378. IDH_OPTIONS_PAGE_FONTS_AND_COLORS
    • 4.379. IDH_OPTIONS_PAGE_GRAB
    • 4.380. IDH_OPTIONS_PAGE_HEALTH_MONITOR
    • 4.381. IDH_OPTIONS_PAGE_MINIMIZED_WINDOW
    • 4.382. IDH_OPTIONS_PAGE_PASSWORD_SECURITY
    • 4.383. IDH_OPTIONS_PAGE_TLS_SERVER_DISCONNECT_POLICIES
    • 4.384. IDH_OPTIONS_PAGE_TLS_SERVER_MANAGE_PFX_STORE
    • 4.385. IDH_OPTIONS_PAGE_TLS_SERVER_RSA_CERTIFICATE_AUTOLOAD_ON_START
    • 4.386. IDH_OPTIONS_PAGE_TLS_SERVER_RSA_CERTIFICATE_CREATE_ROOT
    • 4.387. IDH_OPTIONS_PAGE_TLS_SERVER_RSA_CERTIFICATE_CREATE_TEMP
    • 4.388. IDH_OPTIONS_PAGE_TLS_SERVER_RSA_CERTIFICATE_LOAD
    • 4.389. IDH_OPTIONS_PAGE_TLS_SERVER_RSA_CERTIFICATE_MAIN_PAGE
    • 4.390. IDH_OPTIONS_PAGE_TLS_SERVER_RSA_CERTIFICATE_ROOT_LOAD
    • 4.391. IDH_OPTIONS_PAGE_TLS_SERVER_TRUSTED_STORE
    • 4.392. IDH_OPTIONS_PAGE_TLS_SET_CIPHERSUITES_FOR_THIS_PC
    • 4.393. IDH_OPTIONS_PAGE_TLS_SET_PROTOCOL_VERSION
    • 4.394. IDH_OPTIONS_PAGE_VISUAL_CLUES
    • 4.395. IDH_OPTIONS_PAGE_WINDOW_BEHAVIOR
    • 4.396. IDH_SCRIPTEDITOR_EXECUTE_COMMAND_FROM_SELECTED_LINE_IN_SCRIPT_EDITOR
    • 4.397. IDH_SCRIPTEDITOR_EXECUTE_COMMAND_FROM_SELECTED_LINE_IN_SCRIPT_EDITOR_AND_MOVE_SELECTION_TO_NEXT_LINE
    • 4.398. IDH_SCRIPTEDITOR_FILE_EXIT
    • 4.399. IDH_SCRIPTEDITOR_FILE_NEW
    • 4.400. IDH_SCRIPTEDITOR_FILE_OPEN
    • 4.401. IDH_SCRIPTEDITOR_FILE_SAVE
    • 4.402. IDH_SCRIPTEDITOR_FILE_SAVEAS
    • 4.403. IDH_SCRIPTEDITOR_INSERT_CHARACTER
    • 4.404. IDH_SCRIPTEDITOR_INSERT_EXISTING_NAMED_PARM
    • 4.405. IDH_SCRIPTEDITOR_INSERT_NEW_PARM_PASS_LINE
    • 4.406. IDH_SCRIPTEDITOR_LOAD_ALL_COMMANDS_FROM_SELECTED_SUBTREE_INTO_EDITOR_WINDOW
    • 4.407. IDH_SCRIPTEDITOR_MERGE_SELECTED_LINES_INTO_ONE_LINE_BY_REMOVING_CR_BEFORE_NL
    • 4.408. IDH_SCRIPTEDITOR_OPEN_CURRENT_SCRIPT_FILE_IN_EXTERNAL_VIEWER
    • 4.409. IDH_SCRIPTEDITOR_SET_CURSOR_LINE_FOR_NEXT_MANUAL_EXEC_STEP
    • 4.410. IDH_SCRIPTEDITOR_SHOW_HIDE_SELECTOR_AND_LAUNCHERTREE_WINDOWS
    • 4.411. IDH_SCRIPTEDITOR_SPLIT_SELECTED_LINE_INTO_SEVERAL_LINES_BY_ADDING_CR_BEFORE_NL
    • 4.412. IDH_SCRIPTEDITOR_TOGGLE_SCRIPT_LINE_TOOLTIP
    • 4.413. IDH_SCRIPTEDITOR_VIEW_FONT
    • 4.414. IDH_SCRIPTEDITOR_VIEW_SELECT_BACKGROUND_COLOR
    • 4.415. IDH_SCRIPTEDITOR_VIEW_SELECT_TEXT_COLOR
    • 4.416. IDH_SWITCH_TO_DEFAULT_DESKTOP
    • 4.417. IDH_TERMINAL_BUTTON_BOOKMARK_IN_TERMINAL_BUFFER
    • 4.418. IDH_TERMINAL_BUTTON_CLEAR_SEARCH_RESULTS_IN_TERMINAL_BUFFER
    • 4.419. IDH_TERMINAL_BUTTON_CONNECT_DISCONNECT_TERMINAL
    • 4.420. IDH_TERMINAL_BUTTON_DELETE_SELECTED_SEARCH_RESULT
    • 4.421. IDH_TERMINAL_BUTTON_NEXT_SEARCH_RESULT
    • 4.422. IDH_TERMINAL_BUTTON_PREVIOUS_SEARCH_RESULT
    • 4.423. IDH_TERMINAL_BUTTON_SEARCH_IN_TERMINAL_BUFFER
    • 4.424. IDH_TERMINAL_BUTTON_SHOW_TERMINAL_LOG_FILE
    • 4.425. IDH_TERMINAL_BUTTON_STOP_SCRIPT_EXECUTION
    • 4.426. IDH_TERMINAL_CHAR_SPACE_DECREASE
    • 4.427. IDH_TERMINAL_CHAR_SPACE_RESTORE
    • 4.428. IDH_TERMINAL_CLIPBOARD_VIEWER_WINDOW
    • 4.429. IDH_TERMINAL_CONTROL_ADD_HEXDUMP_TO_LOG_FILE
    • 4.430. IDH_TERMINAL_CONTROL_ADD_TIMESTAMPS_TO_TERMINAL_LOG_FILE
    • 4.431. IDH_TERMINAL_CONTROL_ARROWS_ARE_INITIALLY_IN_APPLICATION_MODE
    • 4.432. IDH_TERMINAL_CONTROL_BREAK
    • 4.433. IDH_TERMINAL_CONTROL_CONNECT_LISTENER_COMPORT_FROM_SELECTED_TREENODE
    • 4.434. IDH_TERMINAL_CONTROL_DISABLE_ARROWS_APPLICATION_MODE
    • 4.435. IDH_TERMINAL_CONTROL_DISABLE_CURSOR_POSITION_REPORTING
    • 4.436. IDH_TERMINAL_CONTROL_DISABLE_NUMPAD_APPLICATION_MODE
    • 4.437. IDH_TERMINAL_CONTROL_Disable_Paste_by_Keyboard
    • 4.438. IDH_TERMINAL_CONTROL_Disable_Paste_by_Mouse
    • 4.439. IDH_TERMINAL_CONTROL_DISABLE_REMOTE_CONTROLLED_LOG_FILE_NAME_CHANGING
    • 4.440. IDH_TERMINAL_CONTROL_DISABLE_REMOTE_CONTROLLED_WINDOW_TITLE_CHANGING
    • 4.441. IDH_TERMINAL_CONTROL_DISCONNECT
    • 4.442. IDH_TERMINAL_CONTROL_DISCONNECT_ALL_CLIENTS
    • 4.443. IDH_TERMINAL_CONTROL_DISCONNECT_LISTENER_COMPORT
    • 4.444. IDH_TERMINAL_CONTROL_DISCONNECT_SELECTED_CLIENT
    • 4.445. IDH_TERMINAL_CONTROL_DO_NOT_SEND_NAWS
    • 4.446. IDH_TERMINAL_CONTROL_DO_NOT_SEND_NEWLINE_TO_LISTENER_COMPORT
    • 4.447. IDH_TERMINAL_CONTROL_DO_NOT_SEND_NEWLINE_TO_SHELL
    • 4.448. IDH_TERMINAL_CONTROL_DO_NOT_SEND_NEWLINE_TO_SHELL_IS_AUTOMATIC
    • 4.449. IDH_TERMINAL_CONTROL_DO_NOT_SEND_NEWLINE_TO_TARGET_COMPORT
    • 4.450. IDH_TERMINAL_CONTROL_DO_NOT_SEND_NEWLINE_TO_TARGET_TELNET
    • 4.451. IDH_TERMINAL_CONTROL_DO_NOT_SHOW_MENU_BAR
    • 4.452. IDH_TERMINAL_CONTROL_DO_NOT_SHOW_TITLEBAR
    • 4.453. IDH_TERMINAL_CONTROL_ECHO_KBD_PASTE_TO_TERMINAL_LOCALLY
    • 4.454. IDH_TERMINAL_CONTROL_Enable_UNICODE_Input_from_Keyboard_IME_Paste_COMMAND_SCRIPT
    • 4.455. IDH_TERMINAL_CONTROL_FLIP_RO_SELECTED_CLIENT
    • 4.456. IDH_TERMINAL_CONTROL_FORCE_TERMINAL_SIZE_TO_80X24
    • 4.457. IDH_TERMINAL_CONTROL_KEEPALIVE
    • 4.458. IDH_TERMINAL_CONTROL_KILL_SCRIPT_PLUGIN
    • 4.459. IDH_TERMINAL_CONTROL_LOGGING_TO_FILE
    • 4.460. IDH_TERMINAL_CONTROL_NUMPAD_IS_INITIALLY_IN_APPLICATION_MODE
    • 4.461. IDH_TERMINAL_CONTROL_PASTE_ON_LEFTCTRLMIDDLECLICK_INSTEAD_OF_MIDDLECLICK
    • 4.462. IDH_TERMINAL_CONTROL_Print_Ambiguous_CJK_chars_as_wide
    • 4.463. IDH_TERMINAL_CONTROL_Print_Received_CarriageReturn_as_CRNL
    • 4.464. IDH_TERMINAL_CONTROL_Print_Received_NewLine_as_CRNL
    • 4.465. IDH_TERMINAL_CONTROL_Print_Received_NewLine_as_CRNL_Auto
    • 4.466. IDH_TERMINAL_CONTROL_RECONNECT
    • 4.467. IDH_TERMINAL_CONTROL_REMOVE_MOUSE_SELECTION_WHEN_ERASE_ALL_DISPLAY_IS_REQUESTED
    • 4.468. IDH_TERMINAL_CONTROL_Replace_Unicode_Hyphen_x2010_by_ASCII_Minus
    • 4.469. IDH_TERMINAL_CONTROL_REPORT_TELNETTERMINALTYPE_AS_XTERM_INSTEAD_OF_VT100
    • 4.470. IDH_TERMINAL_CONTROL_REREGISTER_CLIPBOARDVIEWER
    • 4.471. IDH_TERMINAL_CONTROL_RESETVT100
    • 4.472. IDH_TERMINAL_CONTROL_RESTART_LOG_FILE_ON_WINDOW_TITLE_CHANGE
    • 4.473. IDH_TERMINAL_CONTROL_RESTART_TERMINAL_LOG_FILE
    • 4.474. IDH_TERMINAL_CONTROL_SCROLLBUFFER_ON_THE_FILE
    • 4.475. IDH_TERMINAL_CONTROL_SEND_STTY_COLUMNS_X_ROWS_Y
    • 4.476. IDH_TERMINAL_CONTROL_SHARED_INPUT_MODE_BUTTON
    • 4.477. IDH_TERMINAL_CONTROL_SHARED_INPUT_MODE_DISABLED
    • 4.478. IDH_TERMINAL_CONTROL_SHARED_INPUT_MODE_MASTER
    • 4.479. IDH_TERMINAL_CONTROL_SHARED_INPUT_MODE_SLAVE
    • 4.480. IDH_TERMINAL_CONTROL_SHOW_TREENODE_FROM_WHICH_TERMINAL_WAS_STARTED
    • 4.481. IDH_TERMINAL_CONTROL_SPARE_BOOL_SETTING_00
    • 4.482. IDH_TERMINAL_CONTROL_SPARE_BOOL_SETTING_01
    • 4.483. IDH_TERMINAL_CONTROL_SPARE_BOOL_SETTING_02
    • 4.484. IDH_TERMINAL_CONTROL_SPARE_BOOL_SETTING_03
    • 4.485. IDH_TERMINAL_CONTROL_Use_Clear_Text_Antialiasing_Instead_of_Grayscale_Antialiasing
    • 4.486. IDH_TERMINAL_CONTROL_DISABLE_ANTIALIASING_FOR_TERMINAL_FONT
    • 4.487. IDH_TERMINAL_CONTROL_USE_SYSTEM_FONTS_INSTEAD_OF_EMBEDDED_FONT
    • 4.488. IDH_TERMINAL_CONTROL_TERMINAL_AUTOSCROLL_ON_NEW_DATA
    • 4.489. IDH_TERMINAL_CONTROL_TERMINAL_DO_NOT_SEND_INPUT_TO_SCREENBUFFER
    • 4.490. IDH_TERMINAL_CONTROL_TERMINAL_SESSION_SHARING_SERVER_LISTENS_ONLY_ON_LOOPBACK_IP
    • 4.491. IDH_TERMINAL_CONTROL_TIMESTAMPING
    • 4.492. IDH_TERMINAL_CONTROL_TRY_TO_RECONNECT_TERMINAL_FROM_SELECTED_TREENODE
    • 4.493. IDH_TERMINAL_CONTROL_USE_SSL_TLS_TO_ENCRYPT_TELNET_TRAFFIC_FROM_TERMINAL_SESSION_SHARING_SERVER
    • 4.494. IDH_TERMINAL_Do_Not_Play_Sound_On_Receiving_BELL_Char
    • 4.495. IDH_TERMINAL_DO_NOT_SHOW_CONTROLS
    • 4.496. IDH_TERMINAL_EDIT_BOOKMARK
    • 4.497. IDH_TERMINAL_EDIT_CLEAR_COMMAND_HISTORY
    • 4.498. IDH_TERMINAL_EDIT_CLEAR_SEARCH
    • 4.499. IDH_TERMINAL_EDIT_COPY_HISTORY_LIST_TO_CLIPBOARD
    • 4.500. IDH_TERMINAL_EDIT_COPY_SEARCH_LIST_TO_CLIPBOARD
    • 4.501. IDH_TERMINAL_EDIT_DELETE_SELECTED_SEARCH_RESULT
    • 4.502. IDH_TERMINAL_EDIT_GO_TO_FIRST_LINE_OF_SELECTION
    • 4.503. IDH_TERMINAL_EDIT_GO_TO_LAST_LINE_OF_SELECTION
    • 4.504. IDH_TERMINAL_EDIT_GO_TO_NEXT_SEARCH_RESULT
    • 4.505. IDH_TERMINAL_EDIT_GO_TO_PREVIOUS_SEARCH_RESULT
    • 4.506. IDH_TERMINAL_EDIT_PASTE
    • 4.507. IDH_TERMINAL_EDIT_SEARCH
    • 4.508. IDH_TERMINAL_FILE_CHANGE_TITLE_OF_TERMINAL_WINDOW
    • 4.509. IDH_TERMINAL_FILE_EXIT
    • 4.510. IDH_TERMINAL_FILE_PROPAGATE_TERMINAL_SETTINGS_TO_NONMINIMIZED_TERMINALS_IN_THE_SAME_WORKSPACE
    • 4.511. IDH_TERMINAL_FILE_SAVE_TERMINAL_SETTINGS_AS_DEFAULTS_FOR_NEW_TERMINALS
    • 4.512. IDH_TERMINAL_FIXED_SPEED_SCROLLBAR
    • 4.513. IDH_TERMINAL_LINE_SPACE_DECREASE
    • 4.514. IDH_TERMINAL_LINE_SPACE_RESTORE
    • 4.515. IDH_TERMINAL_LIST_OF_COMMANDS_HISTORY
    • 4.516. IDH_TERMINAL_LIST_OF_COMPUTER_IP_ADDRESSES
    • 4.517. IDH_TERMINAL_LIST_OF_CONNECTED_CLIENTS
    • 4.518. IDH_TERMINAL_LIST_OF_SEARCH_RESULTS
    • 4.519. IDH_TERMINAL_LIST_OF_TERMINAL_TELNET_RECEIVE_SPEED_SETTINGS
    • 4.520. IDH_TERMINAL_REGULAR_SCROLLBAR
    • 4.521. IDH_TERMINAL_SCRIPT_LINES_PROGRESS_BAR
    • 4.522. IDH_TERMINAL_SESSION_SHARING_SERVER_DENIES_NEW_CONNECTIONS
    • 4.523. IDH_TERMINAL_VIEW_FONT
    • 4.524. IDH_TERMINAL_VIEW_SELECT_BACKGROUND_COLOR
    • 4.525. IDH_TERMINAL_VIEW_SELECT_FOREGROUND_COLOR
    • 4.526. IDH_WORKSPACE_MENUBAR_LAUNCHERTREE_FAVORITES_BUTTON
    • 4.527. IDH_LAUNCHERTREE_INSTALLER_INSTALL_CYGWIN_x86_64
    • 4.528. IDH_LAUNCHERTREE_INSTALLER_INSTALL_PUTTY_AND_FRIENDS
    • 4.529. IDH_LAUNCHERTREE_INSTALLER_INSTALL_JEDIT_AND_JRE
    • 4.530. IDH_LAUNCHERTREE_INSTALLER_INSTALL_WINMERGE
    • 4.531. IDH_LAUNCHERTREE_INSTALLER_INSTALL_AHK_SCITE4AHK
    • 4.532. IDH_LAUNCHERTREE_INSTALLER_INSTALL_SCITE
    • 4.533. IDH_LAUNCHERTREE_INSTALLER_INSTALL_GEANY
    • 4.534. IDH_LAUNCHERTREE_INSTALLER_INSTALL_LUA
    • 4.535. IDH_LAUNCHERTREE_INSTALLER_INSTALL_PYTHON39
  • 5. Heading 1
    • 5.1. Heading 2
      • 5.1.1. Heading 3
        • 5.1.1.1. Heading 4

Indices and tables

  • Index

  • Module Index

  • Search Page

©2026, Sergey A Belous. | Powered by Sphinx 7.4.7 & Alabaster 0.7.16 | Page source


1. Introduction

1.1. Purpose

1.1.1. About author

I am Sergey A. Belous and this is my home page. One can download all web-pages from this web-site as single CHM file for offline reading.

1.1.2. About Proxy32 software

In my free time I develop Windows software called Proxy32 (64-bit GUI executable written in C++). It helps me to organize and perform rather generic and routine computer tasks at work and at home. It is beneficial to have all kind of routine computer tasks neatly organized and always one click away for execution. Examples of routine computer tasks: start programs, open files, fill in the web forms (login/etc) or type complex parametric commands via remote desktop window or via console of virtual machine, especially, when copy/paste does not work. Please, see Table 1.1.1.

Note

proxy32 functionality evolution.

Over the years (since 2001) functionality of proxy32.exe software was evolving in different directions. It has started from original focus on development of custom-made automated terminal software that is well integrated with CYGWIN and overcomes many limitations of existing terminals. More recent development focus is on controlling external RemoteDesktop/VM_Console and WebBrowser windows in a manner similar to what can be achieved via AHK. Latest Proxy32 functionality is subset of functionality that one can achieve using AHK, but AHK requires learning the whole new programing language while Proxy32 is trying to employ more of GUI-driven approach for the subset of AHK functionality available.

The heart of the Proxy32 functionality is Window (called “LauncherTree” window) where user can create and configure Tree of various gadgets. User can execute different computer tasks by double-clicking on configured gadgets (called “TreeNodes” or “Launchers”). This Tree Window represents the “Universal Organizer” for computer tasks.

Table 1.1.1 Some Launchers to execute routine computer tasks
Routine Computer Tasks | Launcher type | Launcher functionality
Start Windows Programs | LAUNCH | Start Windows Process based on configured command line. Capture Process Window into Proxy32 workspace if needed. Process can be started elevated. This is similar to Windows Shortcut.
Open files or web-pages | VIEWER | Opens file/web-page with configured application based on user-configured “ViewerDefinions” table. “ViewerDefinions” table is an ordered list of user-configured regular expressions. Each regular expression in the list is associated with certain windows application. Regular expressions in the list are sequentially applied to file/webpage URL configured in VIEWER. When first regular expression matches the URL, file or webpage is opened in the Windows application that is associated with matched regular expression. This is similar to associating Windows applications with file extensions.
Fill in the web forms (login/etc) or type complex parametric commands via remote desktop window or via console of virtual machine especially, when copy/paste does not work | COMMAND | Simulates user’s typing and mouse clicks into external (non-Proxy32) window that is marked as active in the Proxy32 Desktop Window Manager.

Proxy32 GUI interface also includes Desktop Window Manager with 6 separate workspaces, automated terminal for CYGWIN and Scintilla-based script editor, but those extra GUI parts are intended to support main “Organizer” functionality described above.

Software is free to download and use, I have borrowed license text from PuTTY. This is MIT-type license.

Dynamic libraries and static C/C++ libraries linked to Proxy32 C++ code are all with non-restrictive licenses.

Some 3rd party external standalone software components that are packaged and installed in the binary form (aka distributed in non-modified form) with my software include their own licenses, so, please, be sure to check those licenses before using this software in any commercial projects.

Installed side-by-side 3rd party components are not necessary for Proxy32 to work. Some of those standalone components integrate with Proxy32 to expand its functionality. For example, CYGWIN OpenSSH package (or PuTTY plink/psftp - if CYGWIN OpenSSH is not installed) provides ssh/sftp functionality to Proxy32 terminal. Another example, AHK interpreter is expanding keyboard typing and mouse clicking functionality of Proxy32. Some other standalone components (like free and re-distributable text editors) are installed (extracted into folder inside of Proxy32 startup directory, no actual installation) together with Proxy32 just because they are part of my everyday workflow and I like them always to be around. They can be integrated in the Proxy32 GUI in some minimal way, for example, they can be configured to be called from Proxy32 user configuration on certain events.

Some of those standalone 3rd party components may not be approved for various reasons by some corporate security folks to install on corporate computers. Therefore, proxy32.exe built-in installer dialog has some GUI options (check boxes) to let user skip extraction of those 3rd party standalone components from proxy32.exe binary.

1.2. Download and installation

proxy32.exe is 64bit application.

It will only work on 64bit versions of Windows 10/11.

Here is the Proxy32 download link.

Software is digitally signed by my code developer certificate.

It is combining installer and the program itself in single binary executable file proxy32.exe.

If you drop proxy32.exe to Desktop and run from there it will install the program and create shortcut on the desktop.

If you drop newer version of proxy32.exe on the Desktop and run it, it will find existing installation by using shortcut located on Desktop and offer to update existing installation. Running installer to update existing installation of Proxy32 does not automatically update 3rd party components installed side-by-side next to Proxy32. If you delete those 3rd party components before running update, Proxy32 will install newer versions of those components during update process (by extracting them from newer proxy32.exe binary).

Feel free to share your thought about software at my e-mail address belous_sa@yahoo.com.

1.3. Proxy32 License

Proxy32 is copyright 2001-2026 Sergey A Belous.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL SERGEY BELOUS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

1.4. Links to 3rd party components and their licenses

1.4.1. Linked at code level

All components listed in this section are compiled into proxy32.exe binary with the exception of Python 3.9.0 64bit interpreter. Please, see Table 1.4.1. Python 3.9.0 interpreter is in separate DLL (packaged with proxy32.exe and extracted from proxy32.exe) dynamically loaded by proxy32.exe at run-time. This is Python limitation, Python interpreter has to be linked as DLL to allow built-in Python interpreter to use extra Python modules that are also packaged as DLLs (and extracted from proxy32.exe together with Python interpreter DLL). If Python DLL is not present for loading, Proxy32.exe will work with the exception of functionality related to built-in Python interpreter.

Note

Python.dll dependencies.

  • Python DLL was compiled by python.org folks using certain version of MSVC, therefore, proxy32.exe may also package full official installer of MSVC redistributables for the version of MSVC used to compile Python.dll. Python DLL comes from Python folks packaged with required MSVC redistributable DLLs side by side. But in some cases those redistributables have to be installed in the Windows OS for Python DLL to function properly. Python 3.9.0 64bit DLL is compiled with VS2015, MSVC redistributables for VS2015/2017/2019 should be automatically installed everywhere with Windows Update.

  • As a last resort users can download and install MSVC redistributables for VS2015/VS2017/VS2019 64bit to make Python DLL work. At the time of writing (Mar 29, 2026): this is the page and this is download link

Table 1.4.1 3rd party software compiled in or dynamically linked
3rd party Software compiled in or dynamically linked | License | Purpose
PCRE-6.7 (compiled into proxy32.exe binary) | BSD for PCRE | for regex text search
eXpat-2.0.1 (compiled into proxy32.exe binary) | MIT for eXpat | for loading XML configuration files
LibYAML-0.2.2 (compiled into proxy32.exe binary) | MIT for LibYAML | to load YAML/JSON parameters files
Scintilla-3.7.3 (compiled into proxy32.exe binary) | MIT-like | to implement SCRIPT editor
C/C++ CSV Parser (compiled into proxy32.exe) | MIT for CSV-parser | to load CSV parameters files
Python 3.9.0 (DLL is extracted from proxy32.exe binary during the installation, then dynamically linked at run time by proxy32.exe) | PSF | for Python templating of COMMAND text
LUA 5.4.1 (compiled into proxy32.exe binary) | MIT for LUA | for Lua templating of COMMAND text
LUA alien 0.7.1 - C FFI Library (compiled into proxy32.exe binary) | MIT for LUA alien library | for calling C Functions from Lua
LibFFI 3.3 - C FFI Library (compiled into proxy32.exe binary) | MIT for LibFFI 3.3 library | provides foundation for LUA alien library
Adobe Source Code Pro Font Family (embedded into proxy32.exe binary) | SIL OPEN FONT LICENSE Version 1.1 for Adobe Source Code Pro Font Family | Default Monospaced Font for Proxy32 Terminal

1.4.2. Integrated at inter-process level

Those are 3rd party standalone components. proxy32.exe will function without them, though some functionality may be missing. They are extracted from proxy32.exe and installed side-by-side next to proxy32.exe. Please, see Table 1.4.2.

Table 1.4.2 3rd party software installed side by side
3rd party Software installed side by side | License | Purpose
PuTTY/plink/psftp 0.74 64bit (side by side, optional) | MIT for PuTTY | Provide SSH/SFTP functionality without CYGWIN OpenSSH. PuTTY.exe can be intergated via LAUNCH. plink.exe can be integrated via SHELL-TERMINAL with “proxywinconsole.exe” SHELL-TERMINAL’s backend. psftp.exe can be used as direct backend for SHELL-TERMINAL.
PuTTY plink 0.74 64bit (modified and included with source code changes) | MIT for modified PuTTY plink; PuTTY plink 0.74 code modifications | Modified version is named “proxyplink.exe”. Provides SSH functionality without CYGWIN OpenSSH. This is direct backend for SHELL-TERMINAL, no need to depend on proxywinconsole.exe SHELL-TERMINAL’s backend anymore. Passes info about resizing of SHELL-TERMINAL’s window to remote PTY/TTY over SSH to ensure correct functioning of remote full screen terminal applications like “vi”, GNU “screen”, “midnight commander (mc)” etc.
CygTerm-1.06 64bit (modified and included with source code) | GPLv2 for modified CygTerm | Modified version is named “proxycyterm.exe”. This is direct backend for SHELL-TERMINAL to interface with CYGWIN to provide LINUX functionality on Windows. It is compiled under CYGWIN and linked to CYGWIN DLL to create CYGWIN PTY/TTY pair to execute interactive CYGWIN shell (bash) or directly (without calling “bash”) start CYGWIN communication and other shells like ssh/sftp/telnet/ftp/screen/mc etc. CYGWIN DLL has a limit of 128 PTY/TTY pairs. Therefore, proxycyterm.exe backend process will work in up to 128 simultaneously running SHELL-TERMINALs connected to CYGWIN processes. Passes info about resizing of SHELL-TERMINAL’s window to CYGWIN PTY/TTY to ensure correct functioning of full screen CYGWIN terminal applications like “vi”, GNU “screen”, “midnight commander (mc)” etc.
Cygwin 64bit (side by side, optional) | GPL for Cygwin | Provides LINUX functionality on Windows. Integrates with SHELL-TERMINAL via “proxycyterm.exe” backend. Included CYGWIN packages can be removed/upgraded and new packages can be installed via included CYGWIN setup program. proxy32.exe can link with pre-existing user’s CYGWIN installation or create new CYGWIN installation (with pre-loaded collection of packages) in proxy32.exe startup directory.
WinMerge-2.6.6 32bit (side by side, optional) | GPL for WinMerge | Visual comparision of files and directories
jEdit-5.6.0 (side by side, optional) | GPLv2 for jEdit | Very versatile text editor
Java SE JRE 11.0.9 64bit (to run jEdit) | GPLv2+CE for OpenJDK | to run jEdit
SciTE 4.4.5 64bit (side by side, optional) | MIT-like | Very fast text editor to open huge text files. Pre-configured as default editor/viewer in many places in proxy32.exe out-of-the-box default configuration. For example, as proxy32 terminal log viewer, as external viewer of SCRIPT files etc.
Geany-1.38 64bit (side by side, optional) | GPLv2 for Geany | Text editor with some usefull features like showing and navigation the outline of ReST-formatted files and re-flow of paragraph.
AutoHotkey-1.1.14.3 32bit U (side by side, optional) | GPL for AHK | automatically called by proxy32.exe to execute AHK-SCRIPT
SciTE4AutoHotkey 3.0.06.01 32bit (side by side, optional) | GPL for AHK | to debug AHK scripts
Python 3.9.0 (standalone interpreter) 64bit | PSF | to execute SHELL-TERMINAL Python PLUGINs when Python interpreter installed with CYGWIN is not available.
LUA 5.4.1 (standalone interpreter) 64bit | MIT for LUA | to execute SHELL-TERMINAL LUA PLUGINs when LUA interpreter installed with CYGWIN is not available.
LUA templater (loaded into proxy32.exe for Lua templating of COMMAND text) | BSD for LUA templater | automatically loaded into proxy32.exe for Lua templating of COMMAND text
LUA JSON module 20170927.26 (side by side, optional, to import JSON data in LUA code) | CC BY 3 for LUA JSON module | to import JSON data in LUA code
LUA PenLight 1.9.1 (side by side, optional) | MIT for LUA PenLight | many utility functions to use in LUA code
LUA ftcsv 1.2.1 (side by side, optional, to import csv data in LUA code) | MIT for LUA ftcsv module | to import csv data in LUA code
LUA lua-yaml 1.2 (side by side, optional, to import yaml/json data in LUA code) | MIT for LUA lua-yaml module | to import yaml/json data in LUA code
Toccata et Fugue BWV565 (Johann Sebastian Bach (disputed), performed by Ashtar Moïra) | Public Domain for “Toccata et Fugue” | Background music in “About proxy32.exe” dialog
7-Zip 19.00 | LGPL for 7-Zip | in self-extracting archives during installation
Python PyYAML 5.3.1 | MIT for PyYAML | to load variables from YAML/JSON files into Python interpreter for Python/Jinja2 templating
Python Jinja2 2.11.2 | BSD for Jinja2 | to process Jinja2 templates in Python interpreter
Python ReText 7.1.0 | GPLv3 for ReText | to edit ReST documentation source files
LUA alien 0.7.1 - C FFI Library | MIT for LUA alien library | for calling C Functions from Lua
LibFFI 3.3 - C FFI Library | MIT for LibFFI 3.3 library | provides foundation for LUA alien library
©2026, Sergey A Belous. | Powered by Sphinx 7.4.7 & Alabaster 0.7.16 | Page source


2. Launchers

2.1. Purpose

2.1.1. About author

I am Sergey A. Belous and this is my home page.

2.1.2. About Proxy32 software

In my free time I develop Windows software called Proxy32 (64-bit GUI executable written in C++). It helps me to organize and perform rather generic and routine computer tasks at work and at home. It is beneficial to have all kind of routine computer tasks neatly organized and always one click away for execution. Examples of routine computer tasks: start programs, open files, fill in the web forms (login/etc) or type complex parametric commands via remote desktop window or via console of virtual machine, especially, when copy/paste does not work. Please, see Table 1.1.1.

Note

Proxy32 functionality evolution.

Over the years (since 2001) functionality of Proxy32.exe software was evolving in different directions. It has started from original focus on development of custom-made automated terminal software that is well integrated with CYGWIN and overcomes many limitations of existing terminals. More recent development focus is on controlling external RemoteDesktop/VM_Console and WebBrowser windows in a manner similar to what can be achieved via AHK. Latest Proxy32 functionality is subset of functionality that one can achieve using AHK, but AHK requires learning the whole new programing language while Proxy32 is trying to employ more of GUI-driven approach for the subset of AHK functionality available.

2.2. Launchers and LauncherTree

Starting from 2001 after switching from HP UNIX workstation to Dell Windows laptop at work power of UNIX was missing and there was a desire to automate in Windows all routine operations like starting terminal and automatically connect it to remote host (like router or Linux server) or sending pre-defined sequence of command to such terminal or even opening internal documentation page for such command sequence without regards to what kind of bookmarks are stored (or not stored) in any particular browser. Those operation were eventually presented as nodes on the tree to make them easily accessible. The tree itself is located in the floating application window positioned over or next to terminal window and browser window. When user double-clicks on such tree node routine operation will be executed based on configuration stored inside of such tree node. Such tree nodes can be configured by user in advance and they can be made more universal (applicable to wider ranges of curcumstances) by using substitution parameters (substitution strings) instead of port and hostname for terminal connection or by using substitution parameters for disk or card name in sequence of commands or using substitution parameters in predefined internal URL to switch directly to desired document or topic.

Such tree nodes later got to be called Launchers in Proxy32 lingo and the tree window inside of Proxy32 application goes by the name LauncherTree window.

Each Launcher is always created by user with the fixed type assigned. There are dozens of Launcher types available for use in Proxy32. Each type can perform very specific operation and it is up to user to choose which type will better suit for the task at hand.

In the rest of this chapter I will make an attempt to describe all Launcher types and explain what purpose was in mind when each type was introduced. Some minimal examples will be given to illustrate the use.

2.3. Quick overview of Launcher types

Launcher Type

Purpose

Configuration parameters

SUBTREE

To group other launchers under common root tree node. It will collapse (hiding child launchers) or expand (showing child launchers) on user’s double-click. This is the only node type that can have children nodes on the LauncherTree. SUBTREE is equivalent to folder for tree-representation of the directory and file hierarchy.

Name of the SUBTREE

COM-PORT-TERMINAL

To create window of Proxy32 built-in terminal and connect it to specific COMPORT with specific communication parameters set

COM-PORT name and set of communication parameter to configure the port

TELNET-TERMINAL

To create window of Proxy32 built-in terminal and connect it to specific TELNET or TELNET/TLS server

Hostname or IPv4 of TELNET server, TCP port and TLS parameters in case TLS is being used

SHELL-TERMINAL

To create window of Proxy32 built-in terminal and connect it to specific Windows or CYGWIN shell or communication shell (which in turn may be connected to remote server)

Command line to start local child windows process. Terminal communicates with child process via STDIN/STDOUT/STDERR. Local process can be Windows cmd.exe or it can be (included with Proxy32) CYGWIN backend called ‘proxycygterm.exe’ (based on old ‘cygterm’ code) or it can be (included with Proxy32) SSH backend called ‘proxyplink.exe’ (based on PuTTY Plink code). ‘proxycygterm.exe’ provides terminal interface with CYGWIN bash or with CYGWIN communication shells and termial multiplexers such as SSH/SFTP/TELNET/FTP/SCREEN. ‘proxyplink.exe’ allows to leave all details of SSH coding and all the options to developers of PuTTY.

COMMAND

  • Sends text of the command to active built-in terminal by injecting it into byte stream towards the remote host

or

  • sends text of the command to the active window of external process by injecting the text into keyboard driver queue

Text of the command to be sent.

SCRIPT

  • Sends text line by line from attached text file to the remote host of active built-in terminal. Next line is sent automatically only after output of remote host is paused (was not active) for specified number of seconds.

or

  • Sends one text line from attached text file to the active window of external process by injecting the text into keyboard driver queue. Next line is sent when user double-clicks on the same launcher again.

Path to the text file with lines/commands to be sent.

I-SCRIPT

  • Sends text line by line from attached text file to the remote host of active built-in terminal. Next line is sent automatically only after output of remote host contains match for given regular expression. If output of the command is paused for given number of seconds and regular expession is not yet matched, the next line will not be sent and execution of the launcher will be stopped.

  • I-SCRIPT can be invoked automatically by connect event of associated built-in terminal window. In such case it can be used to finish automatic terminal login sequence.

Path to the text file with lines/commands to be sent. Each line contains three parts:

  • text of command to be sent

  • regular expression to be matched by command output in order to continue to execute next line.

  • timeout value to indicate maximum pause in the output of command when regular expression is not yet matched the output

PLUGIN

Creates child process to control interaction of built-in terminal with remote host. On creation STDOUT of the child process is connected to write bytes towards remote host, STDIN of the child process is connected to read bytes from remote host, and STDERR of the child process is connected to write bytes to the screen of the built-in terminal. Keyboard of terminal user is temporarily disconnected. When child process exits built-in terminal detects it and automatically reconnects remote host I/O to terminal screen and keyboard. User can kill stuck child process by clicking “Kill” button in terminal window.

PLUGIN can be invoked automatically by connect event of associated built-in terminal window. In such case it can be used to finish automatic terminal login sequence.

Command line to create child process.

PLUGIN can be written in any language.

Examples will be provided of PLUGINs written in PERL, PYTHON, EXPECT, LUA

I-PLUGIN

Creates child process to control interaction of built-in terminal with remote host. On creation STDOUT of the child process is connected to write bytes towards remote host, STDIN of the child process is connected to read bytes from remote host, and STDERR of the child process is connected to write bytes to the screen of the built-in terminal.

Keyboard of terminal user is writing to temporary file. Name of temporary file is passed/appended as a last parameter on command line of I-PLUGIN child process. I-PLUGIN child process can open temporary file and read user keystrokes from it.

When child process exits built-in terminal detects it and automatically reconnects remote host I/O to terminal screen and keyboard. User can kill stuck child process by clicking “Kill” button in terminal window. In any case temporary file with user keystrokes is deleted when child process exited or terminated by user of terminal.

Command line to create child process.

I-PLUGIN can be written in any language.

Examples will be provided of PLUGINs written in PERL, PYTHON, EXPECT, LUA

LAUNCH

Start Windows Process based on configured command line. Capture Process Window into Proxy32 workspace if needed. Process can be started elevated. This is similar to Windows Shortcut.

Command line for the process to start. Regex pattern for window class and title to capture the window into Proxy32 list of managed windows

VIEWER

Opens file/web-page with configured application based on user-configured “ViewerDefinions” table. “ViewerDefinions” table is an ordered list of user-configured regular expressions. Each regular expression in the list is associated with certain windows application. Regular expressions in the list are sequentially applied to file/webpage URL configured in VIEWER. When first regular expression matches the URL, file or webpage is opened in the Windows application that is associated with matched regular expression. This is similar to associating Windows applications with file extensions.

  • url of file/web-page to open - in launcher

  • global mapping table of url regex patterns to viewer application to be used when given regex matches - in the “ViewerDefinions” table.

CSVPARMS

Imports content of associated CSV file into Proxy32 substitution parameters list

Path to CSV file to be imported

YAMLPARMS

Imports content of associated JSON/YML file into Proxy32 substitution parameters list

Path to JSON/YML file to be imported

AHK-SCRIPT

Saves text to temporary file an passes this file for the execution to external AHK interpreter that is installed with Proxy32. After execution temporary file is deleted.

Text of AHK script to be executed

LUA-SCRIPT

Passes text for execution to built-in LUA interpreter

Text of LUA script to be executed

PYTHON-SCRIPT

Passes text for execution to built-in PYTHON interpreter

Text of PYTHON script to be executed

2.4. TERMINAL Launchers

Proxy32 application has its own built-in terminal with the features that were desired at the time. That includes connectivity to modem (COMPORT) and telnet and telnet/TLS and direct interprocesss connectivity to dos cmd shell and to various CYGWIN shells. It also includes unlimited scroll buffer with regex search and bookmarking and autobookmarking capabilities. Another external terminal (possibly on remote machine) can connect via TELNET (possibly with TLS) or via COMPORT (possibly with BLUETOOTH) to Proxy32 built-in terminal and type commands into existing terminal session and see the responses coming to both local built-in terminal and to remote external terminal connected to local built-in terminal. That feature was named terminal session sharing and was widely popular at the time when Webex and needed network bandwith were not available for modern-style GUI screen sharing. Also at the time screen sharing over third party web-server probably would not play well from secirity standpoint.

Of course, the primary need to develop proprietary built-in terminal in Proxy32 was because such terminal has to be designed from ground up to be controlled via Launchers and via Proxy32 GUI. There are several types of Launchers (COMMAND, SCRIPT, I-SCRIPT, PLUGIN, I-PLUGIN, SHELL-TERMINAL, TELNET-TERMINAL, COMPORT-TERMINAL) that dedicate full or part of their functionality specifically to control Proxy32 built-in terminal.

In this chapter we will mention functionality of above Launchers while functionality of built-in terminal will be covered in general in the next chapter.

It is hard to develop terminal as good and compatible as

  • free terminal PuTTY,

  • Xterm and PuTTY clone MinTTY under CYGWIN,

  • other commercially available Windows terminals like SecureCRT, to name a few.

Therefore, for the situations when there is no compelling need to use built-in Proxy32 terminal, one can use PuTTY, Xterm and MinTTY. I have included those 3 terminals for convinience into Proxy32 self-installing executable. For example, such terminals can be started and connected via LAUNCH launcher (via command line) and then later COMMAND/SCRIPT launchers can be used to send sequences of parametrized commands to the windows of such terminals. As Proxy32 terminal has support for somewhat less terminal control sequences comparing to well established terminal emulators, there could be rare situations when in-terminal full screen application like VI/EMACS/SCREEN or something very proprietary may work better with well established terminal emulators.

There are three types of launchers to start and connect Proxy32 built-in terminal:

  • COM-PORT-TERMINAL

  • TELNET-TERMINAL

  • SHELL-TERMINAL

Launcher Type | Purpose | Configuration parameters
COM-PORT-TERMINAL | To create window of Proxy32 built-in terminal and connect it to specific COMPORT with specific communication parameters set | COM-PORT name and set of communication parameter to configure the port
TELNET-TERMINAL | To create window of Proxy32 built-in terminal and connect it to specific TELNET or TELNET/TLS server | Hostname or IPv4 of TELNET server, TCP port and TLS parameters in case TLS is being used
SHELL-TERMINAL | To create window of Proxy32 built-in terminal and connect it to specific Windows or CYGWIN shell or communication shell (which in turn may be connected to remote server) | Command line to start local child windows process. Terminal communicates with child process via STDIN/STDOUT/STDERR. Local process can be Windows cmd.exe or it can be (included with Proxy32) CYGWIN backend called ‘proxycygterm.exe’ (based on old ‘cygterm’ code) or it can be (included with Proxy32) SSH backend called ‘proxyplink.exe’ (based on PuTTY Plink code). ‘proxycygterm.exe’ provides terminal interface with CYGWIN bash or with CYGWIN communication shells and termial multiplexers such as SSH/SFTP/TELNET/FTP/SCREEN. ‘proxyplink.exe’ allows to leave all details of SSH coding and all the options to developers of PuTTY.

Note

All Proxy32 Launchers have ToolTip text field.

ToolTip field is used to show user-provided tooltips when mouse pointer is hovering over the launcher node on the LauncherTree. In case of SHELL-TERMINAL, TELNET-TERMINAL, COMPORT-TERMINAL tooltip field contains title for newly created window of built-in terminal.

©2026, Sergey A Belous. | Powered by Sphinx 7.4.7 & Alabaster 0.7.16 | Page source


3. Terminal

3.1. Purpose

3.1.1. About author

I am Sergey A. Belous and this is my home page.

3.1.2. About Proxy32 software

In my free time I develop Windows software called Proxy32 (64-bit GUI executable written in C++). It helps me to organize and perform rather generic and routine computer tasks at work and at home. It is beneficial to have all kind of routine computer tasks neatly organized and always one click away for execution. Examples of routine computer tasks: start programs, open files, fill in the web forms (login/etc) or type complex parametric commands via remote desktop window or via console of virtual machine, especially, when copy/paste does not work. Please, see Table 1.1.1.

Note

Proxy32 functionality evolution.

Over the years (since 2001) functionality of Proxy32.exe software was evolving in different directions. It has started from original focus on development of custom-made automated terminal software that is well integrated with CYGWIN and overcomes many limitations of existing terminals. More recent development focus is on controlling external RemoteDesktop/VM_Console and WebBrowser windows in a manner similar to what can be achieved via AHK. Latest Proxy32 functionality is subset of functionality that one can achieve using AHK, but AHK requires learning the whole new programing language while Proxy32 is trying to employ more of GUI-driven approach for the subset of AHK functionality available.

3.2. Proxy32 built-in terminal

Proxy32 application has its own built-in terminal with the features that were desired at the time. That includes connectivity to modem (COMPORT) and telnet and telnet/TLS and direct interprocesss connectivity to dos cmd shell and to various CYGWIN shells. It also includes unlimited scroll buffer with regex search and bookmarking and autobookmarking capabilities. Another external terminal (possibly on remote machine) can connect via TELNET (possibly with TLS) or via COMPORT (possibly with BLUETOOTH) to Proxy32 built-in terminal and type commands into existing terminal session and see the responses coming to both local built-in terminal and to remote external terminal connected to local built-in terminal. That feature was named terminal session sharing and was widely popular at the time when Webex and needed network bandwith were not available for modern-style GUI screen sharing. Also at the time screen sharing over third party web-server probably would not play well from secirity standpoint.

Of course, the primary need to develop proprietary built-in terminal in Proxy32 was because such terminal has to be designed from ground up to be controlled via Launchers and via Proxy32 GUI. There are several types of Launchers (COMMAND, SCRIPT, I-SCRIPT, PLUGIN, I-PLUGIN, SHELL-TERMINAL, TELNET-TERMINAL, COMPORT-TERMINAL) that dedicate full or part of their functionality specifically to control Proxy32 built-in terminal.

3.3. General information

3.3.1. What is terminal emulator?

Functionality of the terminal includes at least three parts:

  • keyboard

  • screen

  • connection module that connects keyboard and screen to local or remote computer in order to send text commands from keyboard and to receive in response text of command execution results and show this text on the screen.

Standalone terminals implemented in hardware are practically replaced by the personal computers that are running software applications called terminal emulators. In such applications, terminal screen is represented by program window and terminal keyboard is represented by keyboard of personal computer. Term personal computer in this context also includes tablets and smart mobile phones.

In the terminal emulator software connection module allows to connect terminal either directly to the localy executed program for the text mode control of the local computer (local shell) or via protocols COM-PORT, TELNET, SSH, TELNET-TLS to the remotely executed program for the text mode control of the remote computer (remote shell).

Because of required compatibility with older eqipment and software and for the reason of standartization, Terminal emulator application has to mimic (emulate) the behavior of the old-style standalone terminal that once was implemented in hardware. Terminal emulator application should be able to recognize and execute all screen control commands (control sequences of bytes) that were supported by particular standalone hardware terminal that is being emulated. Most popular set of emulated commands belongs to standalone hardware terminal VT100 made by DEC. Very popular terminal emulator XTERM has expanded VT100 set of commands by its own commands, so the majority of modern terminal emulators claim to emulate XTERM command set. In reality, most of the the popular terminal emulators support not all but just a subset of XTERM commands. When terminal emulator software replaces actual standalone hardware terminal in existing multi-terminal systems, quality of terminal emulation may be of importance. When terminal emulator is connected to modern servers and telecommunication equipment, very small subset of XTERM commands is actually in use and quality of the emulation is rarely a critical issue.

3.3.2. Terminal screen scrollback buffer

Modern terminal emulators have large text screen scroll-back buffer where user can see all previous commands that were sent and all responses received to those commands. One can say, user can scroll back to see the history of executed shell commands and received responses. Size of the screen scroll-back buffer is expressed by number of lines of history that it can store.

Some terminal emulators have limited size of the screen scroll-back buffer (for example, some commercial terminal emulators have screen scroll-back buffer that can hold maximum of 128000 lines).

When user works with modern equipment via terminal, this equipment can send millions of lines of diagnostic information to the terminal screen. If terminal emulator has limited size of the screen scroll-back buffer, user may face situation when needed diagnostic information did not fit into screen scroll-back buffer and lost. While working with terminal emulator that has limited size of the screen scroll-back buffer, user has to turn on logging of terminal session to file. When needed diagnostic information did not fit into screen scroll-back buffer and lost, user will have to open file with the log of terminal session and start looking for needed diagnostic information in this file.

Due to growing complexity of the modern equipment, volume of diagnostic information that is sent to terminal screen is constantly increasing, so the size of the screen scroll-back buffer is one of the most important terminal features.

3.3.3. Search in the terminal scrollback buffer

If scrollback buffer has millions of lines in it there is a problem to find needed information in this buffer. If user knows how needed information looks like then he/she can give a text sample (search pattern) for the text search in the buffer as long as terminal emulator has a text search function implemented for scroll-back buffer. In most cases user doesn’t know exact sample of the text, one only knows a few pieces of such text. That is why contemporary terminal emulators allow user to give a sample for the text search not only as exact (literal) text string but also as specially coded text search pattern (with the help of the special language that allows to specify complex text search patterns). This language for coding text search patterns is called “regular expressions”. When text search doesn’t work for whatever reason user still has an option to scrollback in the terminal scrollback buffer manually to visually locate needed part of the diagnostic information.

When scrollback buffer holds millions of lines of diagnostic information, convenience of using scrolling in the scrollback buffer represents very important parameter of the terminal emulator.

3.3.4. Copy and paste via clipboard

Very often user has to enter long and repeating commands in which only small portion of the text is changing between consecutive commands. Or user has to enter commands that are contained in the text document. In such situations user can copy and paste the text of command via clipboard into terminal window instead of typing commands manually into terminal window via keyboard.

Also, very often diagnostic information that is already present on the terminal screen or in in scrollback buffer has to be copied selectively from terminal window to the text document for future reference. In order to do so user have to use copy and paste of the text via clipboard.

In most of the terminal emulators text selected in the scrollback buffer is automatically copied to the clipboard and when the text is being pasted to terminal window it is actually being sent to the remote computer as if this text has been typed manually from the keyboard of the terminal.

While working in the terminal often user spends most of the time executing copy and paste of the text to and from the terminal window via clipboard.

In some terminal emulators selected text from the terminal window’s scrollback buffer is not copied to the clipboard if the size of this selected text exceeds some undocumented limit. In such case one has to experiment to find out what is the maximum size of the text one can select in terminal window to copy selected text to the clipboard in one shot.

Similarly, in some terminal emulators it is possible to insert text from the clipboard into terminal window only if the size of the text in the clipboard does not exceed some undocumented limit. In such case one has to experiment to find out what is the maximum size of the text that one can paste from the clipboard to terminal window in one shot.

If user has to copy large amount of the text from the terminal window into the text document or from the text document into the terminal window then such undocumented limitation on the size of the buffer for copy and paste in the terminal window will significantly complicate and slow down the work and will cause large number of errors.

One of the most frequent errors while working with clipboard in terminal is pasting of the wrong text from clipboard into the terminal window because user thought that clipboard contains one text but in fact clipboard contains another text. This is happening because one doesn’t have a way to see content of the clipboard before one pastes text of the shell command from the clipboard into terminal window.

In some terminal emulators each operation of copy or paste via clipboard requires several steps (multiple pressing of the mouse or multiple selections from drop-down menus), and that may significantly slow down and complicate the work and also cause a lot of errors.

Convenience of the work with the clipboard (in particular, absence of limitation on the size of the buffer for copy and paste of the text, simplicity of the procedure of copy and paste of the text and also ability of the user to see content of the clipboard before performing the paste operation etc.) is one of the most important functions of the terminal emulator.

3.3.5. Sharing terminal session between multiple users

When working with the contemporary equipment user is very often required to involve a lot of support people, each of them being an expert on separate component of the equipment. To do so in contemporary terminal emulators there is a function that allows to share one single terminal session between many users. When using such a function terminal of the main user is connected directly to the remote equipment, and terminals of the assisting experts are connected to the terminal of the main user. In such a setup all users can send text commands from their terminal into the remote equipment (in turn) and all users can see in their terminals all command execution results.

Having function of sharing of single terminal session between many users is one of the most important characteristics of the contemporary terminal emulators.

Built-in Proxy32 terminal was designed to satisfy all discussed above requirements to modern terminal emulator.

3.4. Description of the Proxy32 built-in terminal

3.4.1. Capabilities of the built-in terminal

3.4.1.1. General information

To access built-in Proxy32 Terminal one simply needs to start Proxy32.

First, proxy32.exe executable will check if new installation or installation repair is needed:

  • if Desktop shortcut is pointing to executable located in it’s startup directory

  • if startup directory contains all necessary external files needed for successful execution

One of the installation checks is to verify that Proxy32 configuration is pointing to existing CYGWIN installation. If there is no pre-existing CYGWIN installation on local Windows computer, Proxy32 will install one for you.

After installation checks are completed Proxy32 application will start.

Window of the built-in terminal connected to the CYGWIN Bash shell is created in the workspace “Workspace0” every time Proxy32 starts. That is default configuration after installation. That can be changed later if not desired.

Upon start Proxy32 opens Workspace0 and looks for the first Launcher on Proxy32 LauncherTree. If the first Launcher on LauncherTree is of the type SHELL-TERMINAL with proxycygterm substring in configured shell command line, that SHELL-TERMINAL Launcher will be executed automatically. Execution of that SHELL-TERMINAL Launcher will create Window of built-in Proxy32 terminal connected to local CYGWIN Bash shell. To create one more window like this user can double click on that SHELL-TERMINAL Launcher to execute it again.

CYGWIN Bash is universal shell that controls local Windows computer (via commands: cd, pwd, ls, rmdir, cat, less, vi, rm, grep, mc etc), and also allows to invoke any CYGWIN communication shell (ssh, sftp, ftp, telnet) in order to control remote computers via connections created by CYGWIN communication shells.

In CYGWIN Bash terminal listed commands can be entered manually by user via terminal keyboard. Built-in Proxy32 terminal allows to automatically create and connect terminal window and to automate execution of the shell commands into such terminal window.

Terminal is created via execution of SHELL-TERMINAL/ TELNET-TERMINAL/ COM-PORT-TERMINAL Launcher on LauncherTree. Launcher is executed when user double-clicks on it.

  • SHELL-TERMINAL on execution creates Proxy32 terminal window connected to local Windows process, for example, CYGWIN bash, ssh, sftp, ftp, telnet

  • TELNET-TERMINAL (IPv4 only) on execution creates Proxy32 terminal window connected via telnet or telnet-tls protocol to remote computer/equipment

  • COM-PORT-TERMINAL on execution creates Proxy32 terminal window connected to local Windows COM-PORT (for example, real serial port or virtual COM-PORT created by Bluetooth device) and via such port terminal can control remote computer/equipment.

Automatic typing of shell commands into terminal window is possible via execution of COMMAND/SCRIPT/PLUGIN Launcher on LauncherTree.

Creation of COMMAND/SCRIPT does not require programmers skills. COMMAND is just a command string (intended to be typed into terminal window) configured in COMMAND Launcher on LauncherTree. SCRIPT is just a text file with command strings (intended to be typed into terminal window). SCRIPT File Name is referred by the SCRIPT/I-SCRIPT Launcher on LauncherTree.

Creation of PLUGIN Launcher requires programmers skills. PLUGIN is a local Windows process that is invoked by Proxy32 code via PLUGIN process start command line. PLUGIN process start command line is a string configured in the PLUGIN/I-PLUGIN Launcher on LauncherTree. For example, PLUGIN start command line can start external python interpreter and pass “python program” as a string argument on command line of the python interpreter.

PLUGIN process controls interaction of the Proxy32 terminal with remote equipment on behalf of the user:

  • PLUGIN reads terminal output from it’s STDIN

  • PLUGIN writes terminal input to it’s STDOUT

  • PLUGIN writes errors and progress information (to terminal screen directly) via it’s STDERR.

User cannot type to terminal via keyboard when PLUGIN process is running, terminal keyboard control is restored to user when PLUGIN process has finished or was killed.

PLUGIN code can be written in any programming language as long as programmer is able to code read/write operations for STDIN/STDOUT/STDERR byte streams of the PLUGIN process (which runs locally on the same Windows computer next to Proxy32 process).

For more details, please, refer to sections 3.4.2 Creating, connecting, disconnecting and re-connecting windows of the built-in terminal and 3.4.3.5 Automating work in the built-in terminal).

Another important feature of the built-in terminal is the ability to share terminal session with remote users. To achieve it, every window of the built-in Proxy32 terminal has built-in TELNET-TLS server. There is also capability to share terminal session over COM-PORT link or write PLUGIN for special type of sharing as needed.

If local user is working in the terminal with the local Bash shell and then invokes CYGWIN communication shell (ssh or telnet) from the local Bash prompt to connect to remote equipment, then such terminal session should not be shared with remote users. After session of communication shell is ended communication shell process is exiting and shared terminal is falling back to local Bash prompt on the computer where Proxy32 is running. That allows remote users to gain access to the Bash prompt of the shared terminal session and gain full access to the Windows computer on which shared terminal session is running. If the intent is to share with remote users only communication session with the remote equipment, then shared session should not have access to the local Bash shell on the computer on which shared terminal is running. Therefore, Proxy32 allows to connect built-in terminal not only to local CYGWIN Bash shell, but also directly to CYGWIN communication shells (ssh, telnet, ftp, sftp). In case of direct connection to communication shell, if connection to the remote equipment is lost then communication shell process is exiting and shared terminal is left not connected anywhere (instead of falling back to local Bash prompt, as it would be the case if communication shell was invoked from the local Bash prompt).

Proxy32 allows to connect new window of the built-in terminal and re-connect existing window of the built-in terminal to different sources: local shell (for example, for CYGWIN: Bash, screen, mc, ssh, sftp, telnet, ftp, for Windows: CMD, PowerShell, for PuTTY: Plink, PSFTP), TELNET or TELNET-TLS server or COM-PORT.

Built-in Proxy32 terminal allows to use TELNET-TLS (IPv4 only) protocol for both terminal session sharing and for connection to the remote equipment. TLS (Transport Layer Security) provides encryption of data, integrity protection and authentication of both ends of protected connection via Digital certificates. TLS part is implemented via calls from Proxy32 code to Windows SCHANNEL.DLL library. Proxy32 does not contain any encryption code of its own. Alternatively, CYGWIN contains ‘stunnel’ module that can wrap telnet connection into TLS using CYGWIN OpenSSL library.

Built-in Proxy32 terminal along with the menu has panel of controls (drop-down lists and buttons) to create comfortable environment for working in the terminal window and to simplify execution of the complex tasks.

Built-in terminal has:

  • unlimited scroll back buffer with line numbering;

  • unlimited “Copy” buffer for copying selected text from the scroll back buffer to clipboard or (if number of scrollbuffer lines in selection exceeds certain configurable threshold) to file;

  • 1MB “Paste” buffer to paste text from clipboard to terminal on single mouse click;

  • REGEX-based text search and literal-based text search with automatic bookmarking of the matching lines in the scroll back buffer; user can quickly jump between bookmarked lines in the scroll back buffer;

  • manual bookmarking of the selected lines in the scroll back buffer; user can quickly jump between bookmarked lines in the scroll back buffer;

  • built-in list of typed commands history with automatic bookmarking of typed commands in the scrollback buffer; user can quickly jump between bookmarked lines (with typed commands) in the scrollback buffer;

  • dual scroll bar (one fine and one coarse) to simplify navigation in the scroll back buffer when it contains tens of millions of lines;

  • clipboard content viewer (to ensure that clipboard contains needed command before pasting content of the clipboard to terminal with the single mouse click);

  • dedicated button to open terminal log file in the text editor of user’s choice. In addition Proxy32 has LogViewer dialog that allows to search through all accumulated terminal log files and open them in the text editor of user’s choice.

Controls of built-in Proxy32 terminal are covered in the subsequent sections in this chapter.

3.4.1.2. Controls in the built-in terminal window

Fig. 3.4.1 shows window of the Proxy32 built-in terminal. Such window is automatically created in the workspace “Workspace0” on every start of the Proxy32 and user can immediately start working in this window.

Fig. 3.4.1 Window of the Proxy32 built-in terminal

  1. Titlebar icon

    Clicking on it will open Window System menu (that contains Terminal menu as well). That is helpful when menu bar in terminal window is disabled (like in PuTTY, which does not use window menu bar but uses Window System menu instead).

  2. Red frame of active terminal

    Dragging terminal window frame with mouse will resize terminal window (with changing number of char rows and columns in terminal). While left mouse button is still pressed on terminal window frame, terminal will show tooltip with current number of character rows and columns in the terminal during re-sizing.

    Only one terminal window can be active (red window frame) at any given time. Active terminal window is where execution of COMMAND/SCRIPT/PLUGIN Launchers will be directed. To make window active, click on the titlebar or inside of that window.

  3. Titlebar

    Ctrl-RightClick on window title will show Window System menu (that contains Terminal menu as well).

    RightClick on window title will allow to edit terminal window title in-place. Changing window title by default restarts terminal log file with the new log file name matching new terminal window title.

    Title bar can be configured to be hidden to save screen space.

  4. Menubar

    Menu bar can be configured to be hidden to save screen space.

    Tooltips with description of menu item are shown by default when mouse is hovering over the menu item. When executing menu item in “What is This?” mode, Help page for the executed item will be shown instead of actually executing menu item.

  5. Work area

    Emulates xterm

    Ctrl-RightClick in work area will show Terminal menu

    Left click starts selection, right click extends it, selection is automatically copied to clipboard, middle click pastes from clipboard to remote host up to 1MB. Paste can optionally be configured as Ctrl-MiddleClick.

    Repeating LeftDoubleClick will first select alphanumeric word under mouse pointer, then word delimited by spaces and then the whole line.

  6. Fine scrollbar

    Scrollbar thumb of fine scrollbar does not reflect position of the terminal screen in the scrollbuffer. Fine scrollbar is intended to scroll in vicinity of the position that is previously set by coarse scrollbar. Fine scrollbar scrolls by one scrollbuffer line per every pixel of fine scrollbar thumb movement. To modify (increase) scrolling speed of fine scrollbar use modifier keys in any combinations:

    • Holding Left Shift key increases fine scrollbar scrolling distance 8 times (x8).

    • Holding Left Ctrl key increases fine scrollbar scrolling distance 32 times (x32).

    • Holding Left Alt key increases fine scrollbar scrolling distance 128 times (x128).

  7. Coarse scrollbar

    Scrollbar thumb of coarse scrollbar reflects position of the terminal screen in the scrollbuffer

  8. LauncherTree Favorites

  9. TLS on/off (for Terminal session sharing server)

  10. Terminal session sharing server TCP port number (TELNET or TELNET-TLS)

  11. List of terminals connected to Terminal session sharing server (TELNET or TELNET-TLS)

  12. List of bookmarks and search results for search in the terminal scrollback buffer

  13. List of automatically bookmarked commands in the terminal scrollback buffer

  14. Clipboard viewer

  15. Received data rate indicator/switch (for the terminal flow control)

  16. Button to manually bookmark selected line in terminal scrollback buffer

  17. Button to search in terminal scrollback buffer

  18. Button to clear search results list (for search in terminal scrollback buffer)

  19. Button to delete selected search result in the search results list (for search in terminal scrollback buffer)

  20. Button to go to next search result in the search results list (for search in terminal scrollback buffer)

  21. Button to go to previous search result in the search results list (for search in terminal scrollback buffer)

  22. Button to open terminal session log file in configured viewer (default is to open terminal log file in Notepad)

  23. “Connect/Disconnect” button

  24. “Disable autoscroll on receiving of the new data” button

  25. “Send received data only to the terminal log file, but not to the screen” button

  26. Absolute number of the first visible line (lines are numbered starting from the beginning of the scrollback buffer)

  • References 1,3-5 do not need any comments.

  • Reference 2 points to the red frame of the window of the built-in terminal. Such frame is indicating that this is active window in which user works.

  • References 6,7 point to two scroll bars (fine and coarse) in the terminal window. Using dual scroll bar is covered in section 2.1.3.

  • References 8-26 on Fig. 3.4.1 and references 27,28 on Fig. 3.4.2 are covering panel of controls of the built-in terminal.

  • Reference 8 is covered in sections 2.2.2, 2.5.3.1

  • References 9,11 are covered in sections 2.1.6,2.5.3.3

  • Reference 10 is covered in section 2.1.6

  • Reference 12 is covered in sections 2.1.4, 2.5.2

  • Reference 13 is covered in sections 2.1.4, 2.1.5, 2.5.2

  • Reference 14 is covered in sections 2.1.5,2.5.2

  • Reference 15 is covered in sections 2.1.7,

  • References 16-21 are covered in sections 2.1.4, 2.5.2

  • Reference 22 is covered in section 2.1.5

  • Reference 23 is covered in sections 2.1.6, 2.2.1, 2.2.4, 2.5.3.2

  • Reference 24 is covered in sections 2.1.3. 2.5.3.5

  • Reference 25 is covered in sections 2.1.5, 2.5.3.5

  • Reference 26 is covered in section 2.1.3

  • References 27, 28 are covered in section 2.5.3.2

While SCRIPT/PLUGIN is running clipboard viewer (reference 14 on Fig. 3.4.1) in the terminal window is replaced by “Kill” button (reference 27 on Fig. 3.4.2) and SCRIPT/PLUGIN progress indicator (reference 28 on Fig. 3.4.2). While SCRIPT/I-SCRIPT is running progress indicator shows percentage of SCRIPT/I-SCRIPT lines that are already executed relative to the total number of lines in the SCRIPT/I-SCRIPT file that is being executed. When PLUGIN is running progress indicator shows percentage of filling up of the PLUGIN input buffer. PLUGIN input buffer holds data received by terminal and that are still to be processed by PLUGIN.

Fig. 3.4.2 Window of the Proxy32 built-in terminal when SCRIPT/PLUGIN is running

  27. Kill SCRIPT/PLUGIN button (visible when SCRIPT/PLUGIN is running)

  28. SCRIPT/PLUGIN progress/buffer indicator (visible when SCRIPT/PLUGIN is running)

3.4.1.3. Scrolling in the built-in terminal

Remote equipment can use terminal in two modes:

  • serial mode, when cursor is moved only because remote equipment sends to terminal printable characters or tab, carriage return and new line characters;

  • full screen mode when remote equipment may directly specify to terminal new cursor coordinates or perform terminal operations that apply to the whole terminal screen, for example, scroll screen or erase screen.

Contemporary equipment mostly uses serial mode of terminal and that will be described below.

While terminal is used in serial mode new information appears in the bottom line of the terminal, if another line is needed it will be added in the bottom and all other lines will be moved upwards causing top visible line to disappear behind upper border of the terminal working area.

The information that was scrolled upwards and becomes invisible is not lost, but being saved in the so-called terminal scroll-back buffer. User can always look at the information in this buffer using scrolling mechanism in the terminal window. Terminal buffer can be imagined as infinite tape on which newly arrived lines are printed and each line is assigned sequential number starting from 0. During normal work in terminal in the terminal work-area user can see last line of the buffer and a few lines before it, that will fit into work-area. In the proxy32 built-in terminal number of the first line that is visible in terminal screen is shown in the small text window that is located in the right bottom corner of the terminal window (reference 26 on Fig. 3.4.1).

Scrolling in the terminal can be imagined as moving terminal screen forward and backward along the tape that represents terminal buffer, so that different groups of lines get visible via work-area of the terminal. For example, if currently number of first visible line is 100 and terminal screen height is 25 lines, then in the work-area user can see lines 100-124. If terminal is scrolled back to the beginning of the scrollback buffer, user will see first 25 lines of the buffer - lines 0-24.

There are three ways to scroll the buffer: use scrollbars, mouse wheel or keyboard commands.

Built-in Proxy32 terminal has two scrollbars: coarse (reference 7 on Fig. 3.4.1) and fine (reference 6 on Fig. 3.4.1).

Having two scrollbars helps when terminal scrollback buffer contains tens of millions of lines. To find needed information user will first use course scrollbar to get quickly into needed part of the scrollback buffer with the precision of tens or hundreds thousand of lines. Then user can use fine scrollbar to locate needed line.

Coarse scrollbar allows navigation across the whole terminal scrollback buffer. Fine scrollbar allows navigation in the scrollback buffer areas ranging in size from tens to tens of thousands of lines. Therefore, user can increase scrolling speed of the fine scrollbar on the fly.

  • When Left-SHIFT is pressed scrolling speed of the fine scrollbar is multiplied by factor 8,

  • when Left-CTRL is pressed scrolling speed of the fine scrollbar is multiplied by factor 32,

  • when Left-ALT is pressed scrolling speed of the fine scrollbar is multiplied by factor 128.

Scrolling speed modifier keys are working independently from each other, for example, when Left-SHIFT and Left-CTRL are pressed simultaneously scrolling speed of the fine scrollbar is multiplied by factor 8x32=256.

Mouse Wheel does exactly the same scrolling as the fine scrollbar does. That includes use of the Left-SHIFT, Left-CTRL and Left-ALT modifier keys to increase scrolling speed.

Pressing Shift-PageUP or Shift-PageDOWN will scroll one terminal screen UP (backwards in terms of buffer line numbers) or DOWN (forward in terms of buffer line numbers) accordingly, and those two key combinations are never sent to the remote equipment.

By default, arrival of the new information to the terminal screen will automatically scroll terminal buffer in such a way that last line of the buffer with the new information on it will be visible at the bottom of the terminal screen. User can turn off such “auto-scroll on the new data” by pressing red button (reference 24 on Fig. 3.4.1).

3.4.1.4. Bookmarking and text search in the scroll back buffer of the built-in terminal

When scrollback buffer already contains a lot of information and terminal user wants to start new set of tests or start new diagnostic procedure in order to find later the beginning of the printout of the new diagnostic procedures user may create the bookmark before the beginning of the new printout.

In order to do so before starting the tests user have to highlight with the left button of the mouse the last line in the terminal and press the button labeled “B” (Bookmarks - reference 16 on Fig. 3.4.1) on the button panel of the terminal window.

It will pop up the dialog for adding bookmark. In this dialog user can enter name of the bookmark and press OK button to add the bookmark to the drop-down list (reference 12 on the Fig. 3.4.1) that is located directly under button panel in the terminal.

This drop-down list keeps bookmarks created manually and also bookmarks created automatically as a result of text search in the terminal buffer. After creating bookmarks user can start running diagnostic procedure. When diagnostic procedure is finished user can select the bookmark from the list, as a result terminal will automatically scroll the buffer so that the last line before the beginning of the printout (the line that was bookmarked) will be located in the middle of the terminal screen and it will be highlighted. Using manually created bookmarks helps to easily separate one sequence of tests from another in the terminal buffer.

When every test generates large amount of the text information and user only interested in one or two lines in every test result, user can use the function of the text search in the terminal buffer. This function works as follows.

First user have to specify the range of the lines to perform the search. If user highlights on the terminal screen the area that contains one or more full lines then search will be performed only inside of those lines that are present inside selection. If selection does not contain one or more full lines then search will be performed through all the lines that are present in the terminal buffer. To start search user should press button “S” (Search - reference 17 on Fig. 3.4.1).

Search dialog will appear in which user can specify text search pattern that has to be contained in those lines that user wants to find. Text search pattern can be given both literally or with the help of special language that allows to create text search patterns (regular expressions). For example, if the user looks for the line PN offset = 64 PN chips (where 64 can be replaced by any number in another test result printout), then for literal search he/she can use the text search pattern PN offset = and for the regular expressions search he/she can use text search pattern PN offset = d+ PN chips, that will provide more precise search because it tries to match the whole line. d - means that there should be one decimal digit in this place in the matching text. d+ - means that there should be one or more decimal digits in this place in the matching text. After user specified text search pattern and pressed OK button in the search dialog search procedure will start going through all lines in the terminal buffer or through all highlighted lines in the terminal buffer and it will automatically create bookmarks for those lines that match given search pattern. Bookmarks will be placed into the drop-down list (reference 12 on Fig. 3.4.1), that is located immediately under the button panel of the terminal.

The name of the bookmark will be the text of the found line and in this name the part that is matching the search pattern will be highlighted. If there are too many of the search results only the first 5000 results will be placed into the drop-down list. If user opened the drop-down list he/she can see all search results simultaneously and that will look similar to the results of the grep UNIX command. When the user selects one of the search results in the drop-down list terminal will scroll its buffer so that bookmarked (matched) line will be shown in the middle of the terminal screen and the part that is matching the search pattern will be highlighted.

Results of the new search will be added to the drop-down list after the results of the previous search. To remove all search results (and bookmarks) from the drop-down list user have to press button C (Clear - reference 18 on Fig. 3.4.1). To remove particular search result from the drop-down list user has to select it in the drop-down list and then press button D (Delete - reference 19 on Fig. 3.4.1). To go to the next or previous search results in the drop-down list user have to press button N (Next - reference 20 on Fig. 3.4.1) or button P (Previous - reference 21 on Fig. 3.4.1) respectively.

Another drop-down list (reference 13 on Fig. 3.4.1) contains bookmarks for the lines on which user typed commands into terminal.

Those bookmarks are created automatically as user presses Enter key to initiate command execution.

3.4.1.5. Copy and Paste operations in the built-in terminal

After user has executed set of tests, looked at the results of those tests and found the results that he/she is interested in he/she may want to save results of some tests in the separate text document for the future reference.

If user wants to save the whole terminal session log then it’s easier to use terminal session log file that is by default saved on the disk and that can be opened in the text editor Notepad when user pressed the button L (Log - reference 22 on Fig. 3.4.1).

User can specify any other text editor as default viewer for the terminal session log files. In addition user can browse through terminal session log files of old terminal windows including those that were running in the past and that are currently closed. All terminal session log files kept by default in the log directory inside of Proxy32 startup directory. LogView dialog (that is invoked with the button LauncherTree-Toolbar-LogViewer-Button on the toolbar of the LauncherTree window) allows user to perform text search through all terminal session log files and also filter out those files by name or remove those files. In the same dialog user can assign text editor that will be used as a default viewer of the terminal session log files.

Terminal session log file is created by default automatically when terminal window is created. It contains title of the terminal window and the timestamp of the creation in its name. Changing the title of the terminal window either manually by user or automatically on the command from the remote computer will cause the terminal session log file to close and it will create new terminal session log file that will contain new title of the terminal window and the new creation timestamp in its name.

If user wants to receive a large amount of text information from the remote equipment without placing this text information into the terminal scroll back buffer then user can press blue button (reference 25 on Fig. 3.4.1) in order to do so. When blue button is pressed received information will be saved into terminal session log file but not into terminal scroll back buffer.

If user wants to save selectively only the part of the diagnostic information that was collected in the terminal scroll back buffer then user have to selectively copy needed information from the terminal scrollback buffer to the clipboard and then paste this information from the clipboard into the text editor.

Built-in Proxy32 terminal will automatically copy text to the clipboard when this text is selected in the terminal scrollback buffer. Text is selected by the mouse. Beginning of the selected area is marked by the left click, the end of the selected area is marked by the right click. To select small area of the text one can press left button of the mouse in the beginning of the selected area then drag the mouse pointer to the end of the selected area and then release the left button. After that one can use right click to extend selection area or to make it smaller because the right click will mark the new end of the selected area. Double click on the text in the terminal scrollback buffer will first highlight text that is limited by punctuation or by spaces inside of the line. On the second double click it will select piece of the text that is limited by spaces inside of the line. On the third double click the whole line of the text will be selected. Highlighted text will be automatically copied to the clipboard and it also can be seen in the window of the clipboard viewer (reference 14 on Fig. 3.4.1), that is located at the bottom of the terminal window. When needed text is selected in the terminal scroll back buffer user can insert this text from the clipboard into the text editor.

If user has selected text in the terminal scrollback buffer and this text is too large the system may not have enough memory to place this text on the system clipboard and copy operation will fail. To prevent this situation from happening Proxy32 will take size of the selected text in bytes and compare it with predefined threshold that is set by default to 100,000,000. If the size of the selected text exceeds predefined threshold Proxy32 will copy selected text not to the system clipboard but to the text file name of which will contain word selection and the date and time of its creation. File is placed to the same directory where all the files of terminal session logs are located. Name and path to that file will be shown in the window of the clipboard viewer (reference 14 on Fig. 3.4.1), so that user will be able to find it easily. If the size of the selected text does not exceed predefined threshold Proxy32 will copy selected text to the system clipboard.

On the older computers with old operational systems and with the small size of the memory or on the computers where user runs too many programs simultaneously system may not have 100,000,000 of bytes of memory to place the text to the system clipboard. Therefore, this threshold can be corrected by the user via menu “Settings/Initial Terminal Settings/Limit Max Size of Clipboard Selection/Edit ClipboardSelectionMaxSizeBytes” in the LauncherTree window. If the threshold is set right below the maximum size of the system clipboard, copy operation will never fail regardless of the size of the selected text.

User can disable use of this threshold via menu “Settings/Initial Terminal Settings/Limit Max Size of Clipboard Selection/Use ClipboardSelectionMaxSizeBytes” in the LauncherTree window. If this threshold is not in use Proxy32 will always try to copy selected text to the clipboard without checking the size of the copied text. By default this threshold is enabled.

When user pastes text from the clipboard this text is sent to the remote equipment to which terminal is connected. If terminal is not connected pasted text is ignored. User can see clipboard content before the paste operation in the window of the clipboard viewer (reference 14 on Fig. 3.4.1).

Maximum size of the text that can be pasted in one operation is limited by one megabyte. Paste operation can be performed with the help of the mouse, keyboard or via terminal menu.

When using mouse paste operation is performed by middle-click in the terminal working area. User can choose an option when paste with the middle mouse button will be executed only if the left CTRL key is pressed. When using keyboard paste operation is performed with the key combination Shift-Insert, this key combination will never be sent to the remote equipment. Menu Edit/Paste in the terminal window also performs text paste operation.

Drop-down list (reference 13 on Fig. 3.4.1) automatically accumulates bookmarks for the typed commands as user types those commands in the terminal.

When user selects any of those bookmarks, terminal will scroll in such a way that the line that contains selected command will be placed in the middle of the screen and the text of the command itself will be selected. On selection text of the command will be copied to the clipboard and after that user will be able to see text of the command in the clipboard viewer. To issue this command again user have to press middle button of the mouse to insert text of the command from the clipboard into the terminal and then press Enter key to initiate command execution on the server. Therefore, drop-down list (reference 13 on the Fig. 3.4.1) allows not only to find the beginning of the printout of the results of any of the previous commands but also to quickly repeat any of the previous commands.

Because the drop-down list (reference 13 on the Fig. 3.4.1) contains all history of executed in the terminal commands, user can open this list to see all history of executed commands. User might also want to save the content of this list to the clipboard or to clear the content of this list. This can be done via terminal menu “Edit/Commands History/Copy Commands History to clipboard” and “Edit/Commands History/Clear Command History”.

3.4.1.6. Sharing Terminal Session with Remote users

To allow many remote users work together in one shared terminal session terminal of the main user is connected directly to the remote equipment and terminals of the remote user’s connected to the terminal of the main user (refer to Fig. 3.4.3). In such configuration all users can send text commands from their terminals to the remote equipment (in turn) and all users can see command execution results in their terminals.

Fig. 3.4.3 Sharing Terminal Session with Remote users

To achieve this every new window of the built-in terminal has its own built-in telnet server. Remote users can connect to this telnet server in order to share terminal session that is running in this terminal window. Telnet server in each terminal window is using its own unique TCP port number in order to receive connection requests coming from telnet terminals of the remote users. Therefore, by choosing connection port number remote user can choose to which terminal window of the main user he/she will be connected.

By default, in Proxy32 when the new terminal window is created TCP port number for the built-in telnet server is selected from the list of available ports that is kept in the system. If several windows of the built-in terminal created one by one then TCP port numbers for those windows may happen to be sequential. When window of the built-in terminal is closed, TCP port number that is used by this window is freed and later can be assigned to one of the newly created windows. By default, user doesn’t have control over the port numbers assigned to the newly created terminal windows. When telnet server is located behind the firewall user can choose an option when every newly created window will try to use the same fixed initial port number, for example, 1300. If this port number is available, it will be used and if it is already assigned then window will try to use next port number, 1301. This process will continue by increasing port number by one every time until available port will be found and used. Next created terminal window will use the same algorithm for the port number selection. As a result, all newly created terminal windows will have port numbers in the range 1300 and above assuming that this port range is available in the system. User can turn on and off this port selection algorithm. Also, user can choose initial port number that is set by default to 1300. Those settings (Use Initial TSS port Number and Edit Initial TSS port Number) are located in the menu “Settings/Initial Terminal Settings/Terminal Session Sharing” in the LauncherTree window. Default value of the initial port number is selected for Windows XP. If Proxy32 is running on the other Windows operational systems initial port number may have to be corrected, so that its value will get into the range of the free ports that are available for use in this particular Windows operational system. To find out what initial port value to use on particular OS and PC, one can create terminal window with Use Initial TSS port Number setting disabled and see what port number is allocated by the system for the terminal. Port number allocated by the system can be used as good approximation for the value of the Initial TSS port Number. If Proxy32 is running behind the firewall port range that is used by the built-in terminal windows (in our example this is the port range starting from 1300 and above) has to be open in the firewall to let remote users connect to the shared terminal windows.

After terminal window is created, main user has to communicate port number of this window and also its own IP address to the remote user if main user wants remote user to connect to this window.

Port number that is being used by particular terminal window is shown in the drop-down list (reference 10 on the Fig. 3.4.1), that is located in the left bottom part of the terminal window.

This list contains port number for the telnet server of this window, all IP addresses of this computer, on which telnet server will accept connections, and also information about the protocol in use (telnet or telnet-TLS). When user selects an element in this list content of this element is copied to the clipboard to make it easier communication of the port number and IP address through the email/chat to the remote user.

User has an option to switch from using protocol telnet to using the protocol telnet-TLS (Transport Layer Security), when telnet traffic is protected from eavesdropping with the help of the TLS protocol. TLS protocol provides two-way authentication between client and the server with the help of the digital certificates. It also encrypts all the traffic that passes between client and the server in both directions. This is the same TLS protocol that is used by Internet Explorer and by the other web-browsers to protect user’s transactions when he/she purchases goods over the Internet.

When using external software (for example, CYGWIN program Stunnel) to protect telnet traffic that is created by the remote users connected to the terminal window, it may be necessary that built-in telnet server in the terminal window of the main user will accept only connections that are originated on the same computer on which terminal is running. In order to do so Proxy32 has an option that makes built-in telnet server listen for new connections only on the loopback IP address 127.0.0.1. Option to turn on or off protocol TLS and option that allows to receive new connections only on the loopback IP address are located in the menu “Settings/Initial Terminal Settings/Terminal Session Sharing” in the LauncherTree window.

Turning protocol TLS on and off can be done individually in every terminal window with the help of the button (reference 9 on the Fig. 3.4.1). Changing TLS on/off setting will have impact only on the new connections that are established after that setting was changed.

To configure TLS protocol one has to create or select and install digital certificates for authentication, also one can choose authentication and the encryption modes. For more details please see `[TLS Configuration Guide: Step-by-step](TLS Configuration Guide.html)`.

When remote users are connected to the terminal of the main user, main user has an option to switch any remote user into read-only mode (so that remote user cannot type and only can see on the screen the results of execution of the commands issued by other users) and back, and also disconnect any remote user (or all remote users) from the built-in telnet server. To perform these operations main user have to choose remote user in the drop-down list (reference 11 on the Fig. 3.4.1), and then select the operation in the menu “Contol/Sharing Terminal Session via TELNET or COM-PORT connections/BUILT-IN TELNET/TLS SERVER” in terminal window.

The same drop-down list allows main user to see which one of the remote users is typing commands into shared session at this moment. As soon as remote user starts typing commands, his/her IP address will be automatically selected in this list.

There is also an option to connect remote user to the terminal of the main user (to the shared session) via COM-PORT. If main user selects COM-PORT launcher on the LauncherTree and then does ctrl-right-click on the green button CONNECT/DISCONNECT (reference 23 on the Fig. 3.4.1), then terminal will open COM-PORT that is configurd in the selected COM-PORT launcher and will wait for the remote user’s commands from this COM-PORT, and also terminal will start sending commands execution results to the remote user through this COM-PORT.

To disconnect terminal from this COM-PORT user have to do ctrl-right-click on the green button CONNECT/DISCONNECT (reference 23 on the Fig. 3.4.1). Only one remote user can be connected to the terminal through COM-PORT. Number of the remote users that can be connected to the terminal through telnet server is not limited. Connecting remote user through COM-PORT may be needed when computer of the remote user and computer of the main user are connected to the different networks and they cannot communicate through IP protocol. COM-PORT connection between two computers can be made either with the physical cable or with the help of the Bluetooth connection.

3.4.1.7. Flow control in the terminal

Built-in Proxy32 terminal is receiving incoming data from the source and sending it to several recipients. In case when some or even one of the recipients is unable to receive incoming data in real time as they arrive, terminal has built-in mechanism of flow control to tell the data source to reduce the speed of incoming data to match the speed of the slowest data recipient.

Terminal can receive incoming data from the following sources: from remote TELNET server (if terminal is in TELNET mode) or from STDOUT/STDERR of local SHELL (if terminal is in SHELL mode) or from local COMPORT (if terminal is in COM-PORT mode). Multiple recipients are the remote users that are sharing this terminal session with the main user by connecting via TELNET, TELNET-TLS or COM-PORT to the terminal of the main user. Another example of the recipient is PLUGIN, which is external program that PLUGs-IN into terminal to receive incoming data from the source via existing terminal connection, to analyze this data and to present results of the analysis to the user on the screen of the terminal (and also, possibly, to send requests for more data to terminal data source.)

Main recipient of incoming data is terminal itself. Incoming data has to be processed by the terminal itself and shown on its own screen. This should be possible to do in the real time as long as there is enough of CPU resource left for Proxy32 execution on the local computer. If Proxy32 CPU usage exceeds 80%, flow control will automatically reduce the speed of all terminal data sources to the minimum to reduce CPU usage by all running built-in terminals. This slowdown is temporary until Proxy32 CPU usage will go below 80%.

If PLUGIN (child process) is running in the terminal, incoming data is passed to the STDIN of the PLUGIN process instead of being passed to the screen of the terminal. If PLUGIN is unable to process incoming data in the real time, Terminal will detect this situation and automatically kill the PLUGIN process assuming it is written poorly if it is unable to handle stream of incoming data as it arrives.

If remote users are connected to the Terminal Session Sharing (TSS) TELNET server and/or to the TSS COM-PORT, then Terminal has to tell to the data source to adjust the speed of incoming data to match the speed of the slowest client that is connected to the TSS TELNET server or TSS COM-PORT. Therefore, if one TSS client has very slow TCP or COM-PORT connection or it is running very slow terminal emulator software, it will slow everybody down until it is disconnected from TSS module.

Terminal has separate drop-down list (ref. 15 on Fig. 3.4.1) that allows to monitor changes of the maximum speed of incoming data source that are initiated by the flow control.

The same drop-down list also allows user to manually set (reduce) maximum speed of incoming data from the source when automatic flow control is not slowing down the source and maximum speed of incoming data from the source is shown as MAX.

3.4.2. Creating, connecting, disconnecting and re-connecting windows of the built-in terminal

3.4.2.1. Brief introductory information

Lets introduce basic concepts to help user navigate better in the material that will follow.

  1. Window of the built-in terminal with the CYGWIN Bash shell prompt is created automatically on every start of Proxy32.

  2. In Proxy32 one can create unlimited number of the windows of the built-in terminal and windows of external processes in every workspace.

  3. Windows of the built-in terminal are created via execution of the terminal launchers. Those launchers are created on the Launcher Tree in the floating window LauncherTree (Fig. 3.4.4).

Fig. 3.4.4 Example of the Launcher Tree

On the Tree launchers are represented by TreeNodes and use red circles as Node Icons A-icon12. They can be placed into subtrees (represented by SUBTREE TreeNode), that are similar to folders in browsers Favorites menu. On the Tree SUBTREE TreeNode has blue square icon. SUBTREE has two states that are indicated by the icon image: open C-icon12 and closed B-icon12. Tree can contain not only terminal launchers but also launchers to create windows of the external processes (for example: PuTTY, NotePad, FireFox etc) and launchers for automating work in the existing windows.

Launcher can be executed by double clicking on it in the LauncherTree window.

  4. Proxy32 has three types of launchers to create and connect window of the built-in terminal. Those types are named according to the terminal connection type: TELNET-TERMINAL launcher, COM-PORT-TERMINAL launcher and `[SHELL-TERMINAL](SHELL-TERMINAL.html)` launcher.

  • TELNET-TERMINAL launcher is using TELNET or TELNET TLS protocols to connect terminal to remote computer;

  • COM-PORT-TERMINAL launcher uses serial port protocol to connect terminal to remote computer;

  • `[SHELL-TERMINAL](SHELL-TERMINAL.html)` launcher uses inter-process communication (IPC) mechanism to connect terminal to various Windows and `[CYGWIN](https://www.cygwin.com/)` shells on local computer (for example: cmd, plink, psftp, PowerShell, CYGWIN bash/ssh/sftp/telnet/ftp/screen/mc):

    • To local shells cmd, plink, psftp Proxy32 terminal connects directly.

    • To local Windows PowerShell Proxy32 terminal connects via special wrapper application – `[proxywinconsole.exe](SHELL-TERMINAL.html#proxywinconsole.exe)`.

    • To local CYGWIN shells (bash/ssh/sftp/telnet/ftp/screen/mc etc) Proxy32 terminal connects via special wrapper application – `[proxycygterm.exe](SHELL-TERMINAL.html#proxycygterm.exe)`.annotated-terminal-picture-separate-copies-ref-23.pn

All local shells can be divided into universal shells and communication shells:

  • Via local communication shells plink, psftp, CYGWIN ssh/sftp/telnet/ftp Proxy32 terminal connects to remote computers.

  • Via local universal shells PowerShell, cmd, CYGWIN bash/screen/mc Proxy32 terminal can control local computer and also connect to remote computers by invoking local communication shells plink, psftp, CYGWIN ssh/sftp/telnet/ftp.

  5. To add new launchers to the LauncherTree there are button New (Fig. 3.4.4) on the toolbar of the floating window LauncherTree and built-in Proxy32 TreeNode Editor. Both will provide user with the templates to create new Launchers and to add them to the LauncherTree. Built-in Proxy32 TreeNode Editor is invoked via the right-click Popup menu in the LauncherTree floating window. Built-in Proxy32 TreeNode Editor can also be used to modify the launchers that are already present on the LauncherTree. Details on using button New and Proxy32 TreeNode Editor to add new launchers to the LauncherTree are covered in sections 2.3.—.

  6. Launcher configuration can be simple or parametrized:

– simple launchers store all values of the configuration parameters in

the launcher itself. For example, simple terminal launcher can contain port number, IP address, user name etc;

– parametrized launchers have some of the values of the configuration

parameters replaced by substitution parameters. Values of substitution parameters are supplied by user or stored outside of the launcher. On the execution of the parametrized launcher user will receive dialog window to enter values for the substitution parameters used in the launcher. For example, on the launch of the parametrized terminal launcher user will receive dialog asking to supply connection parameters.

  7. For creation and connection of the terminal window in Proxy32 instead of single launcher one can use pair of launchers that is comprised of terminal launcher and PLUGIN or I-SCRIPT launcher located immediately under terminal launcher. Such pair provide full automation of the login procedure, including automatically entering user name and password into terminal upon connection. Second launcher (PLUGIN or I-SCRIPT) is executed automatically when terminal created via terminal launcher is connected. This mechanism is referred to as AUTOLOGIN and it is covered in the section 2.2.6.

  8. Terminal window can be disconnected from the current connection. Disconnected terminal window can be connected again to any TELNET or TELNET-TLS server, COM-PORT or local SHELL using any existing TELNET-TERMINAL, COM-PORT-TERMINAL or SHELL-TERMINAL launcher. To disconnect and reconnect terminal window and for indication of the terminal connection state (terminal is connected or disconnected) one can use CONNECT/DISCONNECT button in the window of the built-in terminal (reference 23 on Fig. 3.4.1).

  9. In Proxy32 one can create launchers to automate work in existing terminal window (refer to section 2.4). Those are COMMAND, SCRIPT, I-SCRIPT, PLUGIN, I-PLUGIN launchers. Though, one can work in terminal without using those launchers, by typing commands manually into terminal window.

3.4.2.2. Ways to create and connect window of the built-in terminal

In Proxy32 one can create and connect window of the built-in terminal by executing terminal launcher ( COM-PORT-TERMINAL, TELNET-TERMINAL or SHELL-TERMINAL launcher). Such launcher is prepared in advance on the Tree in the LauncherTree floating window and executed by double-clicking on the launcher.

The initial Tree of the Launchers in the LauncherTree window is created during the installation of the Proxy32. This initial Tree contains launchers that are prepared in advance, so that user can start using them immediately. Later, user can add his/her own launchers to the Launcher Tree.

First launcher on the Launcher Tree is created during Proxy32 installation and designed to create window of the built-in terminal and connect it to CYGWIN Bash shell. This launcher is automatically executed on every start of Proxy32 (unless this launcher is deleted from the LauncherTree by the user) and creates CYGWIN Bash terminal in the workspace Workspace0. User can immediately start working in this terminal.

As shown on Fig. 3.4.4 this launcher has following command line:

proxycygterm.exe -s '/usr/bin/bash -i -l'

If one double-clicks on this launcher, then another CYGWIN Bash shell terminal will be created in the current workspace.

Similarly, to create new window of the built-in terminal and connect it to COM-PORT, TELNET or TELNET-TLS server or to any local Windows/CYGWIN shell, one can execute existing terminal launcher ( COM-PORT-TERMINAL, TELNET-TERMINAL, SHELL-TERMINAL) by double-click on such launcher in the LauncherTree floating window. Details on using button New and Proxy32 TreeNode Editor to add new terminal launchers to the LauncherTree are covered in sections 2.3.—.

Therefore, we have established that window of the built-in telnet terminal is created and connected on execution of the terminal launcher by double-clicking on this launcher on the Launcher Tree.

In addition, one can use button Favorites toolbars-menu-of-tree-bookmarks in the main window and button Favorites in the terminal widow (reference 8 on Fig. 3.4.1) to quickly create and connect window of the built-in terminal.

Proxy32 installation process creates on the launcher Tree SUBTREE named Quick Connect (Fig. 3.4.4) that contains launcher for creation and connection of the terminals. Proxy32 installation process places references to those launchers into the menu of the above mentioned Favorites buttons.

Fig. 3.4.5 shows menu that is invoked when one presses Favorites button in the menu bar of the main window. Pressing Favorite button in the window of the built-in terminal opens the same menu.

Fig. 3.4.5 Opened submenu Quick Connect in the menu of the Favorites button

The menu of the Favorites button has 10 submenus. To create new terminal one should open Quick Connect subsmenu. Proxy32 installation process creates initial set of favorites in this menu. As it was mentioned above, those favorites are the references to the launchers that are created in the LauncherTree during the installation of the Proxy32.

User can add his/her own launchers to the LauncherTree, and then those launchers can be added to Favorites menu so that they can be executed even when LauncherTree floating window is hidden.

To quickly create new window of the built-in terminal one should clcik on the favorite (reference to the launcher) in the submenu Quickconnect of Favorites button.

If both LauncherTree floating window and menu bar of the main window (that has Favorites button) are hidden, one can still create and connect new terminal windows using Favorites button in the existing terminal window. If one u.. code-block:: bash ses Favorites button in the main window, then one should first select the workspace and then create new terminal window. If one uses Favorites button in the existing terminal window, then one should first create new terminal window and then if needed move the new window to the desired workspace using button windowsmovemenu in the menu bar of the main window.

Therefore, in Proxy32 new window of built-in terminal can be created and connected by execution of the terminal launcher (SHELL-TERMINAL, TELNET-TERMINAL, COM-PORT-TERMINAL) directly on the LauncherTree, and indirectly by using references to the launcher in the menu of the Favorites button, that is present in the main window and in the terminal window.

In Proxy32 launchers can be used to create not only windows of the built-in terminal but also to create windows of the external processes (Notepad, PuTTY, FireFox etc). Proxy32 knows that it should create window of the built-in terminal by looking at the launcher type. There are three types of terminal launchers to create window of the built-in terminal - COM-PORT-TERMINAL, TELNET-TERMINAL and SHELL-TERMINAL. They all contain word TERMINAL in the type of the launcher.

When Proxy32 executes the launcher, it checks the type of the launcher and know that it has to create window of the built-in terminal in the current workspace. Then Proxy32 will look into the launcher configuration to extract connection information for the newly created terminal. How Proxy32 uses launcher configuration to connect terminal window is covered in details in sections 2.2.3, 2.2.4.

If user wants to create new connection then he/she has following choices:

  • create and connect new terminal window as described above using one of the terminal launchers: COM-PORT-TERMINAL, TELNET-TERMINAL and SHELL-TERMINAL. If connection attempt was unsuccessful, then newly created terminal window will be left not connected;

  • disconnect existing connection in any existing terminal windows with the button CONNECT/DISCONNECT (or use existing not connected terminal window) and then re-connect this terminal window using connection information from another terminal launcher (COM-PORT-TERMINAL, TELNET-TERMINAL or SHELL-TERMINAL) by middle-clicking on the CONNECT/DISCONNECT button after highlighting needed terminal launcher on the LauncherTree (refer to section — for the information on this button). Please, note that terminal title is taken from terminal launcher tooltip field only once when the window is first created but not on the re-connect of the existing window. If terminal is re-connected to another computer and user wants to change terminal title to reflect this change, user has to change terminal title manually using button — in the menu bar of the main window or by right-clicking on terminal title bar and editing title in place or using command Change Title of Terminal Window in the menu File of the terminal window. Details on changing title of the terminal window are covered in section —–. To check if existing terminal window is not connected user can check the color of the CONNECT/DISCONNECT button: if this button has dark green color then terminal window is not connected, if this button has bright green color then this window is connected and has to be disconnected from current connection before it can be re-connected somewhere else (refer to section ….).

  • if user is using existing CYGWIN bash terminal (that was launched on the Proxy32 start or user has started it by clicking on the SHELL-TERMINAL launcher), then he/she can invoke communication shell (ssh/sftp/telnet/ftp) from the Bash prompt to connect to the remote equipment. Communication shell can be invoked either manually, by typing command into terminal, or automatically, via one of the launchers COMMAND, SCRIPT, I-SCRIPT or PLUGIN. CYGWIN Bash shell allows both control local computer and invoke communication shells to control remote computers. .. code-block:: bash

Lets have a look at examples of how one can work with communication shells in the existing CYGWIN Bash terminal:

Option 1:

a) manually type (or copy and paste from the text file) command ssh belous@192.168.1.5 into terminal

b) manually type (or copy and paste from the text file) text test123 (password) into terminal

Option 2:

a) execute COMMAND launcher, that contains command ssh belous@192.168.1.5

b) execute COMMAND launcher, that contains text test123 (password) or type password manually into terminal

Option 3:

execute SCRIPT launcher, that refers to the SCRIPT file that contains command ssh belous@192.168.1.5 in the first line and text test123 (password) in the second line

Option 4:

execute I-SCRIPT launcher, that refers to the I-SCRIPT file that contains command ssh belous@192.168.1.5 in the first line and text test123 (password) in the second line. Both first and second line should also contain expected prompt and timeout values according to I-SCRIPT line format specs (refer to …)

Option 5:

execute PLUGIN or I-PLUGIN launcher that will first sent to the terminal command ssh belous@192.168.1.5 and then will send text test123 (password) into terminal.

3.4.2.3. Using launchers to create and connect windows of the built-in terminal

Proxy32 built-in terminal is connecting to the LOCAL SHELL, TELNET server or COM-PORT using information that is contained in the terminal launcher.

Fig. 3.4.6 shows LauncherTree with highlighted simple launcher that is used to create new SHELL-TERMINAL window and connect it to SSH server. Simple terminal launcher contains all connection information (parameter values) inside of itself.

Fig. 3.4.6 SHELL-TERMINAL launcher to connect built-in terminal to SSH server

As can be seen from the Fig. 3.4.6, this launcher has following format:

SHELL-TERMINAL: proxycygterm.exe -s '/usr/bin/ssh -o Port=22 -o User=belous 192.168.1.9'

First part of the launcher is the launcher type. In this case launcher type is SHELL-TERMINAL. SHELL-TERMINAL means that terminal will be connected to the local shell process.

Then after the colon follows launcher command line. SHELL-TERMINAL command line for CYGWIN shells will always start from launching CYGWIN wrapper (proxycygterm.exe) that provides interface between Proxy32 and CYGWIN shell (in this case - CYGWIN ssh shell).

On its command line proxycygterm.exe receives the information which CYGWIN shell should be launched and with which parameters. Command line for CYGWIN shell is passed to proxycygterm.exe after -s switch and included between single quotes (-s here stands for shell). This command line is shown below:

'/usr/bin/ssh -o Port=22 -o User=belous 192.168.1.9'

Above command line should be given in CYGWIN-style, as proxycygterm.exe is executed in the CYGWIN environment. This command line at the beginning contains full path to the ssh client (/usr/bin/ssh) which is given relative to CYGWIN root (/) and with CYGWIN-style path separator (/). After CYGWIN path to ssh client command line contains parameters for connecting ssh client to remote SSH server. Format of the parameters is described in ssh client documentation (`[OpenSSH SSH_CONFIG man page](http://man.openbsd.org/OpenBSD-current/man5/ssh_config.5)`). Parameters are given in the format parameter=value after -o switch (here -o stands for option).

  • Parameter -o Port=22 specifies TCP port number on which SSH server is waiting for connection.

  • Parameter -o User=belous specifies user name for connection to SSH server.

  • Mandatory parameter 192.168.1.9 specifies IP address of SSH server.

Initial title of the created terminal window is specified in the tooltips field of the terminal launcher. All other initial settings of the created terminal window (color, font, size, position etc) are taken from the Global Initial Terminal settings. After terminal is created user can change settings of the existing terminal window according to his/her taste using menu in this terminal window.

Note:

  1. Terminal window title can be changed later both manually by user (right click on the terminal window title to edit it in-place, terminal menu item File/Change Title of Terminal Window, button change-title in the main window, main window menu item Change Title of Selected Window) and automatically by command from the remote computer.

  2. Global initial terminal settings can be changed by user in two ways. First way - is to change global settings directly via menu Settings/Initial Terminal Settings in the LauncherTree window (reference). Second way - is to save settings of the current terminal window as global terminal settings. To do so, user should configure existing terminal window to his/her taste (color, font, size, position etc) using menu in this existing terminal window. Then one should save configured settings as global terminal settings using menu File/Save Terminal Settings in the current terminal window. After this all newly created terminal windows will mimic settings of the user-configured terminal window.

After terminal is created, depending on where terminal is connected, user may be asked to provide user name and/or password. CYGWIN bash terminal is ready for work immediately, but, for example, when CYGWIN ssh terminal is created and connected using simple launcher described above, CYGWIN ssh client will give user prompt to enter the password. After entering password user can start working in this terminal. If connection to particular SSH server is made for the first time, user should confirm public key of the SSH server.

Note:

Proxy32 can automatically enter password when terminal is connected. In order to do so along with terminal launcher should be used second launcher (of the type PLUGIN or I-SCRIPT) that should be located immediately below terminal launcher on the launcher tree. This additional launcher is automatically executed when terminal is connected and types user’s password into terminal. For details, please, refer to section 2.2.6.

3.4.2.4. Disconnect, re-connect and terminal state indication (button CONNECT/DISCONNECT)

Button CONNECT/DISCONNECT in the terminal window (reference 23 in Fig. 3.4.1) provides color indication of the terminal state (terminal is connecting, connected or disconnected), and also performs functions related to disconnecting and re-connecting terminal window and several other functions.

  • If there is no connection button CONNECT/DISCONNECT has dark green color.

  • In the process of establishing connection button CONNECT/DISCONNECT becomes bright green.

  • If connection is established successfully, button CONNECT/DISCONNECT stays bright green until connection will be broken by either side.

If there is an attempt to establish connection to the non-existent TELNET or SSH server, several second should pass (time-out) before connection to server will be declared failed. Until connection failed button CONNECT/DISCONNECT will stay bright green. When connecting to COM-PORT success or failure of the connection is determined quickly and intermediate changes in the color of the button CONNECT during connection establishment are not noticeable for the user.

Next we will discuss connecting terminal to the server though all that said below is also applicable for connection to COM-PORT and to local SHELL:

  • If terminal is connected successfully then appropriate message is shown in the terminal and button CONNECT/DISCONNECT in the terminal window changes its color from dark green to bright green.

  • If terminal connection attempt has failed then appropriate message is shown in the terminal and button CONNECT/DISCONNECT will have dark green color.

  • If user (after unsuccessful connection attempt or after server has disconnected from its side) wants to repeat connection attempt in the same terminal window using the same launcher, then user should press button CONNECT/DISCONNECT in the terminal window.

  • If user wants to disconnect from the server then user should press button CONNECT/DISCONNECT in the existing terminal window. Then appropriate message is shown in the terminal and button CONNECT/DISCONNECT in the terminal window changes its color from bright green to dark green.

  • If user wants to know to which server terminal is connected at the moment, user should right-click button CONNECT/DISCONNECT in the terminal window. Then Proxy32 will highlight on the LauncherTree terminal launcher that contains information about current connection. If floating window LauncherTree is hidden, user can make it visible by pressing button toolbars-hide-show-big in the menu bar of the main window.

  • If user wants to switch existing terminal window from one server to another, user should:

  1. If terminal is connected to the server then it should be disconnected first from the current server by left-click on the button CONNECT/DISCONNECT.

  2. On the LauncherTree one should highlight terminal launcher that contains information about connection to the new server. It is possible to highlight the launcher even if the floating window LauncherTree is hidden by using button Favorites (`[Favorite menu](LauncherTree Bookmarks.html)`). 3. In the terminal window one should middle click on the button CONNECT/DISCONNECT.

3.4.2.5. Using substitution parameters in the launchers for creation and connection of the built-in terminal windows

As it was noted above, Proxy32 uses launchers to create and connect terminal windows and to automate work in the terminal. Brief classification of the launchers is given in the section 2.2.1.

Lets have a look at the launchers that are used to create and connect terminal windows. These launchers can be simple or parametrized. Out of three types of the terminal launchers (SHELL-TERMINAL, COM-PORT-TERMINAL and TELNET-TERMINAL) only SHELL-TERMINAL launcher can be parametrized. Parametrized launchers have advantage that will be described next.

Simple launchers contain connection parameters immediately in their configuration. For example, simple launcher for creating terminal and connecting it to the SSH server contains in its configuration port number, IP address, user name etc. Configuration of such launcher and how to use it to create and connect SHELL-TERMINAL was covered in detail in section 2.2.3 of this chapter. This launcher has following configuration:

SHELL-TERMINAL: proxycygterm.exe -s ‘/usr/bin/ssh -o Port=22 -o User=belous 192.168.1.9′

Parametrized launchers contain special substitution parameters in place of the connection parameters.

Parametrized launcher can be created from simple launcher.

Lets consider two variations of the parametrized launcher based on the simple launcher.

Parametrized launcher 1:

SHELL-TERMINAL: proxycygterm.exe -s '/usr/bin/ssh -o Port=<PROXYPARM=Port> -o User=<PROXYPARM=User Name> <PROXYPARM=IP address>'

Parametrized launcher 2:

SHELL-TERMINAL: proxycygterm.exe -s '/usr/bin/ssh -o Port=<PROXYPARM=SSH Server port> -o User=<PROXYPARM=SSH server user name> <PROXYPARM=SSH server IP address>'

From the above examples we can see that in order to create parametrized launcher one should simply replace parameter value in the simple launcher by the substitution parameter.

Port number to connect to SSH server is configured in simple launcher as follows:

-o Port=22

In parametrized launcher 1 port number is configured as follows:

-o Port=<PROXYPARM=Port>

In parametrized launcher 2 port number is configured as follows:

-o Port=<PROXYPARM=SSH Server port>.

lets compare:

-o Port=22
-o Port=<PROXYPARM=Port>
-o Port=<PROXYPARM=SSH Server port>.

From the comparison one can see that in parametrized launcher particular value of the connection parameter from simple launcher (22) after equal sign is replaced by substitution parameter. Similar comparison can be made for other connection parameters of the compared launchers:

User=belous
User=<PROXYPARM=User Name>
User=<PROXYPARM=SSH server user name>.

Similarly:

192.168.1.9
<PROXYPARM=IP address>
<PROXYPARM=SSH server IP address>.

Substitution parameter in the launcher is included into angle brackets and contains mandatory fixed part PROXYPARM= in the beginning. While creating/editing the launcher user types name of the parameter after equal sign and up to closing angle bracket >. On launcher execution this parameter name will be given to user in the dialog where user will have to enter particular value for this parameter. Therefore, Port and SSH Server port in above launchers are names of the substitution parameters. Name of the substitution parameter is given by user during creation of the launcher. Indeed, in parametrized launcher 1 this name is Port, and in parametrized launcher 2 this name is SSH Server port.

When user request execution of such parametrized SHELL-TERMINAL launcher, Proxy32 will detect substitution parameter with the name Port (in parametrized launcher 1) or with the name SSH Server port (in parametrized launcher 2) and will ask user to supply or modify its value via dialog. Then Proxy32 will substitute new value (entered by user) into launcher configuration before executing the launcher.

Therefore, user will receive dialog window Fig. 3.4.7 for the parametrized launcher 1 and dilaog window Fig. 3.4.8 for the parametrized launcher 2. Fig. 3.4.7 and Fig. 3.4.8 show empty dialogs, and Fig. 3.4.9 and Fig. 3.4.10 show dialogs populated by user.

Fig. 3.4.7 Empty dialog window for parametrized launcher 1

Fig. 3.4.8 Empty dialog window for parametrized launcher 2

Fig. 3.4.9 Populated dialog window for parametrized launcher 1

Fig. 3.4.10 Populated dialog window for parametrized launcher 2

In dialog window each substitution parameter has parameter name and parameter value. Parameter name is given in the launcher configuration when launcher is created or edited (as described above), and parameter value is given by the user in the dialog during launcher execution. In the dialog Fig. 3.4.9 SSH Server port, SSH server IP address and SSH server user name are parameter names, that are automatically extracted from the configuration of the parametrized launcher 2 on its execution and substituted into the dialog that is given to the user. Against every parameter name in the dialog user can enter (assign) parameter values.

Lets see what advantages substitution parameters can give when they are used in the launchers.

Lets use following SHELL-TERMINAL launcher as an example:

proxycygterm.exe -s ′/usr/bin/ssh -o Port=22 -o User=belous 192.168.1.9′

On launcher execution CYGWIN TTY-interface wrapper proxycygterm.exe will start local CYGWIN OpenSSH ssh client and connect it to the server 192.168.1.9 on the port 22, using user name belous. If server 192.168.1.9 is one of the servers in the group of 8 redundant servers with IPs in the range 192.168.1.2 – 192.168.1.9, then user has to specify particular IP address every time before creating new terminal and connecting it to one of the 8 redundant servers. One can create 8 separate launchers with different IP addresses and use particular launcher for each of the 8 servers. Another possibility is to have single launcher and to edit this launcher every time before execution to type in required IP address.

To make things easier for the user we will introduce substitution parameter into launcher configuration. The launcher will look as follows:

proxycygterm.exe -s '/usr/bin/ssh -o Port=22 -o User=belous <PROXYPARM=IP address of standby server>'

In this launcher <PROXYPARM=IP address of standby server> is substitution parameter.

When user requests execution of such SHELL-TERMINAL launcher, Proxy32 will detect substitution parameter with the name IP address of standby server and ask user to supply or modify its value via dialog (Fig. 3.4.11). Then Proxy32 will substitute new value of the IP address into launcher configuration before its execution.

Fig. 3.4.11 Populated dialog window for substitution parameter <PROXYPARM=IP address of standby server>

Depending on the task performed by launcher, launchers can contain several substitution parameters. The more substitution parameters are present in the launcher configuration, the more lines will be in the dialog that user will receive when execution of the launcher is requested. This is illustrated by Fig. 3.4.7 - Fig. 3.4.11. After user typed in all parameter values in the dialog, he/she can press OK button to start execution of the launcher.

Every parameter value that is entered by user via dialog will stay in the memory until Proxy32 is closed (if dialog is closed by OK button). This value will appear in the dialog during next execution of the launcher and user can edit it before pressing OK button.

If in the parametrized launcher 1 or 2 one should change only IP address, there is no need to enter all other parameter values as they have already been entered during previous execution of this launcher.

Parameter value entered by user in the dialog will also appear in the dialog during execution of any other launcher if such launcher contains substitution parameter with the same name.

To make entered values appear in the dialog after the next start of Proxy32, user should set check mark Save on exit in the dialog against those parameters that are to be saved.

If one will set both Save on Exit and Don’t ask again check marks for all parameters in the dialog, then dialog will not appear on the next execution of the launcher and launcher will be executed with parameter values that were entered via dialog before. Launcher will be executed with the values that were saved on exit. That may be convenient in some cases.

Button File invokes dialog to select file on the disk. When user selects file in this dialog, path to the file is substituted into the text field of parameter value. This may be helpful when parameter should contain path to the file.

For example, OpenSSH ssh client can take all connection parameters from the configuration file. In Proxy32 configuration file can be passed to the ssh client via substitution parameter. Path to configuration file, that is passed via substitution parameter, can be entered not manually but via file selection dialog that is opening when button File is pressed.

For example, ssh connection launchers that have all connection parameters in the configuration file would look as follows:

proxycygterm.exe -s ′/usr/bin/ssh -F /home/belous/my_ssh_config_file_1 192.168.1.9′
proxycygterm.exe -s ′/usr/bin/ssh -F /home/belous/my_ssh_config_file_2 192.168.1.9′

Parametrized launcher that allows to pass different configuration files to ssh program via substitution parameter would look as follows:

proxycygterm.exe -s ′/usr/bin/ssh -F <PROXYPARM=ssh_config_file> 192.168.1.9′

During execution of this launcher user will receive dialog with one line that contains substitution parameter named ssh_config_file. One can type path to the file manually into parameter value field. Alternatively, one can press File button, select needed file in the dialog and watch path to this file populating parameter value field.

Six buttons in the top part of the dialog apply to the dialog as the whole, rather then to individual parameters.

When OK button is pressed, parameter values are substituted into the launcher (and saved to memory).

When “Cancel” button is pressed, launcher is not executed (terminal will not connect) and all changes to the values of the parameters that are made in this dialog will not be saved.

When pressing Save to file button Proxy32 will save to file list of parameters and their values from the dialog window. Password (<PROXYPASSWORD=…>) values are encrypted when written to disk, so they cannot be seen by viewing the file. Later list from the file can be loaded to the dialog with the button Update from file. When list is loaded into dialog with the button Update from file password (<PROXYPASSWORD=…>) values are decrypted.

When pressing Save to file (no encryption) button Proxy32 will save list of parameters and their values from the dialog window to file. Password (<PROXYPASSWORD=…>) values are written to disk in open text, so they can be seen when viewing the file. Later list from the file can be loaded to the dialog with the button Update from file (no decryption). When list is loaded into dialog with the button Update from file (no decryption) password (<PROXYPASSWORD=…>) values are not decrypted.

All launchers are saved in the LauncherTree and can be used multiple times. Substitution parameters allows user to modify launcher configuration immediately before its execution, to adapt it to the current task. Therefore, launcher for terminal window creation can be used many times to create new terminal windows (next time user can enter in dialog another server IP address and another port etc). In other words, parameters substitution occurs on every execution of the launcher. Such launcher can be passed to another user (on another computer). Then another user can enter his user name, password, IP address and port when creating terminal window.

3.4.2.6. AUTOLOGIN and passwords

When password is entered into terminal on terminal connection, regardless of the way the the password is entered (manually, via copy and paste, via automation launchers COMMAND, SCRIPT, I-SCRIPT, PLUGIN or via terminal launchers SHELL-TERMINAL, COM-PORT-TERMINAL и TELNET-TERMINAL) password is not visible on the terminal screen.

Though in simple launchers (section 2.2.3), that are not using substitution parameters, password will be visible in the text of the launcher shown on the LauncherTree (or in the file related to the launcher). If password is supplied via substitution parameter PROXYPARM (refer to section 2.2.5), it can be seen in parameter value text field in the dialog and also in the parameter file on the disk.

That is why proxy32 uses special substitution parameter PROXYPASSWORD to substitute passwords into the launchers. When using this substitution parameter password will not be seen in open text. When password is entered in dialog it will be represented by dots, and it is also not seen in launcher representation on the LauncherTree. If password is saved to disk in parameter file, its value will be encrypted. PROXYPASSWORD is described in more detail in section —.

If configuration of the connection launcher allows to supply password on the command line, password into such launcher should be substituted using PROXYPASSWORD substitution parameter.

SHELL-TERMINAL launchers for Plink and Psftp allow to specify user name and password on the command line.

SHELL-TERMINAL: plink.exe -ssh -P 22 -l belous -pw mytestpassword 192.168.1.9

In such a launcher password is seen in open text on the LauncherTree.

SHELL-TERMINAL launcher for connection via the Plink communication shell using substitution parameter PROXYPASSWORD for password and substitution parameter PROXYPARM for user name will look as follows:

SHELL-TERMINAL: plink.exe -ssh -P 22 -l <PROXYPARM=User Name for ssh server> -pw <PROXYPASSWORD=Password for ssh server> 192.168.1.9

On execution of such launcher user will have to enter in the dialog window (Fig. 3.4.12) user name as the value of PROXYPARM substitution parameter and password as the value of PROXYPASSWORD substitution parameter. Password in this dialog is shown with the dots while in terminal on connection user name and password will be supplied automatically as part of the Plink built-in automatic login (AUTOLOGIN).

Fig. 3.4.12 Dialog window to enter values for above command line

Even in the cases when username and password cannot be supplied as a part of command line of the terminal launcher, Proxy32 still allows for automatic entering of username/password on creating and connecting terminal window (AUTOLOGIN).

To achieve this one has to use a pair of launchers. First launcher is used to create and connect terminal window. Second launcher executes PLUGIN or I-SCRIPT designed to perform AUTOLOGIN in the terminal window created and connected by the first launcher. Second launcher (of the type PLUGIN or I-SCRIPT) should be located immediately under the first launcher (of the type SHELL-TERMINAL, TELNET-TERMINAL or COM-PORT-TERMINAL)

On execution of the terminal launcher (SHELL-TERMINAL, TELNET-TERMINAL or COM-PORT-TERMINAL) it will first create terminal window and connect it to local shell, TELNET server or COM-PORT. Then it will search for the next launcher on the launcher tree that is located immediately under itself, and if such launcher has the type of I-SCRIPT or PLUGIN, it will be automatically executed to complete login procedure.

AUTOLOGIN I-SCRIPT or PLUGIN contain substitution parameters. This allows user to supply/modify user name and password immediately before execution of the pair of launchers, consisting of terminal launcher and AUTOLOGIN I-SCRIPT or PLUGIN.

When terminal is disconnected and re-connected again with CONNECT/DISCONNECT button, using the same launcher pair, then on such re-connection attempt parameter substitution and automatic execution of AUTOLOGIN I-SCRIPT or PLUGIN performed the same way as it is done on creation of the terminal window.

When creating SHELL-TERMINAL with the New button on the toolbar of the LauncherTree floating window user can use the checkmark do select whether to add pre-configured I-SCRIPT or PLUGIN launcher for AUTOLOGIN, and also user can supply name of the substitution parameter PROXYPASSWORD (but not the password itself!). When adding launchers with Proxy32 TreeNode Editor user can also insert I-SCRIPT or PLUGIN launchers for AUTOLOGIN. It is described in more details in section 2.2.7

Depending on the communication shell that is used in the SHELL-TERMINAL, AUTOLOGIN can be performed in different ways.

Plink (in ssh mode) and Psftp allow to supply user name and password on their command line in the SHELL-TERMINAL, so there is no need to add separate AUTOLOGIN I-SCRIPT or PLUGIN launcher (pls, see example above).

CYGWIN OpenSSH ssh/sftp clients allow to supply user name on their command line in the SHELL-TERMINAL, but they do not allow to supply password on the command line. Therefore, separate AUTOLOGIN I-SCRIPT or PLUGIN launcher is needed to automatically type password into terminal in order to complete login procedure.

CYGWIN telnet and ftp clients do not allow to supply user name and password on their command line in the SHELL-TERMINAL. Therefore, separate AUTOLOGIN I-SCRIPT or PLUGIN launcher is needed to automatically type user name and password into terminal in order to complete login procedure.

TELNET-TERMINAL and COM-PORT-TERMINAL launcher do not allow to supply user name and password. Therefore, separate AUTOLOGIN I-SCRIPT or PLUGIN launcher is needed to automatically type user name and password into terminal in order to complete login procedure.

Details on using AUTOLOGIN when connecting terminal to CYGWIN ssh/sftp/telnet/ftp communication shells are covered in detail in section `[AUTOLOGIN](AUTOLOGIN.html)`.

The pair of SHELL-TERMINAL launcher and AUTOLOGIN (I-SCRIPT/PLUGIN) launcher that was described above is also used when user is creating and connecting terminal window via Quick Connect sub-menu that is accessible via Favorites button (refer to section —). As it was said in section —, Quick Connect submenu (that is accessible via Favorites button) contains references to the terminal launchers, that are located in the Launcher Tree floating window in the subtree named Quick Connect. During installation of Proxy32 those launchers are created on the LauncherTree in the Quick Connect subtree, while references to those launchers are placed into Quick Connect submenu (that is accessible via Favorites button in the main window and in the terminal window).

Fig. 3.4.13 Open subtree Quick Connect with referenced terminal launcher and AUTOLOGIN PLUGIN launcher

On Fig. 3.4.13 in subtree QuickConnect second and third launcher are constituting a pair (second launcher creates ssh terminal and connects it and third launcher is finishing login procedure by sending password into terminal).

On Fig. 3.4.13 in subtree QuickConnect is open and one can see all terminal launchers (SHELL-TERMINAL) and following them AUTOLOGIN PLUGIN launchers.

Consider following launcher to create ssh connection (upper reference on Fig. 3.4.13):

SHELL-TERMINAL: proxycygterm.exe -s '/usr/bin/ssh -o Port=<PROXYPARM=SSH server port> -o User=<PROXYPARM=SSH server user name> <PROXYPARM=SSH server IP address>'

It contains substitution parameters PROXYPARM to connect terminal window (IP address, port and user name), and following PLUGIN launcher uses substitution parameter PROXYPASSWORD and automatically enters password into terminal.

perl -e '
use Win32;
$a="";while(){sysread STDIN,$_,10000;syswrite STDERR,$_;$a.=$_;last if $a=~/assword:|yes\/no/;}
if($a=~/yes\/no/)
    {
    my $iRetCode = Win32::MsgBox($a, 4, q{Never connected before to this server!});
    if($iRetCode == 6)
       {
       syswrite STDOUT,\'yes\';syswrite STDOUT,"\r\n";
       $a="";while(){sysread STDIN,$_,10000;syswrite STDERR,$_;$a.=$_;last if $a=~/assword:/;}
       }
    else
       {
       exit(0);
       }
    }
syswrite STDOUT,\'<PROXYPASSWORD=SSH server user password>\';syswrite STDOUT,"\r\n";
'

Extracted from PERL one-liner with quote escapes removed:

use Win32;
$a="";while(){sysread STDIN,$_,10000;syswrite STDERR,$_;$a.=$_;last if $a=~/assword:|yes\/no/;}
if($a=~/yes\/no/)
    {
    my $iRetCode = Win32::MsgBox($a, 4, q{Never connected before to this server!});
    if($iRetCode == 6)
       {
       syswrite STDOUT,'yes';syswrite STDOUT,"\r\n";
       $a="";while(){sysread STDIN,$_,10000;syswrite STDERR,$_;$a.=$_;last if $a=~/assword:/;}
       }
    else
       {
       exit(0);
       }
    }
syswrite STDOUT,'<PROXYPASSWORD=SSH server user password>';syswrite STDOUT,"\r\n";

On execution of such launcher pair (terminal launcher and PLUGIN launcher) user will receive dialog window for the launcher pair to substitute connection parameters and password (Fig. 3.4.14 and Fig. 3.4.15). Those figures show empty and filled dialog windows. Connection process in the terminal created and connected by such pair of launchers is shown in Fig. 3.4.16.

Fig. 3.4.14 Empty dialog window for the pair of launchers (terminal launcher and PLUGIN launcher)

Fig. 3.4.15 Filled dialog window for the pair of launchers (terminal launcher and PLUGIN launcher)

Fig. 3.4.16 Terminal connection process for the pair of launchers (terminal launcher and PLUGIN launcher)

3.4.3. Creating launchers for Proxy32 built-in terminal

Proxy32 has launcher types for creating and connecting windows of built-in terminal (SHELL-TERMINAL, TELNET-TERMINAL and COM-PORT-TERMINAL) and launcher types (LAUNCH and VIEWER) for creating and capturing of windows of external processes (such as Putty, Notepad, browser etc). Proxy32 also has launcher types to automate work in connected terminal window (COMMAND, SCRIPT, I-SCRIPT, PLUGIN and I-PLUGIN, refer to section … ). All launchers can be created on the LauncherTree and also, references to the most frequently used launchers can be placed into the menu of the button Favorites (refer to section …).

Next (in section 2.3) we will take a detailed look at creation of the launchers for the Proxy32 built-in terminal (SHELL-TERMINAL, TELNET-TERMINAL and COM-PORT-TERMINAL).

To create or edit any launchers including terminal launchers Proxy32 has TreeNode Editor.

SHELL-TERMINAL launchers differs from TELNET-TERMINAL and COM-PORT-TERMINAL launchers because they have more complex configuration. On command line of such launcher (for example, SHELL-TERMINAL launcher for ssh connection) can be given almost unlimited number of options (parameters) and those parameters can take many different values. In such launchers it is very convenient to use substitution parameters, because it is easier to change the value for one of the many command line parameters via substitution in existing launcher rather than create brand new launcher for such parameter change.

TELNET-TERMINAL и COM-PORT-TERMINAL launchers contain limited number of options and values for those options can be defined in advance. Those launchers have simpler configuration and they are easier to create.

Therefore, approach to creation of SHELL-TERMINAL launchers is slightly different from approach to creation of TELNET-TERMINAL and COM-PORT-TERMINAL launchers.

In addition to Proxy TreeNode Editor there is a New button on the toolbar of the LauncherTree floating window. That button is flashing by green light (refer to Fig. 3.4.17). Button New is intended for beginners to simplify the task of creation of the complicated launchers and to provide an understanding (via example) of how this should be done in Proxy32. This button will invoke templates for creation of the SHELL-TERMINAL launchers.

Fig. 3.4.17 Button New of the floating window LauncherTree

Lets have a look at how SHELL-TERMINAL launcher can be created with templates.

3.4.3.1. Creating SHELL-TERMINAL launchers with the “New” button

When button New is pressed, dialog window will appear (Fig. 3.4.18). On the left side of this dialog window there is a list of the names of various launcher creation templates that are provided by this dialog. Most of the terminal creation templates will add sophisticated SHELL-TERMINAL launcher to the LauncherTree. When one selects name of the launcher creation template on the left, the template itself will appear on the right side of the dialog.

Fig. 3.4.18 Dialog window with selected CYGWIN Bash Terminal template

Fig. 3.4.18 is showing dialog window with selected CYGWIN Bash Terminal template. This is the simplest launcher creation template. To create launcher and add it to the LauncherTree user should supply name for the launcher and press Add button. This name will be placed into tooltips field of the created launcher and (from there) into the title of all terminal windows created by the execution of this launcher. The way added launcher will look on LauncherTree will depend on selected LauncherTree display mode. By default, launcher tooltip field is used as the body of the launcher representation on the LauncherTree, while launcher configuration is shown in the floating popup tooltip window when mouse pointer is hovering over the launcher. This default setting is chosen for the beginners to hide configuration of the launcher and to show just the name of the launcher on the LauncherTree. For the advanced users another display mode may be more convinient. In this mode launcher configuration and launcher tooltip field will switch places - launcher configuration is used as the body of the launcher representation on the LauncherTree, while launcher tooltip field is shown in the floating popup tooltip window when mouse pointer is hovering over the launcher. Pressing button [image] on the toolbar of the floating window LauncherTree will toggle between the two ways the launchers are displayed on the LauncherTree (refer to fig. 9,10 in `[Introduction](Introduction.html)` section).

Lets look how to create more complicated SHELL-TERMINAL launcher with the help of the New button using Cygwin ssh terminal launcher creation template as an example. Lets select Cygwin ssh terminal on the left side of the dialog window (Fig. 3.4.19).

Fig. 3.4.19 Dialog window with selected Cygwin ssh terminal template

On the right side we will see the template to create launchers for the ssh terminal. This template has text fields for the IP/hostname, port number and user name. One should fill those fields first. Then selection should be made with the check mark on whether to use special script to automatically enter password when terminal is connecting to the ssh server. If the check mark is set, then user should enter the name for the PROXYPASSWORD substitution parameter (but not the password itself!) that will store the password value. PROXYPASSWORD substitution parameter unlike the PROXYPARM substitution parameter is intended for storing the password, because it will provide confidentiality. It is described in more detail in section 2.2.6. Name of the substitution parameter one can choose arbitrarily (refer to section 2.2.5) but the ultimate goal is to provide clear idea what kind of information is stored in this parameter. If the check mark is not set, added launcher will be created using other fields in the template. But during execution of such launcher, after terminal is created and connected user will have to type password into terminal manually to complete login to ssh server.

At the bottom of the dialog window there are text fields for entering terminal window title (launcher tooltip) and name and tooltip for the SUBTREE (LauncherTree Folder). Those names are given by the user.

After filling in all necessary fields user should press button Add to add new SUBTREE with created terminal launcher at the end of the LauncherTree (launcher for Cygwin bash terminal is added to the LauncherTree without creating SUBTREE). If the check mark was set in the template to add AUTOLOGIN script, then added SUBTREE will contain a pair of the launchers: terminal launcher and then immediately under terminal launcher there will be AUTOLOGIN PLUGIN launcher (refer to section …) that is automatically executed after execution of the terminal launcher to type password into the terminal. To execute such a pair of launchers one should double-click on the terminal launcher. AUTOLOGIN PLUGIN launcher will be executed automatically at the right moment after execution of the terminal launcher (refer also to section 2.2.6).

After adding a launcher dialog is not closing automatically. User does not have to close the dialog right away, but instead can continue working with launcher creation templates. One can edit content of the fields in the current template to add modified launcher to the LauncherTree next to the previously added launcher. Or one can select another template on the left side of the dialog to work on adding different kind of launcher to the LauncherTree next to the previously added launcher. Every time user enters texts in the template fields and presses Add new launcher is added to the LauncherTree next to the previously added launcher. Therefore, one can create the whole lot of launchers before closing the dialog window. This can save a lot of time, as user does not have to press New button every time to create next launcher in the group.

3.4.3.2. Creating SHELL-TERMINAL launchers with Proxy32 TreeNode Editor

Proxy32 TreeNode Editor is intended for creation and modification of launchers by advanced user who is familiar with launcher configurations. Editor is invoked by right click on the empty space in the LauncherTree or on the launcher in the LauncherTree. In both cases LauncherTree popup menu will appear and user should select submenu ADD TreeNode (Fig. 3.4.20 and Fig. 3.4.21). Content of the submenu ADD TreeNode is shown on Fig. 3.4.22.

Fig. 3.4.20 LauncherTree popup menu when right-clicking on the empty space in the LauncherTree

Fig. 3.4.21 LauncherTree popup menu when right-clicking on the launcher in the LauncherTree

Fig. 3.4.22 Content of the submenu ADD TreeNode

If user selects command Add SHELL-TERMINAL TreeNode in the the submenu ADD TreeNode (Fig. 3.4.22), dialog window of the SHELL-TERMINAL editor will appear with the pre-configured text for creation of CYGWIN bash terminal launcher (Fig. 3.4.23), and launcher that is being added will appear on the LauncherTree. If SHELL-TERMINAL editor is exited by pressing Cancel button, then added launcher will disappear from the LauncherTree. If SHELL-TERMINAL editor is exited by pressing OK button, then added laucher will stay at the bottom of the LauncherTree. If submenu ADD TreeNode was invoked by the right-click on the empty space in the LauncherTree, new launcher will be added at the end of the LauncherTree. If submenu ADD TreeNode was invoked by the right-click on the existing launcher, new launcher will be added under right-clicked launcher instead of being placed at the end of the LauncherTree. If the right-clicked launcher is SUBMENU, then new launcher will be added inside of the SUBMENU if the SUBMENU is open and under the SUBMENU if SUBMENU is closed.

Fig. 3.4.23 Window of SHELL-TERMINAL editor

Pre-defined text for creation of the CYGWIN bash terminal that is present in the command line field of the SHELL-TERMINAL editor can be used as the template for creation of different SHELL-TERMINAL launchers. To configure a call to another CYGWIN program user should only modify text of the CYGWIN shell command line (‘/usr/bin/bash -i -l’) that is present in the single quotes after the mandatory part ``proxycygterm.exe -s ``. Mandatory part ``proxycygterm.exe -s `` is needed to provide interface between SHELL-TERMINAL and CYGWIN TTY on which CYGWIN shell will be started. Also, user can insert additional text using buttons at the top of the editor window.

There are three buttons at the top of the editor window:

  • Insert new parameter/password,

  • Insert existing parameter/password,

  • Select Plugin/Application to start.

Pressing button Insert new parameter/password invokes dialog window with the list of the substitution parameters that can be used in the launchers (Fig. 3.4.24).

Fig. 3.4.24 Dialog window Insert new parameter/password

Only PROXYPARM and PROXYPASSWORD substitution parameters are useful for the terminal launchers. Use of PROXYPARM and PROXYPASSWORD in the terminal launchers is covered in detail in sections 2.2.5, 2.2.6. User should highlight needed parameter (PROXYPARM or PROXYPASSWORD) in the list in the dialog and then press OK button to insert selected parameter into the launcher text at the cursor position. After parameter is inserted, user should give it the meaningful name that reflects its purpose. Inserted parameters are simply text templates for user’s convenience. User can also insert new parameters into launcher text by typing them in manually. Insert new parameter/password button helps to speed up parameter insertion.

Pressing button Insert existing parameter/password invokes dialog window with the list of the names of the existing PROXYPARM and PROXYPASSWORD substitution parameters. Those include:

  • substitution parameters that were already used during current Proxy32 session for the execution of other launchers.

  • substitution parameters that are saved permanently when user set Save on exit check mark when entering such parameter (refer to section 2.2.5).

Using this dialog will insert existing substitution parameter that was already used before and has value already assigned to it. When user requests execution of the launcher, parameter input dialog will popup and existing substitution parameter will have its existing value shown in this dialog. User can keep existing value unchanged or modify it. Substitution of the existing parameter is convenient when such parameter is frequently used in many launchers and has value that does not change very often.

Button Select Plugin/Application to start allows to insert path to the Windows executable module into the launcher text field. It is intended to be used by advanced user when building complex SHELL-TERMINAL launchers.

Note:

Proxy32 TreeNode Editor can be also invoked via drop-down arrow button located next to the New button on the toolbar of the LauncherTree window. Pressing drop-down arrow button opens submenu ADD TreeNode (Fig. 3.4.25), where user can select type of the added launcher. If submenu ADD TreeNode was invoked when no launcher is highlighted on the LauncherTree, new launcher will be added at the end of the LauncherTree. If submenu ADD TreeNode was invoked when some launcher is highlighted on the LauncherTree, new launcher will be added under highlighted launcher instead of being placed at the end of the LauncherTree. If the highlighted launcher is SUBMENU, then new launcher will be added inside of the SUBMENU if the SUBMENU is open and under the SUBMENU if SUBMENU is closed. Submenu ADD TreeNode under selected TreeNode can also be invoked via TreeNode menu of the LauncherTree window (Fig. 3.4.26).

Fig. 3.4.25 Submenu ADD TreeNode is invoked via drop-down arrow button located next to the “New” button on the toolbar of the LauncherTree window

Fig. 3.4.26 Submenu ADD TreeNode under selected TreeNode is invoked via TreeNode menu of the LauncherTree window

3.4.3.3. Editing (modifying) SHELL-TERMINAL launchers

Advanced user can open existing SHELL-TERMINAL launcher (created via New button or via Proxy32 TreeNode Editor) in the TreeNode Editor to modify it directly. To open launcher in TreeNode Editor one should middle-click on this launcher. Another way to open launcher in the TreeNode Editor is to right click on the launcher and select option Edit TreeNode from the popup menu. After opening launcher in the TreeNode Editor one can modify it. For example, one can select some connection parameter in the launcher text field and replace it by substitution parameter using buttons on the top of the editor window. Or one can completely replace launcher text. The type of the launcher (for example, SHELL-TERMINAL) cannot be changed, and the type is defining how the launcher text will be interpreted on launcher execution. Launcher type is defined when launcher is created and cannot be changed later.

Advanced users can quickly create new launchers by creating duplicate copy of existing launcher and modifying this copy according to the new task. First, one should create copy of existing launcher by dragging it with the mouse and dropping it on itself. This will add duplicate launcher under original launcher. Then one should middle-click on duplicate launcher to edit it in the TreeNode Editor.

In addition, Proxy32 allows user to move launcher from one place to another on the LauncherTree and to group launchers into SUBTREEs using drag-and-drop (reference section —-).

3.4.3.4. Creating and editing TELNET-TERMINAL and COM-PORT-TERMINAL launchers

Lets have a look at how TELNET-TERMINAL and COM-PORT-TERMINAL are created.

TELNET-TERMINAL and COM-PORT-TERMINAL launchers are created Proxy32 TreeNode Editor using its dialog windows as templates (Fig. 3.4.27 and Fig. 3.4.28).

Fig. 3.4.27 Proxy32 TreeNode Editor dialog window for creation of TELNET-TERMINAL launcher

Fig. 3.4.28 Proxy32 TreeNode Editor dialog window for creation of COM-PORT-TERMINAL launcher

These dialog windows will appear when user selects submenu ADD TreeNode in the LauncherTree right-click popup menu (Fig. 3.4.20, Fig. 3.4.21), and then selects command Add TELNET-TERMINAL TreeNode or Add COM-PORT-TERMINAL TreeNode in this submenu (Fig. 3.4.22). User has to fill in text fields in this dialog window. Some fields in the COM-PORT-TERMINAL launcher creation template/dialog have drop-down lists with pre-dedfined selection.

TELNET-TERMINAL launcher creation template/dialog has a check mark Use TLS+Telnet to turn on cyphering if TELNET server to which terminal will be connecting uses TLS+Telnet protocol.

Both dialogs allow user to enter tooltip text that will be used both as launcher name and as initial title of created terminal window.

Depending on the way the Proxy32 TreeNode Editor was invoked, on pressing OK button new launcher will be added either at the end of the LauncherTree or after the selected launcher.

Examples of TELNET-TERMINAL and COM-PORT-TERMINAL on the LauncherTree are shown on Fig. 3.4.4 (references —- and —–).

TELNET-TERMINAL and COM-PORT-TERMINAL launchers that are already present on the LauncherTree can be modified by invoking Proxy32 TreeNode Editor the same way as it was already explained for SHELL-TERMINAL launcher. Unlike SHELL-TERMINAL launcher, TELNET-TERMINAL and COM-PORT-TERMINAL launchers do not contain command line and do not support substitution parameters. Therefore, they do not have the flexibility related to configuring multitude of command line options. Modification of TELNET-TERMINAL and COM-PORT-TERMINAL launchers amounts to changing connection parameters and settings that are already present in the dialog window.

3.4.3.5. Automating work in the built-in terminal

In created and connected terminal window user can type commands manually or send commands with the help of the special launchers that are designed for automation of the work in the terminal. Those are launchers of COMMAND, SCRIPT, I-SCRIPT, PLUGIN and I-PLUGIN type. Like any other luanchers in Proxy32 they are created on the LuancherTree with the help of Proxy32 TreeNode Editor that is invoked as described in section 2.3 via LauncherTree right-click popup menu ( fig.– or –). References to those launchers can also be placed into menu of the Favorites button (refer to section —).

COMMAND launcher si the simplest launcher that is intended for execution of the single command. It can be created via Proxy32 TreeNode Editor. User should select submenu ADD TreeNode in the LauncherTree right-click popup menu (Fig. 3.4.20, Fig. 3.4.21), and then select command Add COMMAND TreeNode in this submenu (Fig. 3.4.22). When Proxy32 TreeNode Editor dialog window appears, user can type desired command into the text field in this dialog. Fig. 3.4.29 shows Proxy32 TreeNode Editor dialog window for creation of COMMAND launcher.

Fig. 3.4.29 Proxy32 TreeNode Editor dialog window for creation of COMMAND launcher

Fig. 3.4.4 shows COMMAND launcher (reference —), that will automatically send ls -altr command to terminal.

To execute sequence of command instead of entering those commands manually, user can execute sequence of predefined COMMAND launchers in the necessary order. This will eliminate all errors as the launchers are configured in advance without rush and then used as when necessary. Using substitution parameters in COMMAND launchers further simplifies users job as the same COMMAND launcher can be used in different situations. If substitution parameters are used in COMMAND launchers, then on execution of such launcher user will be asked to supply parameter value via dialog, as it was described in section —. Section — covers substitution parameter used in COMMAND launchers.

COMMAND launchers can be executed into active window of the built in terminal when terminal is connected and ready to receive next command. Active terminal window is highlighted by the red frame. For more details please refer to section —. Alternatively, COMMAND launchers can be executed into active window of the external process. Active window of external process is labelled on the title bar by the red sticker with the word ACTIVE. For more details please refer to section —.

SCRIPT, I-SCRIPT, PLUGIN and I-PLUGIN launchers are intended for the automatic execution of command sequences.

If the sequence of executed command does not change depending on the result of any particular command, then SCRIPT or I-SCRIPT launcher can be used for automatic execution of such command sequence. In order to do so, one should place sequence of command into the text file and then create SCRIPT/I-SCRIPT file that refers to this file and specifies conditions which allow to proceed to the execution of the next command in the script command sequence.

Those conditions are different for the SCRIPT and I-SCRIPT launcher.

If substitution parameters are present in the text of the commands that are contained in the text files referred by SCRIPT or I-SCRIPT launchers, then on execution of such launcher user will receive dialog window to enter values for those parameters.

Creating of SCRIPT and I-SCRIPT launchers and files that are referred by those launcher is covered in detail in section —-. To use SCRIPT and I-SCRIPT launchers, one does not have to be a programmer, but rather to be an experienced user. SCRIPT and I-SCRIPT launchers do not work for the windows of the external processes, as only built-in terminal has interpreter for SCRIPT and I-SCRIPT files.

PLUGIN and I-PLUGIN launchers are used to launch local programs (PLUGINs) that are specifically written to interface with the built-in terminal and to automatically send sequence of command into terminal via this interface. PLUGIN program defines sequences of executed commands and the condition of their execution, processes results of command execution and presents them to user via terminal output or via its own interface. Programs for the use as PLUGIN/I-PLUGIN can be written only by the programmer. In particular, in order to interface PLUGIN process with terminal programmer should be able to code read/write operations for STDIN/STDOUT/STDERR byte streams of the PLUGIN process. Therefore, PLUGIN allows full control over the automatic command execution flow in the terminal, but it requires programmer to code this execution flow.

If substitution parameters are present on the command line of the PLUGIN/I-PLUGIN launchers, then on execution of such launchers user will receive dialog window to enter values for those parameters.

PLUGIN and I-PLUGIN launchers do not work for the windows of the external processes, as only built-in terminal has interface for interaction with PLUGIN and I-PLUGIN processes.

Details on how to automate work in the built-in terminal by using COMMAND, SCRIPT, I-SCRIPT, PLUGIN and I-PLUGIN launchers are covered in the sections — dedicated to the mentioned launcher types.

Section — covering AUTOLOGIN contains many examples of automation.

Automation of the work in the built-in terminal by using COMMAND, SCRIPT, I-SCRIPT, PLUGIN and I-PLUGIN launchers along with convenient panel of controls in the terminal itself simplify users work, save time and minimize chances of the error.

3.4.4. Terminal Menu Reference

Terminal menu contains following top level menus: File, Edit, Control, View, HelpOnMouseAndKbd.

3.4.4.1. Menu “File”

  • Save Terminal Settings - saves all settings of the current terminal window as global initial terminal settings. This includes size, position, color and font of the terminal window and also all terminal emulator settings. Global initial terminal settings in turn will be used for creating of any new terminal window. Size and Position from the global initial terminal settings are used also during the normalization operation and also when creating or capturing windows of the external processes in the workspace.

Typically, user configures terminal window to his/her taste and then saves setting of this window as global initial terminal settings. After this, all newly created terminal windows will be automatically configured the same as the initial terminal window that user has configured manually.

Larger part of those global initial terminal settings user can change directly from menu Settings/Initial Terminal Settings in the LauncherTree window. Global initial terminal settings are saved on exit as part of the Proxy32 application configuration in the file Settings.xml in the Proxy32 start up directory. They are loaded automatically from this file when Proxy32 application starts.

Refer to here to/from description of normalization and to/from description of working with external processes.

  • Change Title of Terminal Window - allows user to change terminal window title. This operation can be also performed via right click on the terminal window title and editing title in-place. When terminal window title is changing the name of the terminal session log file is also changing to reflect in this name new title of the terminal window. When title of the terminal window is changing the old terminal session log file is closed and new file is opened that is reflecting new title of the terminal window. This automatic terminal session log file re-naming (re-opening) can be turned off in the terminal settings. In addition, title of the terminal window can be changed automatically by command from remote computer to which terminal is connected. Unless remote change of the terminal window title is disabled in the terminal settings.

  • Exit - closes current terminal window. Terminal is disconnected from the remote computer (SCRIPT/PLUGIN is stopped if running), then terminal session sharing users are disconnected from this terminal, then terminal window is destroyed. Terminal session log file is saved on disk (by default in directory log inside of Proxy32 start up directory). Terminal scroll back buffer file is destroyed. Before terminal window is destroyed, user is asked for confirmation (unless confirmation is disabled in the Proxy32 settings).

3.4.4.2. Menu “Edit”

  • Paste - inserts text from the clipboard into terminal. Inserted text is sent to remote computer to which terminal is connected, if the size of the text does not exceed 1MB. If terminal is not connected or running SCRIPT/PLUGIN or text size is exceeding 1MB then text is not inserted (paste operation request is ignored). If previous paste operation is in progress (still feeding text into remote computer), then size of the text that is still to be inserted by ongoing paste operation plus size of the text to be inserted by new paste request cannot exceed 1MB in total. If clipboard contains text in UNICODE this text by default is converted to ASCII (or to utf8, if enabled in terminal settings) before sending to remote computer. Paste operation can also be executed with key combination Shift-Insert (this key combination is never transmitted to remote computer). Paste operation can also be executed by pressing middle mouse button in the terminal work area (in terminal window). To prevent paste when middle mouse button is pressed by accident, user can select option Paste On LeftCtrlMiddleClick instead of MiddleClick in submenu Control/WORKAROUNDS. If this option is selected, user has to hold left Ctrl key to paste text with middle mouse button. It is recommended for user to check clipboard content before executing paste operation. Clipboard content can be checked in the terminal clipboard viewer (reference 14 on Fig. 3.4.1), that is located at the bottom of the terminal window.

When terminal is executing SCRIPT/PLUGIN, paste operation is ignored.

  • Search and Search Results - submenu that contains commands, related to search results drop-down list (reference 12 on Fig. 3.4.1), that is located in the bottom part of the terminal window.

  • Copy Search Results to clipboard - copy content of the search results drop-down list to the clipboard.

  • Bookmark first line of selection - create bookmark referring to the first line of text selection in the terminal and add this bookmark to the search results drop-down list. Works only if more than one line of text is selected in the terminal. User is asked for the name of the bookmark that is being created. Later this bookmark can be used to go to the bookmarked line in the terminal scrollback buffer. To go to the bookmarked line user has to select bookmark in the search results drop-down list. Bookmark can also be created by clicking on the button B (reference 16 on Fig. 3.4.1), that is located in the bottom part of the terminal window.

  • Search in the Terminal buffer - performs search in the whole terminal scrollback buffer or in the selected text (if more then one line of text is selected in terminal). Search results are added to the search results drop-down list that is located in the bottom part of the terminal window. Search operation can be also performed by clicking on the button S (reference 17 on Fig. 3.4.1), that is located in the bottom part of the terminal window.

To go to the found line, user has to select it in the search results drop-down list.

  • Clear all search results - removes all content of the search result drop-down list.

  • Delete selected search result - removes one search result that is currently selected in the search results drop-down list.

  • go to the Next search result/go to the Previous search result

  • go to next/previous search result in the search result drop-down list.

Operations Clear/Delete/Next/Previous can be executed by clicking on the buttons C, D, N, P respectively (references 18, 19, 20, 21 on Fig. 3.4.1), that are located in the bottom part of the terminal window.

  • commands history - submenu that contains commands, related to commands history drop-down list (reference 13 on Fig. 3.4.1), that is located in the bottom part of the terminal window.

  • copy command history to clipbord - copies content of the commands history drop-down list to the clipboard. Content of this list is accumulated gradually as user sends commands into terminal. To scroll to particular command stored in the list user has to select this command in the commands history drop-down list.

  • clear command history - removes all content from commands history drop-down list.

  • scroll to show first line of selection/scroll to show last line of selection - scroll terminal buffer to show first/last line of the selected text.

3.4.4.3. Menu “Control”

Menu “Control” - is the top-level menu, that contains commands and options for terminal connections, terminal session sharing, terminal emulator and terminal log file.

3.4.4.3.1. Command “Control/Show LauncherTree Favorites Menu”

  • Show LauncherTree Favorites Menu - show LauncherTree favorites menu. This operation duplicates Favorite button located at the left bottom part of the terminal window (reference 8 on Fig. 3.4.1).

3.4.4.3.2. Submenu “Control/Connect via TELNET, COM-PORT or SHELL”

  • Connect via TELNET, COM-PORT or SHELL - submenu that contains commands to connect terminal to TELNET server, COM-PORT or SHELL process.

  • Reconnect this Terminal via last used Launcher - works only if terminal is not connected. Connects terminal using information from terminal launcher (TELNET-TERMINAL, COM-PORT-TERMINAL, SHELL-TERMINAL) that was used during the last attempt to connect this terminal. AUTOLOGIN I-SCRIPT/PLUGIN launcher will also be executed if it is present under terminal launcher. This operation can also be executed by left click on the green button CONNECT/DISCONNECT (reference 23 on Fig. 3.4.1).

Result of execution of this operation is displayed by messages in the terminal window, and also with the color of CONNECT/DISCONNECT button. If AUTOLOGIN I-SCRIPT/PLUGIN did not receive expected prompt from remote computer, it will hung. User can detect when SCRIPT/PLUGIN is hung when Kill button and SCRIPT/PLUGIN progress indicator (reference 28 on Fig. 3.4.2) do not disappear from the bottom part of the terminal window and, if SCRIPT/I-SCRIPT is running, progress indicator does not move forward (when PLUGIN/I-PLUGIN is running this indicator shows percentage of filling PLUGIN input buffer and does not reflect general progress of PLUGIN execution).

In such case user should kill AUTOLOGIN I-SCRIPT/PLUGIN with the button Kill in the left bottom part of the terminal window (reference 27 on Fig. 3.4.2), and then continue login manually.

  • Disconnect this terminal from TELNET, COM-PORT or SHELL - disconnects terminal from Telnet server, COM-PORT or SHELL process. Works only if terminal connected. This operation can also be performed by left click on the green button CONNECT/DISCONNECT (reference 23 on Fig. 3.4.1). Result of execution of this operation is displayed by messages in the terminal window, and also with the color of CONNECT/DISCONNECT button. If AUTOLOGIN I-SCRIPT/PLUGIN is running, its execution will be stopped.

  • Show Launcher that was last used to connect this Terminal - highlights on the LauncherTree terminal launcher (TELNET-TERMINAL, COM-PORT-TERMINAL, SHELL-TERMINAL), that contains connection info for the current terminal. If terminal is connected, it will highlight the launcher that holds information for active connection. If terminal is not connected, it will highlight the launcher that was used during last connection attempt (regardless of whether it was successful connection attempt or not). This operation can also be performed by right click on the green button CONNECT/DISCONNECT (reference 23 on Fig. 3.4.1).

  • Connect this Terminal via selected Launcher - works only if terminal is not connected. Connects terminal using information from terminal launcher (TELNET-TERMINAL, COM-PORT-TERMINAL, SHELL-TERMINAL) that is highlighted on the LauncherTree. AUTOLOGIN I-SCRIPT/PLUGIN launcher will also be executed if it is present under terminal launcher. This operation can also be performed by middle click on the green button CONNECT/DISCONNECT (reference 23 on Fig. 3.4.1). Result of execution of this operation is displayed by messages in the terminal window, and also with the color of CONNECT/DISCONNECT button. If AUTOLOGIN I-SCRIPT/PLUGIN did not receive expected prompt from remote computer, it will hung. User can detect when SCRIPT/PLUGIN is hung when Kill button and SCRIPT/PLUGIN progress indicator (reference 28 on Fig. 3.4.2) do not disappear from the bottom part of the terminal window and, if SCRIPT/I-SCRIPT is running, progress indicator does not move forward (when PLUGIN/I-PLUGIN is running this indicator shows percentage of filling PLUGIN input buffer and does not reflect general progress of PLUGIN execution).

3.4.4.3.3. Submenu “Control/Sharing Terminal Session with other users”

  • Sharing Terminal Session with other users - this submenu contains commands and setting related to sharing terminal session.

  • TELNET/TLS SERVER - this submenu contains commands and setting related to sharing terminal session via TELNET/TLS protocol.

    • Disconnect all clients - disconnect all users that are sharing current terminal session via TELNET/TLS protocol. List of those users is in the second drop-down list counting from the left edge of terminal window (reference 11 on Fig. 3.4.1).

    • Disconnect selected client - disconnect one of the users that are sharing current terminal session via TELNET/TLS protocol. List of those users is in the second drop-down list counting from the left edge of terminal window (reference 11 on Fig. 3.4.1). This operation disconnects only the user that is selected in above drop-down list.

    • Flip ReadOnly mode for selected client - toggle Read-Only mode of one of the users that are sharing current terminal session via TELNET/TLS protocol. List of those users is in the second drop-down list counting from the left edge of terminal window (reference 11 on Fig. 3.4.1).

This operation toggles Read-Only mode only for the user that is selected in above drop-down list. After user connects to shared terminal session, he/she can see all information that arrives to terminal screen, and is also able to send commands into terminal session (type commands into remote equipment to which shared terminal is connected). Owner of the shared terminal session can change status of any sharing user to Read-Only by using this command. Read-Only user will not be able to send commands into the shared terminal session. Owner of the shared terminal session can change status of the user back to Read-Write by using this command for the second time.

  • Use SSL/TLS to encrypt Telnet Traffic of TSS Server - turns on or off use of TLS protocol when sharing terminal session via TELNET protocol. Change has effect only for this particular terminal window and only on the new connection attempts arriving after the change took place. This function is duplicated by the button (reference 9 on Fig. 3.4.1).

This function only toggles use of TLS protocol. All TLS settings are configured in the Proxy32 Options Dialog. To change default value for this setting, one should use global initial terminal settings (menu Settings/Initial Terminal Settings/Terminal Session Sharing (TSS)/Use SSL/TLS to encrypt Telnet Traffic of TSS Server in the LauncherTree window).

  • TSS Server listens only on loopback IP - by default terminal session sharing TELNET/TLS server listens for new connections on all IPv4 addresses on the computer where it is running. If session sharing TELNET connection is always performed locally (on the same computer) or it is protected by some external software that creates encrypted tunnel with local end point, it may be desirable for security reasons to deny all connections that are received on externally-visible IP addresses. When this option is enabled, TELNET TSS server only accepts local connections (that are destined to loopback IP address 127.0.0.1).

  • TSS Server denies new connections - After this option is enabled, all connections to TELNET-TLS Terminal Session Sharing (TSS) server will be denied. This is convenient if Proxy32 user wants to disable all connections to TSS server for every newly created terminal window (in this case this option should be set at the global level – Settings/Initial Terminal Settings/Terminal Session Sharing (TSS)/TSS Server denies new connections menu in the LauncherTree window) or to disable all new connection to TSS server in existing terminal window after all major players are connected already. This is thought to be extra security feature.

  • LISTENER COM-PORT - this submenu contains commands and setting related to sharing terminal session via COM-PORT protocol.

    • Connect LISTENER COM-PORT using info from selected TreeNode - connects shared terminal session to local COM-PORT, using information from selected COM-PORT launcher. After this external user can connect to shared terminal session via this port. External user can connect via cable, modem or Bluetooth protocol. This operation can also be executed by ctrl-right-click on green button CONNECT/DISCONNECT. Result of the operation is shown via messages in the terminal window. This command becomes disabled in the menu if it has succeeded.

    • Disconnect LISTENER COM-PORT - disconnects shared terminal session from local COM-PORT. After this external user cannot connect to shared terminal session via this port. This operation can also be executed by ctrl-right-click on green button CONNECT/DISCONNECT. Result of the operation is shown via messages in the terminal window. This command becomes disabled in the menu if it has succeeded.

3.4.4.3.4. Command “Control/Send TELNET/COM-PORT Break (Break key)”

  • Send TELNET/COM-PORT Break (Break key) - Sends TELNET BREAK command if terminal is connected to TELNET server. Sends COM-PORT BREAK command if terminal is connected to COM-PORT. This operation can also be performed by pressing the Break key.

3.4.4.3.5. Submenu “Control/Log File and Scroll Buffer”

  • LogFile and ScrollBuffer - this submenu contains commands and settings to control terminal session log file and terminal scroll back buffer file.

  • Enable unlimited scrollbuffer on the temporary file - this setting turns on unlimited scroll back buffer that is using temporary files on the disk. If this setting is off terminal scroll back buffer contains only 1000 lines and uses only system memory, but not temporary disk files. Temporary files of terminal scroll back buffer are created by default in directory log inside of the Proxy32 start up directory. During Proxy32 installation user can select another directory to store temporary files of the terminal scroll back buffer. Temporary files of the terminal scroll back buffer are deleted automatically when terminal window is closed. This files can contain hundreds of millions of lines, so it is recommended to place log directory on the disk with large amount of the free space. This directory contains also terminal session log files and files with the text that did not fit into system clipboard when it was selected in the terminal.

  • Log Terminal Screen to file - this setting turns on terminal session log file. Name of the terminal session log file includes title of the terminal window and the date and time of the file creation. Terminal session log files are created by default in directory log inside of the Proxy32 start up directory. During Proxy32 installation user can select another directory to store terminal session log files. Terminal session log files are never deleted automatically, so user will have to periodically clean up log directory when it grows too large. Proxy32 has Log Viewer dialog that allows to perform text search in all stored terminal session log files. This dialog can be invoked via Log Viewer button LauncherTree-Toolbar-LogViewer-Button on the toolbar of the LauncherTree window.

  • Add hex dump to terminal log file - this setting turns on additional hexadecimal printout of data that is coming from remote computer to the terminal. This information is included into terminal session log file. This is convenient to see non-printable commands that can be sent from the remote computer to the terminal.

  • Add TimeStamps To Terminal Log File - this settings turns on additional time stamp that is attached to every segment of data that is coming from remote computer to the terminal. This information is included into terminal session log file. This will allow to measure time delays between responses of the remote computer.

  • Re-start Terminal Log File on Window Title change - Name of the terminal session log file includes title of the terminal window and the date and time of the file creation. If this setting is on, then on change of the terminal window title (by user or by the command from the remote computer) old terminal session log file is closed and the new terminal session log file is opened instead. Name of the new terminal session log file includes new title of the terminal window and the new date and time of the file creation.

  • Re-start Terminal Log File - on this command old terminal session log file is closed and the new terminal session log file is opened instead. Name of the new terminal session log file includes new title of the terminal window and the new date and time of the file creation.

  • Autoscroll Terminal Window to Show new output (Red LED) - when this setting is on terminal will automatically scroll its buffer to make sure that the new data arriving from the remote computer are always visible in the terminal window. When this setting is off, new data arriving from the remote computer is added to the end of the terminal scroll back buffer, but terminal will not scroll the buffer automatically to make new data visible in the terminal window. User will have to scroll manually to see new data in the terminal window. By default autoscroll is on, but sometimes it may be necessary to turn it off, when user is trying to copy text from terminal scroll back buffer. To copy text to clipboard, user will have to select it but this can be impossible when terminal is simultaneously performing autoscroll on arriving of the new data. Autoscroll can also be turned on and off via red button that is located in the right bottom part of the terminal window (reference 24 on Fig. 3.4.1).

This button also indicates the state of autoscroll. If it is of dark red color, then autoscroll is on. If it is of bright red color, then autoscroll is off.

  • Do not send new output to terminal window, only to Log File (blue LED) - if this setting is on, then data coming from the remote computer are written to the terminal session log, but not into terminal scroll back buffer and they will not be shown on the screen of the terminal. This is convenient when one has to receive a lot of data but does not want this data to fill up terminal scroll back buffer and make it harder to work with data that is already present in the terminal scroll back buffer. This setting can be toggled by pressing blue button in the bottom part of the terminal window (reference 25 on Fig. 3.4.1).

This button also indicates the state of the setting. If this button is of the dark blue color, then new data is added to the terminal scroll back buffer and displayed in terminal window. If this button is of the bright blue color, then new data only added to terminal session log file. Toggling this setting is also marked by the messages in the terminal window to let user know in which place new data were not shown on the terminal screen.

3.4.4.3.6. Submenu “Control/LINE TERMINATORS”

  • LINE TERMINATORS - sumenu that contains line terminator settings for terminal.

  • SEND - sumenu that contains line terminator settings that control how line terminators are sent from terminal to remote computer.

    • Do not send NL to TARGET COM-PORT - do not send NL to COM-PORT connecting terminal to remote computer.

    • Do not send NL to LISTENER COM-PORT - do not send NL to COM-PORT connecting terminal to remote user that is sharing current terminal session.

    • Do not send NL to SHELL - do not send NL to the input of the local SHELL process.

    • Do not send NL to TARGET TELNET - do not send NL to TELNET server, to which terminal is connected.

  • RECEIVE - sumenu that contains line terminator settings that control how line terminators are interpreted when received from remote computer.

    • Print received NL as CR/NL - process NL as if CR/NL was received. Normally CR and NL are processed separately, but there is some equipment that sends NL instead of pair CR/NL.

    • Print received CR as CR/NL - process CR as if CR/NL was received. Normally CR and NL are processed separately, but there is some equipment that sends CR instead of pair CR/NL.

3.4.4.3.7. Submenu “Control/TERMINAL WINDOW RESIZE AND NAWS”

  • TERMINAL WINDOW RESIZE AND NAWS - submenu that contains setting related to terminal re-size.

    • Do not send NAWS - if this setting is on then then on terminal re-size information about new size of the terminal window is not sent to TELNET server or local SHELL process to which terminal is connected. If this setting is off, then on terminal re-size information about new size of the terminal window is sent to TELNET server (via TELNET protocol) or to local SHELL process (via proxycygterm.exe).

    • Force Terminal Size to 80x24 - if this setting is on, then size of the terminal is fixed to 80 columns by 24 rows. Terminal window size can be changed only by changing the size of the terminal font. This setting is useful when working with the remote equipment that does not support dynamic change of the of the terminal window size and always expects that terminal size is 80x24.

    • Send stty columns <PROXYTERMINALCOLUMNS> rows <PROXYTERMINALROWS> to remote host - in situations when information about dynamic terminal window re-size does not pass automatically through existing connection, if remote computer supports stty command, then information about new terminal windows size can be sent to remote computer manually with stty command. Terminal window size expressed by number of columns and rows can be automatically substituted into the text of the stty command being sent by using substitution parameters <PROXYTERMINALCOLUMNS> and <PROXYTERMINALROWS> in the text of the COMMAND launcher or in the text of the SCRIP/I-SCRIPT file or in the command line of the PLUGIN/I-PLUGIN. These substitution parameters contain size of the active terminal (terminal in which COMMAND/SCRIPT/PLUGIN is executed). This menu command is added for convenience of the user and equivalent to execution of the COMMAND launcher that contains following text: stty columns <PROXYTERMINALCOLUMNS> rows <PROXYTERMINALROWS>.

3.4.4.3.8. Submenu “Control/TERMINAL SPARE BOOLEAN SETTINGS”

  • TERMINAL SPARE BOOLEAN SETTINGS - this submenu contains spare setting that can be used in the future.

3.4.4.3.9. Submenu “Control/TERMINAL EMULATOR SETTINGS”

  • TERMINAL EMULATOR SETTINGS - this submenu contains terminal emulator settings.

    • Remove Mouse Selection When Erase All Display Is Requested - if this setting is on then on receiving Erase All Display command from the remote computer text selected in the terminal windows will no longer be selected.

    • Report Telnet Terminal Type as xterm instead of vt100 - if this setting is on terminal reports its type as XTERM to TELNET server. If this setting is off terminal reports its type as VT100 to TELNET server.

    • Disable Remote Controlled Log File Name Change - if this setting is on then terminal will not change the name of the terminal session log file on the command from remote computer. Please, note that by default name of the terminal session log file will automatically change on changing the title of the terminal window.

    • Disable Remote Controlled Window Title Change - if this setting is on then terminal will not change the title of the terminal window on the command from remote computer. Please, note that by default name of the terminal session log file will automatically change on changing the title of the terminal window.

    • Disable Cursor Position Reporting - if this setting is on, then terminal will not respond to requests from the remote computer about terminal cursor position .

    • Disable Cursor Keys Application Mode - Cursor Keys cannot be switched to Application Mode.

    • Disable Numpad Keys Application Mode - Numpad Keys cannot be switched to Application Mode.

    • Cursor Keys Are Initially In Application Mode - if this setting is on then Cursor Keys are set to Application Mode when terminal emulator is initialized or reset.

    • Numpad Keys Are Initially In Application Mode - if this setting is on then Numpad Keys are set to Application Mode when terminal emulator is initialized or reset.

3.4.4.3.10. Submenu “Control/WORKAROUNDS”

  • WORKAROUNDS - this submenu contains commands that can be useful is special situations.

    • Reset VT100 Emulator - resets terminal emulator to initial state. Useful, when some application did not properly finish working with terminal and did not restore terminal emulator settings back to defaults.

    • Re-register Clipboard Viewer - re-register proxy32 clipboard viewer with the system to receive notification from the system when the content of the clipboard is changing. Useful, when some rogue applications break registration chain in the system and proxy32 stops receiving notifications.

    • Enable Timestamping in the terminal - prints current time and date to terminal screen every 30 seconds. Usefull for time-logging while performing time-critical activities.

    • Send KeepAlive packets to server - periodically sends packets with NOP (TELNET No OPeration) command to TELNET server.

    • Echo keyboard and pasted text locally back to the terminal - turns on local echo in terminal. All input is mirrored back to terminal screen in addition to being sent to remote host.

    • Paste On LeftCtrlMiddleClick instead of MiddleClick - when this setting is on to paste text by middle click user also has to hold left Ctrl key pressed. This setting can help to reduce probability of the accidental text paste by middle click.

    • Enable UNICODE Input from Keyboard, IME, Paste, COMMAND, SCRIPT - when this option is on, all UNICODE input is translated to UTF8 before being sent to remote host. User can use Windows international keyboard layouts and Input Method Editors (IME) to type text in non-Engish languages. When this option is off, all UNICODE input is translated to ASCII before being sent to remote host. Windows international keyboard layouts and Input Method Editors (IME) are bypassed by terminal. Keys with printable ASCII chars are translated by terminal built-in key-mapper directly into printable ASCII chars.

    • Print Ambiguous CJK chars as wide - according to Unicode standard Ambiguous CJK chars should have width of two columns if they are used in East Asian context and only one column if they are used in Non East Asian context. Terminal cannot recognize which context is being used. That is why this setting was introduced. By default in Proxy32 terminal Ambiguous CJK chars are one column wide. When this setting is on, Ambiguous CJK chars will be two columns wide.

3.4.4.4. Menu “View”

  • View - this submenu contains commands and settings that control appearance of the terminal window.

    • Font - this command invokes font selection dialog. Terminal can use only fixed-width fonts, so the dialog will show only fixed-width fonts.

    • Background Color - this command invokes color selection dialog to select default background color of the terminal screen cell.

    • Italic Background Color - ITALIC (slanted text) attribute in this terminal is presented by different background color of the terminal screen cell. This command invokes color selection dialog to select background color of the terminal screen cell with attribute ITALIC.

    • Foreground Color - this command invokes color selection dialog to select default text (foreground) color of the terminal screen cell.

    • Bold Foreground Color - BOLD (bright text) attribute in this terminal is presented by different foreground (text) color of the terminal screen cell. This command invokes color selection dialog to select foreground color of the terminal screen cell with attribute BOLD.

  • Line Spacing - this submenu contains commands that change the distance between the lines in the terminal.

    • Decrease line spacing - this command reduces distance between the lines in the terminal by one pixel on every execution.

    • Restore default line spacing - this command restores standard distance between the lines in the terminal. Standard distance is given by the selected font.

  • Char Spacing - this submenu contains commands that change the width of the terminal screen cell.

    • Decrease char spacing - this command reduces the width of the terminal screen cell by one pixel on every execution.

    • Restore default char spacing - this command restores standard width of the terminal screen cell. Standard width of the terminal screen cell is given by the selected font.

    • Show Menu Bar under the title bar in the Proxyterm window - if this setting is on, menu bar will be shown under the title bar of the terminal window. If this setting is off, user will have to access terminal menu via other ways, for example, via left click on the icon in the left side of the terminal title bar or Ctrl-Right-Click in the terminal work area.

3.4.4.5. Menu “HelpOnMouseAndKbd”

  • HelpOnMouseAndKbd - this submenu does not contain any executable commands or any settings. User should simply read the menu to get help with using mouse and keyboard commands in the terminal.

3.5. Terminal Specifications

3.5.1. Supported Terminal Control Sequences

3.5.1.1. SGR (“Select Graphic Rendition”) Control Sequence

To be processed by terminal each SGR sequence should contain from one to 16 positional numeric parameters P1,P2,…,P16 separated by semicolon. That means one SGR sequence can change multiple rendering attributes. Some rendering attributes (like set Bold font weight) can be set by single numerical parameter, some other rendering attributes (like set Foreground/Text Color directly using RGB notation) will need sequence of up to 5 positional numeric parameters to set single rendering attrbute.

Syntax is shown below.

ESC[ m

ESC[ P1 m

ESC[ P1 ; P2 m

…

ESC[ P1 ; P2 ; P3 ; P4 ; P5 ; P6 ; P7 ; P8 ; P9 ; P10 ; P11 ; P12 ; P13 ; P14 ; P15 ; P16 m

Control sequence is string of ASCII characters.

No whitespace is allowed within any control sequence, this is also true for SGR control sequence.

All ASCII characters in the control sequence are printable except for special character ESC (Escape).

ASCII character code for ESC special character is \033 in octal notation, \x1b in hexadecimal notation and \27 in decimal notation.

Each numeric positional parameter P1,P2,…,P16 is string of zero, one or more decimal digits (decimal digits are ASCII characters with codes 48-57 decimal).

Empty numeric positional parameter is treated as 0.

Leading zeros in numeric positional parameter P1,P2,…,P16 are ignored, for example P1=01 will be treated as P1=1.

Semicolon “;”, left bracket “[” and small letter “m” ASCII characters are representing themselves.

Within SGR control sequence numeric positional parameters are processed and acted upon in the order of their arrival. That means, if within single SGR sequence the same rendering attribute is changed more than once, latest setting of rendering attribute within the single SGR sequence will take priority.

Examples of SGR sequences:

ESC[m

ESC[0m

ESC[1;3m

ESC[1;3;31;40m

Table Table 3.5.1 below describes supported values of positional numeric parameters for SGR control sequence. This table may be expanded in future versions of proxy32 if/when more supported attributes will be added.

Table 3.5.1 Terminal Control Sequence SGR

Format

Name

Description and examples

ESC[m

ESC[0m

Reset all attributes to Default

Reset all SGR-controlled graphic rendering attributes to their default values:

Bold font off,

Light font off,

Italic off,

Underline off,

Blink Off,

Inverse Off,

Hidden Off,

StrikeThrough Off,

Foreground color is set to Default Foreground color (White but it can be redefined by user),

Background color is set to Default Background color (Black but it can be redefined by user)

ESC[1m

Set Font weight to Bold

After this sequence font will be rendered with the weight “bold” instead of using font weight “regular”.

Example: ESC[0;1m - reset all other rendering atributes and then set font weight to “bold”.

ESC[2m

Set Font weight to Light

After this sequence font will be rendered with the weight “light” instead of using font weight “regular”.

This setting is mutually exclusive with “bold”.

Example: ESC[0;2m - reset all other rendering atributes and then set font weight to “light”.

ESC[3m

Set Font attribute to Italic

After this sequence font will be rendered with the shape “italic” instead of using font shape “regular”.

Example: ESC[1;3;31;42m - Set font attribute to “bold italic” and red text on green background.

ESC[4m

Set Font attribute to Underline

After this sequence font will be rendered with the attribute “underline”.

Example: ESC[1;4;31;42m - Set font attribute to “bold underline” and red text on green background.

ESC[5m

Set Font attribute to Blink

After this sequence font will be rendered with the attribute “blink”. Blink interval is once per second.

Example: ESC[1;5;31;42m - Set font attribute to “bold blink” and red text on green background.

ESC[6m

Set Font attribute to Fast Blink

Not implemented, the sequence has no effect on rendering.

Example: ESC[1;6;31;42m - Set font attribute to “bold” and red text on green background. Second parameter (P2=6, set “fast blink”) is ignored.

ESC[7m

Set Font attribute to Inverse

After this sequence font will be rendered with the attribute “inverse”.

That means that selected Foreground and Background colors will be reversed.

Example: ESC[1;7;31;42m - Set font attribute to “bold inverse” and red text on green background.

ESC[8m

Set Font attribute to Hidden

After this sequence font will be rendered with the attribute “hidden”.

That means that background will be rendered but Foreground Text Character shape will not be rendered.

Example: ESC[8;42m - Set font attribute to “hidden” and set green background.

ESC[9m

Set Font attribute to StrikeThrough

After this sequence font will be rendered with the attribute “strikethrough”.

Example: ESC[1;9;31;42m - Set font attribute to “bold strikethrough” and red text on green background.

ESC[22m

Remove Font attribute Bold or Light

After this sequence font will be rendered without the attribute “Bold” or “Light”.

Example: ESC[22;9;31;42m - Remove font attribute “Bold or Light”, set font attribute to “strikethrough” and red text on green background.

ESC[23m

Remove Font attribute Italic

After this sequence font will be rendered without the attribute “Italic”.

Example: ESC[23;9;31;42m - Remove font attribute “Italic”, set font attribute to “strikethrough” and red text on green background.

ESC[24m

Remove Font attribute Underline

After this sequence font will be rendered without the attribute “Underline”.

Example: ESC[24;9;31;42m - Remove font attribute “Underline”, set font attribute to “strikethrough” and red text on green background.

ESC[25m

Remove Font attribute Blink

After this sequence font will be rendered without the attribute “Blink”.

Example: ESC[25;9;31;42m - Remove font attribute “Blink”, set font attribute to “strikethrough” and red text on green background.

ESC[26m

Remove Font attribute Fast Blink

Not implemented, the sequence has no effect on rendering.

Example: ESC[26;9;31;42m - set font attribute to “strikethrough” and red text on green background. First parameter (P2=26, remove “fast blink”) is ignored.

ESC[27m

Remove Font attribute Inverse

After this sequence font will be rendered without the attribute “Inverse”.

Example: ESC[27;9;31;42m - Remove font attribute “Inverse”, set font attribute to “strikethrough” and red text on green background.

ESC[28m

Remove Font attribute Hidden

After this sequence font will be rendered without the attribute “Hidden”.

Example: ESC[28;9;31;42m - Remove font attribute “Hidden”, set font attribute to “strikethrough” and red text on green background.

ESC[29m

Remove Font attribute StrikeThrough

After this sequence font will be rendered without the attribute “StrikeThrough”.

Example: ESC[29;3;31;42m - Remove font attribute “StrikeThrough”, set font attribute to “Italic” and red text on green background.

ESC[30m

Set Foreground/Text Color to Black

After this sequence Text letter (Foreground) will be rendered with Black Color.

Example: ESC[30;47m - Set Black text on White background.

ESC[31m

Set Foreground/Text Color to Red

After this sequence Text letter (Foreground) will be rendered with Red Color.

Example: ESC[31;47m - Set Red text on White background.

ESC[32m

Set Foreground/Text Color to Green

After this sequence Text letter (Foreground) will be rendered with Green Color.

Example: ESC[32;47m - Set Green text on White background.

ESC[33m

Set Foreground/Text Color to Yellow

After this sequence Text letter (Foreground) will be rendered with Yellow Color.

Example: ESC[33;47m - Set Yellow text on White background.

ESC[34m

Set Foreground/Text Color to Blue

After this sequence Text letter (Foreground) will be rendered with Blue Color.

Example: ESC[34;47m - Set Blue text on White background.

ESC[35m

Set Foreground/Text Color to Magenta

After this sequence Text letter (Foreground) will be rendered with Magenta Color.

Example: ESC[35;47m - Set Magenta text on White background.

ESC[36m

Set Foreground/Text Color to Cyan

After this sequence Text letter (Foreground) will be rendered with Cyan Color.

Example: ESC[36;47m - Set Cyan text on White background.

ESC[37m

Set Foreground/Text Color to White

After this sequence Text letter (Foreground) will be rendered with White Color.

Example: ESC[37;40m - Set White text on Black background.

ESC[38;5;<n>m

Set Foreground/Text Color as index in 256 color terminal’s built-in palette

<n> is a color index (0-255) in 256 color palette. The first 16 colors (0-15) are the same as set by commands: ESC[30m - ESC[37m, ESC[90m - ESC[97m, ESC[40m - ESC[47m, ESC[100m - ESC[107m

Example: ESC[1;3;38;5;120m - Set font attribute to “bold italic” and Text color to index 120 in the 256 color palette.

ESC[38;2;<r>;<g>;<b>m

Set Foreground/Text Color directly via RGB notation

<r>, <g>, <b> are red, green and blue intensities (in range 0-255) of the Foreground color

Example: ESC[1;3;38;2;255;255;255m - Set font attribute to “bold italic” and Text color to White - RGB(255,255,255).

ESC[39m

Set Foreground/Text Color to Default Foreground Color

After this sequence Text letter (Foreground) will be rendered with Default Foreground Color.

Example: ESC[39;47m - Set Default Colored text on White background.

ESC[40m

Set Background Color to Black

After this sequence background of the terminal text cell will be rendered with Black Color.

Example: ESC[37;40m - Set White text on Black background.

ESC[41m

Set Background Color to Red

After this sequence background of the terminal text cell will be rendered with Red Color.

Example: ESC[37;41m - Set White text on Red background.

ESC[42m

Set Background Color to Green

After this sequence background of the terminal text cell will be rendered with Green Color.

Example: ESC[37;42m - Set White text on Green background.

ESC[43m

Set Background Color to Yellow

After this sequence background of the terminal text cell will be rendered with Yellow Color.

Example: ESC[37;43m - Set White text on Yellow background.

ESC[44m

Set Background Color to Blue

After this sequence background of the terminal text cell will be rendered with Blue Color.

Example: ESC[37;44m - Set White text on Blue background.

ESC[45m

Set Background Color to Magenta

After this sequence background of the terminal text cell will be rendered with Magenta Color.

Example: ESC[37;45m - Set White text on Magenta background.

ESC[46m

Set Background Color to Cyan

After this sequence background of the terminal text cell will be rendered with Cyan Color.

Example: ESC[37;46m - Set White text on Cyan background.

ESC[47m

Set Background Color to White

After this sequence background of the terminal text cell will be rendered with White Color.

Example: ESC[30;47m - Set Black text on White background.

ESC[48;5;<n>m

Set Background/Text Color as index in 256 color terminal’s built-in palette

<n> is a color index (0-255) in 256 color palette. The first 16 colors (0-15) are the same as set by commands: ESC[30m - ESC[37m, ESC[90m - ESC[97m, ESC[40m - ESC[47m, ESC[100m - ESC[107m

Example: ESC[1;3;48;5;120m - Set font attribute to “bold italic” and Background color to index 120 in the 256 color palette.

ESC[48;2;<r>;<g>;<b>m

Set Background/Text Color directly via RGB notation

<r>, <g>, <b> are red, green and blue intensities (in range 0-255) of the Foreground color

Example: ESC[1;3;48;2;255;255;255m - Set font attribute to “bold italic” and Background color to White - RGB(255,255,255).

ESC[49m

Set Background Color to Default Background Color

After this sequence background of the terminal text cell will be rendered with Default Background Color.

Example: ESC[30;49m - Set Black text on Default Colored background.

ESC[90m

Set Foreground/Text Color to Bright Black

After this sequence Text letter (Foreground) will be rendered with Bright Black Color.

Example: ESC[90;47m - Set Bright Black text on White background.

ESC[91m

Set Foreground/Text Color to Bright Red

After this sequence Text letter (Foreground) will be rendered with Bright Red Color.

Example: ESC[91;47m - Set Bright Red text on White background.

ESC[92m

Set Foreground/Text Color to Bright Green

After this sequence Text letter (Foreground) will be rendered with Bright Green Color.

Example: ESC[92;47m - Set Bright Green text on White background.

ESC[93m

Set Foreground/Text Color to Bright Yellow

After this sequence Text letter (Foreground) will be rendered with Bright Yellow Color.

Example: ESC[93;47m - Set Bright Yellow text on White background.

ESC[94m

Set Foreground/Text Color to Bright Blue

After this sequence Text letter (Foreground) will be rendered with Bright Blue Color.

Example: ESC[94;47m - Set Bright Blue text on White background.

ESC[95m

Set Foreground/Text Color to Bright Magenta

After this sequence Text letter (Foreground) will be rendered with Bright Magenta Color.

Example: ESC[95;47m - Set Bright Magenta text on White background.

ESC[96m

Set Foreground/Text Color to Bright Cyan

After this sequence Text letter (Foreground) will be rendered with Bright Cyan Color.

Example: ESC[96;47m - Set Bright Cyan text on White background.

ESC[97m

Set Foreground/Text Color to Bright White

After this sequence Text letter (Foreground) will be rendered with Bright White Color.

Example: ESC[97;40m - Set Bright White text on Black background.

ESC[100m

Set Background Color to Bright Black

After this sequence background of the terminal text cell will be rendered with Bright Black Color.

Example: ESC[37;100m - Set White text on Bright Black background.

ESC[101m

Set Background Color to Bright Red

After this sequence background of the terminal text cell will be rendered with Bright Red Color.

Example: ESC[37;101m - Set White text on Bright Red background.

ESC[102m

Set Background Color to Bright Green

After this sequence background of the terminal text cell will be rendered with Bright Green Color.

Example: ESC[37;102m - Set White text on Bright Green background.

ESC[103m

Set Background Color to Bright Yellow

After this sequence background of the terminal text cell will be rendered with Bright Yellow Color.

Example: ESC[37;103m - Set White text on Bright Yellow background.

ESC[104m

Set Background Color to Bright Blue

After this sequence background of the terminal text cell will be rendered with Bright Blue Color.

Example: ESC[37;104m - Set White text on Bright Blue background.

ESC[105m

Set Background Color to Bright Magenta

After this sequence background of the terminal text cell will be rendered with Bright Magenta Color.

Example: ESC[37;105m - Set White text on Bright Magenta background.

ESC[106m

Set Background Color to Bright Cyan

After this sequence background of the terminal text cell will be rendered with Bright Cyan Color.

Example: ESC[37;106m - Set White text on Bright Cyan background.

ESC[107m

Set Background Color to Bright White

After this sequence background of the terminal text cell will be rendered with Bright White Color.

Example: ESC[30;107m - Set Black text on Bright White background.

  • High Resolution Demo of Bold/Light/Regular/Italic/Underline/StrikeThrough/Inverse Text in proxy32 built-in terminal is shown on Fig. 3.5.1. Bold font weight, Light font weight, Regular font weight and Hidden Text (no rendering of Text Char in the terminal text cell) are mutually exclusive as only one of them can be used to render text. All other attributes like Underline/StrikeThrough/Inverse/Blink/ForegroundColor/BackgroundColor can be applied in any combination as they can co-exist together in the same terminal text cell. Default font is Built-in “Adobe Source Code Pro” family, though user can switch to using installed Windows fonts instead.

Fig. 3.5.1 Bold/Light/Regular/Italic/Underline/StrikeThrough/Inverse Text demo in the Proxy32 built-in terminal

  • High Resolution Demo of 16-color Foreground/Backgound with Bold Font Text in proxy32 built-in terminal is shown on Fig. 3.5.2. Those 16 colors are sometimes called “System” colors, their initial values (defaults) are taken from description of XTERM. They can be re-defined by user via Proxy32 Option dialog. Proxy32 default foreground color is initially defined as White RGB(192,192,192) and default background color is initially defined as Black RGB(0,0,0). They can be re-defined by user via Proxy32 Option dialog.

Fig. 3.5.2 Bold/16-color demo in the Proxy32 built-in terminal

  • High Resolution Demo of 256-color Background in proxy32 built-in terminal is shown on Fig. 3.5.3. First 16 colors in the palette (colors with indexes 0-15) are sometimes called “System” colors, their initial values (defaults) are taken from description of XTERM. They can be re-defined by user via Proxy32 Option dialog.

Fig. 3.5.3 256-color demo in the Proxy32 built-in terminal

  • High Resolution Demo of 24-bit-color Backgound in proxy32 built-in terminal is shown on Fig. 3.5.4.

Fig. 3.5.4 24 bit color demo in the Proxy32 built-in terminal

©2026, Sergey A Belous. | Powered by Sphinx 7.4.7 & Alabaster 0.7.16 | Page source


4. Context Help Pages

4.1. IDH_LAUNCHERTREE_ACTIONSTRING_TOOLTIPS_ENABLED

When TreeNode representation is clipped in the LauncherTree window, use tooltip window to show full text of the clipped line when TreeNode is pointed to by the mouse

4.2. IDH_LAUNCHERTREE_ACTIVE_TERMINAL_GETS_FOCUS_AFTER_TERMINAL_COMMAND_SCRIPT_PLUGIN_LAUNCHER_EXECUTION

“After execution of SHELL-TERMINAL, TELNET-TERMINAL, COM-PORT-TERMINAL, COMMAND, (I-)SCRIPT, (I-)PLUGIN active terminal window gets keyboard focus (instead of keyboard focus staying at LauncherTree)”

4.3. IDH_LAUNCHERTREE_BUTTON_LOAD_ALL_CONFIG

“Re-Load all config from default files in Proxy32 startup directory (LauncherTree - from ‘Tree.xml’, parms/passwords - from ‘proxy-parms.txt’, search patterns - from ‘proxy-search-patterns.txt’, autograb patterns - from ‘proxy-autograb-patterns.txt’, default settings from file ‘Settings.xml’).”

4.4. IDH_LAUNCHERTREE_BUTTON_LOGFILE_VIEWER

Opens logviewer

“Opens Logviewer dialog”

4.5. IDH_LAUNCHERTREE_BUTTON_MACRO_CONFIG

“Opens Macro Recorder/Player configuration dialog.”

4.6. IDH_LAUNCHERTREE_BUTTON_MACRO_PLAYBACK

“Plays back keyboard input events recorded into proxy32 memory buffer. Playback stops when user presses right Ctrl key.”

4.7. IDH_LAUNCHERTREE_BUTTON_MACRO_RECORD

“Records keyboard input events into proxy32 memory buffer. Recording stops when user presses right Ctrl key.”

4.8. IDH_LAUNCHERTREE_BUTTON_SAVE_ALL_CONFIG

“Saves all proxy32 config. Currently, saves LauncherTree (‘Tree.xml’), parameters (‘proxy-parms.txt’), default settings (‘Settings.xml’), search patterns (‘proxy-search-patterns.txt’) and autograb patterns (‘proxy-autograb-patterns.txt’) to proxy32 startup dir. Then it also does backup of the same files (plus all files linked to LauncherTree) to the ‘cfg’ dir which is defined in the default settings file.”

4.9. IDH_LAUNCHERTREE_CYGWIN_HOME_PAGE

“Visit CYGWIN home page”

4.10. IDH_LAUNCHERTREE_CYGWIN_RECREATE_PASSWD_AND_GROUP_FILES_WITH_ALL_LOCAL_USERS_AND_CURRENT_DOMAIN_USER

“If you have added new PC user under windows, you may want to refresh list of your CYGWIN users to be able to use newly created PC user to login to your PC via CYGWIN’s INETD (TELNET/FTP) or SSHD (SSH/SFTP)”

4.11. IDH_LAUNCHERTREE_CYGWIN_VIEW_LICENSE

“View CYGWIN license”

4.12. IDH_LAUNCHERTREE_CYGWIN_VIEW_USER_GUIDE

“View CYGWIN user Guide”

4.13. IDH_LAUNCHERTREE_EDIT_CLIPBOARD_SELECTION_MAX_SIZE_BYTES

“Opens dialog to set threshold (in bytes). If enabled: Terminal Mouse Selection that is longer than 100000 lines and that is longer than threshold number of bytes will be copied to the file but not to the system clipboard (which is limited by available memory). Default threshold is 100000000 bytes.”

4.14. IDH_LAUNCHERTREE_EDIT_DIALOG_FONT_POINT_SIZE

“Set font size (which will automatically define the whole dialog size).”

4.15. IDH_LAUNCHERTREE_EDIT_INITIAL_TSS_PORT_NUMBER

“Opens dialog to edit initial TSS listening port number.”

4.16. IDH_LAUNCHERTREE_FAVORITES

This menu item shows launcherTree favorites menu.

Proxy32 contains LauncherTree Window. This LauncherTree window contains user-defined launchers that would execute pre-configured action on double-click. When user creates many launchers, LauncherTree grows large and it is getting harder and harder to find most popular Launchers on the LauncherTree. Proxy32 allows user to create shortcuts to most frequently used launchers. Those shortcuts are placed in the LauncherTree Favorites menu. LauncherTree Favorites menu contains 10 submenus and each submenu can contain many shortcuts ordered alphabetically by their name.

Shortcuts are stored in their respective launchers as part of Tree.xml configuration file.

4.17. IDH_LAUNCHERTREE_FAVORITES_EMPTY_SLOT

test

4.18. IDH_LAUNCHERTREE_FAVORITES00

test

4.19. IDH_LAUNCHERTREE_FAVORITES01

test

4.20. IDH_LAUNCHERTREE_FAVORITES02

test

4.21. IDH_LAUNCHERTREE_FAVORITES03

test

4.22. IDH_LAUNCHERTREE_FAVORITES04

test

4.23. IDH_LAUNCHERTREE_FAVORITES05

test

4.24. IDH_LAUNCHERTREE_FAVORITES06

test

4.25. IDH_LAUNCHERTREE_FAVORITES07

test

4.26. IDH_LAUNCHERTREE_FAVORITES08

test

4.27. IDH_LAUNCHERTREE_FAVORITES09

test

4.28. IDH_LAUNCHERTREE_HELP_ABOUT

“Opens Proxy’s ‘About’ dialog”

4.29. IDH_LAUNCHERTREE_HELP_CHECK_FOR_NEW_VERSION

Compares size of posted download file “http://sergeybelous.com/proxy/proxy32.exe” with the size of running proxy32.exe without actual downloading. If the sizes are different user can perform upgrade by visiting Proxy32 home page or by using button in “About” dialog.

4.30. IDH_LAUNCHERTREE_HELP_CONTENTS

“Opens Proxy help file in the help viewer window”

4.31. IDH_LAUNCHERTREE_HELP_HOME_PAGE

“Opens Proxy home page in the browser window”

4.32. IDH_LAUNCHERTREE_HELP_WHATISTHIS

“Switches cursor into ‘context help’ mode (‘What is this?’). After you have entered into ‘context help’ mode and the cursor has become ‘an arrow with question mark’ first left-click on the button, drop-down list or WindowMenu item etc in one of the Proxy’s windows will open related help topic in the Proxy help file. Left-Click will open related help topic INSTEAD of causing standard reaction to the left-click that would be expected outside of the ‘context help’ mode. This first left-click will also terminate ‘context help’ mode and cursor will return to standard shape.”

4.33. IDH_LAUNCHERTREE_LIST_APPLICATIONS

“When PROXYTERM window (TELNET-TERMINAL, COM-PORT-TERMINAL, SHELL-TERMINAL) is selected in the Application Drop-Down list, execution of any COMMAND, SCRIPT/I-SCRIPT and PLUGIN/I-PLUGIN TreeNodes will go to the selected PROXYTERM window. When non-PROXYTERM window (LAUNCH, VIEWER, SCRIPT, GRAB) is selected in the Application Drop-Down list, execution of any COMMAND TreeNodes will go to the selected non-PROXYTERM window.

When user clicks on the title bar of the window that is already in the Applications Drop-Down List, this window will be automatically selected in the Applications Drop-Down List. This is to simplify window selection for execution of any COMMAND, SCRIPT/I-SCRIPT and PLUGIN/I-PLUGIN TreeNodes.

When user selects particular window from the list it will be unhidden, brought to the front and positioned in the right 2/3d of the screen space while main PROXY window (with LauncherTree) will be positioned in left 1/3d of the screen space.

‘Hide All’, ‘Hide Selected’, ‘Show All’, ‘Cascade’ and ‘Tile’ buttons can be used to manipulate by visibility and position of the windows contained in the list.

When PROXY exits, it will terminate all child applications/windows contained in the list (first it would send a warning to the child application and then on the final round of clean-up it will kill application if it is still alive).

When application exits, PROXY will receive notification and remove application/window name from the list.”

4.34. IDH_LAUNCHERTREE_LOADSAVECONFIG_CHECK_EXISTENCE_OF_SCRIPTS

“Check validity of all SCRIPT/I-SCRIPT/VIEWER references to the local files. If file does not exist, TreeNode will be labelled by the red color.”

4.35. IDH_LAUNCHERTREE_LOADSAVECONFIG_DELETE_TREE

“Delete LauncherTree from Memory (Memory LauncherTree is shown in the lower part of the main window - below the toolbar buttons). Keep in mind that if you delete tree from memory and exit proxy32, empty LauncherTree memory will be written to the default LauncherTree storage file ‘Tree.xml’ (in Proxy startup directory) and, therefore, you will lose content of this file.”

4.36. IDH_LAUNCHERTREE_LOADSAVECONFIG_EXPORT_FULL_CONFIG_TO_SELECTED_DIRECTORY

“Saves all proxy32 config to Selected directory. Currently, saves default settings (‘Settings.xml’), LauncherTree (‘Tree.xml’ and linked files in ‘Tree.xml.files’ subdirectory), parameters/passwords (‘proxy-parms.txt’), search patterns (‘proxy-search-patterns.txt’) and autograb patterns (‘proxy-autograb-patterns.txt’).”

4.37. IDH_LAUNCHERTREE_LOADSAVECONFIG_IMPORT_FULL_CONFIG_FROM_SELECTED_DIRECTORY

“Re-Load all config from default files in Selected directory

LauncherTree - from ‘Tree.xml’ and linked files in ‘Tree.xml.files’ subdirectory,

parms/passwords - from ‘proxy-parms.txt’,

search patterns - from ‘proxy-search-patterns.txt’,

autograb patterns - from ‘proxy-autograb-patterns.txt’,

default settings from file ‘Settings.xml’

4.38. IDH_LAUNCHERTREE_LOADSAVECONFIG_LOAD_APPEND_PARMS_PASSWORDS_FROM_FILE

“Load Parms/Passwords Memory from the selected text file (New loaded Parms/Passwords will be appended to the Parms/Passwords that existed in the memory before loading from file). Values of existing Parms/Passwords will be updated. Passwords will be decrypted.”

4.39. IDH_LAUNCHERTREE_LOADSAVECONFIG_LOAD_APPEND_TREE_FROM_FILE

“Load LauncherTree Memory from the selected XML file (loaded LauncherTree will be appended to the LauncherTree that existed in the memory before loading from file). Also load local files linked to (I-)SCRIPT and VIEWER TreeNodes from subdirectory named after LauncherTree XML file.”

4.40. IDH_LAUNCHERTREE_LOADSAVECONFIG_LOAD_PARMS_PASSWORDS_FROM_FILE

“Delete Parms/Passwords from memory and load Parms/Passwords Memory from the selected text file. Passwords will be decrypted.”

4.41. IDH_LAUNCHERTREE_LOADSAVECONFIG_LOAD_TREE_FROM_FILE

“Delete LauncherTree from memory and load LauncherTree Memory from the selected XML file. Also load local files linked to (I-)SCRIPT and VIEWER TreeNodes from subdirectory named after LauncherTree XML file.”

4.42. IDH_LAUNCHERTREE_LOADSAVECONFIG_MENU

Use TreeNode/Add menu to add new TreeNodes (if there is no TreeNodes to click on).

Otherwise click on the existing TreeNodes:

  • DoubleLeftClick - Execute clicked TreeNode

  • MiddleClick - Edit clicked TreeNode

  • RightClick - Add new TreeNode under clicked TreeNode

  • CtrlRightClick - Delete clicked TreeNode

  • CtrlMiddleClick - Edit Script referred in the clicked TreeNode

You can also use Mouse Drag-And-Drop

  • to move (without Ctrl pressed)

  • or copy (with Ctrl pressed)

TreeNodes inside of the LauncherTree or to copy them to/from outside of PROXY window (for example, to/from Windows Desktop).

‘Execute’ (DoubleLeftClick on) TreeNode has following effect:

  • for SUBTREE TreeNode - shows/hides children/subtree,

  • for TELNET-TERMINAL/COM-PORT-TERMINAL/SHELL-TERMINAL TreeNode - opens PROXYTERM window (and adds this window to the applications drop-down list) and connects to the specified destination (and execute SCRIPT/PLUGIN ‘on connect’ if SCRIPT/PLUGIN item is located under TELNET-TERMINAL/COM-PORT-TERMINAL/SHELL-TERMINAL item that is being executed),

  • for COMMAND TreeNode - pastes command to the current (selected in the applications drop-down list) PROXYTERM window or non-PROXYTERM window,

  • for SCRIPT/I-SCRIPT/PLUGIN/I-PLUGIN TreeNode - gives to SCRIPT/PLUGIN control over the the interaction with current (selected in the applications drop-down list) PROXYTERM window,

  • for VIEWER TreeNode - opens configured link in the MS Internet Explorer and adds this window to the applications drop-down list,

  • for LAUNCH TreeNode - starts configured application and (if configured) adds application window into the applications drop-down list.

  • execution of URLCOPY TreeNode (legacy) is not yet supported in Proxy32 and it appears to be no need for this so far.

If the TreeNode that is being executed (or SCRIPT/I-SCRIPT text file started by the execution of the TreeNode) contains proxy parms (<PROXYPARM=XXXX> and/or <PROXYPASSWORD=XXXX>) Proxy will try to substitute the parms values from the existing list of the proxy parms that resides in the Proxy Parameters memory (this list is initially loaded from the file ‘proxy-parms.txt’ on proxy start-up and this list is saved to the file ‘proxy-parms.txt’ on proxy exit).

If the parameter is not in the memory list or it doesn’t have the value or it does not have attribute ‘Do not ask again’, Proxy will popup ‘Proxy Parameters input dialog’ to the user before executing any TreeNode that requires parameters substitution.”

4.43. IDH_LAUNCHERTREE_LOADSAVECONFIG_SAVE_PARMS_PASSWORDS_TO_FILE

“Save content of the Parms/Passwords Memory as the text file. Passwords will be encrypted.”

4.44. IDH_LAUNCHERTREE_LOADSAVECONFIG_SAVE_TREE_TO_FILE

“Save content of the LauncherTree Memory as the XML file. Also save local files linked to (I-)SCRIPT and VIEWER TreeNodes into subdirectory named after LauncherTree XML file.”

4.45. IDH_LAUNCHERTREE_PARMS_APPEND_AND_UPDATE_PROXY_PARAMETERS_FROM_FILE

“User can select proxy parameters/passwords file from which to load. If selected file contains parms that are not present in the current proxy parms list, they will be appended to the current proxy parms list. If selected file contains parms that are already in the current proxy parms list, the values of the parms in the current proxy parms list will be updated.”

4.46. IDH_LAUNCHERTREE_PARMS_APPEND_AND_UPDATE_PROXY_PARAMETERS_FROM_FILE_WITHOUT_DECRYPTION

“User can select proxy parameters/passwords file from which to load. If selected file contains parms that are not present in the current proxy parms list, they will be appended to the current proxy parms list. If selected file contains parms that are already in the current proxy parms list, the values of the parms in the current proxy parms list will be updated.”

4.47. IDH_LAUNCHERTREE_PARMS_APPEND_PROXY_PARAMETERS_FROM_FILE

“User can select proxy parameters/passwords file from which to load. If selected file contains parms that are not present in the current proxy parms list, they will be appended to the current proxy parms list. If selected file contains parms that are already in the current proxy parms list, the values of the parms in the current proxy parms list will not be updated.”

4.48. IDH_LAUNCHERTREE_PARMS_DELETE_NON_PERSISTENT_PROXY_PARAMETERS

“Delete all non-persistent parameters in the existing list of the proxy parms that resides in the Proxy Parameters memory (this list is initially loaded from the file ‘proxy-parms.txt’ on proxy start-up and this list is saved to the file ‘proxy-parms.txt’ on proxy exit).”

4.49. IDH_LAUNCHERTREE_PARMS_EDIT_NON_PERSISTENT_PROXY_PARAMETERS

“Edit all non-persistent parameters in the existing list of the proxy parms that resides in the Proxy Parameters memory (this list is initially loaded from the file ‘proxy-parms.txt’ on proxy start-up and this list is saved to the file ‘proxy-parms.txt’ on proxy exit).”

4.50. IDH_LAUNCHERTREE_PARMS_EDIT_PERSISTENT_PROXY_PARAMETERS

“Edit all persistent parameters in the existing list of the proxy parms that resides in the Proxy Parameters memory (this list is initially loaded from the file ‘proxy-parms.txt’ on proxy start-up and this list is saved to the file ‘proxy-parms.txt’ on proxy exit).”

4.51. IDH_LAUNCHERTREE_PARMS_EDIT_PROXY_PARAMETERS

“Opens Proxy Parameters edit dialog that shows you the existing list of the proxy parms that resides in the Proxy Parameters memory (this list is initially loaded from the file ‘proxy-parms.txt’ on proxy start-up and this list is saved to the file ‘proxy-parms.txt’ on proxy exit).”

4.52. IDH_LAUNCHERTREE_PARMS_MERGE_PROXY_PARAMETERS

“Scans all TreeNodes and linked SCRIPT/I-SCRIPT files for Proxy parameters (<PROXYPARM=XXXX> and <PROXYPASSWORD=XXXX>), presents you with the full list of found parameters and on pressing ‘OK’ will merge the list of newly found parms with the existing list of the proxy parms that resides in the Proxy Parameters memory (this list is initially loaded from the file ‘proxy-parms.txt’ on proxy start-up and this list is saved to the file ‘proxy-parms.txt’ on proxy exit).”

4.53. IDH_LAUNCHERTREE_PARMS_SAVE_PROXY_PARAMETERS_TO_FILE

“Save content of proxy parameters/passwords memory to the file. Password values will be encrypted.”

4.54. IDH_LAUNCHERTREE_PARMS_SAVE_PROXY_PARAMETERS_TO_FILE_WITHOUT_ENCRYPTION

“Save content of proxy parameters/passwords memory to the file. Password values will not be encrypted.”

4.55. IDH_LAUNCHERTREE_PARMS_SEARCH_PROXY_PARAMETERS

“Opens Proxy Parameters edit dialog that shows you only ‘filtered by parameter name’ (by matching a regular expression pattern) part of the existing list of the proxy parms that resides in the Proxy Parameters memory (this list is initially loaded from the file ‘proxy-parms.txt’ on proxy start-up and this list is saved to the file ‘proxy-parms.txt’ on proxy exit). If the name of the parameter matches regular expression then parameter will be shown in the edit dialog.”

4.56. IDH_LAUNCHERTREE_PARMS_SORT_PROXY_PARAMETERS

“Sort alphabetically all parameters in the existing list of the proxy parms that resides in the Proxy Parameters memory (this list is initially loaded from the file ‘proxy-parms.txt’ on proxy start-up and this list is saved to the file ‘proxy-parms.txt’ on proxy exit).”

4.57. IDH_LAUNCHERTREE_PARMS_TIDY_PROXY_PARAMETERS

“Scans all TreeNodes and linked SCRIPT/I-SCRIPT files for Proxy parameters (<PROXYPARM=XXXX> and <PROXYPASSWORD=XXXX>), presents you with the full list of found parameters and on pressing ‘OK’ will use this list of newly found parms to replace the existing list of the proxy parms that resides in the Proxy Parameters memory (this list is initially loaded from the file ‘proxy-parms.txt’ on proxy start-up and this list is saved to the file ‘proxy-parms.txt’ on proxy exit).”

4.58. IDH_LAUNCHERTREE_PARMS_UPDATE_PROXY_PARAMETERS_FROM_FILE

“User can select proxy parameters/passwords file from which to load. If selected file contains parms that are not present in the current proxy parms list, they will not be appended to the current proxy parms list. If selected file contains parms that are already in the current proxy parms list, the values of the parms in the current proxy parms list will be updated.”

4.59. IDH_LAUNCHERTREE_POPUPMENU_ADD_AHK_SCRIPT

Adds AHK-SCRIPT Launcher under RightClicked Launcher or at the end of the LauncherTree. On LeftDoubleClick AHK-SCRIPT Launcher saves its text to temporary file and passes this file to the external script interpreter for execution. Current implementation of AHK-SCRIPT Launcher uses external AHK script interpreter that is installed with Proxy32.

Mouse Shortcuts:

  • ShiftDoubleClick on AHK-SCRIPT Launcher that contains “<PROXY_SUBSTITUTED_COMMAND_TEXT>” substitution parameter (placeholder) in the text of its command/ahk_script. This will enable WRAPPER MODE and set ShiftDoubleClick-ed launcher as designated WRAPPER for all subsequent COMMAND/SCRIPT_line executions.

  • CtrlShiftDoubleClick on any AHK-SCRIPT Launcher. This will disable WRAPPER MODE.

4.60. IDH_LAUNCHERTREE_POPUPMENU_ADD_COMMAND

Adds COMMAND Launcher under RightClicked Launcher or at the end of the LauncherTree. On LeftDoubleClick COMMAND Launcher types command text (with all parameters and passwords substituted) to the Window that is selected in the Proxy32 Selector Window drop-down list.

When COMMAND Launcher is added to LauncherTree, it can be executed. Depending on what window is active in the current workspace, COMMAND Launcher execution is different:

  • if active window is ProxyTerm Window (as indicated by red window frame): when user LeftDoubleClick on the COMMAND Launcher, command text is sent into Active ProxyTerm window directly (without using system clipboard or keyboard driver) to the local or remote shell to which terminal is connected. From user prospective it may look like pasting or typing.

  • if active window is NOT ProxyTerm Window (such window would have RED STICKER): when user LeftDoubleClick on the COMMAND Launcher, command text is injected into keyboard driver queue and, therefore, typed into Active Window which is brought to foreground on Launcher execution. In that mode all COMMAND Launcher settings like LineTerminator and InterCharDelay are applied. In that mode PROXYSEND parameters are also executed to directly control user mouse and keyboard.

  • when user Ctrl-LeftDoubleClick on the COMMAND Launcher, command text (with all parameters and passwords substituted) is copied to clipboard.

  • when user Shift-LeftDoubleClick on the COMMAND Launcher, command is typed to active window with WRAPPER mode temporary disabled (just for this execution). If text of COMMAND contains “<PROXY_SUBSTITUTED_COMMAND_TEXT>”, instead of being typed such COMMAND becomes current WRAPPER and WRAPPER mode is enabled.

  • when user Ctrl-Shift-LeftDoubleClick on the COMMAND Launcher, instead of COMMAND being typed WRAPPER mode is disabled.

4.61. IDH_LAUNCHERTREE_POPUPMENU_ADD_COMPORT_TERMINAL

Adds COM-PORT-TERMINAL Launcher under RightClicked Launcher or at the end of the LauncherTree. On LeftDoubleClick COM-PORT-TERMINAL Launcher opens ProxyTerm Window and connects it to COM-PORT configured in the Launcher.

4.62. IDH_LAUNCHERTREE_POPUPMENU_ADD_CSVPARMS

Adds CSVPARMS Launcher under RightClicked Launcher or at the end of the LauncherTree. CSVPARMS Launcher contains path (absolute or relative to proxy32 startup directory) to local CSV file. On LeftDoubleClick CSVPARMS Launcher imports contents of linked CSV file into Proxy32 named parameters list. Local CSV file referred in CSVPARMS Launcher is linked to the Proxy32 launcher Tree. That is: local file will be exported/imported together with proxy32 xml launcher tree.

4.63. IDH_LAUNCHERTREE_POPUPMENU_ADD_IPLUGIN

“Adds I-PLUGIN TreeNode under RightClicked TreeNode or at the end of the LauncherTree. On LeftDoubleClick I-PLUGIN TreeNode starts I-PLUGIN child process and connects it’s STDIN/STDOUT/STDERR to ProxyTerm Window that is selected in the drop-down list located at the top of the screen. Keyboard input of ProxyTerm is passed to I-PLUGIN via the temporary file. Name of the temporary file is appended to the command line of the I-PLUGIN on the start.”

4.64. IDH_LAUNCHERTREE_POPUPMENU_ADD_ISCRIPT

“Adds I-SCRIPT TreeNode under RightClicked TreeNode or at the end of the LauncherTree. On LeftDoubleClick it executes I-SCRIPT commands into ProxyTerm Window that is selected in the drop-down list located at the top of the screen. If I-SCRIPT TreeNode is located immediately under TELNET-TERMINAL, SHELL-TERMINAL or COM-PORT-TERMINAL TreeNode, it will be used for automatic login on the execution (CONNECT) of the item above it.”

4.65. IDH_LAUNCHERTREE_POPUPMENU_ADD_YAMLPARMS

Adds YAMLPARMS Launcher under RightClicked Launcher or at the end of the LauncherTree. YAMLPARMS Launcher contains path (absolute or relative to proxy32 startup directory) to local JSON/YML file. On LeftDoubleClick YAMLPARMS Launcher imports contents of linked JSON/YML file into Proxy32 named parameters list. Local JSON/YML file referred in YAMLPARMS Launcher is linked to the Proxy32 launcher Tree. That is: local file will be exported/imported together with proxy32 xml launcher tree.

4.66. IDH_LAUNCHERTREE_POPUPMENU_ADD_LAUNCH

Adds LAUNCH Launcher under RightClicked Launcher or at the end of the LauncherTree. On LeftDoubleClick LAUNCH Launcher starts pre-configured application via its command line (similar to Windows shortcut) and (if WINDOW_CLASS and WINDOW_TITLE REGEXs are properly configured) catches the Application Window handle and appends Window Name to Proxy32 Selector Window drop-down list. If Window handle is caught, Application Window itself is inserted into current Porxy32 Workspace. Once Application Window is placed inside of Workspace, it can be controlled via Workspace actions (like “Tile”) and via COMMAND launchers (that can type predefined text into “Selected” Application Window). Some Applications are written to programmatically control their own Windows. Such Applications will not work well inside of Proxy32 Workspace. Window Searching/Catching algorithm is waiting up to 5 seconds for Application Window to appear in the system. If Application Window is taking too long to appear, it will not be caught. In such cases, please, use AUTOGRAB or MANUAL_GRAB functionality of Proxy32 to catch Application Window.

4.67. IDH_LAUNCHERTREE_POPUPMENU_ADD_LUA_SCRIPT

Adds LUA-SCRIPT Launcher under RightClicked Launcher or at the end of the LauncherTree. On LeftDoubleClick LUA-SCRIPT Launcher executes LUA script that is configured in that LUA-SCRIPT Launcher.

Proxy32 has built-in LUA interpreter that is keeping global variables in its memory as long as Proxy32 is running. LUA interpreter is initialized on Proxy32 start and can be re-initialized when requested by user. Execution of LUA-SCRIPT launcher and/or execution of LUA templates is done via built-in LUA interpreter. All global LUA variables created/modified as result of such executions will accumulate and stay in interpreter memory until Proxy32 will exit or until interpreter is explicitely reset on user’s request.

LUA-SCRIPT Launcher is intended to execute code to intialize LUA Global state. That means to initialize LUA global variables (directly or by reading from data files) in built-in Proxy32 LUA interpreter so that those global LUA variables can later be used in LUA templates in the configured text of the other launchers.

For example, first execute LUA-SCRIPT launcher that contains text ‘i=”1”’, then execute COMMAND Launcher with the text “ls {{i}}”. COMMAND Launcher should type text “ls 1” into active window. For this example to work, LUA Templating engine should be enabled in Proxy32.

4.68. IDH_LAUNCHERTREE_POPUPMENU_ADD_PLUGIN

“Adds PLUGIN TreeNode under RightClicked TreeNode or at the end of the LauncherTree. On LeftDoubleClick PLUGIN TreeNode starts PLUGIN child process and connects it’s STDIN/STDOUT/STDERR to ProxyTerm Window that is selected in the drop-down list located at the top of the screen. If PLUGIN TreeNode is located immediately under TELNET-TERMINAL, SHELL-TERMINAL or COM-PORT-TERMINAL TreeNode, it will be used for automatic login on the execution (CONNECT) of the item above it.”

4.69. IDH_LAUNCHERTREE_POPUPMENU_ADD_PYTHON_SCRIPT

Adds PYTHON-SCRIPT Launcher under RightClicked Launcher or at the end of the LauncherTree. On LeftDoubleClick PYTHON-SCRIPT Launcher executes PYTHON script that is configured in that PYTHON-SCRIPT Launcher.

Proxy32 has built-in PYTHON interpreter that is keeping global variables in its memory as long as Proxy32 is running. PYTHON interpreter is initialized on Proxy32 start and can be re-initialized when requested by user. Execution of PYTHON-SCRIPT launcher and/or execution of PYTHON templates is done via built-in PYTHON interpreter. All global PYTHON variables created/modified as result of such executions will accumulate and stay in interpreter memory until Proxy32 will exit or until interpreter is explicitely reset on user’s request.

PYTHON-SCRIPT Launcher is intended to execute code to intialize PYTHON Global state. That means to initialize PYTHON global variables (directly or by reading from data files) in built-in Proxy32 PYTHON interpreter so that those global PYTHON variables can later be used in PYTHON templates in the configured text of the other launchers.

For example, first execute PYTHON-SCRIPT launcher that contains text ‘i=”1”’, then execute COMMAND Launcher with the text “ls {#i#}”. COMMAND Launcher should type text “ls 1” into active window. For this example to work, PYTHON Templating engine should be enabled in Proxy32.

4.70. IDH_LAUNCHERTREE_POPUPMENU_ADD_SCRIPT

Adds SCRIPT Launcher under RightClicked Launcher or at the end of the LauncherTree. When SCRIPT Launcher is added to LauncherTree, it can be executed. Depending on what window is active in the current workspace, SCRIPT Launcher execution is different:

  • if active window is ProxyTerm Window (as indicated by red window frame): when user LeftDoubleClick on the non-CSV SCRIPT Launcher, commands (lines) are pasted into Active Terminal window automatically one by one from SCRIPT file referred by SCRIPT Launcher. Next line is pasted only when there was no output in terminal window for period longer than “delay between SCRIPT lines” configured in the SCRIPT Launcher (configured in seconds).

  • if active window is NOT ProxyTerm Window (such window would have RED STICKER): when user LeftDoubleClick on the non-CSV SCRIPT Launcher, next command (line) from SCRIPT file referred by SCRIPT Launcher is injected into keyboard driver queue and, therefore, typed into Active Window which is brought to foreground on Launcher execution (in a manner similar to execution of COMMAND Launcher to NON-terminal window). In that mode all COMMAND Launcher settings like LineTerminator and InterCharDelay and WRAPPER are applied. Global counter “Next line number” will be incremented post-execution if autoincrement is enabled.

  • if SCRIPT launcher refers to CSV file (file with extension CSV, case insensitive), such launcher is referred to as CSV SCRIPT Launcher. When user LeftDoubleClick on the CSV SCRIPT Launcher next non-header CSV line will be parsed to populate Proxy parameters from this CSV line. Parameter’s names are taken from fields/columns names in CSV header line. Parameters values are taken from parsing fields in non-header (current) CSV line. CSV header line is referred to as line number 0. All non-header lines/rows are started from line number 1. CSV header line/row is mandatory for CSV files that are referred in CSV SCRIPT launcher. Global counter “Next line number” will be incremented post-execution if autoincrement is enabled.

  • when user Alt-Ctrl-LeftDoubleClick on the SCRIPT Launcher, dialog will appear that allows manually set “next line number” (starting from 0) in the non-CSV SCRIPT file referred by SCRIPT Launcher. Next line number refers to the non-CSV SCRIPT file’s line that will be typed next time SCRIPT Launcher will be executed to NON-terminal window. In case of CSV SCRIPT “next line number” starts from 1 and refers to the CSV line that will be parsed next time on execution of CSV SCRIPT to populate Proxy parameters from this CSV line.

  • when user Alt-Shift-LeftDoubleClick on the non-CSV SCRIPT Launcher, each line of the SCRIPT file referred by SCRIPT Launcher will be pasted into separate ProxyTerm Window. That only applies to Non-Minimized ProxyTerm Windows in the Current Workspace with “SharedInputMode” set to “Slave”. The lines will be pasted in the order, in which affected ProxyTerm Windows are tiled (left to right and then top to bottom). Line 0 from SCRIPT file will be pasted to first terminal window, line 1 from SCRIPT file will be pasted to next terminal window and so on.

  • when user Alt-Ctrl-Shift-LeftDoubleClick on the non-CSV SCRIPT Launcher, each line of the SCRIPT file referred by SCRIPT Launcher will be set as title of separate ProxyTerm Window. That only applies to Non-Minimized ProxyTerm Windows in the Current Workspace with “SharedInputMode” set to “Slave”. The lines will be used in the order, in which affected ProxyTerm Windows are tiled (left to right and then top to bottom). Line 0 from SCRIPT file will be title of first terminal window, line 1 from SCRIPT file will be title of next terminal window and so on.

  • when user Alt-LeftDoubleClick on the non-CSV SCRIPT Launcher, the SCRIPT file referred by SCRIPT Launcher will be copied to clipboard with all parameters substututed.

  • when user Ctrl-LeftDoubleClick on the non-CSV SCRIPT Launcher, text of the current SCRIPT line (with all parameters and passwords substituted) is copied to clipboard. Global counter “Next line number” will be incremented post-execution if autoincrement is enabled.

  • when user Shift-LeftDoubleClick on the non-CSV SCRIPT Launcher, text of the current SCRIPT line is typed to active window with WRAPPER mode temporary disabled (just for this execution). Global counter “Next line number” will be incremented post-execution if autoincrement is enabled.

  • when user Ctrl-Shift-LeftDoubleClick on the non-CSV or CSV SCRIPT Launcher, (instead of text of the current non-CSV SCRIPT line being typed into active window or instead of the current CSV SCRIPT line being parsed) the WRAPPER mode is disabled.

4.71. IDH_LAUNCHERTREE_POPUPMENU_ADD_SHELL_TERMINAL

“Adds SHELL-TERMINAL TreeNode under RightClicked TreeNode or at the end of the LauncherTree. On LeftDoubleClick SHELL-TERMINAL TreeNode opens ProxyTerm Window and connects it to STDIN/STDOUT of local interactive text-mode application. Mainly used for connecting to CYGWIN bash/ssh/sftp etc via proxycygterm.exe interface application. Can also be used to connect directly to dos shell (cmd.exe). Source code of proxycygterm is included with the proxy32 installer and can be compiled under newer versions of CYGWIN.”

4.72. IDH_LAUNCHERTREE_POPUPMENU_ADD_SUBTREE

“Adds SUBTREE TreeNode under RightClicked TreeNode or at the end of the LauncherTree. SUBTREE is used to group other executable TreeNodes and, therefore, to build hierarchical LauncherTree. SUBTREE acts like a folder in Windows - it has a name, it contains other items, it opens or closes on LeftDoubleClick”

4.73. IDH_LAUNCHERTREE_POPUPMENU_ADD_TELNET_TERMINAL

“Adds TELNET-TERMINAL TreeNode under RightClicked TreeNode or at the end of the LauncherTree. On LeftDoubleClick TELNET-TERMINAL TreeNode opens ProxyTerm Window and connects to Remote Host:Port via TELNET protocol.”

4.74. IDH_LAUNCHERTREE_POPUPMENU_ADD_VIEWER

Adds VIEWER Launcher under RightClicked Launcher or at the end of the LauncherTree.

Proxy32 allows user to create LAUNCH launcher that is similar to MS Windows shortcut for launching application. The difference with MS Windows shortcut is that Proxy32 launchers are part of the Proxy32 user configuration and they reside on the Proxy32 LauncherTree. LAUNCH launcher requires user to configure full command line that includes path to the executable file (for example, notepad.exe) and parameters that may include, for example, command line switches and path to the text file that should be opened in the Notepad. To open different text files in the Notepad user will have to configure different LAUNCH launcher for each text file. VIEWER launcher uses functionality of the LAUNCH launcher “under the hood” but it stores only path to the text file or URL while the rest of the command line (before and after text file or URL) and all other configuration required by LAUNCH launcher (for example, window capturing mode or elevation mode) is taken from the entry in the list of VIEWER definitions. When VIEWER launcher is executed by user, Proxy32 takes file path or URL stored in the VIEWER and trying to match it against regex patterns associated with each entry in the list of VIEWER definitions. Particular entry in the list of VIEWER definitions is selected when text file path or URL of the executed VIEWER launcher matches regex pattern associated with this entry. Order of entries in the list of VIEWER definitions matters when REGEX pattern for one entry can match the same URL string as REGEX pattern for another entry. VIEWER definition entries and their order are edited in “edit VIEWER definitions” dialog. List of VIEWER definitions is stored in the file ViewerDefinition.xml located in Proxy32 startup directory.

If URL configured in the VIEWER Launcher contains path (absolute or relative to proxy32 startup directory) to local “.txt” file, that local file will be exported/imported together with Proxy32 xml launcher tree. That is referred to as “local file being linked to Proxy32 Launcher Tree”.

Right click on this button or menu item to access context help page to get more details

4.75. IDH_LAUNCHERTREE_POPUPMENU_CHECK_EXISTENCE_OF_SCRIPTS_FROM_ITEM

Check that all links to local files from SCRIPT/ I-SCRIPT/ VIEWER/ CSVPARMS/ YAMLPARMS are pointing to existing local files.

4.76. IDH_LAUNCHERTREE_POPUPMENU_DELETE_CLICKED_ITEM

“Deletes RightClicked TreeNode (could be huge SUBTREE Tree). Keep in mind that a single SUBTREE TreeNode includes all its underlying subtree for the purpose of deleting, saving to file or inserting from file.”

4.77. IDH_LAUNCHERTREE_POPUPMENU_EDIT_CLICKED_ITEM

“Brings up dialog to edit RightClicked LauncherTree Item”

4.78. IDH_LAUNCHERTREE_POPUPMENU_EDIT_SCRIPT_FROM_CLICKED_ITEM

“Opens SCRIPT/I-SCRIPT file linked to the RightClicked LauncherTree Item”

4.79. IDH_LAUNCHERTREE_POPUPMENU_EXECUTE_RIGHTCLICKED_ITEM

“Execute RightClickedItem”

4.80. IDH_LAUNCHERTREE_POPUPMENU_INSERT_TREE_FROM_FILE_UNDER_RIGHTCLICKED_ITEM

“Load and insert Tree from the user-selected ‘Tree text file’. ‘Tree text file’ is selected by user via ‘Open File Dialog’. Loaded Tree will be inserted into the existing (in Proxy32 memory) Tree under RightClicked ‘parent’ TreeNode.

A ‘single’ SUBTREE TreeNode includes all its underlying subtree of TreeNode(s) for the purpose of deleting, saving to file or inserting from the file.

This insertion may also install all local disk files referred by VIEWER/SCRIPT/I-SCRIPT TreeNode(s) in the Tree of the inserted ‘Tree text file’. Proxy32 will install all Tree-supporting files IF the inserted ‘Tree text file’ has next to it (in the same directory) ‘Tree supporting folder’ with the name that matches the name of inserted ‘Tree text file’. Matching name of the ‘Tree supporting folder’ is the same as the name of the ‘Tree text file’ with ‘.files’ extension appended.

Proxy32 creates ‘Tree supporting folder’ with the ‘Tree text file’-matching name when existing (in Proxy32 memory) Tree or it’s part is being exported into the ‘Tree text file’.

<Name of ‘Tree supporting folder’>=<name of ‘Tree text file’>.files

‘Tree supporting folder’ will contain all local disk files that were referred by VIEWER/SCRIPT/I-SCRIPT TreeNode(s) of the exported ‘Tree text file’ at the time when it was exported. Relative path references are counted from Proxy32 installation directory for the purpose of converting to absolute paths.

When importing Tree from ‘Tree text file’ proxy32 looks for the folder with matching name and if the folder exists and has necessary files proxy32 installs LauncherTree-supporting files at the same locations where they were during the export. Name conflicts of Tree-supporting files are resoled as follows. On the import into proxy32 old file with conflicting name will be renamed to ‘Copy of …’ and then the new one will be created. On the export from proxy32 new file will overwrite existing one with conflicting name. When export from proxy32 is done via mouse drag-n-drop and the drop location already contains files/dirs with conflicting names, Windows will ask user what to do: overwrite old files or keep them.”

4.81. IDH_LAUNCHERTREE_POPUPMENU_MERGE_PROXY_PARAMETERS_FROM_ITEM

“Scan TreeNode (and it’s children if any, and all linked SCRIPTs/I-SCRIPTs) for proxy parms and passwords, allow user to edit/populate those parms/passwords and merge them (on OK) into proxy parms/passwords list.”

4.82. IDH_LAUNCHERTREE_POPUPMENU_SAVE_ITEM_TO_FILE

“Save-Overwrite RightClicked TreeNode (could be huge SUBTREE Tree) as a ‘Tree text file’. Keep in mind that a single SUBTREE TreeNode includes all its underlying subtree for the purpose of deleting, saving to file or inserting from file.”

4.83. IDH_LAUNCHERTREE_POPUPMENU_SEARCH_ADD_HOTKEY_TO_RIGHTCLICKED_LAUNCHER

“Add Hotkey to RightClicked Launcher”

4.84. IDH_LAUNCHERTREE_POPUPMENU_SEARCH_ADD_RIGHTCLICKED_TO_FAVORITES

“Adds shortcut to rightclicked TreeNode into Tree Bookmarks menu”

4.85. IDH_LAUNCHERTREE_POPUPMENU_SEARCH_CLEAR_FAVORITES_MENU

“Clears Tree Bookmarks menu”

4.86. IDH_LAUNCHERTREE_POPUPMENU_SEARCH_CLEAR_SEARCH_IN_RIGHTCLICKED_ITEM

“Remove all BLUE and RED color tagging from RightClicked TreeNode. Under RightClicked SUBTREE: Recursively remove all BLUE and RED color tagging from nested TreeNodes and collapse all nested SUBTREEs.”

4.87. IDH_LAUNCHERTREE_POPUPMENU_SEARCH_EXPAND_TO_SHOW_ALL_IN_SUBTREE

“Expand all under RightClicked SUBTREE”

4.88. IDH_LAUNCHERTREE_POPUPMENU_SEARCH_EXPAND_TO_SHOW_TAGGED_IN_SUBTREE

“Under RightClicked SUBTREE: All TreeNodes tagged with BLUE or RED will be expanded to the visible state”

4.89. IDH_LAUNCHERTREE_POPUPMENU_SEARCH_IN_RIGHTCLICKED_ITEM

Search for the text pattern in the Launchers (in certain configuration text fileds and in tooltip text field) and also line-by-line search in the all files referenced in the SCRIPT/I-SCRIPT Launchers and in some “local” “text files” referenced in the VIEWER Launchers.

Search is performed for the RightClicked Launcher. If SUBTREE is RightClicked, search is performed recursively for all Launchers nested under RightClicked SUBTREE.

Search uses PERL Regular Expression Syntax (PCRE) for coding of the search pattern for regex search mode.

Launchers that contain match in the searched text fields or Launchers that reference file that contains matching string will be tagged with BLUE color, Launchers that refer to the non-existent “local” files will be tagged with the RED color. LauncherTree will be expanded only to make visible all Launchers tagged with BLUE or RED.

During the search all files referenced in the SCRIPT/I-SCRIPT Launcher and “local” (meaning VIEWER URL does not contain substrings “://” or “\”) “text files” (meaning VIEWER URL does contain substrings “.txt” or “.htm” or “.xml”) referenced in the VIEWER launcher are converted in-place (file content is replaced on the disk) from “ANSI/ASCII/UTF8/UTF16BE text format” to “UTF-16LE with the BOM text format”. After in-place conversion such files are being searched line by line (per line search buffer is limited to 2000 chars).

VIEWER URLs that do not satisfy above search requirements for referring to “local” “text files” are ignored by search and no in-place conversion and search is performed for resources referred by such URLs.

4.90. IDH_LAUNCHERTREE_POPUPMENU_SEARCH_TAG_RIGHTCLICKED

“Tag rightclicked TreeNode with the BLUE color. You can manually (via TAG option - BLUE TAG) or automatically (via LauncherTree Search - BLUE TAG or via file link integrity check - RED TAG) tag TreeNodes located in the different SUBTREEs at different depth. You can keep tagging TreeNodes via different methods until all wanted TreeNodes are tagged. While working with LauncherTree you would collapse some SUBTREEs and expand another SUBTREEs. Eventually, you would lose track of all tagged TreeNodes. Then later all tagged TreeNodes can be easily found (expanded to visible state) by using EXPAND TO SHOW ALL TAGGED option. Tagging can be removed manually via UNTAG option or automatically via CLEAR SEARCH option. Tagging is not saved when LauncherTree is saved to file, it only exists in the LauncherTree memory while Proxy32 is running and stays until you clear it manually (UNTAG) or automatically (CLEAR SEARCH) or until you exit proxy32. Tagging helps when you want to work with TreeNodes that are (for some reason) not groupped in the same SUBTREE, but scattered all over LauncherTree.”

4.91. IDH_LAUNCHERTREE_POPUPMENU_SEARCH_UNTAG_RIGHTCLICKED

“Remove BLUE or RED tagging from rightclicked TreeNode”

4.92. IDH_LAUNCHERTREE_SEARCH_CLEAR_SEARCH

“For all LauncherTree: Recursively remove all BLUE and RED color tagging from TreeNodes and collapse all nested SUBTREEs.”

4.93. IDH_LAUNCHERTREE_SEARCH_EXPAND_TO_SHOW_ALL

“Expand all SUBTREEs on the LauncherTree”

4.94. IDH_LAUNCHERTREE_SEARCH_EXPAND_TO_SHOW_TAGGED

“All TreeNodes tagged with BLUE or RED will be expanded to the visible state”

4.95. IDH_LAUNCHERTREE_SEARCH_SEARCH_TREE

Search for the text pattern in the Launchers (in certain configuration text fileds and in tooltip text field) and also line-by-line search in the all files referenced in the SCRIPT/I-SCRIPT Launchers and in some “local” “text files” referenced in the VIEWER Launchers.

Search is performed globally on the whole LauncherTree that is residing in the Proxy LauncherTree memory.

Search uses PERL Regular Expression Syntax (PCRE) for coding of the search pattern for regex search mode.

Launchers that contain match in the searched text fields or Launchers that reference file that contains matching string will be tagged with BLUE color, Launchers that refer to the non-existent “local” files will be tagged with the RED color. LauncherTree will be expanded only to make visible all Launchers tagged with BLUE or RED.

During the search all files referenced in the SCRIPT/I-SCRIPT Launcher and “local” (meaning VIEWER URL does not contain substrings “://” or “\”) “text files” (meaning VIEWER URL does contain substrings “.txt” or “.htm” or “.xml”) referenced in the VIEWER launcher are converted in-place (file content is replaced on the disk) from “ANSI/ASCII/UTF8/UTF16BE text format” to “UTF-16LE with the BOM text format”. After in-place conversion such files are being searched line by line (per line search buffer is limited to 2000 chars).

VIEWER URLs that do not satisfy above search requirements for referring to “local” “text files” are ignored by search and no in-place conversion and search is performed for resources referred by such URLs.

4.96. IDH_LAUNCHERTREE_SEARCH_TAG_SELECTED

“Tag selected TreeNode with the BLUE color. You can manually (via TAG option - BLUE TAG) or automatically (via LauncherTree Search - BLUE TAG or via file link integrity check - RED TAG) tag TreeNodes located in the different SUBTREEs at different depth. You can keep tagging TreeNodes via different methods until all wanted TreeNodes are tagged. While working with LauncherTree you would collapse some SUBTREEs and expand another SUBTREEs. Eventually, you would lose track of all tagged TreeNodes. Then later all tagged TreeNodes can be easily found (expanded to visible state) by using EXPAND TO SHOW ALL TAGGED option. Tagging can be removed manually via UNTAG option or automatically via CLEAR SEARCH option. Tagging is not saved when LauncherTree is saved to file, it only exists in the LauncherTree memory while Proxy32 is running and stays until you clear it manually (UNTAG) or automatically (CLEAR SEARCH) or until you exit proxy32. Tagging helps when you want to work with TreeNodes that are (for some reason) not groupped in the same SUBTREE, but scattered all over LauncherTree.”

4.97. IDH_LAUNCHERTREE_SEARCH_UNTAG_SELECTED

“Remove BLUE or RED tagging from selected TreeNode”

4.98. IDH_LAUNCHERTREE_SELECT_TERMINAL_LOG_VIEWER_APPLICATION

“Select Proxy32 Terminal Log Viewer Application”

4.99. IDH_LAUNCHERTREE_ShowActionStringOnTheTreeNodes

“Toggles between two modes of displaying LauncherTree. In ‘normal’ mode ‘Launcher Configuration’ (information that is being used for execution of Launcher) is shown as text of the Launcher Node on the LauncherTree. In the ‘reverse’ mode, ‘Description/Name’ is shown as text of the Launcher Node on the LauncherTree.”

4.100. IDH_LAUNCHERTREE_ShowActionStringInTreeNodesToolTipWindow

“Toggles between two modes of displaying content in ToolTip window of LauncherTree nodes. In ‘normal’ mode ‘Launcher Configuration’ (information that is being used for execution of Launcher) is shown as ToolTip of the Launcher node (when mouse hovers over the Launcher). In the ‘reverse’ mode, ‘Description/Name’ is shown as ToolTip of the Launcher node (when mouse hovers over the Launcher).”

4.101. IDH_LAUNCHERTREE_SHOW_ADD_NEW_TREE_ITEM_POPUP_MENU

“Shows menu that allows to add new item (such as TELNET connection or login SCRIPT) on the user configuration tree below. This menu can also be invoked by right-clicking on the tree window below. Every ‘ADD’ command in the menu has tooltips explaining the purpose of added item. Please, read those tooltips carefully before adding new item.”

4.102. IDH_LAUNCHERTREE_SHOW_WORKSPACENAVIGATOR

“Opens WorkspaceNavigator that lists all workspaces and all application windows inside of them. WorkspaceNavigator allows to find application window, switch to it (by selecting/clicking it) and to move it to another workspace (by dragging application window name and dropping it on workspace name).”

4.103. IDH_LAUNCHERTREE_TOOLTIPS_BACKGROUND_COLOR

“Select Background color for the tooltip window”

4.104. IDH_LAUNCHERTREE_TOOLTIPS_FONT

“Select font style and size for all tooltips”

4.105. IDH_LAUNCHERTREE_TOOLTIPS_TEXT_COLOR

“Select Foreground color for the tooltip window”

4.106. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_AHK_SCRIPT

Adds E-SCRIPT Launcher under Selected Launcher or at the end of the LauncherTree. On LeftDoubleClick E-SCRIPT Launcher saves its text to temporary file and passes this file to the external script interpreter for execution. Current implementation of E-SCRIPT Launcher uses external AHK script interpreter that is installed with Proxy32.

Mouse Shortcuts:

  • ShiftDoubleClick on AHK-SCRIPT Launcher that contains “<PROXY_SUBSTITUTED_COMMAND_TEXT>” substitution parameter (placeholder) in the text of its command/ahk_script. This will enable WRAPPER MODE and set ShiftDoubleClick-ed launcher as designated WRAPPER for all subsequent COMMAND/SCRIPT_line executions.

  • CtrlShiftDoubleClick on any AHK-SCRIPT Launcher. This will disable WRAPPER MODE.

4.107. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_COMMAND

Adds COMMAND Launcher under Selected Launcher or at the end of the LauncherTree. On LeftDoubleClick COMMAND Launcher types command text (with all parameters and passwords substituted) to the Window that is selected in the Proxy32 Selector Window drop-down list.

When COMMAND Launcher is added to LauncherTree, it can be executed. Depending on what window is active in the current workspace, COMMAND Launcher execution is different:

  • if active window is ProxyTerm Window (as indicated by red window frame): when user LeftDoubleClick on the COMMAND Launcher, command text is sent into Active ProxyTerm window directly (without using system clipboard or keyboard driver) to the local or remote shell to which terminal is connected. From user prospective it may look like pasting or typing.

  • if active window is NOT ProxyTerm Window (such window would have RED STICKER): when user LeftDoubleClick on the COMMAND Launcher, command text is injected into keyboard driver queue and, therefore, typed into Active Window which is brought to foreground on Launcher execution. In that mode all COMMAND Launcher settings like LineTerminator and InterCharDelay are applied. In that mode PROXYSEND parameters are also executed to directly control user mouse and keyboard.

  • when user Ctrl-LeftDoubleClick on the COMMAND Launcher, command text (with all parameters and passwords substituted) is copied to clipboard.

  • when user Shift-LeftDoubleClick on the COMMAND Launcher, command is typed to active window with WRAPPER mode temporary disabled (just for this execution). If text of COMMAND contains “<PROXY_SUBSTITUTED_COMMAND_TEXT>”, instead of being typed such COMMAND becomes current WRAPPER and WRAPPER mode is enabled.

  • when user Ctrl-Shift-LeftDoubleClick on the COMMAND Launcher, instead of COMMAND being typed WRAPPER mode is disabled.

4.108. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_COMPORT_TERMINAL

Adds COM-PORT-TERMINAL Launcher under Selected Launcher or at the end of the LauncherTree. On LeftDoubleClick COM-PORT-TERMINAL Launcher opens ProxyTerm Window and connects it to COM-PORT configured in the Launcher.

4.109. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_CSVPARMS

“Create New VIEWER TreeNode and insert it under selected TreeNode.”

4.110. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_IPLUGIN

“Create New I-PLUGIN TreeNode and insert it under selected TreeNode.”

4.111. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_ISCRIPT

“Create New I-SCRIPT TreeNode and insert it under selected TreeNode.”

4.112. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_YAMLPARMS

Adds YAMLPARMS Launcher under RightClicked Launcher or at the end of the LauncherTree. YAMLPARMS Launcher contains path (absolute or relative to proxy32 startup directory) to local JSON/YML file. On LeftDoubleClick YAMLPARMS Launcher imports contents of linked JSON/YML file into Proxy32 named parameters list. Local JSON/YML file referred in YAMLPARMS Launcher is linked to the Proxy32 launcher Tree. That is: local file will be exported/imported together with Proxy32 xml launcher tree.

4.113. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_LAUNCH

Adds LAUNCH Launcher under Selected Launcher or at the end of the LauncherTree. On LeftDoubleClick LAUNCH Launcher starts pre-configured application via its command line (similar to Windows shortcut) and (if WINDOW_CLASS and WINDOW_TITLE REGEXs are properly configured) catches the Application Window handle and appends Window Name to Proxy32 Selector Window drop-down list. If Window handle is caught, Application Window itself is inserted into current Porxy32 Workspace. Once Application Window is placed inside of Workspace, it can be controlled via Workspace actions (like “Tile”) and via COMMAND launchers (that can type predefined text into “Selected” Application Window). Some Applications are written to programmatically control their own Windows. Such Applications will not work well inside of Proxy32 Workspace. Window Searching/Catching algorithm is waiting up to 5 seconds for Application Window to appear in the system. If Application Window is taking too long to appear, it will not be caught. In such cases, please, use AUTOGRAB or MANUAL_GRAB functionality of Proxy32 to catch Application Window.

4.114. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_LUA_SCRIPT

Adds LUA-SCRIPT Launcher under Selected Launcher or at the end of the LauncherTree. On LeftDoubleClick LUA-SCRIPT Launcher executes its text with LUA 5.3.5 interpreter that is embedded into Proxy32.

4.115. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_PLUGIN

“Create New PLUGIN TreeNode and insert it under selected TreeNode.”

4.116. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_PYTHON_SCRIPT

Adds PYTHON-SCRIPT Launcher under Selected Launcher or at the end of the LauncherTree. On LeftDoubleClick PYTHON-SCRIPT Launcher executes its text with PYTHON 2.7.15 interpreter that is embedded into Proxy32.

4.117. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_SCRIPT

Adds SCRIPT Launcher under selected Launcher or at the end of the LauncherTree. When SCRIPT Launcher is added to LauncherTree, it can be executed. Depending on what window is active in the current workspace, SCRIPT Launcher execution is different:

  • if active window is ProxyTerm Window (as indicated by red window frame): when user LeftDoubleClick on the non-CSV SCRIPT Launcher, commands (lines) are pasted into Active Terminal window automatically one by one from SCRIPT file referred by SCRIPT Launcher. Next line is pasted only when there was no output in terminal window for period longer than “delay between SCRIPT lines” configured in the SCRIPT Launcher (configured in seconds).

  • if active window is NOT ProxyTerm Window (such window would have RED STICKER): when user LeftDoubleClick on the non-CSV SCRIPT Launcher, next command (line) from SCRIPT file referred by SCRIPT Launcher is injected into keyboard driver queue and, therefore, typed into Active Window which is brought to foreground on Launcher execution (in a manner similar to execution of COMMAND Launcher to NON-terminal window). In that mode all COMMAND Launcher settings like LineTerminator and InterCharDelay and WRAPPER are applied. Global counter “Next line number” will be incremented post-execution if autoincrement is enabled.

  • if SCRIPT launcher refers to CSV file (file with extension CSV, case insensitive), such launcher is referred to as CSV SCRIPT Launcher. When user LeftDoubleClick on the CSV SCRIPT Launcher next non-header CSV line will be parsed to populate Proxy parameters from this CSV line. Parameter’s names are taken from fields/columns names in CSV header line. Parameters values are taken from parsing fields in non-header (current) CSV line. CSV header line is referred to as line number 0. All non-header lines/rows are started from line number 1. CSV header line/row is mandatory for CSV files that are referred in CSV SCRIPT launcher. Global counter “Next line number” will be incremented post-execution if autoincrement is enabled.

  • when user Alt-Ctrl-LeftDoubleClick on the SCRIPT Launcher, dialog will appear that allows manually set “next line number” (starting from 0) in the non-CSV SCRIPT file referred by SCRIPT Launcher. Next line number refers to the non-CSV SCRIPT file’s line that will be typed next time SCRIPT Launcher will be executed to NON-terminal window. In case of CSV SCRIPT “next line number” starts from 1 and refers to the CSV line that will be parsed next time on execution of CSV SCRIPT to populate Proxy parameters from this CSV line.

  • when user Alt-Shift-LeftDoubleClick on the non-CSV SCRIPT Launcher, each line of the SCRIPT file referred by SCRIPT Launcher will be pasted into separate ProxyTerm Window. That only applies to Non-Minimized ProxyTerm Windows in the Current Workspace with “SharedInputMode” set to “Slave”. The lines will be pasted in the order, in which affected ProxyTerm Windows are tiled (left to right and then top to bottom). Line 0 from SCRIPT file will be pasted to first terminal window, line 1 from SCRIPT file will be pasted to next terminal window and so on.

  • when user Alt-Ctrl-Shift-LeftDoubleClick on the non-CSV SCRIPT Launcher, each line of the SCRIPT file referred by SCRIPT Launcher will be set as title of separate ProxyTerm Window. That only applies to Non-Minimized ProxyTerm Windows in the Current Workspace with “SharedInputMode” set to “Slave”. The lines will be used in the order, in which affected ProxyTerm Windows are tiled (left to right and then top to bottom). Line 0 from SCRIPT file will be title of first terminal window, line 1 from SCRIPT file will be title of next terminal window and so on.

  • when user Alt-LeftDoubleClick on the non-CSV SCRIPT Launcher, the SCRIPT file referred by SCRIPT Launcher will be copied to clipboard with all parameters substututed.

  • when user Ctrl-LeftDoubleClick on the non-CSV SCRIPT Launcher, text of the current SCRIPT line (with all parameters and passwords substituted) is copied to clipboard. Global counter “Next line number” will be incremented post-execution if autoincrement is enabled.

  • when user Shift-LeftDoubleClick on the non-CSV SCRIPT Launcher, text of the current SCRIPT line is typed to active window with WRAPPER mode temporary disabled (just for this execution). Global counter “Next line number” will be incremented post-execution if autoincrement is enabled.

  • when user Ctrl-Shift-LeftDoubleClick on the non-CSV or CSV SCRIPT Launcher, (instead of text of the current non-CSV SCRIPT line being typed into active window or instead of the current CSV SCRIPT line being parsed) the WRAPPER mode is disabled.

4.118. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_SHELL_TERMINAL

“Create New SHELL-TERMINAL TreeNode and insert it under selected TreeNode.”

4.119. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_SUBTREE

“Create New SUBTREE TreeNode and insert it under selected TreeNode.”

4.120. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_TELNET_TERMINAL

“Create New TELNET-TERMINAL TreeNode and insert it under selected TreeNode.”

4.121. IDH_LAUNCHERTREE_TREENODE_ADD_NEW_ITEM_VIEWER

“Create New VIEWER TreeNode and insert it under selected TreeNode.”

4.122. IDH_LAUNCHERTREE_TREENODE_COMMAND_BEFORETYPEDELAY_0

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 0 milliseconds delay before typing

4.123. IDH_LAUNCHERTREE_TREENODE_COMMAND_BEFORETYPEDELAY_1600

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 1600 milliseconds delay before typing

4.124. IDH_LAUNCHERTREE_TREENODE_COMMAND_BEFORETYPEDELAY_200

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 200 milliseconds delay before typing

4.125. IDH_LAUNCHERTREE_TREENODE_COMMAND_BEFORETYPEDELAY_400

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 400 milliseconds delay before typing

4.126. IDH_LAUNCHERTREE_TREENODE_COMMAND_BEFORETYPEDELAY_800

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 800 milliseconds delay before typing

4.127. IDH_LAUNCHERTREE_TREENODE_COMMAND_INTERCHARDELAY_0

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 0 milliseconds delay between consequent characters

4.128. IDH_LAUNCHERTREE_TREENODE_COMMAND_INTERCHARDELAY_1

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 1 milliseconds delay between consequent characters

4.129. IDH_LAUNCHERTREE_TREENODE_COMMAND_INTERCHARDELAY_10

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 10 milliseconds delay between consequent characters

4.130. IDH_LAUNCHERTREE_TREENODE_COMMAND_INTERCHARDELAY_100

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 100 milliseconds delay between consequent characters

4.131. IDH_LAUNCHERTREE_TREENODE_COMMAND_INTERCHARDELAY_2

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 2 milliseconds delay between consequent characters

4.132. IDH_LAUNCHERTREE_TREENODE_COMMAND_INTERCHARDELAY_200

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 200 milliseconds delay between consequent characters

4.133. IDH_LAUNCHERTREE_TREENODE_COMMAND_INTERCHARDELAY_25

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 25 milliseconds delay between consequent characters

4.134. IDH_LAUNCHERTREE_TREENODE_COMMAND_INTERCHARDELAY_400

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 400 milliseconds delay between consequent characters

4.135. IDH_LAUNCHERTREE_TREENODE_COMMAND_INTERCHARDELAY_5

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 5 milliseconds delay between consequent characters

4.136. IDH_LAUNCHERTREE_TREENODE_COMMAND_INTERCHARDELAY_50

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 50 milliseconds delay between consequent characters

4.137. IDH_LAUNCHERTREE_TREENODE_COMMAND_INTERCHARDELAY_800

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 800 milliseconds delay between consequent characters

4.138. IDH_LAUNCHERTREE_TREENODE_COMMAND_MODIFIER_TO_CHARDELAY_0

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 0 milliseconds delay between modifiers and consequent characters. This is in addition to inter-char delay.

4.139. IDH_LAUNCHERTREE_TREENODE_COMMAND_MODIFIER_TO_CHARDELAY_1

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 1 milliseconds delay between modifiers and consequent characters. This is in addition to inter-char delay.

4.140. IDH_LAUNCHERTREE_TREENODE_COMMAND_MODIFIER_TO_CHARDELAY_10

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 10 milliseconds delay between modifiers and consequent characters. This is in addition to inter-char delay.

4.141. IDH_LAUNCHERTREE_TREENODE_COMMAND_MODIFIER_TO_CHARDELAY_100

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 100 milliseconds delay between modifiers and consequent characters. This is in addition to inter-char delay.

4.142. IDH_LAUNCHERTREE_TREENODE_COMMAND_MODIFIER_TO_CHARDELAY_2

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 2 milliseconds delay between modifiers and consequent characters. This is in addition to inter-char delay.

4.143. IDH_LAUNCHERTREE_TREENODE_COMMAND_MODIFIER_TO_CHARDELAY_200

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 200 milliseconds delay between modifiers and consequent characters. This is in addition to inter-char delay.

4.144. IDH_LAUNCHERTREE_TREENODE_COMMAND_MODIFIER_TO_CHARDELAY_25

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 25 milliseconds delay between modifiers and consequent characters. This is in addition to inter-char delay.

4.145. IDH_LAUNCHERTREE_TREENODE_COMMAND_MODIFIER_TO_CHARDELAY_400

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 400 milliseconds delay between modifiers and consequent characters. This is in addition to inter-char delay.

4.146. IDH_LAUNCHERTREE_TREENODE_COMMAND_MODIFIER_TO_CHARDELAY_5

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 5 milliseconds delay between modifiers and consequent characters. This is in addition to inter-char delay.

4.147. IDH_LAUNCHERTREE_TREENODE_COMMAND_MODIFIER_TO_CHARDELAY_50

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 50 milliseconds delay between modifiers and consequent characters. This is in addition to inter-char delay.

4.148. IDH_LAUNCHERTREE_TREENODE_COMMAND_MODIFIER_TO_CHARDELAY_800

When COMMAND Launcher is executed into the window of external process, command line is typed with 800 milliseconds delay between modifiers and consequent characters. This is in addition to inter-char delay.

4.149. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_TO_CHARDELAY_0

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 0 milliseconds delay between linebreaks and consequent characters. This is in addition to inter-char delay.

4.150. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_TO_CHARDELAY_1

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 1 milliseconds delay between linebreaks and consequent characters. This is in addition to inter-char delay.

4.151. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_TO_CHARDELAY_10

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 10 milliseconds delay between linebreaks and consequent characters. This is in addition to inter-char delay.

4.152. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_TO_CHARDELAY_100

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 100 milliseconds delay between linebreaks and consequent characters. This is in addition to inter-char delay.

4.153. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_TO_CHARDELAY_2

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 2 milliseconds delay between linebreaks and consequent characters. This is in addition to inter-char delay.

4.154. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_TO_CHARDELAY_200

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 200 milliseconds delay between linebreaks and consequent characters. This is in addition to inter-char delay.

4.155. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_TO_CHARDELAY_25

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 25 milliseconds delay between linebreaks and consequent characters. This is in addition to inter-char delay.

4.156. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_TO_CHARDELAY_400

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 400 milliseconds delay between linebreaks and consequent characters. This is in addition to inter-char delay.

4.157. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_TO_CHARDELAY_5

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 5 milliseconds delay between linebreaks and consequent characters. This is in addition to inter-char delay.

4.158. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_TO_CHARDELAY_50

When COMMAND Launcher is executed into non-PROXYTERM window, command line is typed with 50 milliseconds delay between linebreaks and consequent characters. This is in addition to inter-char delay.

4.159. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_TO_CHARDELAY_800

When COMMAND Launcher is executed into the window of external process, command line is typed with 800 milliseconds delay between linebreaks and consequent characters. This is in addition to inter-char delay.

4.160. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_CR

“When COMMAND TreeNode is executed into non-PROXYTERM window, command line is pasted with the Carriage Return char in the middle”

4.161. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_CRNL

“When COMMAND TreeNode is executed into non-PROXYTERM window, command line is pasted with the Carriage Return and New Line chars in the middle”

4.162. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_NL

“When COMMAND TreeNode is executed into non-PROXYTERM window, command line is pasted with the New Line char in the middle”

4.163. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINEBREAK_NONE

“When COMMAND TreeNode is executed into non-PROXYTERM window, command line is pasted with space char in the middle”

4.164. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINETERMINATOR_CR

“When COMMAND TreeNode is executed into non-PROXYTERM window, command line is pasted with the Carriage Return char at the end”

4.165. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINETERMINATOR_CRNL

“When COMMAND TreeNode is executed into non-PROXYTERM window, command line is pasted with the Carriage Return and New Line chars at the end”

4.166. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINETERMINATOR_NL

“When COMMAND TreeNode is executed into non-PROXYTERM window, command line is pasted with the New Line char at the end”

4.167. IDH_LAUNCHERTREE_TREENODE_COMMAND_LINETERMINATOR_NONE

“When COMMAND TreeNode is executed into non-PROXYTERM window, command line is pasted without any char at the end”

4.168. IDH_LAUNCHERTREE_TREENODE_COMMAND_MOUSEMOVECLICK_CLICK

When COMMAND Launcher is executed into the window of external process, mouse clicks in the window of external process before command text is typed.

4.169. IDH_LAUNCHERTREE_TREENODE_COMMAND_MOUSEMOVECLICK_MOVE

When COMMAND Launcher is executed into the window of external process, mouse moves into the window of external process before command text is typed.

4.170. IDH_LAUNCHERTREE_TREENODE_COMMAND_MOUSEMOVECLICK_OFF

When COMMAND Launcher is executed into the window of external process, mouse is not used (moved/clicked) before command text is typed.

4.171. IDH_LAUNCHERTREE_TREENODE_COMMAND_SUBST_CMD_INTO_CMD_OFF

This button toggles WRAPPER MODE ON and OFF.

WRAPPER is one single designated COMMAND/AHK-SCRIPT launcher on the whole Launcher Tree. It should contain “<PROXY_SUBSTITUTED_COMMAND_TEXT>” substitution parameter (placeholder) in the text of its command/ahk_script. This designation is not persistent, it is not preserved on exit of Proxy32.

While WRAPPER MODE is ON, when user double-clicks any COMMAND Launcher on the LauncherTree (or executes SCRIPT line into external window):

  1. text of double-clicked COMMAND launcher (or text of SCRIPT line) is substituted into “<PROXY_SUBSTITUTED_COMMAND_TEXT>” placeholder in the text of WRAPPER COMMAND/AHK-SCRIPT launcher

  2. after substitution was performed, resulting WRAPPER COMMAND/AHK-SCRIPT launcher is executed (instead of COMMAND launcher that is double-clicked by user or instead of SCRIPT line). Mouse Positions (if stored/needed) are also taken from WRAPPER COMMAND/AHK-SCRIPT launcher. Mouse Positions stored in double-clicked COMMAND launcher (if any) are ignored.

To enable WRAPPER mode and set highlighted COMMAND/AHK-SCRIPT launcher as a WRAPPER:

  1. highlight on the tree COMMAND/AHK-SCRIPT Launcher that contains “<PROXY_SUBSTITUTED_COMMAND_TEXT>” substitution parameter (placeholder) in the text of its command/ahk_script.

  2. press this button while it is in OFF position to attempt to toggle button to ON position.

  3. if button switches to ON position, highlighted launcher has become designated WRAPPER COMMAND/AHK-SCRIPT Launcher

  4. COMMAND WRAPPER MODE settings are not preserved on Proxy32 exit. COMMAND WRAPPER MODE is always OFF after Proxy32 starts.

To show designated WRAPPER COMMAND/AHK-SCRIPT launcher, hold the SHIFT key and press this button while it is in ON position. Designated WRAPPER COMMAND/AHK-SCRIPT launcher will be highlighted on the tree.

WRAPPER COMMAND/AHK-SCRIPT launcher cannot be executed directly as it requires some text for “<PROXY_SUBSTITUTED_COMMAND_TEXT>” substitution parameter (placeholder). Such substitution is achieved while WRAPPER MODE is ON during execution of other (NON-WRAPPER) COMMAND launcher or during execution of SCRIPT_line into external window.

Mouse Shortcuts on the LauncherTree:

  • ShiftDoubleClick on COMMAND/AHK-SCRIPT Launcher that contains “<PROXY_SUBSTITUTED_COMMAND_TEXT>” substitution parameter (placeholder) in the text of its command/ahk_script. This will enable WRAPPER MODE and set ShiftDoubleClick-ed launcher as designated WRAPPER for all subsequent COMMAND/SCRIPT_line executions.

  • CtrlShiftDoubleClick on any COMMAND/AHK-SCRIPT/SCRIPT Launcher. This will disable WRAPPER MODE.

  • ShiftDoubleClick on COMMAND Launcher that does not contain “<PROXY_SUBSTITUTED_COMMAND_TEXT>” substitution parameter (placeholder) in the text of its command. This will execute ShiftDoubleClick-ed COMMAND launcher directly (without using WRAPPER) even if WRAPPER MODE is enabled.

  • ShiftDoubleClick on non-CSV SCRIPT Launcher. This will execute next line in non-CSV SCRIPT launcher directly to non-terminal active window (without using WRAPPER) even if WRAPPER MODE is enabled.

===============Sample AHK-SCRIPT WRAPPER==============

MyHandles = <PROXYHANDLESOFNONMINIMIZEDWINDOWS>
Loop, parse, MyHandles,%A_Space%
{
    ControlClick,,ahk_id %A_LoopField% ;click on window to make it active.
    Send,<PROXY_SUBSTITUTED_COMMAND_TEXT>{Enter} ;send keypresses to active window
}

===============Sample COMMAND WRAPPER=================

ansible all -m shell -a '<PROXY_SUBSTITUTED_COMMAND_TEXT>'

4.172. IDH_LAUNCHERTREE_TREENODE_COMMAND_SUBST_CMD_INTO_CMD_ON

This button toggles WRAPPER MODE ON and OFF.

WRAPPER is one single designated COMMAND/AHK-SCRIPT launcher on the whole Launcher Tree. It should contain “<PROXY_SUBSTITUTED_COMMAND_TEXT>” substitution parameter (placeholder) in the text of its command/ahk_script. This designation is not persistent, it is not preserved on exit of Proxy32.

While WRAPPER MODE is ON, when user double-clicks any COMMAND Launcher on the LauncherTree (or executes SCRIPT line into external window):

  1. text of double-clicked COMMAND launcher (or text of SCRIPT line) is substituted into “<PROXY_SUBSTITUTED_COMMAND_TEXT>” placeholder in the text of WRAPPER COMMAND/AHK-SCRIPT launcher

  2. after substitution was performed, resulting WRAPPER COMMAND/AHK-SCRIPT launcher is executed (instead of COMMAND launcher that is double-clicked by user or instead of SCRIPT line). Mouse Positions (if stored/needed) are also taken from WRAPPER COMMAND/AHK-SCRIPT launcher. Mouse Positions stored in double-clicked COMMAND launcher (if any) are ignored.

To enable WRAPPER mode and set highlighted COMMAND/AHK-SCRIPT launcher as a WRAPPER:

  1. highlight on the tree COMMAND/AHK-SCRIPT Launcher that contains “<PROXY_SUBSTITUTED_COMMAND_TEXT>” substitution parameter (placeholder) in the text of its command/ahk_script.

  2. press this button while it is in OFF position to attempt to toggle button to ON position.

  3. if button switches to ON position, highlighted launcher has become designated WRAPPER COMMAND/AHK-SCRIPT Launcher

  4. COMMAND WRAPPER MODE settings are not preserved on Proxy32 exit. COMMAND WRAPPER MODE is always OFF after Proxy32 starts.

To show designated WRAPPER COMMAND/AHK-SCRIPT launcher, hold the SHIFT key and press this button while it is in ON position. Designated WRAPPER COMMAND/AHK-SCRIPT launcher will be highlighted on the tree.

WRAPPER COMMAND/AHK-SCRIPT launcher cannot be executed directly as it requires some text for “<PROXY_SUBSTITUTED_COMMAND_TEXT>” substitution parameter (placeholder). Such substitution is achieved while WRAPPER MODE is ON during execution of other (NON-WRAPPER) COMMAND launcher or during execution of SCRIPT_line into external window.

Mouse Shortcuts on the LauncherTree:

  • ShiftDoubleClick on COMMAND/AHK-SCRIPT Launcher that contains “<PROXY_SUBSTITUTED_COMMAND_TEXT>” substitution parameter (placeholder) in the text of its command/ahk_script. This will enable WRAPPER MODE and set ShiftDoubleClick-ed launcher as designated WRAPPER for all subsequent COMMAND/SCRIPT_line executions.

  • CtrlShiftDoubleClick on any COMMAND/AHK-SCRIPT/SCRIPT Launcher. This will disable WRAPPER MODE.

  • ShiftDoubleClick on COMMAND Launcher that does not contain “<PROXY_SUBSTITUTED_COMMAND_TEXT>” substitution parameter (placeholder) in the text of its command. This will execute ShiftDoubleClick-ed COMMAND launcher directly (without using WRAPPER) even if WRAPPER MODE is enabled.

  • ShiftDoubleClick on non-CSV SCRIPT Launcher. This will execute next line in non-CSV SCRIPT launcher directly to non-terminal active window (without using WRAPPER) even if WRAPPER MODE is enabled.

===============Sample AHK-SCRIPT WRAPPER==============

MyHandles = <PROXYHANDLESOFNONMINIMIZEDWINDOWS>
Loop, parse, MyHandles,%A_Space%
{
    ControlClick,,ahk_id %A_LoopField% ;click on window to make it active.
    Send,<PROXY_SUBSTITUTED_COMMAND_TEXT>{Enter} ;send keypresses to active window
}

===============Sample COMMAND WRAPPER=================

ansible all -m shell -a '<PROXY_SUBSTITUTED_COMMAND_TEXT>'

4.173. IDH_LAUNCHERTREE_TREENODE_DELETE_SELECTED_ITEM

“Delete selected TreeNode from LauncherTree memory. Keep in mind that a single SUBTREE TreeNode includes all its underlying subtree for the purpose of deleting, saving to file or inserting from file.”

4.174. IDH_LAUNCHERTREE_TREENODE_EDIT_SCRIPT_FROM_SELECTED_ITEM

“For I-SCRIPT/SCRIPT TreeNode opens ProxyScriptEditor Window and loads script file that is referred in the selected I-SCRIPT/SCRIPT TreeNode. If referred script file does not exist, editor will offer to create one. ProxyScriptEditor has some tools that can facilitate creation of SCRIPT and I- SCRIPT files. This command does nothing for the TreeNodes other than I- SCRIPT/SCRIPT TreeNode”

4.175. IDH_LAUNCHERTREE_TREENODE_EDIT_SELECTED_ITEM

“Opens Edit Dialog on the selected TreeNode”

4.176. IDH_LAUNCHERTREE_TREENODE_EXECUTE_SELECTED_ITEM

“Execute selected TreeNode:

  • for SUBTREE TreeNode - shows/hides children/subtree,

  • for TELNET-TERMINAL/COM-PORT-TERMINAL/SHELL-TERMINAL TreeNode - opens PROXYTERM window (and adds this window to the applications drop-down list) and connects to the specified destination (and execute SCRIPT/PLUGIN ‘on connect’ if SCRIPT/PLUGIN item is located under TELNET-TERMINAL/COM-PORT-TERMINAL/SHELL-TERMINAL item that is being executed),

  • for COMMAND TreeNode - pastes command to the current (selected in the applications drop-down list) PROXYTERM window or non-PROXYTERM window,

  • for SCRIPT/I-SCRIPT/PLUGIN/I-PLUGIN TreeNode - gives to SCRIPT/PLUGIN control over the the interaction with current (selected in the applications drop-down list) PROXYTERM window,

  • for VIEWER TreeNode - opens configured link in the MS Internet Explorer and adds this window to the applications drop-down list,

  • for LAUNCH TreeNode - starts configured application and (if configured) adds application window into the applications drop-down list.

If the TreeNode that is being executed (or SCRIPT/I-SCRIPT text file started by the execution of the TreeNode) contains proxy parms (<PROXYPARM=XXXX> and/or <PROXYPASSWORD=XXXX>) Proxy will try to substitute the parms values from the existing list of the proxy parms that resides in the Proxy Parameters memory (this list is initially loaded from the file ‘proxy-parms.txt’ on proxy start-up and this list is saved to the file ‘proxy-parms.txt’ on proxy exit).

If the parameter is not in the memory list or it doesn’t have the value or it does not have attribute ‘Do not ask again’, Proxy will popup ‘Proxy Parameters input dialog’ to the user before executing any TreeNode that requires parameters substitution.”

4.177. IDH_LAUNCHERTREE_TREENODE_INSERT_TREE_FROM_FILE_UNDER_SELECTED_ITEM

“Insert new LauncherTree from the user-selected ‘LauncherTree XML file’. ‘LauncherTree XML file’ is selected by user via ‘Open File Dialog’. New LauncherTree will be inserted into the existing (in Proxy32 memory) LauncherTree under selected (highlighted) ‘parent’ TreeNode. If no TreeNode is selected (highlighted) as a ‘parent’ then new LauncherTree will be inserted under LauncherTree ‘root’ at the end of existing LauncherTree.

A ‘single’ SUBTREE TreeNode includes all its underlying subtree of TreeNode(s) for the purpose of deleting, saving to file or inserting from the file.

This insertion may also install all local disk files referred by VIEWER/SCRIPT/I-SCRIPT TreeNode(s) of the inserted ‘LauncherTree XML file’. Proxy32 will install all LauncherTree-supporting files IF the inserted ‘LauncherTree XML file’ has next to it (in the same directory) ‘LauncherTree supporting folder’ with the name that matches the name of inserted ‘LauncherTree XML file’. Matching name of the ‘LauncherTree supporting folder’ is the same as the name of the ‘LauncherTree XML file’ with ‘.files’ extension appended.

Proxy32 creates ‘LauncherTree supporting folder’ with the ‘LauncherTree XML file’-matching name when existing (in Proxy32 memory) LauncherTree or it’s part is being exported into the ‘LauncherTree XML file’ via one of the ProxyMainWindowMenuBar commands or via Drag- and-Drop mouse operation.

ProxyMainWindowMenuBar is located under ProxyMainWindowTitleBar and is internal part of proxy32.exe. Do not confuse it with LauncherTree which is user configurable Tree that is loaded into proxy32 memory from the text file and saved from proxy32 memory to the text file.

<Name of ‘LauncherTree supporting folder’>=<name of ‘LauncherTree XML file’>.files

‘Menu supporting folder’ will contain all local disk files that were referred by VIEWER/SCRIPT/I-SCRIPT TreeNode(s) of the exported ‘LauncherTree XML file’ at the time when it was exported. Relative path references are counted from Proxy32 installation directory for the purpose of converting to absolute paths.

When importing LauncherTree from ‘LauncherTree XML file’ proxy32 looks for the folder with matching name and if the folder exists and has necessary files proxy32 installs LauncherTree-supporting files at the same locations where they were during the export. Name conflicts of LauncherTree-supporting files are resoled as follows. On the import into proxy32 old file with conflicting name will be renamed to ‘Copy of …’ and then the new one will be created. On the export from proxy32 new file will overwrite existing one with conflicting name. When export from proxy32 is done via mouse drag-n-drop and the drop location already contains files/dirs with conflicting names, Windows will ask user what to do: overwrite old files or keep them.”

4.178. IDH_LAUNCHERTREE_TREENODE_SAVE_ITEM_TO_FILE

“Save-Overwrite selected TreeNode (could be huge SUBTREE tree) as a menu text file. Keep in mind that a single SUBTREE TreeNode includes all its underlying subtree for the purpose of deleting, saving to file or inserting from file.”

4.179. IDH_LAUNCHERTREE_USE_CLIPBOARD_SELECTION_MAX_SIZE_BYTES

“If enabled: Terminal Mouse Selection that is longer than 100000 lines and that is longer than threshold number of bytes will be copied to the file but not to the system clipboard (which is limited by available memory). Default threshold is 100000000 bytes. It can be changed via ‘edit threshold’ dialog.”

4.180. IDH_LAUNCHERTREE_USE_INITIAL_TSS_PORT_NUMBER

“Attempt to create new TSS with the given port number value or the next available.”

4.181. IDH_LAUNCHERTREE_LAUNCHER_TOOLTIPS_ENABLED

“Every TreeNode has tooltip that is supplied by the user when user creates/edits TreeNode. This tooltip is an integral part of the TreeNode definition. If user does not supply any tooltip for TreeNode, TreeNode will have default tooltip supplied by TreeNodeEditor dialog on the creation of TreeNode. Tooltip is shown when user points to the TreeNode by mouse. Typically, TreeNode tooltip is used to indicate purpose of the TreeNode, instruction on how to use it and the expected results of its execution. Tooltip should not exceed 2000 ASCII characters and could be multiline if lines are terminated by ‘Carriage Return’ character. Is not a good idea to disable TreeNode user tooltips unless you are very familiar with TreeNodes that you are planning to use.”

4.182. IDH_LAUNCHERTREE_VIEW_INITIAL_SCRIPT_EDITOR_BACKGROUND_COLOR

“Select Initial Background Color for the new Script Editor window”

4.183. IDH_LAUNCHERTREE_VIEW_INITIAL_SCRIPT_EDITOR_FONT

“Select Initial Font for the new Script Editor window”

4.184. IDH_LAUNCHERTREE_VIEW_INITIAL_SCRIPT_EDITOR_TEXT_COLOR

“Select Initial Foreground color for the new Script Editor window”

4.185. IDH_LAUNCHERTREE_VIEW_INITIAL_TERMINAL_BACKGROUND_COLOR

“Select Initial non-italic (regular intensity) background color for the new Terminal window”

4.186. IDH_LAUNCHERTREE_VIEW_INITIAL_TERMINAL_FONT

“Select Initial Font for the new Terminal window”

4.187. IDH_LAUNCHERTREE_VIEW_INITIAL_TERMINAL_FOREGROUND_COLOR

“Select Initial Foreground color for the new Terminal window”

4.188. IDH_LAUNCHERTREE_VIEW_LAUNCHERTREE_BACKGROUND_COLOR

“Select Background Color for the LauncherTree”

4.189. IDH_LAUNCHERTREE_VIEW_LAUNCHERTREE_FONT

“Change font for the representation of TreeNodes”

4.190. IDH_LAUNCHERTREE_VIEW_LAUNCHERTREE_TEXT_COLOR

“Select Foreground Color for the LauncherTree”

4.191. IDH_LAUNCHERTREE_WINDOW_MENUBAR_HELP_POPUP_MENU

This menu allows you to open the help file, to enter ‘What is this?’ context help mode and to visit Proxy home page

4.192. IDH_LAUNCHERTREE_WINDOW_MENUBAR_LOADSAVECONFIG_POPUP_MENU

This menu allows you to manipulate LauncherTree as a whole: Delete LauncherTree in Memory, Load LauncherTree from file, Save LauncherTree to file, Check integrity of links to local files for the Launchers that refer to the local files. Memory LauncherTree is shown in the lower part of the main window - below the toolbar buttons. Default LauncherTree storage file ‘Tree.xml’ is loaded into Proxy32 LauncherTree memory on Proxy32 start-up. Content of the Proxy32 LauncherTree memory is automatically saved to default LauncherTree storage file ‘Tree.xml’ on Proxy32 exit.

4.193. IDH_LAUNCHERTREE_WINDOW_MENUBAR_PARMS_POPUP_MENU

This menu allows you to work with proxy parameters and passwords. Those are the ‘tags or named strings’ that are being replaced by their string values on the execution in the action string of COMMAND, VIEWER, LAUNCH, TELNET-TERMINAL Launchers and also in the positional parameters and the body of SCRIPT/I-SCRIPTs files. For example, <PROXYPARM=my user name> or <PROXYPASSWORD=My password> would be replaced by their string values (by actual user name and actual password). Parameter’s names and values are stored and loaded from separate text file ‘proxy-parms.txt’.

4.194. IDH_LAUNCHERTREE_WINDOW_MENUBAR_SEARCH_POPUP_MENU

This menu will allow you to search for text patterns contained in the Launchers and in the files thay are referring to.

It will also allow you to tag your favorite Launchers to keep them always visible.

4.195. IDH_LAUNCHERTREE_WINDOW_MENUBAR_SETTINGS_POPUP_MENU

Global settings conrolled by this menu are being loaded from file ‘Settings.xml’ on proxy start-up and saved to file ‘Settings.xml’ on Proxy32 exit. You can edit file directly (when Proxy32 is not running) or use GUI interface to change settings.

4.196. IDH_LAUNCHERTREE_WINDOW_MENUBAR_TREENODE_POPUP_MENU

This menu allows you to manipulate individual Launchers: Add, Delete, Edit, Execute, Save to file, Insert from file. Keep in mind that a single SUBTREE Launcher includes all its underlying subtree for the purpose of deleting, saving to file or inserting from file.

4.197. IDH_LAUNCHERTREE_WINDOW_TOOLTIPS_ENABLED

“These are built-in tooltips that explain Proxy’s own Controls (buttons, drop- down lists, treeviews etc) and WindowMenus in different Proxy windows. It is a good idea to keep these tooltips enabled at least until you will become familiar with all Proxy controls (for the first time or when upgrading to the new version of Proxy).”

4.198. IDH_MAIN_WINDOW_MENUBAR_Add_Drag_Handle_to_Selector_And_LauncherTree_On_Frame_Removal

“Add Drag Handle to Selector And LauncherTree On Frame Removal”

4.199. IDH_MAIN_WINDOW_MENUBAR_COMMAND_BEFORETYPEDELAY

Switches between five different beforetype delays for sending COMMAND into window of external process (for example, CMD, Notepad, Firefox etc)

4.200. IDH_MAIN_WINDOW_MENUBAR_COMMAND_INTERCHARDELAY

Switches between eleven different values of inter-char delays for sending COMMAND into window of external process (for example, CMD, Notepad, Firefox etc). For example, to send ABCD inter-char delay will be inserted after every key-press (‘A’ inter-char delay ‘B’ inter-char delay ‘C’ inter-char delay ‘D’ delay).

4.201. IDH_MAIN_WINDOW_MENUBAR_COMMAND_MODIFIER_TO_CHARDELAY

Switches between eleven different values of modifier-to-char delays for sending COMMAND into window of external process (for example, CMD, Notepad, Firefox etc). That is in addition to inter-char delays. For example, to send Ctl-Alt-Shift-A inter-char delay will be inserted after every key-press and additional modifier-to-char delay will be inserted before ‘A’ key is pressed (‘Ctl’ inter-char delay ‘Alt’ inter-char delay ‘Shift’ inter-char delay modifier-to-char delay ‘A’ inter-char delay). This is only applied to command text outside of <PROXYSENDSTART> and <PROXYSENDEND>. Between <PROXYSENDSTART> and <PROXYSENDEND> one can use delay event ‘_DXXXX’ explicitly.

4.202. IDH_MAIN_WINDOW_MENUBAR_COMMAND_LINEBREAK_TO_CHARDELAY

Switches between eleven different values of linebreak-to-char delays for sending COMMAND into window of external process (for example, CMD, Notepad, Firefox etc). That is in addition to inter-char delays. Extra delay is inserted after every LF/NL (Line Feed/New Line char with decimal code of 10) and CR (Carriage Return with decimal code 13). For example, to send <CR>-A inter-char delay will be inserted after every key-press and additional linebreak-to-char delay will be inserted before ‘A’ key is pressed (<CR> inter-char delay linebreak-to-char delay ‘A’ inter-char delay). This is only applied to command text outside of <PROXYSENDSTART> and <PROXYSENDEND>. Between <PROXYSENDSTART> and <PROXYSENDEND> one can use delay event ‘_DXXXX’ explicitly.

4.203. IDH_MAIN_WINDOW_MENUBAR_COMMAND_LINEBREAK

Switches between four different values of line break for sending COMMAND into window of external process (for example, CMD, Notepad, Firefox etc).

For example, if line break is set to “Carriage Return”, when COMMAND TreeNode is executed into non-PROXYTERM window, command line is pasted with the Carriage Return char in the middle.

4.204. IDH_MAIN_WINDOW_MENUBAR_COMMAND_LINETERMINATOR

Switches between four different values of line terminator for sending COMMAND into window of external process (for example, CMD, Notepad, Firefox etc).

For example, if line terminator is set to “Carriage Return”, when COMMAND TreeNode is executed into non-PROXYTERM window, command line is pasted with the Carriage Return char at the end.

4.205. IDH_MAIN_WINDOW_MENUBAR_COMMAND_MOUSEMOVECLICK

This button switches between three different mouse modes for sending COMMAND (or SCRIPT line) into window of external process (for example, CMD, Notepad, Firefox etc): Mouse is not used before command text is typed into the window of external process, mouse moves into the window of external process before command text is typed, mouse clicks in the window of external process before command text is typed. That can be called “Pre-COMMAND MouseMove or MouseClick”. “Pre-COMMAND MouseClick” is MouseMove or MouseClick that does not come from <PROXYSEND> events embedded into COMMAND/SCRIPT line. Instead, MouseMove or MouseClick (to active window) is automatically prepended (if enabled) during COMMAND/SCRIPT line execution to external window.

Mouse position to move or to click at is set relative to the top left corner of active window.

Next button

controls non-persistent global variable parent_SUBMENU_mouse_position_index that selects one mouseposition from the sequence of mousepositions previously captured and stored in parent SUBMENU launcher.

Previous button

allows to capture mouse positions in active window and store them to selected SUBMENU,AHK-SCRIPT,SCRIPT or COMMAND launcher.

The intended use case for this “Pre-COMMAND MouseMove or MouseClick” functionality is to automatically set keyboard focus to particular terminal window when such terminal window exists inside of remote desktop window or inside of VM console window that contains guest desktop. Guest/Remote Desktop window in such case should be set as proxy32 “active” window. “Pre-COMMAND MouseMove or MouseClick” automatically sets focus to particular terminal window inside of Guest/Remote Desktop before COMMAND text is typed to Guest/Remote Desktop window. COMMANDs and SCRIPT lines located under common parent SUBMENU share set of mousepositions stored in their common parent SUBMENU launcher.

4.206. IDH_MAIN_WINDOW_MENUBAR_COMMAND_SUBST_CMD_INTO_CMD

This button toggles WRAPPER MODE ON and OFF.

WRAPPER is one single designated COMMAND/AHK-SCRIPT launcher on the whole Launcher Tree. It should contain “<PROXY_SUBSTITUTED_COMMAND_TEXT>” substitution parameter (placeholder) in the text of its command/ahk_script. This designation is not persistent, it is not preserved on exit of Proxy32.

While WRAPPER MODE is ON, when user double-clicks any COMMAND Launcher on the LauncherTree (or executes SCRIPT line into external window):

  1. text of double-clicked COMMAND launcher (or text of SCRIPT line) is substituted into “<PROXY_SUBSTITUTED_COMMAND_TEXT>” placeholder in the text of WRAPPER COMMAND/AHK-SCRIPT launcher

  2. after substitution was performed, resulting WRAPPER COMMAND/AHK-SCRIPT launcher is executed (instead of COMMAND launcher that is double-clicked by user or instead of SCRIPT line). Mouse Positions (if stored/needed) are also taken from WRAPPER COMMAND/AHK-SCRIPT launcher. Mouse Positions stored in double-clicked COMMAND launcher (if any) are ignored.

To enable WRAPPER mode first set highlighted COMMAND/AHK-SCRIPT launcher as a WRAPPER:

  1. highlight on the tree COMMAND/AHK-SCRIPT Launcher that contains “<PROXY_SUBSTITUTED_COMMAND_TEXT>” substitution parameter (placeholder) in the text of its command/ahk_script.

  2. press “not this but next” button (SET ACTIVE WRAPPER) and make sure there was no errors while setting active WRAPPER.

  3. press this button (enable WRAPPER mode) while it is in OFF position to attempt to toggle button to ON position.

  3. if button switches to ON position, preset active wrapper launcher has become designated WRAPPER COMMAND/AHK-SCRIPT Launcher

  4. COMMAND WRAPPER MODE settings are not preserved on Proxy32 exit. COMMAND WRAPPER MODE is always OFF after Proxy32 starts.

To show designated WRAPPER COMMAND/AHK-SCRIPT launcher, hold the SHIFT key and press this button while it is in ON position. Designated WRAPPER COMMAND/AHK-SCRIPT launcher will be highlighted on the tree.

WRAPPER COMMAND/AHK-SCRIPT launcher cannot be executed directly as it requires some text for “<PROXY_SUBSTITUTED_COMMAND_TEXT>” substitution parameter (placeholder). Such substitution is achieved while WRAPPER MODE is ON during execution of other (NON-WRAPPER) COMMAND launcher or during execution of SCRIPT_line into external window.

Mouse Shortcuts on the LauncherTree:

  • ShiftDoubleClick on COMMAND/AHK-SCRIPT Launcher that contains “<PROXY_SUBSTITUTED_COMMAND_TEXT>” substitution parameter (placeholder) in the text of its command/ahk_script. This will enable WRAPPER MODE and set ShiftDoubleClick-ed launcher as designated WRAPPER for all subsequent COMMAND/SCRIPT_line executions.

  • CtrlShiftDoubleClick on any COMMAND/AHK-SCRIPT/SCRIPT Launcher. This will disable WRAPPER MODE.

  • ShiftDoubleClick on COMMAND Launcher that does not contain “<PROXY_SUBSTITUTED_COMMAND_TEXT>” substitution parameter (placeholder) in the text of its command. This will execute ShiftDoubleClick-ed COMMAND launcher directly (without using WRAPPER) even if WRAPPER MODE is enabled.

  • ShiftDoubleClick on non-CSV SCRIPT Launcher. This will execute next line in non-CSV SCRIPT launcher directly to non-terminal active window (without using WRAPPER) even if WRAPPER MODE is enabled.

===============Sample AHK-SCRIPT WRAPPER==============

MyHandles = <PROXYHANDLESOFNONMINIMIZEDWINDOWS>
Loop, parse, MyHandles,%A_Space%
{
    ControlClick,,ahk_id %A_LoopField% ;click on window to make it active.
    Send,<PROXY_SUBSTITUTED_COMMAND_TEXT>{Enter} ;send keypresses to active window
}

===============Sample COMMAND WRAPPER=================

ansible all -m shell -a '<PROXY_SUBSTITUTED_COMMAND_TEXT>'

4.207. IDH_MAIN_WINDOW_MENUBAR_COMMAND_SUBST_CMD_INTO_CMD_SEARCH

Search for WRAPPERs on LauncherTree.

4.208. IDH_MAIN_WINDOW_MENUBAR_COMMAND_SUBST_CMD_INTO_CMD_SET

Set selected/higlighted Launcher of certain kind (COMMAND or AHK-SCRIPT with <PROXY_SUBSTITUTED_COMMAND_TEXT> parameter in its text) as currently “active” WRAPPER.

After active WRAPPER is set, one should make sure the WRAPPER mode is ON before using it.

WRAPPER mode cannot be turned ON if there is no active WRAPPER set yet.

Active WRAPPER settings are not preserved on Proxy32 exit.

Active WRAPPER is not set after Proxy32 starts.

4.209. IDH_MAIN_WINDOW_MENUBAR_COMMAND_SUBST_CMD_INTO_CMD_SHOW

Show currently active WRAPPER on LauncherTree.

4.210. IDH_MAIN_WINDOW_MENUBAR_EnforceApplicationWindowTitleGivenByTheUser

“EnforceApplicationWindowTitleGivenByTheUser”

Normally, Application window sets and controls what text is shown on its titlebar. Application window can change title automatically to reflect activities in Application Window. For example, some terminals show hostname and current directory in their window title. For another example, some text editors show name of edited file in their window title. When Application Window (for example, terminal or text editor) is placed inside of the Workspace, text of its title should also be shown in the List in the Selector Window of Proxy32. Changes in the Application window title should automatically propagate to selector list.

By default, Proxy32 will once a second scan all workspaces and automatically propagate titles of all application windows inside of all workspaces to copies of their window titles stored in the selector list. This way, if Application window inside of workspace has changed its own title, this change will propagate to window title stored in the selector list.

Alternatively, if this setting is selected, Proxy32 will once a second automatically propagate copies of window titles stored in selector list to the actual window titles shown on windows titlebars. This way, if Application window has changed its title, this change will soon be overwritten by original window title stored in the selector list. Therefore, if this mode is enabled, application window cannot change text in its title anymore and the title stays as it was set in the selector window.

Title in selector is always set by the user. Window Title in the selector is set when the application window is created (from the Launcher Tooltip field) or when the application window is inserted into workspace (it is set as Window class and Window Title separated by colon). It is also set when user changes application window title manually via Proxy32 command “Change title of the active window”.

4.211. IDH_MAIN_WINDOW_MENUBAR_Floater_Windows_Behavior

Switches between three different behaviors of Floater Windows (Floaters are LauncherTree Window and Selector Window):

  • Floater Windows adjust their size and position on Main Window’s resize and movement

  • Floater Window’s movement follows Main Window left top corner’s movement

  • Floater Window’s size and position are independent from Main Window’s resize and movement

4.212. IDH_MAIN_WINDOW_MENUBAR_Keep_LauncherTree_Sizing_Border_On_Frame_Removal

“Keep LauncherTree Sizing Border On Frame Removal”

4.213. IDH_MAIN_WINDOW_MENUBAR_Keep_Main_Window_Sizing_Border_On_Frame_Removal

“Keep Main Window Sizing Border On Frame Removal”

4.214. IDH_MAIN_WINDOW_MENUBAR_Keep_Selector_Sizing_Border_On_Frame_Removal

“Keep Selector Sizing Border On Frame Removal”

4.215. IDH_MAIN_WINDOW_MENUBAR_LauncherTreeWindowAndSelectorWindowAdjustSizeAndPositionOnWorkspaceResizeAndMovement

“LauncherTree Window and Selector Window are floating toolbar windows. If this setting is enabled both windows will keep their relative positions to workspace window. That is, when workspace window is moved, both floating toolbar windows will move together with workspace window as one piece. Also, when workspace window is resized, both floating toolbar windows will resize together with workspace window as one piece.”

4.216. IDH_MAIN_WINDOW_MENUBAR_LauncherTreeWindowAndSelectorWindowMovementFollowsWorkspaceWindowLeftTopCornerMovement

“LauncherTree Window and Selector Window are floating toolbar windows. If this setting is enabled both windows will keep their relative positions to main window. That is, when main window is moved, both floating toolbar windows will move together with main window as one piece.”

4.217. IDH_MAIN_WINDOW_MENUBAR_LauncherTreeWindowAndSelectorWindowSizeAndPositionAreIndependentFromWorkspaceWindow

“LauncherTree Window and Selector Window are floating toolbar windows. If this setting is enabled both windows will keep their size and position independently from Main Window.”

4.218. IDH_MAIN_WINDOW_MENUBAR_LeftDoubleClickOnMainWindowTitleExecutesAssignedActions

“Normally, left double click on the titlebar of any window will cause it to maximize (if it is of normal size) or to restore (if it is maximized). This can also be achieved by clicking Maximize/Restore button on the right side of titlebar of the window or by selecting Maximize/Restore command from Window System menu (left click on window icon on the left side of the titlebar of the window). When this setting is enabled, left double click on the title of the Main window is used to execute assigned mouse actions in the Main window.”

4.219. IDH_MAIN_WINDOW_MENUBAR_Maximization_Rectangle_of_Main_Window

Switches between six different Maximization Rectangles of Main Window: - cover Current Monitor of Main Window minus taskbar [image] - cover Virtual Screen (All Monitors) minus taskbar [image] - cover Virtual Screen (All Monitors) [image] - cover First Monitor minus taskbar [image] - cover Second Monitor minus taskbar [image] - cover Third Monitor minus taskbar [image] - cover First and Second Monitor minus taskbar [image] - cover Second and Third Monitor minus taskbar [image] - cover First and Third Monitor minus taskbar

4.220. IDH_MAIN_WINDOW_MENUBAR_MaximizeApplicationWindowOnSelectionFromSelectorList

LauncherTree Window and Selector Window are floating toolbar windows. Multiple Terminal Windows are residing inside of Main window but their names are shown in the drop-down list of Selector window. When Terminal Window is selected in the drop-down list of Selector window, it becomes the Active Terminal Window (which is receiving all commands from LauncherTree). Terminal Window is also receiving keyboard focus and becomes foreground window on selection. If this setting is enabled Terminal Windows will also maximize its size inside of workspace window when it is selected in the drop-down list of Selector window.

4.221. IDH_MAIN_WINDOW_MENUBAR_MaximizeMainWindowExpandsTo_Virtual_Desktop_minus_Taskbar

“If this setting is enabled Main Window will try to expand to the largest rectangular area of virtual desktop that is not covering MS-Windows TaskBar.”

4.222. IDH_MAIN_WINDOW_MENUBAR_MaximizeMainWindowExpandsTo_VIRTUAL_SCREEN_MINUS_TASKBAR

“If this setting is enabled Main Window will try to expand to the largest rectangular area of virtual desktop that is not covering MS-Windows TaskBar.”

4.223. IDH_MAIN_WINDOW_MENUBAR_MaximizeMainWindowExpandsToCURRENT_MONITOR_MINUS_TASKBAR

“Main Window behaves like regular window, that is, when maximized, it fills the monitor with which it has larger intersection (but not covering MS-Windows TaskBar).”

4.224. IDH_MAIN_WINDOW_MENUBAR_MaximizeMainWindowExpandsToCurrentMonitor_minus_Taskbar

“Main Window behaves like regular window, that is, when maximized, it fills the monitor with which it has larger intersection (but not covering MS-Windows TaskBar).”

4.225. IDH_MAIN_WINDOW_MENUBAR_MaximizeMainWindowExpandsToFIRST_AND_SECOND_MONITOR_MINUS_TASKBAR

Main Window - when maximized - fills first and second monitor. Intended for two monitors of the same size and with taskbars located at the same positions. Takes each monitor rectangle (with task bar substracted). Then builds the union rectangle of two monitor rectangles.

4.226. IDH_MAIN_WINDOW_MENUBAR_MaximizeMainWindowExpandsToFIRST_AND_THIRD_MONITOR_MINUS_TASKBAR

Main Window - when maximized - fills first and third monitor. Intended for two monitors of the same size and with taskbars located at the same positions. Takes each monitor rectangle (with task bar substracted). Then builds the union rectangle of two monitor rectangles.

4.227. IDH_MAIN_WINDOW_MENUBAR_MaximizeMainWindowExpandsToFIRST_MONITOR_MINUS_TASKBAR

Main Window behaves like regular window, that is, when maximized, it fills first monitor (but not covering MS-Windows TaskBar).

4.228. IDH_MAIN_WINDOW_MENUBAR_MaximizeMainWindowExpandsToSECOND_AND_THIRD_MONITOR_MINUS_TASKBAR

Main Window - when maximized - fills second and third monitor. Intended for two monitors of the same size and with taskbars located at the same positions. Takes each monitor rectangle (with task bar substracted). Then builds the union rectangle of two monitor rectangles.

4.229. IDH_MAIN_WINDOW_MENUBAR_MaximizeMainWindowExpandsToSECOND_MONITOR_MINUS_TASKBAR

Main Window behaves like regular window, that is, when maximized, it fills second monitor (but not covering MS-Windows TaskBar).

4.230. IDH_MAIN_WINDOW_MENUBAR_MaximizeMainWindowExpandsToTHIRD_MONITOR_MINUS_TASKBAR

Main Window behaves like regular window, that is, when maximized, it fills third monitor (but not covering MS-Windows TaskBar).

4.231. IDH_MAIN_WINDOW_MENUBAR_MaximizeMainWindowExpandsToVIRTUAL_SCREEN

“In systems with multiple monitors, desktop spans multiple monitors and it is called Virtual Desktop. If this setting is enabled Main Window will maximize to cover the whole Virtual Desktop.”

4.232. IDH_MAIN_WINDOW_MENUBAR_MaximizeMainWindowExpandsToVirtualDesktop

“In systems with multiple monitors, desktop spans multiple monitors and it is called Virtual Desktop. If this setting is enabled Main Window will maximize to cover the whole Virtual Desktop.”

4.233. IDH_MAIN_WINDOW_MENUBAR_RearrangeMinimizedApplicationWindowsOnMainWindowResize

Multiple Terminal Windows are residing inside of Workspace window. When Terminal Window is is minimized, it is positioned along the bottom border of the workspace window. If workspace window is resized, minimized terminal windows may become invisible as they will be out of visible area of resized workspace window. If this setting is enabled all minimized Terminal Windows will be re-positioned along bottom border of workspace window on any resize of the workspace window.

4.234. IDH_MAIN_WINDOW_MENUBAR_Release_All_Windows_From_The_List

“Left Click: Release Active Window (if it is External Application Window) from current Proxy32 Workspace back to Desktop. Released application will not be terminated on exit of Proxy32.”

“Left Click with Control key pressed: Release All External Application Windows (captured into all Workspaces via LAUNCH, VIEWER, manual GRAB or AUTOGRAB) from all 6 Proxy32 workspaces back to Desktop. Released applications will not be terminated on exit of Proxy32. “

4.235. IDH_MAIN_WINDOW_MENUBAR_Remove_Frame_From_LauncherTree_Window

Toggles frame in LauncherTree Window.

LauncherTree Window will be smaller without frame and:

  • it cannot be resized by the mouse

  • it can be moved by holding window handle (enabled by default) by mouse

  • it can be moved and resized if those operations are assigned to hot keys

4.236. IDH_MAIN_WINDOW_MENUBAR_Remove_Frame_From_Main_Window

Toggles frame in Main Window.

Main Window will be smaller without frame:

  • it cannot be resized by the mouse

  • it can be moved by holding window background by mouse

  • it can be moved and resized if those operations are assigned to hot keys

4.237. IDH_MAIN_WINDOW_MENUBAR_Remove_Frame_From_Selector_Window

Toggles frame in Selector Window.

Selector Window will be smaller without frame and:

  • it cannot be resized by the mouse

  • it can be moved by holding window handle (enabled by default) by mouse

  • it can be moved and resized if those operations are assigned to hot keys

4.238. IDH_MAIN_WINDOW_MENUBAR_SmallSelectorWindow

“Use small Font/Icons (16pt instead of 32pt) for Selector and WorkspaceNavigator Windows.”

4.239. IDH_MAIN_WINDOW_MENUBAR_Start_Window_Selection_By_Mouse

GRAB external window into workspace in 15 seconds by hovering mouse pointer over grabbed window.

To capture multiple windows in quick succession (without waiting 15 seconds for next capture), left click this toolbar button while Ctrl key is pressed. Toolbar button will become blue. Then press and hold down left mouse button on this blue toolbar button and then, while holding left mouse button down, move the mouse pointer to the point in the external window. While left mouse button is being held down, tooolbar button still stay blue and every click with the right mouse button will capture next external window. Releasing left mouse button will end this capturing mode and toolbar button will become red again.

4.240. IDH_MAIN_WINDOW_MENUBAR_Start_Window_Selection_By_Name

“GRAB external window into workspace by selecting grabbed window name from the list”

4.241. IDH_MAIN_WINDOW_MENUBAR_SWITCH_TO_ANOTHER_WINDOW_IN_WORKSPACE

This button

shows list of windows in current workspace, shows which of those windows is currently active and allows to switch activity to another window in current workspace.

If you need to switch activity to the window that is residing in another workspace, use drop-down list in Selector Window.

If you need to move window from one workspace to another use Workspace Navigator menu (drag window name and drop it on workspace name)

You can also use Workspace Switch Buttons with Ctrl or Shift key pressed to move active window or all non-minimized windows from current workspace (identified by workspace button that is highlighted by round-edge rectangle) to selected workspace (identified by the clicked workspace button).

4.242. IDH_MAIN_WINDOW_MENUBAR_SWITCH_TO_WS0

Left Click: Switch to Workspace 0 in the Main Window.

Left Click with Control key pressed: Moves active window from current Workspace to Workspace 0.

Left Click with Shift key pressed: Moves all non-minimized windows from current Workspace to Workspace 0.

Left Click with Shift and Control key pressed: Moves all windows from current Workspace to Workspace 0.

Left Click with Alt key pressed: Change Title of Workspace 0.

Right Click: opens context help page.

4.243. IDH_MAIN_WINDOW_MENUBAR_SWITCH_TO_WS1

Left Click: Switch to Workspace 1 in the Main Window.

Left Click with Control key pressed: Moves active window from current Workspace to Workspace 1.

Left Click with Shift key pressed: Moves all non-minimized windows from current Workspace to Workspace 1.

Left Click with Shift and Control key pressed: Moves all windows from current Workspace to Workspace 1.

Left Click with Alt key pressed: Change Title of Workspace 1.

Right Click: opens context help page.

4.244. IDH_MAIN_WINDOW_MENUBAR_SWITCH_TO_WS2

Left Click: Switch to Workspace 2 in the Main Window.

Left Click with Control key pressed: Moves active window from current Workspace to Workspace 2.

Left Click with Shift key pressed: Moves all non-minimized windows from current Workspace to Workspace 2.

Left Click with Shift and Control key pressed: Moves all windows from current Workspace to Workspace 2.

Left Click with Alt key pressed: Change Title of Workspace 2.

Right Click: opens context help page.

4.245. IDH_MAIN_WINDOW_MENUBAR_SWITCH_TO_WS3

Left Click: Switch to Workspace 3 in the Main Window.

Left Click with Control key pressed: Moves active window from current Workspace to Workspace 3.

Left Click with Shift key pressed: Moves all non-minimized windows from current Workspace to Workspace 3.

Left Click with Shift and Control key pressed: Moves all windows from current Workspace to Workspace 3.

Left Click with Alt key pressed: Change Title of Workspace 3.

Right Click: opens context help page.

4.246. IDH_MAIN_WINDOW_MENUBAR_SWITCH_TO_WS4

Left Click: Switch to Workspace 4 in the Main Window.

Left Click with Control key pressed: Moves active window from current Workspace to Workspace 4.

Left Click with Shift key pressed: Moves all non-minimized windows from current Workspace to Workspace 4.

Left Click with Shift and Control key pressed: Moves all windows from current Workspace to Workspace 4.

Left Click with Alt key pressed: Change Title of Workspace 4.

Right Click: opens context help page.

4.247. IDH_MAIN_WINDOW_MENUBAR_SWITCH_TO_WS5

Left Click: Switch to Workspace 5 in the Main Window.

Left Click with Control key pressed: Moves active window from current Workspace to Workspace 5.

Left Click with Shift key pressed: Moves all non-minimized windows from current Workspace to Workspace 5.

Left Click with Shift and Control key pressed: Moves all windows from current Workspace to Workspace 5.

Left Click with Alt key pressed: Change Title of Workspace 5.

Right Click: opens context help page.

4.248. IDH_MAIN_WINDOW_MENUBAR_TileCascadeMaximizeWillNotOverlapWithLauncherTreeAndSelectorWindows

Switches between two modes. Tile, Cascade and Maximize operations will position terminal windows and controlled external application windows in such a way that:

  • they will never overlap with LauncherTree Window and Selector Window

  • they may overlap with LauncherTree Window and Selector Window

4.249. IDH_MAIN_WINDOW_MENUBAR_TileCascadeMaximizeWillUseMaximizeRectangleOfWorkspaceWindowInsteadOfClientRectangle

Switches between two modes:

  • Main Window is visible

  • Main Window is hidden

Tile, Cascade and Maximize operations will position terminal windows and controlled external application windows:

- inside of Internal (Client) Rectangle of the Main Window (if Main Window is visible)

- inside of configured Maximization Rectangle of Main Window (if Main Window is hidden)

Internal Rectangle of the Main Window does not include Main Window frame borders and Main Window MenuBar (if they are present).

Maximization Rectangle of the Main Window is separate setting and can be set to:

- cover Current Monitor of Main Window minus taskbar

- cover Virtual Screen (All Monitors) minus taskbar

- cover Virtual Screen (All Monitors)

- cover First Monitor minus taskbar

- cover Second Monitor minus taskbar

- cover Third Monitor minus taskbar

- cover First and Second Monitor minus taskbar

- cover Second and Third Monitor minus taskbar

- cover First and Third Monitor minus taskbar

4.250. IDH_MAIN_WINDOW_MENUBAR_Workspace_CtrlRightClickPopup

test

4.251. IDH_MAIN_WINDOW_MENUBAR_WORKSPACENAVIGATOR

“Opens WorkspaceNavigator that lists all workspaces and all application windows inside of them. WorkspaceNavigator allows to find application window, switch to it (by selecting/clicking it) and to move it to another workspace (by dragging application window name and dropping it on workspace name).”

4.252. IDH_MAIN_WINDOW_POPUPMENU_ADD_ROW_TO_TILED_LAYOUT

Add row to tiled layout

4.253. IDH_MAIN_WINDOW_POPUPMENU_ARRANGE_MINIMIZED_WORKSPACE_CHILDREN

“Arrange All minimized windows in the current Proxy workspace”

4.254. IDH_MAIN_WINDOW_POPUPMENU_CAPTURE_MOUSE_COORDINATES_IN_ACTIVE_WINDOW

This button only operates on the currently selected (highlighted) COMMAND, SCRIPT, AHK-SCRIPT or SUBTREE launcher.

4.254.1. Capturing one mouse position at the time:

In 5 seconds after this toolbar button is left clicked mouse pointer position inside of active window is captured relative to top left corner of active window. Toolbar button changes color after being left clicked and restores it’s color 5 seconds later (after the capture). Mouse position is stored by proxy32 in currently selected COMMAND, SCRIPT, AHK-SCRIPT or SUBTREE launcher. It is also displayed on the screen (as blue dot with number 00) after being captured/stored.

Every time this toolbar button is left clicked again, new mouse position with consecutive number (mouseposition[01], mouseposition[02] etc up to mouseposition[99]) is stored by proxy32 in currently selected COMMAND, SCRIPT, AHK-SCRIPT or SUBTREE launcher.

4.254.2. Capturing multiple mouse positions in quick succession:

To capture multiple mouse positions in quick succession (without waiting 5 seconds for next capture), left click this toolbar button while both Alt and Shift keys are pressed. Toolbar button will become blue. Then press and hold down left mouse button on this blue toolbar button and then, while holding left mouse button down, move the mouse pointer to the desired position in the external window. While left mouse button is being held down, tooolbar button still stay blue and every click with the right mouse button will capture next mouse position. Releasing left mouse button will end this capturing mode and toolbar button will become red again.

4.254.3. Deleting all mouse positions:

To delete all mousepositions stored in currently selected COMMAND, SCRIPT, AHK-SCRIPT or SUBTREE launcher, left click this toolbar button while Ctrl key is pressed.

4.254.4. Deleting last mouse position:

To delete last mouseposition stored in currently selected COMMAND, SCRIPT, AHK-SCRIPT or SUBTREE launcher, left click this toolbar button while Alt key is pressed.

4.254.5. Display all mouse positions:

To display (as blue dots with numbers) all mousepositions stored in currently selected COMMAND, SCRIPT, AHK-SCRIPT or SUBTREE launcher, left click this toolbar button while Shift key is pressed. The drawing may quickly disappear as active window may redraw itself on clicking or typing.

4.254.6. Shift all captured mouse positions by capturing new mouseposition[00]:

To capture new mouseposition[00] and move all other mousepositions (stored in currently selected COMMAND, SCRIPT, AHK-SCRIPT or SUBTREE launcher) by the difference between new mouseposition[00] and old mouseposition[00], left click this toolbar button while both Ctrl and Shift keys are pressed.

4.254.7. Using mouse positions stored in COMMAND/SCRIPT launcher:

When COMMAND Launcher (or line of the file referred in the NON-CSV SCRIPT launcher) is executed (it’s text is automatically typed) into external Window, in addition to typing text directly it also interpretes PROXYSEND substitution parameters to insert mouse, keyboard and delay events into COMMAND execution. Stored (in the current COMMAND/SCRIPT launcher) numbered mouse positions (numbered from 00 and up to 99) can be referred by their number inside of PROXYSEND substitution parameters. For example, left MouseClicks can be inserted into COMMAND text as substitution parameters <PROXYSEND_MCLP00>, <PROXYSEND_MCLP01>, <PROXYSEND_MCLP02> etc which use stored mouseposition[00], mouseposition[01], mouseposition[02] etc respectively. If MouseClicks are executed, proxy32 attempts to display /draw mousepositions that are being clicked (as blue dots with numbers) but that drawing of dots may not work well as active window may redraw itself on clicking or typing.

When executing SCRIPT line directly from SCRIPT editor window (and not by double-clicking on the SCRIPT launcher), this SCRIPT editor window does not have association with any launcher on the LauncherTree. Therefore, mousepositions in this case are taken from COMMAND, SCRIPT, AHK-SCRIPT or SUBTREE launcher that is highlighted on the LauncherTree.

4.254.8. Using mouse positions stored in AHK-SCRIPT launcher:

mouseposition[00] can be substituted as pair of numerical parameters <PROXYMOUSEX00> and <PROXYMOUSEY00> into the body of AHK-SCRIPT (AHK script text). Similarly, all mouseposition[01], mouseposition[02] etc respectively can be substituted into AHK-SCRIPT text on execution.

4.254.9. Using mouse positions stored in SUBTREE launcher:

Positions stored on the SUBTREE launcher are used by pre-COMMAND mouse click functionality of the COMMAND/SCRIPT launchers that are direct descendant of the SUBTREE launcher.

4.254.10. Using mouse positions when COMMAND WRAPPER mode is enabled:

In COMMAND WRAPPER mode, the designated WRAPPER launcher (it could be COMMAND or AHK-SCRIPT) is the one that is being executed. Double-clicked COMMAND (or SCRIPT) only provides substitution text for execution of WRAPPER launcher. Because WRAPPER launcher is the one that is actually executed, mouse positions associated with WRAPPER launcher are being used in WRAPPER mode.

4.255. IDH_MAIN_WINDOW_POPUPMENU_CASCADE

“Cascade All non-minimized windows in the current Workspace”

4.256. IDH_MAIN_WINDOW_POPUPMENU_CHANGE_TITLE_OF_SELECTED_WINDOW

“Change title of the application window that is selected in the drop-down list in the Selector Window.”

4.257. IDH_MAIN_WINDOW_POPUPMENU_CLOSE_NONMINIMIZED_WORKSPACE_CHILDREN

“Close All non-minimized windows in the current Proxy workspace”

4.258. IDH_MAIN_WINDOW_POPUPMENU_COPY_MOUSE_CAPTURED_COORDINATES

This button only operates on the currently selected (highlighted) COMMAND, SCRIPT, AHK-SCRIPT or SUBTREE launcher.

4.258.1. Paste all mouse positions:

Paste from clipboard all mousepositions to store in currently selected COMMAND, SCRIPT, AHK-SCRIPT or SUBTREE launcher

4.259. IDH_MAIN_WINDOW_POPUPMENU_DELETE_MOUSE_CAPTURED_COORDINATES

This button only operates on the currently selected (highlighted) COMMAND, SCRIPT, AHK-SCRIPT or SUBTREE launcher.

4.259.1. Deleting all mouse positions:

Delete all mousepositions stored in currently selected COMMAND, SCRIPT, AHK-SCRIPT or SUBTREE launcher.

4.260. IDH_MAIN_WINDOW_POPUPMENU_DOCK_SELECTOR_AND_LAUNCHERTREE_INSIDE_OF_WS_BOTTOM_RIGHT

Show and Dock ActiveTerminalSelector and LauncherTree floating windows inside of the workspace in the bottom-right corner (shortcut: MiddleClick on the title of Workspace, ActiveTerminalSelector or LauncherTree windows, or on the background of Workspace window)

This button will not work if Workspace Window is hidden.

4.261. IDH_MAIN_WINDOW_POPUPMENU_DOCK_SELECTOR_AND_LAUNCHERTREE_INSIDE_OF_WS_TOP_LEFT

Show and Dock ActiveTerminalSelector and LauncherTree floating windows inside of the workspace in the top-left corner (shortcut: ShiftMiddleClick on the title of Workspace, ActiveTerminalSelector or LauncherTree windows, or on the background of Workspace window)

This button will not work if Workspace Window is hidden.

4.262. IDH_MAIN_WINDOW_POPUPMENU_DOCK_SELECTOR_AND_LAUNCHERTREE_OUTSIDE_OF_WS_BOTTOM_RIGHT

Show and Dock ActiveTerminalSelector and LauncherTree floating windows outside of the workspace in the bottom-right corner (shortcut: CtrlMiddleClick on the title of Workspace, ActiveTerminalSelector or LauncherTree windows, or on the background of Workspace window)

This button will not work if Workspace Window is hidden.

4.263. IDH_MAIN_WINDOW_POPUPMENU_DOCK_SELECTOR_AND_LAUNCHERTREE_OUTSIDE_OF_WS_TOP_LEFT

Show and Dock ActiveTerminalSelector and LauncherTree floating windows outside of the workspace in the top-left corner (shortcut: CtrlShiftMiddleClick on the title of Workspace, ActiveTerminalSelector or LauncherTree windows, or on the background of Workspace window)

This button will not work if Workspace Window is hidden.

4.264. IDH_MAIN_WINDOW_POPUPMENU_EDIT_AUTOGRAB_DEFINITIONS

“Edit AUTOGRAB patterns”

4.265. IDH_MAIN_WINDOW_POPUPMENU_EDIT_LAUNCHER_HOTKEY_DEFINITIONS

“Edit HOTKEY definitions”

4.266. IDH_MAIN_WINDOW_POPUPMENU_EDIT_MOUSE_ACTIONS_DEFINITIONS

Edit MOUSE_ACTIONS definitions. There are 150 different combinations of mouse button clicks with modifier keys. For example, “LeftCtrl-LeftDoubleClick” (while holding “LeftCtrl” key DoubleClick with left mouse button) or “RightClick”. Each of 150 possible clicks can be assigned an action (the same way as assigning an action to the hot key). Click can be performed on the titles of the Main, LauncherTree or Selector Window. Click can also be performed on the background of the Main Window, on active window red sticker, on terminal leftmost button. Click can also be performed on “moving handles” of LauncherTree or Selector Window (if such handles are enabled on frame removal).

4.267. IDH_MAIN_WINDOW_POPUPMENU_EDIT_VIEWER_DEFINITIONS

“Edit VIEWER definitions”

4.268. IDH_MAIN_WINDOW_POPUPMENU_EDIT_WORKSPACE_HOTKEY_DEFINITIONS

“Edit HOTKEY definitions”

4.269. IDH_MAIN_WINDOW_POPUPMENU_RESET_ALL_FONTS_TO_DEFAULTS

This button changes sizes of all 5 fonts simultaneously (Tree/ToolTips/Dialog/Terminal/Editor). Tree/Tooltips fonts change size immediately, but Dialog/Terminal/Editor fonts change sizes only when new Dialog/Terminal/Editor window is created.

Without modifier keys pressed it “resets all fonts sizes to default (~8 points)”.

With Shift key pressed it “doubles the size of all fonts”.

With Ctrl key pressed it “increases the size of all fonts”.

With Ctrl+Shift keys pressed it “decreases the size of all fonts”.

4.270. IDH_MAIN_WINDOW_POPUPMENU_TREE_FONT_INCREMENT

Increment tree font by one point. Change is immediately applied to the running GUI. Setting is stored per current monitor configuration. Monitor configuration is string that lists all curently available monitors with their current resolution. Executing while “Shift” is pressed will double the point size.

4.271. IDH_MAIN_WINDOW_POPUPMENU_TREE_FONT_DECREMENT

Decrement tree font by one point. Change is immediately applied to the running GUI. Setting is stored per current monitor configuration. Monitor configuration is string that lists all curently available monitors with their current resolution. Executing while “Shift” is pressed will reduce the point size in the half.

4.272. IDH_MAIN_WINDOW_POPUPMENU_TOOLTIPS_FONT_INCREMENT

Increment tooltips font by one point. Change is immediately applied to the running GUI. Setting is stored per current monitor configuration. Monitor configuration is string that lists all curently available monitors with their current resolution. Executing while “Shift” is pressed will double the point size.

4.273. IDH_MAIN_WINDOW_POPUPMENU_TOOLTIPS_FONT_DECREMENT

Decrement tooltips font by one point. Change is immediately applied to the running GUI. Setting is stored per current monitor configuration. Monitor configuration is string that lists all curently available monitors with their current resolution. Executing while “Shift” is pressed will reduce the point size in the half.

4.274. IDH_MAIN_WINDOW_POPUPMENU_DIALOG_FONT_INCREMENT

Increment dialog font by one point. Change is applied to newly created dialog windows. Setting is stored per current monitor configuration. Monitor configuration is string that lists all curently available monitors with their current resolution. Executing while “Shift” is pressed will double the point size.

4.275. IDH_MAIN_WINDOW_POPUPMENU_DIALOG_FONT_DECREMENT

Decrement dialog font by one point. Change is applied to newly created dialog windows. Setting is stored per current monitor configuration. Monitor configuration is string that lists all curently available monitors with their current resolution. Executing while “Shift” is pressed will reduce the point size in the half.

4.276. IDH_MAIN_WINDOW_POPUPMENU_TERMINAL_FONT_INCREMENT

Increment proxy-terminal font by one point. Change is applied to newly created proxy-terminal windows. Setting is stored per current monitor configuration. Monitor configuration is string that lists all curently available monitors with their current resolution. Executing while “Shift” is pressed will double the point size.

4.277. IDH_MAIN_WINDOW_POPUPMENU_TERMINAL_FONT_DECREMENT

Decrement proxy-terminal font by one point. Change is applied to newly created proxy-terminal windows. Setting is stored per current monitor configuration. Monitor configuration is string that lists all curently available monitors with their current resolution. Executing while “Shift” is pressed will reduce the point size in the half.

4.278. IDH_MAIN_WINDOW_POPUPMENU_EDITOR_FONT_INCREMENT

Increment SCRIPT editor font by one point. Change is applied to newly created SCRIPT-editors windows. Setting is stored per current monitor configuration. Monitor configuration is string that lists all curently available monitors with their current resolution. Executing while “Shift” is pressed will double the point size.

4.279. IDH_MAIN_WINDOW_POPUPMENU_EDITOR_FONT_DECREMENT

Decrement SCRIPT editor font by one point. Change is applied to newly created SCRIPT-editors windows. Setting is stored per current monitor configuration. Monitor configuration is string that lists all curently available monitors with their current resolution. Executing while “Shift” is pressed will reduce the point size in the half.

4.280. IDH_MAIN_WINDOW_POPUPMENU_PUTTY_REGISTRY_EXPORT

This Proxy32 button exports PuTTY session configuration subtree from Windows Registry. PuTTY session configuration subtree is saved to file PuTTY_Registry.reg in Proxy32 startup folder.

With SHIFT pressed this Proxy32 button converts file PuTTY_Registry.reg into file PuTTY_Registry.csv. Both files are located in Proxy32 startup folder.

NOTE: File PuTTY_Registry.csv can be loaded into Excel for editing PuTTY session configurations in bulk. For Excel to preserve column types (integer/string) one should use “Excel_power_query_to_import_PuTTY_Registry.csv_file_with_correct_data_types.txt” file that is provided in Proxy32 startup folder. “Power Query” in Excel 2021 defines absolute path to imported csv file and data type (number/text) for each imported column.

  1. Start Excel and create blank workbook

  2. Use “Data”/”From Text/CSV” to load PuTTY_Registry.csv into blank workbook

  3. Open “Query”/”Edit”/”Advanced Editor” and paste content of file “Excel_power_query_to_import_PuTTY_Registry.csv_file_with_correct_data_types.txt”

  4. Edit absolute path to PuTTY_Registry.csv in the first line of pasted “Power Query” text

  5. Hit “Done” and then hit “Close and Load”

  6. Edit PuTTY sessions in Excel (each row in CSV table is PuTTY session)

  7. Export edited “PuTTY_Registry” tab as PuTTY_Registry.csv

  8. With SHIFT pressed next Proxy32 button converts PuTTY_Registry.csv to PuTTY_Registry.reg

  9. Without SHIFT pressed next Proxy32 button imports content of PuTTY_Registry.reg into Windows registry.

4.281. IDH_MAIN_WINDOW_POPUPMENU_PUTTY_REGISTRY_IMPORT

This Proxy32 button imports PuTTY sessions configuration subtree into Windows Registry. PuTTY sessions configuration subtree is read from file PuTTY_Registry.reg in Proxy32 startup folder.

With SHIFT pressed this Proxy32 button converts file PuTTY_Registry.csv into file PuTTY_Registry.reg. Both files are located in Proxy32 startup folder.

NOTE: File PuTTY_Registry.csv can be loaded into Excel for editing PuTTY session configurations in bulk. For Excel to preserve column types (integer/string) one should use “Excel_power_query_to_import_PuTTY_Registry.csv_file_with_correct_data_types.txt” file that is provided in Proxy32 startup folder. “Power Query” in Excel 2021 defines absolute path to imported csv file and data type (number/text) for each imported column.

  1. Start Excel and create blank workbook

  2. Use “Data”/”From Text/CSV” to load PuTTY_Registry.csv into blank workbook

  3. Open “Query”/”Edit”/”Advanced Editor” and paste content of file “Excel_power_query_to_import_PuTTY_Registry.csv_file_with_correct_data_types.txt”

  4. Edit absolute path to PuTTY_Registry.csv in the first line of pasted “Power Query” text

  5. Hit “Done” and then hit “Close and Load”

  6. Edit PuTTY sessions in Excel (each row in CSV table is PuTTY session)

  7. Export edited “PuTTY_Registry” tab as PuTTY_Registry.csv

  8. With SHIFT pressed this Proxy32 button converts PuTTY_Registry.csv to PuTTY_Registry.reg

  9. Without SHIFT pressed this Proxy32 button imports content of PuTTY_Registry.reg into Windows registry.

4.282. IDH_MAIN_WINDOW_POPUPMENU_SUBSTITUTION_PARAMETERS_EDIT

Opens dialog to edit proxy32 parameters that are not presistent.

Proxy32 Parameters are named strings that are stored in proxy32 memory and can be substituted by name into configuration text of Launchers. Launchers are nodes on LauncherTree on which user can double click to execute them. When user double-clicks on the launcher, values of parameters are substituted into text of the launcher and then launcher is executed.

Other way to say it, proxy32 parameters are string variables (placeholders) where the value of the string is either provided by user interactively (entered via parametes input dialog and then can optionally be saved to disk to proxy-parms.txt) or loaded from default parameter file proxy-parms.txt or loaded from user-specified parameter file (CSV/JSON/YAML).

Persistent parameters are flagged (while in memory) to be saved to disk on exit. They are typicaly in use when user has entered the value and flagged it to be saved to disk on exit to avoid the need to enter it again next time.

Non-Persistent parameters are not flagged (while in memory) to be saved to disk on exit. When parameters are loaded in bulk from disk file (CSV/JSON/YAML), they are not flagged to be saved on exit as they can be loaded again from the same source disk file (CSV/JSON/YAML) again next time.

Basically, dialog allows to verify what is/was loaded from user parameters source disk file (CSV/JSON/YAML) and see how parameters are named after loading.

If dialog does not pop, that means there are no non-persistent parameters in Proxy32 parameters memory.

4.283. IDH_MAIN_WINDOW_POPUPMENU_SUBSTITUTION_PARAMETERS_DELETE

Deletes all non-persistent parameters from proxy32 memory. That is convenient before (re-)loading parameters in bulk from user parameters source disk file (CSV/JSON/YAML). This command will also delete all parameters that user has supplied via parameters input dialog but did not flag them for saving to disk on exit.

4.284. IDH_MAIN_WINDOW_POPUPMENU_FTS_INDEX_RECREATE

Press this button to Recreate FTS index. If enabled, FTS index is automatically generated when LauncherTree is completely reloaded/overwritten or on the start of proxy32. If LauncherTree is modified via Append, Insert or Drag-and-Drop, one needs to re-generate FTS index manually using this button. If FTS parameters (case sensitivity, token delimiter list and searchable text extensions list) are changed, one needs to re-generate FTS index with new parameters settings.

4.285. IDH_MAIN_WINDOW_POPUPMENU_FTS_INDEX_ENABLE

Enables FTS index. Once the FTS index is enabled, it is automatically generated on proxy32 start and when LauncherTree is completely reloaded. It can also be manually regenerated by pressing “IND FTS” button.

4.286. IDH_MAIN_WINDOW_POPUPMENU_FTS_INDEX_CASE_INSENSITIVE

Makes FTS index case insensitive.

The button label indicates current state:

“CI FTS” - “case insensitive FTS”

“CS FTS” - “case sensitive FTS”

4.287. IDH_MAIN_WINDOW_POPUPMENU_FTS_IS_INDEXING_LINKED_FILES

Whether to index content of the linked files while re-creating FTS index. If Launcher refers to the file (VIEWER/SCRIPT/I-SCRIPT/CSVPARMS/YAMLPARMS) and FTS_IS_INDEXING_LINKED_FILES is enabled, then linked file name is checked against text-searcheable file extension list. If extension is in the list, then Launcher-referenced text file is scanned for tokens, line by line.

Button label indicates current state of FTS_IS_INDEXING_LINKED_FILES:

“DILF FTS” - “Do not Index Linked Files for FTS” - Default.

“ILF FTS” - “Index Linked Files for FTS”.

4.288. IDH_MAIN_WINDOW_POPUPMENU_FTS_INDEX_DELIMITER_LIST

Allows to edit FTS index token delimiter list string. Token delimiter list defines what chars can be in index tokens. Token can consist of chars not included in token delimiter list. If this button is clicked while CTRL is pressed, token delimiter list is set to contain only single and double quotes and white spaces. That means that tokens can contain any chars except single and double quotes and white spaces. If this button is clicked while SHIFT is pressed, token delimiter list is set to “default” value - to contain every char except alphanumerics and underscore. That means that tokens can contain only alphanumerics and underscore.

4.289. IDH_MAIN_WINDOW_POPUPMENU_FTS_INDEX_SEARCH_FILE_EXTENSIONS_LIST

Allows to edit FTS index search file extension list string. Extensions include leading dot. They are separated in the list string by semicolon. When FTS index is built, every Launcher’s text is being scanned for tokens. Also, if Launcher refers to the file (VIEWER/SCRIPT/I-SCRIPT/CSVPARMS/YAMLPARMS) and FTS_IS_INDEXING_LINKED_FILES is enabled, then file name is checked against text-searcheable file extension list. If extension is in the list, then Launcher-referenced text file is scanned for tokens, line by line.

If this button is clicked while CTRL is pressed,file extension list string is set to empty string.

If this button is clicked while SHIFT is pressed,file extension list string is set to default string:

“.ahk;.csv;.htm;.html;.j2;.json;.lua;.pl;.py;.rst;.txt;.xml;.yaml;.yml”.

4.290. IDH_MAIN_WINDOW_POPUPMENU_ENABLE_AUTOGRAB

“EnableAUTOGRAB”

4.291. IDH_MAIN_WINDOW_POPUPMENU_ENABLE_CLICK_MOUSEPOSITION_INCREMENT_AFTER_COMMAND_EXECUTION

This button toggles “Pre-COMMAND MouseClick Position ‘index’ Increment”. When enabled, increment is performed automatically after COMMAND/SCRIPT line execution to external window. ‘Index’ (parent_SUBMENU_mouse_position_index) variable is global for proxy32 and not local to any COMMAND launcher. ‘Index’ is initialized to 0 on proxy32 start and not stored on proxy32 exit. ‘Index’ selects one mouseposition from the sequence of mousepositions previously captured and stored in parent SUBMENU launcher. Indexed mouseposition is used by “Pre-COMMAND MouseMove or MouseClick” when “Pre-COMMAND MouseMove or MouseClick” is enabled.

Pressing this button while holding “Ctrl” - resets ‘index’ to 0

Pressing this button while holding “SHIFT” - opens dialog to set the value of the ‘index’

Pressing this button while holding “Alt” - increments ‘index’

Context of the ‘index’: “Pre-COMMAND MouseClick” is MouseMove or MouseClick that does not come from <PROXYSEND> events embedded into COMMAND/SCRIPT line. Instead, MouseMove or MouseClick (to active window) is automatically prepended (if enabled) during COMMAND/SCRIPT line execution to external window. “Pre-COMMAND MouseClick” can be enabled by separate (previous) button, that has three options: OFF, MouseMove, MouseClick. If MouseMove or MouseClick is selected, then mouse X,Y coordinates in active window will be needed in order to execute it. The mouse position of Pre-COMMAND MouseMove or MouseClick is taken from parent SUBMENU launcher if such parent SUBMENU launcher exists and it stores previously captured mouse positions.

If such parent SUBMENU does not exist or it does not store previously captured mouse positions, then only one mouse position (mouseposition[00]) is dynamically created and initialized to coordinates X=0 and Y=0 so that MouseMove or MouseClick can still be executed (mousepositions are in coordinates relative to top left corner of active window).

If such parent SUBMENU exists and it stores previously captured mouse positions, then mouse position of Pre-COMMAND MouseMove or MouseClick is taken from parent SUBMENU launcher. If “Mouse Position Increment” is enabled, first COMMAND/SCRIPT line execution to external window is prepended by MouseClick at stored mouseposition[‘index’], then after the execution ‘index’ value is incremented, so the second COMMAND/SCRIPT line execution to external window is prepended by MouseClick at stored mouseposition[‘old index value’+1], etc until there are no more stored mousepositions available. Therefore, consecutive executions will use different stored mousepositions.

Number of captured and stored mousepositions per each storing launcher is not limited but “Pre-COMMAND incremental MouseClick” functionality can only make use of up to 100 first captured mousepositions (mouseposition[00]-mouseposition[99]). When value of ‘index’ attempts to increment beyond number of stored mouse positions or beyond 99, proxy32 will show error message.

If “Mouse Position Increment” is disabled, every COMMAND/SCRIPT line execution to external window is prepended by MouseClick at the same stored mouseposition[‘index’].

The intended use case for this ‘increment’ functionality is to send the same COMMAND/SCRIPT line to multiple terminal windows when such terminal windows exist inside of remote desktop window or inside of VM console window that contains guest desktop. Guest/Remote Desktop window in such case should be set as proxy32 “active” window. “Pre-COMMAND incremental MouseClick” sets focus to the next terminal window inside of Guest/Remote Desktop before COMMAND text is typed to Guest/Remote Desktop window. COMMANDs and SCRIPT lines located under common parent SUBMENU share set of mousepositions stored in their common parent SUBMENU launcher.

4.292. IDH_MAIN_WINDOW_POPUPMENU_ENABLE_LINE_NUMBER_INCREMENT_AFTER_NON_CSV_SCRIPT_EXECUTION

Without modifier keys this button will toggle Automatic Line Number Increment after NON-CSV SCRIPT file line execution to external window as COMMAND (when user double clicks on NON-CSV SCRIPT launcher and selected target window is not Proxy32 own Terminal). In this context NON-CSV SCRIPT launcher means SCRIPT launcher pointing to file with NON-CSV extension.

To control which NON-CSV SCRIPT file line will be executed as COMMAND (when user double clicks on NON-CSV SCRIPT launcher and selected target window is not Proxy32 own Terminal) use this button with modifier keys.

Value of 1 refers to first line in NON-CSV SCRIPT file.

With Ctrl - resets global counter to 1

With SHIFT - opens dialog to set the value of the global counter

With Alt - increments global counter

Another way to control which NON-CSV SCRIPT file line will be executed as COMMAND (when user double clicks on NON-CSV SCRIPT launcher and selected target window is not Proxy32 own Terminal) is to open NON-CSV SCRIPT file in Proxy32 SCRIPT EDITOR and set the next line for execution by setting cursor on that line in SCRIPT EDITOR and clicking the “Set Line” button in SCRIPT EDITOR.

4.293. IDH_MAIN_WINDOW_POPUPMENU_ENABLE_LINE_NUMBER_INCREMENT_AFTER_CSV_SCRIPT_EXECUTION

Without modifier keys this button will toggle Automatic Line Number Increment after CSV SCRIPT file line execution (when user double clicks on CSV SCRIPT launcher and one line of the CSV SCRIPT file will be parsed to populate Proxy32 substitution parameters values aka PROXYPARMs) In this context CSV SCRIPT launcher means SCRIPT launcher pointing to file with CSV extension.

To control which CSV SCRIPT file line will be executed (when user double clicks on CSV SCRIPT launcher and one line of the CSV SCRIPT file will be parsed to populate Proxy32 substitution parameters values aka PROXYPARMs) use this button with modifier keys.

Value of 1 here refers to second line in CSV SCRIPT file (after skipping CSV-header row).

With Ctrl - resets global counter to 1

With SHIFT - opens dialog to set the value of the global counter

With Alt - increments global counter

Another way to control which CSV SCRIPT file line will be executed (when user double clicks on CSV SCRIPT launcher and one line of the CSV SCRIPT file will be parsed to populate Proxy32 substitution parameters values aka PROXYPARMs) is to open NON-CSV SCRIPT file in Proxy32 SCRIPT EDITOR and set the next line for execution by setting cursor on that line in SCRIPT EDITOR and clicking the “Set Line” button in SCRIPT EDITOR.

4.294. IDH_MAIN_WINDOW_POPUPMENU_ENABLE_AUTOEXECUTE_CSV_SCRIPT_BEFORE_WHEN_IT_IS_FIRST_SIBLING_OF_EXECUTED

When it is on:

On execution of any LAUNCHER (before it is executed) it’s parent SUBMENU launcher is checked whether the first sibling of the launcher to be executed is CSV SCRIPT launcher. If so, then CSV SCRIPT launcher is executed before the launcher in question is executed. The idea is that pre-execution of CSV SCRIPT launcher will advance the value of Proxy32 substitution parameters (PROXYPARMs) that are used by the launcher to be executed. Consecutive executions of the launcher will use Proxy32 substitution parameters (PROXYPARMs) from different rows of CSV file referred by the CSV SCRIPT launcher that is the first sibling. In this context CSV SCRIPT launcher means SCRIPT launcher pointing to file with CSV extension. Also, line autoincrement needs to be enabled for such a CSV SCRIPT launcher (please, see previous button).

4.295. IDH_MAIN_WINDOW_POPUPMENU_ENABLE_CSV_PARMS_ARE_CREATED_WITH_DO_NOT_ASK_AGAIN_SET

Toggle the following:

PROXYPARMs created on CSV SCRIPT launcher execution have Do-Not-Ask-Again attribute set. In this context CSV SCRIPT launcher means SCRIPT launcher pointing to file with CSV extension.

If Do-Not-Ask-Again attribute is set for all parameters (PROXYPARMs and PROXYPASSWORDs) that are present in given Launcher, on execution of such Launcher Proxy32 will not pop up Proxy Parameters Input Dialog. The purpose of Proxy Parameters Input Dialog is to let user manually adjust the values of Launcher parameters (PROXYPARMs and PROXYPASSWORDs) before they are substituted into Launcher configuration text and Launcher is executed.

4.296. IDH_MAIN_WINDOW_POPUPMENU_ENABLE_LUA_PARSING_BEFORE_PARAMETER_SUBSTITUTION

By default, this setting is disabled and proxy parameters are substituted into the launcher text first, before LUA templates are executed. That will allow to set initial values for LUA variables directly in the code of LUA templates. Then LUA templates will be executed using initial values supplied by substituted parameters.

If this setting is enabled, LUA templates will be executed first. That will allow to use LUA variables to index substituted (CSV/JSON/YAML) parameters before actual parameter substitution.

4.297. IDH_MAIN_WINDOW_POPUPMENU_ENABLE_LUA_TEMPLATING_ENGINE_PARSER

If enabled, as part of launcher execution launcher text before being executed will be passed through LUA templating engine. That allows to programatically change/generate launcher text under control of LUA code that is embedded into original text of the launcher. LUA embedded code in different launchers can share global LUA variables that are accumulated/stored in the memory of LUA interpreter.

Proxy32 has built-in LUA interpreter that is keeping global variables in its memory as long as Proxy32 is running. LUA interpreter is initialized on Proxy32 start and can be re-initialized when requested by user. Execution of LUA-SCRIPT launcher and/or execution of LUA templates is done via built-in LUA interpreter. All global LUA variables created/modified as result of such executions will accumulate and stay in interpreter memory until Proxy32 will exit or until interpreter is explicitely reset on user’s request.

Text of most of the launchers (for example, COMMAND launchers) can contain embedded LUA code. The whole text of the launcher with embedded segments of LUA code is called ‘LUA template’. In the text of the COMMAND launcher embedded segments of LUA code may be present as pair of delimiters ‘{%’ and ‘%}’ or ‘{{’ and ‘}}’ surrounding embedded LUA code. Embedded LUA code in templates is used to programatically change the text of the launcher before the execution of such launcher. As global variables stay in interpreter memory, execution of one launcher can impact execution of another launcher via global LUA variables created/accessed in LUA code embedded in LUA templates or present in the text of LUA-SCRIPT launcher.

{% embedded LUA executable code (this is stripped out of launcher text) %}
{{ embedded LUA variable (its value is inserted as string into launcher text) }}

For the purposes of LUA template execution the whole text of the launcher (literal text with all embedded LUA segments) is converted into one LUA program. Such LUA program is passed for execution to LUA interpreter and in the process of its execution it ‘prints’ by appending text to the resulting text of the launcher. Text between ‘{%’ and ‘%}’ delimiters is interpreted as LUA executable code and it cannot print (it does not appear in the resulting text of the launcher). Such code can do everything that LUA can do, for example, loops and conditional execution, read and write files, create new global variables and change their values. Anything outside of ‘{%’ and ‘%}’ delimiters is literal text. For purposes of LUA template execution, such literal text is replaced by LUA print statement that prints that literal text. ‘Printing’ in this context means appending text to the resulting text of the launcher. If such literal text contains embedded ‘{{ LUA expression }}’ string, LUA expression is evaluated to string and that string is inserted into resulting text of the launcher in place of ‘{{ LUA expression }}’ string.

Summary: Text of the launcher contains embedded LUA code surrounded by ‘{%’ and ‘%}’. Literal text outside of ‘{%’ and ‘%}’ is treated as print statements that output (‘print’) that literal text. Literal text in the print statements can interpolate values of embedded LUA expressions. Such expressions should be surrounded by ‘{{’ and ‘}}’. Text of the launcher is considered to be one complete LUA program (LUA template) that is assembled from top to bottom of the launcher text from (1) chunks of embedded LUA code and (2) print statements located between chunks of embedded code. Once such LUA program is assembled, it is passed to LUA interpreter for execution to generate resulting launcher text. Along with generating launcher text, such LUA program can also create or change global variables which will stay in LUA interpreter memory after template execution is completed. Those global variables can impact LUA template execution in other launchers.

Example of one-line template:

{% for number = 0, 4, 1 do %}number={{number..'\n'}}{%  end %}

will generate launcher text:

number=0
number=1
number=2
number=3
number=4

Example of one-line template:

{% for number = 0, 4, 1 do if number < 3 then %}number={{number..'\n'}}{% end end %}

will generate launcher text:

number=0
number=1
number=2

4.298. IDH_MAIN_WINDOW_POPUPMENU_ENABLE_X10_TYPING_DELAYS

If enabled, all typing delays are set not in milliseconds units but in 10 milliseconds units.

4.299. IDH_MAIN_WINDOW_POPUPMENU_ENABLE_PYT_PARSING_BEFORE_PARAMETER_SUBSTITUTION

By default, this setting is disabled and proxy parameters are substituted into the launcher text first, before PYTHON templates are executed. That will allow to set initial values for PYTHON variables directly in the code of PYTHON templates. Then PYTHON templates will be executed using initial values supplied by substituted parameters.

If this setting is enabled, PYTHON templates will be executed first. That will allow to use PYTHON variables to index substituted (CSV/JSON/YAML) parameters before actual parameter substitution.

4.300. IDH_MAIN_WINDOW_POPUPMENU_ENABLE_PYT_TEMPLATING_ENGINE_PARSER

If enabled, as part of launcher execution launcher text before being executed will be passed through PYTHON templating engine. That allows to programatically change/generate launcher text under control of PYTHON code that is embedded into original text of the launcher. PYTHON embedded code in different launchers can share global PYTHON variables that are accumulated/stored in the memory of PYTHON interpreter.

Proxy32 has built-in PYTHON interpreter that is keeping global variables in its memory as long as Proxy32 is running. PYTHON interpreter is initialized on Proxy32 start and can be re-initialized when requested by user. Execution of PYTHON-SCRIPT launcher and/or execution of PYTHON templates is done via built-in PYTHON interpreter. All global PYTHON variables created/modified as result of such executions will accumulate and stay in interpreter memory until Proxy32 will exit or until interpreter is explicitely reset on user’s request.

Text of most of the launchers (for example, COMMAND launchers) can contain embedded PYTHON code. The whole text of the launcher with embedded segments of PYTHON code is called ‘PYTHON template’. In the text of the COMMAND launcher embedded segments of PYTHON code may be present as pair of delimiters ‘{!’ and ‘!}’ or ‘{#’ and ‘#}’ surrounding embedded PYTHON code. Embedded PYTHON code in templates is used to programatically change the text of the launcher before the execution of such launcher. As global variables stay in interpreter memory, execution of one launcher can impact execution of another launcher via global PYTHON variables created/accessed in PYTHON code embedded in PYTHON templates or present in the text of PYTHON-SCRIPT launcher.

{! embedded PYTHON executable code (this is stripped out of launcher text) !}
{# embedded PYTHON variable (its value is inserted as string into launcher text) #}

For the purposes of PYTHON template execution the whole text of the launcher (literal text with all embedded PYTHON segments) is converted into one PYTHON program. Such PYTHON program is passed for execution to PYTHON interpreter and in the process of its execution it ‘prints’ by appending text to the resulting text of the launcher. Text between ‘{!’ and ‘!}’ delimiters is interpreted as PYTHON executable code and it cannot print (it does not appear in the resulting text of the launcher). Such code can do everything that PYTHON can do, for example, loops and conditional execution, read and write files, create new global variables and change their values. Anything outside of ‘{!’ and ‘!}’ delimiters is literal text. For purposes of PYTHON template execution, such literal text is replaced by PYTHON print statement that prints that literal text. ‘Printing’ in this context means appending text to the resulting text of the launcher. If such literal text contains embedded ‘{# PYTHON expression #}’ string, PYTHON expression is evaluated to string and that string is inserted into resulting text of the launcher in place of ‘{# PYTHON expression #}’ string.

Summary: Text of the launcher contains embedded PYTHON code surrounded by ‘{!’ and ‘!}’. Literal text outside of ‘{!’ and ‘!}’ is treated as print statements that output (‘print’) that literal text. Literal text in the print statements can interpolate values of embedded PYTHON expressions. Such expressions should be surrounded by ‘{#’ and ‘#}’. Text of the launcher is considered to be one complete PYTHON program (PYTHON template) that is assembled from top to bottom of the launcher text from (1) chunks of embedded PYTHON code and (2) print statements located between chunks of embedded code. Once such PYTHON program is assembled, it is passed to PYTHON interpreter for execution to generate resulting launcher text. Along with generating launcher text, such PYTHON program can also create or change global variables which will stay in PYTHON interpreter memory after template execution is completed. Those global variables can impact PYTHON template execution in other launchers.

Note: to allow to write PYTHON embedded code in one line, “<CRLF>” that is encountered between ‘{!’ and ‘!}’ will be converted to ‘\r\n’.

Example of multi-line template:

{!
for number in range(0, 4, 1):
           !}number={#str(number)+'\n'#}{!
!}

will generate launcher text:

number=0
number=1
number=2
number=3

Example of the same template as one-line template:

{!<CRLF>for number in range(0, 4, 1):<CRLF>           !}number={#str(number)+'\n'#}{!<CRLF>!}

will generate launcher text:

number=0
number=1
number=2
number=3

4.301. IDH_MAIN_WINDOW_POPUPMENU_MOVE_TO_FIRST_LINE_FROM_SELECTED_LINE_IN_SCRIPT_EDITOR

Move to first line from selected line in SCRIPT editor

4.302. IDH_MAIN_WINDOW_POPUPMENU_MOVE_TO_PREV_LINE_FROM_SELECTED_LINE_IN_SCRIPT_EDITOR

Move to previous line from selected line in SCRIPT editor

4.303. IDH_MAIN_WINDOW_POPUPMENU_MOVE_TO_NEXT_LINE_FROM_SELECTED_LINE_IN_SCRIPT_EDITOR

Move to next line from selected line in SCRIPT editor

4.304. IDH_MAIN_WINDOW_POPUPMENU_EXECUTE_COMMAND_FROM_SELECTED_LINE_IN_SCRIPT_EDITOR_WITH_WRAPPER_DISABLED

If only one SCRIPT editor window is non-minimized in current workspace and if there is a text selection in SCRIPT editor window then this button will choose the text line (CSV row) on which selection is starting, otherwise, it will choose text line (CSV row) that contains text cursor (caret).

If SCRIPT file name does not end with “.csv” (case-insensitive):

This button executes text line chosen into the ACTIVE window in the same workspace as if this line would be configured in the COMMAND launcher. WRAPPER will be disabled during the execution.

If SCRIPT file name does end with “.csv” (case-insensitive):

This button uses CSV row chosen (except for the first CSV row of the editor buffer which is considered to be CSV header) to create Proxy32 named parameters and set their values. First CSV row of the editor buffer (column names) defines created parameter names and CSV row chosen defines values for those named parameters. Setting cursor on another CSV row (or starting text selection on another CSV row) and pressing this button will set values of named parameters to fields from the newly chosen CSV row. After named parameter’s values are set/updated from the chosen CSV row, Highlighted Launcher on LauncherTree will NOT be automatically executed.

4.305. IDH_MAIN_WINDOW_POPUPMENU_EXECUTE_COMMAND_FROM_SELECTED_LINE_IN_SCRIPT_EDITOR_WITH_WRAPPER_DISABLED_AND_MOVE_SELECTION_TO_NEXT_LINE

If only one SCRIPT editor window is non-minimized in current workspace and if there is a text selection in SCRIPT editor window then this button will choose the text line (CSV row) on which selection is starting, otherwise, it will choose text line (CSV row) that contains text cursor (caret).

If SCRIPT file name does not end with “.csv” (case-insensitive):

This button executes text line chosen into the ACTIVE window in the same workspace as if this line would be configured in the COMMAND launcher. WRAPPER will be disabled during the execution.

If SCRIPT file name does end with “.csv” (case-insensitive):

This button uses CSV row chosen (except for the first CSV row of the editor buffer which is considered to be CSV header) to create Proxy32 named parameters and set their values. First CSV row of the editor buffer (column names) defines created parameter names and CSV row chosen defines values for those named parameters. Setting cursor on another CSV row (or starting text selection on another CSV row) and pressing this button will set values of named parameters to fields from the newly chosen CSV row. After named parameter’s values are set/updated from the chosen CSV row, Highlighted Launcher on LauncherTree will NOT be automatically executed.

After execution text selection is moving to the next line.

4.306. IDH_MAIN_WINDOW_POPUPMENU_EXECUTE_COMMAND_FROM_SELECTED_LINE_IN_SCRIPT_EDITOR

If only one SCRIPT editor window is non-minimized in current workspace and if there is a text selection in SCRIPT editor window then this button will choose the text line (CSV row) on which selection is starting, otherwise, it will choose text line (CSV row) that contains text cursor (caret).

If SCRIPT file name does not end with “.csv” (case-insensitive):

This button executes text line chosen into the ACTIVE window in the same workspace as if this line would be configured in the COMMAND launcher. If WRAPPER is enabled it will be used during the execution.

If SCRIPT file name does end with “.csv” (case-insensitive):

This button uses CSV row chosen (except for the first CSV row of the editor buffer which is considered to be CSV header) to create Proxy32 named parameters and set their values. First CSV row of the editor buffer (column names) defines created parameter names and CSV row chosen defines values for those named parameters. Setting cursor on another CSV row (or starting text selection on another CSV row) and pressing this button will set values of named parameters to fields from the newly chosen CSV row. After named parameter’s values are set/updated from the chosen CSV row, Highlighted Launcher on LauncherTree is automatically executed.

4.307. IDH_MAIN_WINDOW_POPUPMENU_EXECUTE_COMMAND_FROM_SELECTED_LINE_IN_SCRIPT_EDITOR_AND_MOVE_SELECTION_TO_NEXT_LINE

If only one SCRIPT editor window is non-minimized in current workspace and if there is a text selection in SCRIPT editor window then this button will choose the text line (CSV row) on which selection is starting, otherwise, it will choose text line (CSV row) that contains text cursor (caret).

If SCRIPT file name does not end with “.csv” (case-insensitive):

This button executes text line chosen into the ACTIVE window in the same workspace as if this line would be configured in the COMMAND launcher. If WRAPPER is enabled it will be used during the execution.

If SCRIPT file name does end with “.csv” (case-insensitive):

This button uses CSV row chosen (except for the first CSV row of the editor buffer which is considered to be CSV header) to create Proxy32 named parameters and set their values. First CSV row of the editor buffer (column names) defines created parameter names and CSV row chosen defines values for those named parameters. Setting cursor on another CSV row (or starting text selection on another CSV row) and pressing this button will set values of named parameters to fields from the newly chosen CSV row. After named parameter’s values are set/updated from the chosen CSV row, Highlighted Launcher on LauncherTree is automatically executed.

After execution text selection is moving to the next line.

4.308. IDH_MAIN_WINDOW_POPUPMENU_EXIT_PROXY_APPLICATION

“Exit Proxy32”

4.309. IDH_MAIN_WINDOW_POPUPMENU_INVOKE_PROXY_OPTIONS_DIALOG

“Invokes Proxy32 Options Dialog”

4.310. IDH_MAIN_WINDOW_POPUPMENU_MAXIMIZE_WORKSPACE

Maximize Main Window.

Useful when Main Window does not have a frame.

4.311. IDH_MAIN_WINDOW_POPUPMENU_MINIMIZE_WORKSPACE_CHILDREN

“Minimize all windows in the current Proxy workspace”

4.312. IDH_MAIN_WINDOW_POPUPMENU_TARGET_WINDOW_FOR_DIRECT_TILE_BUTTONS_A

Set Active Window as Target Window for Direct Tile Buttons

4.313. IDH_MAIN_WINDOW_POPUPMENU_TARGET_WINDOW_FOR_DIRECT_TILE_BUTTONS_W

Set Workspace Window as Target Window for Direct Tile Buttons

4.314. IDH_MAIN_WINDOW_POPUPMENU_TARGET_WINDOW_FOR_DIRECT_TILE_BUTTONS_S

Set Selector Window as Target Window for Direct Tile Buttons

4.315. IDH_MAIN_WINDOW_POPUPMENU_TARGET_WINDOW_FOR_DIRECT_TILE_BUTTONS_L

Set LauncherTree Window as Target Window for Direct Tile Buttons

4.316. IDH_MAIN_WINDOW_POPUPMENU_TARGET_WINDOW_FOR_DIRECT_TILE_BUTTONS_SL

Set Selector+LauncherTree Window as Target Window for Direct Tile Buttons

4.317. IDH_MAIN_WINDOW_POPUPMENU_TARGET_WINDOW_FOR_DIRECT_TILE_BUTTONS_SLW

Set Selector+LauncherTree+Workspace Window as Target Window for Direct Tile Buttons

4.318. IDH_MAIN_WINDOW_POPUPMENU_TARGET_WINDOW_FOR_DIRECT_TILE_BUTTONS_G

Set Group (All Windows in the Workspace) as Target Window for Direct Tile Buttons

4.319. IDH_MAIN_WINDOW_POPUPMENU_TARGET_WINDOW_FOR_DIRECT_TILE_BUTTONS_O

Set Other (All Desktop Windows that are not managed by Proxy32) as Target Window for Direct Tile Buttons

4.320. IDH_MAIN_WINDOW_POPUPMENU_MOVE_TO_MONITOR_BIG_1

Move active window to first monitor

With Ctrl:Move LauncherTree window to first monitor

With Shift:Move Selector window to first monitor

With Ctrl+Shift:Move Workspace window to first monitor

With Alt:Move Selector and LauncherTree windows to first monitor

With Ctrl+Alt:Move Selector, LauncherTree and Workspace windows to first monitor

4.321. IDH_MAIN_WINDOW_POPUPMENU_MOVE_TO_MONITOR_BIG_2

Move active window to second monitor

With Ctrl:Move LauncherTree window to second monitor

With Shift:Move Selector window to second monitor

With Ctrl+Shift:Move Workspace window to second monitor

With Alt:Move Selector and LauncherTree windows to second monitor

With Ctrl+Alt:Move Selector, LauncherTree and Workspace windows to second monitor

4.322. IDH_MAIN_WINDOW_POPUPMENU_MOVE_TO_MONITOR_BIG_3

Move active window to third monitor

With Ctrl:Move LauncherTree window to third monitor

With Shift:Move Selector window to third monitor

With Ctrl+Shift:Move Workspace window to third monitor

With Alt:Move Selector and LauncherTree windows to third monitor

With Ctrl+Alt:Move Selector, LauncherTree and Workspace windows to third monitor

4.323. IDH_MAIN_WINDOW_POPUPMENU_MOVE_TO_MONITOR_BIG_4

Move active window to fourth monitor

With Ctrl:Move LauncherTree window to fourth monitor

With Shift:Move Selector window to fourth monitor

With Ctrl+Shift:Move Workspace window to fourth monitor

With Alt:Move Selector and LauncherTree windows to fourth monitor

With Ctrl+Alt:Move Selector, LauncherTree and Workspace windows to fourth monitor

4.324. IDH_MAIN_WINDOW_POPUPMENU_NORMALIZE

“Normalize All non-minimized windows in the current Proxy workspace”

4.325. IDH_MAIN_WINDOW_POPUPMENU_PASTE_MOUSE_CAPTURED_COORDINATES

This button only operates on the currently selected (highlighted) COMMAND, SCRIPT, AHK-SCRIPT or SUBTREE launcher.

4.325.1. Deleting all mouse positions:

Delete all mousepositions stored in currently selected COMMAND, SCRIPT, AHK-SCRIPT or SUBTREE launcher.

4.326. IDH_MAIN_WINDOW_POPUPMENU_REINITIALIZE_LUA_GLOBAL_STATE

Proxy32 has built-in LUA interpreter that is keeping global variables in its memory as long as Proxy32 is running. LUA interpreter is initialized on Proxy32 start and can be re-initialized when requested by user. Execution of LUA-SCRIPT launcher and/or execution of LUA templates is done via built-in LUA interpreter. All global LUA variables created/modified as result of such executions will accumulate and stay in interpreter memory until Proxy32 will exit or until interpreter is explicitely reset on user’s request.

Reinitializing LUA Global state will remove all those global variables from LUA memory. All history (global variables set by all LUA templates or via LUA-SCRIPT) will be lost.

4.327. IDH_MAIN_WINDOW_POPUPMENU_REINITIALIZE_PYT_GLOBAL_STATE

Proxy32 has built-in PYTHON interpreter that is keeping global variables in its memory as long as Proxy32 is running. PYTHON interpreter is initialized on Proxy32 start and can be re-initialized when requested by user. Execution of PYTHON-SCRIPT launcher and/or execution of PYTHON templates is done via built-in PYTHON interpreter. All global PYTHON variables created/modified as result of such executions will accumulate and stay in interpreter memory until Proxy32 will exit or until interpreter is explicitely reset on user’s request.

Reinitializing PYTHON Global state will remove all those global variables from PYTHON memory. All history (global variables set by all PYTHON templates or via PYTHON-SCRIPT) will be lost.

4.328. IDH_MAIN_WINDOW_POPUPMENU_RELEASE_ALL_WINDOWS_FROM_LIST

“Release All External Application’s Windows (LAUNCH, VIEWER or GRAB) from the drop-down list located to the left of this button. Released applications will not be terminated on exit of Proxy32.”

4.329. IDH_MAIN_WINDOW_POPUPMENU_RELEASE_CURRENT_WINDOW_FROM_LIST

“Release Current External Application’s Window (LAUNCH, VIEWER or GRAB) from the drop-down list located to the left of this button. Released application will not be terminated on exit of Proxy32.”

4.330. IDH_MAIN_WINDOW_POPUPMENU_SEARCH_FOR_MOUSE_CAPTURED_COORDINATES

Highlight COMMAND, SCRIPT, AHK-SCRIPT or SUBTREE launchers that contain captured mouse positions

4.331. IDH_MAIN_WINDOW_POPUPMENU_SELECT_WORKSPACE_BACKGROUND_BMP_FILE

“Select BMP-file to serve as background of the current workspace”

4.332. IDH_MAIN_WINDOW_POPUPMENU_SELECTOR_WINDOW_SHOW_MENU_BAR_UNDER_TITLE_BAR

“Show Menu Bar under Title Bar in the Selector window”

4.333. IDH_MAIN_WINDOW_POPUPMENU_SET_SHARED_INPUT_MODE_TO_DISABLED_FOR_ALL_NONMINIMIZED_TERMINALS_IN_WORKSPACE

For all non-minimized terminals in current workspace “Shared Input Mode” will be set to “Disabled”

4.334. IDH_MAIN_WINDOW_POPUPMENU_SET_SHARED_INPUT_MODE_TO_SLAVE_FOR_ALL_NONMINIMIZED_TERMINALS_IN_WORKSPACE

For all non-minimized terminals in current workspace “Shared Input Mode” will be set to “Slave”

4.335. IDH_MAIN_WINDOW_POPUPMENU_SHOW_HIDE_SELECTOR_AND_LAUNCHERTREE_WINDOWS

“Show/Hide ActiveTerminalSelector and LauncherTree windows at their current position and size (shortcut: DoubleClick on the title of Workspace, ActiveTerminalSelector or LauncherTree windows, or on the background of Workspace window)”

4.336. IDH_MAIN_WINDOW_POPUPMENU_SHOW_MOUSE_CAPTURED_COORDINATES

This button only operates on the currently selected (highlighted) COMMAND, SCRIPT, AHK-SCRIPT or SUBTREE launcher.

4.336.1. Display all mouse positions:

Display (as blue dots with numbers) all mousepositions stored in currently selected COMMAND, SCRIPT, AHK-SCRIPT or SUBTREE launcher. The drawing may quickly disappear as active window may redraw itself on clicking or typing.

4.337. IDH_MAIN_WINDOW_POPUPMENU_START_WINDOW_SELECTION_BY_MOUSE

GRAB external window into workspace in 5 seconds by hovering mouse pointer over grabbed window.

To capture multiple windows in quick succession (without waiting 5 seconds for next capture), left click this toolbar button while Ctrl key is pressed. Toolbar button will become blue. Then press and hold down left mouse button on this blue toolbar button and then, while holding left mouse button down, move the mouse pointer to the point in the external window. While left mouse button is being held down, tooolbar button still stay blue and every click with the right mouse button will capture next external window. Releasing left mouse button will end this capturing mode and toolbar button will become red again.

4.338. IDH_MAIN_WINDOW_POPUPMENU_START_WINDOW_SELECTION_BY_NAME

“GRAB external window into workspace by selecting grabbed window name from the list”

4.339. IDH_MAIN_WINDOW_POPUPMENU_SWITCH_TO_ANOTHER_WINDOW_IN_WORKSPACE

This menu item

shows list of windows in current workspace, shows which of those windows is currently active and allows to switch activity to another window in current workspace.

If you need to switch activity to the window that is residing in another workspace, use drop-down list in Selector Window.

If you need to move window from one workspace to another use Workspace Navigator menu (drag window name and drop it on workspace name)

You can also use Workspace Switch Buttons with Ctrl or Shift key pressed to move active window or all non-minimized windows from current workspace (identified by workspace button that is highlighted by round-edge rectangle) to selected workspace (identified by the clicked workspace button).

4.340. IDH_MAIN_WINDOW_POPUPMENU_SWITCH_TO_WS0

“Switch to the Workspace 0”

4.341. IDH_MAIN_WINDOW_POPUPMENU_SWITCH_TO_WS1

“Switch to the Workspace 1”

4.342. IDH_MAIN_WINDOW_POPUPMENU_SWITCH_TO_WS2

“Switch to the Workspace 2”

4.343. IDH_MAIN_WINDOW_POPUPMENU_SWITCH_TO_WS3

“Switch to the Workspace 3”

4.344. IDH_MAIN_WINDOW_POPUPMENU_SWITCH_TO_WS4

“Switch to the Workspace 4”

4.345. IDH_MAIN_WINDOW_POPUPMENU_SWITCH_TO_WS5

“Switch to the Workspace 5”

4.346. IDH_MAIN_WINDOW_POPUPMENU_TILE_IN_ONE_HALF_BIG_1

Tile active window as left half of its monitor

With Ctrl: Tile LauncherTree window as left half of its monitor

With Shift: Tile Selector window as left half of its monitor

With Ctrl+Shift: Tile Workspace window as left half of its monitor

With Alt: Tile Selector and LauncherTree windows as left half of its monitor

With Ctrl+Alt: Tile Selector, LauncherTree and Workspace windows as left half of its monitor Selector on the top, LauncherTree on the left, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

With Ctrl+Alt+Shift: Tile Selector, LauncherTree and Workspace windows as left half of its monitor Selector on the bottom, LauncherTree on the right, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

This is “Direct Tile” button that not only tiles selected window but also stores in memory the Last Tile Slot (full/half/quadrant of windows’s monitor) to which that selected window was tiled.

4.347. IDH_MAIN_WINDOW_POPUPMENU_TILE_IN_ONE_HALF_BIG_2

Tile active window as right half of its monitor

With Ctrl: Tile LauncherTree window as right half of its monitor

With Shift: Tile Selector window as right half of its monitor

With Ctrl+Shift: Tile Workspace window as right half of its monitor

With Alt: Tile Selector and LauncherTree windows as right half of its monitor

With Ctrl+Alt: Tile Selector, LauncherTree and Workspace windows as right half of its monitor Selector on the top, LauncherTree on the left, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

With Ctrl+Alt+Shift: Tile Selector, LauncherTree and Workspace windows as right half of its monitor Selector on the bottom, LauncherTree on the right, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

This is “Direct Tile” button that not only tiles selected window but also stores in memory the Last Tile Slot (full/half/quadrant of windows’s monitor) to which that selected window was tiled.

4.348. IDH_MAIN_WINDOW_POPUPMENU_TILE_IN_ONE_HALF_BIG_3

Tile active window as top half of its monitor

With Ctrl: Tile LauncherTree window as top half of its monitor

With Shift: Tile Selector window as top half of its monitor

With Ctrl+Shift: Tile Workspace window as top half of its monitor

With Alt: Tile Selector and LauncherTree windows as top half of its monitor

With Ctrl+Alt: Tile Selector, LauncherTree and Workspace windows as top half of its monitor Selector on the top, LauncherTree on the left, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

With Ctrl+Alt+Shift: Tile Selector, LauncherTree and Workspace windows as top half of its monitor Selector on the bottom, LauncherTree on the right, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

This is “Direct Tile” button that not only tiles selected window but also stores in memory the Last Tile Slot (full/half/quadrant of windows’s monitor) to which that selected window was tiled.

4.349. IDH_MAIN_WINDOW_POPUPMENU_TILE_IN_ONE_HALF_BIG_4

Tile active window as bottom half of its monitor

With Ctrl: Tile LauncherTree window as bottom half of its monitor

With Shift: Tile Selector window as bottom half of its monitor

With Ctrl+Shift: Tile Workspace window as bottom half of its monitor

With Alt: Tile Selector and LauncherTree windows as bottom half of its monitor

With Ctrl+Alt: Tile Selector, LauncherTree and Workspace windows as bottom half of its monitor Selector on the top, LauncherTree on the left, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

With Ctrl+Alt+Shift: Tile Selector, LauncherTree and Workspace windows as bottom half of its monitor Selector on the bottom, LauncherTree on the right, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

This is “Direct Tile” button that not only tiles selected window but also stores in memory the Last Tile Slot (full/half/quadrant of windows’s monitor) to which that selected window was tiled.

4.350. IDH_MAIN_WINDOW_POPUPMENU_TILE_IN_ONE_QUARTER_BIG_1

Tile active window as left top quarter of its monitor

With Ctrl: Tile LauncherTree window as left top quarter of its monitor

With Shift: Tile Selector window as left top quarter of its monitor

With Ctrl+Shift: Tile Workspace window as left top quarter of its monitor

With Alt: Tile Selector and LauncherTree windows as left top quarter of its monitor

With Ctrl+Alt: Tile Selector, LauncherTree and Workspace windows as left top quarter of its monitor Selector on the top, LauncherTree on the left, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

With Ctrl+Alt+Shift: Tile Selector, LauncherTree and Workspace windows as left top quarter of its monitor Selector on the bottom, LauncherTree on the right, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

This is “Direct Tile” button that not only tiles selected window but also stores in memory the Last Tile Slot (full/half/quadrant of windows’s monitor) to which that selected window was tiled.

4.351. IDH_MAIN_WINDOW_POPUPMENU_TILE_IN_ONE_QUARTER_BIG_2

Tile active window as right top quarter of its monitor

With Ctrl: Tile LauncherTree window as right top quarter of its monitor

With Shift: Tile Selector window as right top quarter of its monitor

With Ctrl+Shift: Tile Workspace window as right top quarter of its monitor

With Alt: Tile Selector and LauncherTree windows as right top quarter of its monitor

With Ctrl+Alt: Tile Selector, LauncherTree and Workspace windows as right top quarter of its monitor Selector on the top, LauncherTree on the left, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

With Ctrl+Alt+Shift: Tile Selector, LauncherTree and Workspace windows as right top quarter of its monitor Selector on the bottom, LauncherTree on the right, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

This is “Direct Tile” button that not only tiles selected window but also stores in memory the Last Tile Slot (full/half/quadrant of windows’s monitor) to which that selected window was tiled.

4.352. IDH_MAIN_WINDOW_POPUPMENU_TILE_IN_ONE_QUARTER_BIG_3

Tile active window as right bottom quarter of its monitor

With Ctrl: Tile LauncherTree window as right bottom quarter of its monitor

With Shift: Tile Selector window as right bottom quarter of its monitor

With Ctrl+Shift: Tile Workspace window as right bottom quarter of its monitor

With Alt: Tile Selector and LauncherTree windows as right bottom quarter of its monitor

With Ctrl+Alt: Tile Selector, LauncherTree and Workspace windows as right bottom quarter of its monitor Selector on the top, LauncherTree on the left, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

With Ctrl+Alt+Shift: Tile Selector, LauncherTree and Workspace windows as right bottom quarter of its monitor Selector on the bottom, LauncherTree on the right, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

This is “Direct Tile” button that not only tiles selected window but also stores in memory the Last Tile Slot (full/half/quadrant of windows’s monitor) to which that selected window was tiled.

4.353. IDH_MAIN_WINDOW_POPUPMENU_TILE_IN_ONE_QUARTER_BIG_4

Tile active window as left bottom quarter of its monitor

With Ctrl: Tile LauncherTree window as left bottom quarter of its monitor

With Shift: Tile Selector window as left bottom quarter of its monitor

With Ctrl+Shift: Tile Workspace window as left bottom quarter of its monitor

With Alt: Tile Selector and LauncherTree windows as left bottom quarter of its monitor

With Ctrl+Alt: Tile Selector, LauncherTree and Workspace windows as left bottom quarter of its monitor Selector on the top, LauncherTree on the left, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

With Ctrl+Alt+Shift: Tile Selector, LauncherTree and Workspace windows as left bottom quarter of its monitor Selector on the bottom, LauncherTree on the right, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

This is “Direct Tile” button that not only tiles selected window but also stores in memory the Last Tile Slot (full/half/quadrant of windows’s monitor) to which that selected window was tiled.

4.354. IDH_MAIN_WINDOW_POPUPMENU_TILE_IN_ONE_ROW

“Tile in one row all non-minimized windows in the current Workspace”

4.355. IDH_MAIN_WINDOW_POPUPMENU_TILE_SET_GRID_SIZE

Set Tile Grid size (anything from 1x1 to 6x6). That setting is stored till Prox32 restart and will be used by next two buttons. Default on the start is 4x4.

4.356. IDH_MAIN_WINDOW_POPUPMENU_TILE_SET_LEFT_TOP_POSITION_ON_THE_GRID

Tile active window in selected slot of Tile Grid.

With Ctrl: Tile LauncherTree window in selected slot of Tile Grid.

With Shift: Tile Selector window in selected slot of Tile Grid.

With Ctrl+Shift: Tile Workspace window in selected slot of Tile Grid.

With Win: Tile Selector and LauncherTree windows in selected slot of Tile Grid.

With Ctrl+Win: Tile Selector, LauncherTree and Workspace windows in selected slot of Tile Grid. Selector on the top, LauncherTree on the left, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

With Ctrl+Win+Shift: Tile Selector, LauncherTree and Workspace windows in selected slot of Tile Grid. Selector on the bottom, LauncherTree on the right, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

When group of windows is involved (Selector and LauncherTree or Selector, LauncherTree and Workspace), Selector Window is an anchor that defines the resulting location of the group.

4.357. IDH_MAIN_WINDOW_POPUPMENU_TILE_SET_RIGHT_BOTTOM_POSITION_ON_THE_GRID

Extend Tile Rectangle of active window to include selected slot of Tile Grid.

With Ctrl: Extend Tile Rectangle of LauncherTree window to include selected slot of Tile Grid.

With Shift: Extend Tile Rectangle of Selector window to include selected slot of Tile Grid.

With Ctrl+Shift: Extend Tile Rectangle of Workspace window to include selected slot of Tile Grid.

With Win: Extend Tile Rectangle of Selector and LauncherTree windows to include selected slot of Tile Grid.

With Ctrl+Win: Extend Tile Rectangle of Selector, LauncherTree and Workspace windows to include selected slot of Tile Grid. Selector on the top, LauncherTree on the left, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

With Ctrl+Win+Shift: Tile Selector, LauncherTree and Workspace windows to include selected slot of Tile Grid. Selector on the bottom, LauncherTree on the right, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

When group of windows is involved (Selector and LauncherTree or Selector, LauncherTree and Workspace), Selector Window is an anchor that defines the resulting location of the group.

4.358. IDH_MAIN_WINDOW_POPUPMENU_TILE_TO_FULL_MONITOR_BIG

Tile active window to full monitor

With Ctrl: Tile LauncherTree window to full monitor

With Shift: Tile Selector window to full monitor

With Ctrl+Shift: Tile Workspace window to full monitor

With Alt: Tile Selector and LauncherTree windows to full monitor

With Ctrl+Alt: Tile Selector, LauncherTree and Workspace windows to full monitor Selector on the top, LauncherTree on the left, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

With Ctrl+Alt+Shift: Tile Selector, LauncherTree and Workspace windows to full monitor Selector on the bottom, LauncherTree on the right, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

This is “Direct Tile” button that not only tiles selected window but also stores in memory the Last Tile Slot (full/half/quadrant of windows’s monitor) to which that selected window was tiled.

4.359. IDH_MAIN_WINDOW_POPUPMENU_TILE_TO_HALF_OF_SLOT_BIG

Tile active window as Half of Last Tile Slot

With Ctrl: Tile LauncherTree window as Half of Last Tile Slot

With Shift: Tile Selector window as Half of Last Tile Slot

With Ctrl+Shift: Tile Workspace window as Half of Last Tile Slot

With Alt: Tile Selector and LauncherTree windows as Half of Last Tile Slot

With Ctrl+Alt: Tile Selector, LauncherTree and Workspace windows as Half of Last Tile Slot Selector on the top, LauncherTree on the left, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

With Ctrl+Alt+Shift: Tile Selector, LauncherTree and Workspace windows as Half of Last Tile Slot Selector on the bottom, LauncherTree on the right, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

This button “1/2” can fit selected window(s) to the Half of the “Last Tile Slot” (that is set by last “Direct Tile” operation). Pressing this button “1/2” more than one time will place selected window(s) into 4 different half parts of “Last Tile Slot”.

4.360. IDH_MAIN_WINDOW_POPUPMENU_TILE_TO_QUADRANT_OF_SLOT_BIG

Tile active window as Quadrant of Last Tile Slot

With Ctrl: Tile LauncherTree window as Quadrant of Last Tile Slot

With Shift: Tile Selector window as Quadrant of Last Tile Slot

With Ctrl+Shift: Tile Workspace window as Quadrant of Last Tile Slot

With Alt: Tile Selector and LauncherTree windows as Quadrant of Last Tile Slot

With Ctrl+Alt: Tile Selector, LauncherTree and Workspace windows as Quadrant of Last Tile Slot Selector on the top, LauncherTree on the left, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

With Ctrl+Alt+Shift: Tile Selector, LauncherTree and Workspace windows as Quadrant of Last Tile Slot Selector on the bottom, LauncherTree on the right, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

This button “1/4” can fit selected window(s) to the Quadrant of the “Last Tile Slot” (that is set by last “Direct Tile” operation). Pressing this button “1/4” more than one time will place selected window(s) into 4 different Quadrant parts of “Last Tile Slot”.

4.361. IDH_MAIN_WINDOW_POPUPMENU_SET_NESTED_TILE_RECT_AS_LAST_MANUALLY_SELECTED_TILE_SLOT_BIG

Set “Last Tile Slot” (that is originally set by last “Direct Tile” operation) equal to recently used “Nested Tile Slot”. “Nested Tile Slot” is set by last use of “1/2”, “1/3” or “1/4” buttons. That will allow to use “1/2”, “1/3” or “1/4” buttons again on smaller “Last Tile Slot” (compare to “Last Tile Slot” that is originally set by last “Direct Tile” operation).

4.362. IDH_MAIN_WINDOW_POPUPMENU_TILE_TO_THIRD_OF_SLOT_BIG

Tile active window as Third of Last Tile Slot

With Ctrl: Tile LauncherTree window as Third of Last Tile Slot

With Shift: Tile Selector window as Third of Last Tile Slot

With Ctrl+Shift: Tile Workspace window as Third of Last Tile Slot

With Alt: Tile Selector and LauncherTree windows as Third of Last Tile Slot

With Ctrl+Alt: Tile Selector, LauncherTree and Workspace windows as Third of Last Tile Slot Selector on the top, LauncherTree on the left, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

With Ctrl+Alt+Shift: Tile Selector, LauncherTree and Workspace windows as Third of Last Tile Slot Selector on the bottom, LauncherTree on the right, on repeat LauncherTree width cycles from 1/6 to 1/2 of the tile slot

This button “1/3” can fit selected window(s) to the Third of the “Last Tile Slot” (that is set by last “Direct Tile” operation). Pressing this button “1/3” more than one time will place selected window(s) into 6 different Third parts of “Last Tile Slot”.

4.363. IDH_MAIN_WINDOW_POPUPMENU_TILE_WITH_CURRENT_NUMBERS_OF_ROWS

Tile with currently set number of rows

4.364. IDH_MAIN_WINDOW_POPUPMENU_TOGGLE_MAXIMIZE_WORKSPACE

Maximize Main Window.

4.365. IDH_MAIN_WINDOW_POPUPMENU_TOGGLE_MINIMIZE_WORKSPACE

Toggle Minimize Main Window.

Useful when Main Window does not have a frame.

4.366. IDH_MAIN_WINDOW_POPUPMENU_UNMINIMIZE_WORKSPACE_CHILDREN

“Un-Minimize all windows in the current Proxy workspace”

4.367. IDH_MAIN_WINDOW_POPUPMENU_WORKSPACE_WINDOW_SHOW_MENU_BAR_UNDER_TITLE_BAR

“Show Menu Bar under Title Bar in the Workspace window”

4.368. IDH_MAIN_WINDOW_POPUPMENU_WORKSPACE_WINDOWS_BACKGROUND_IS_BITMAP_INSTEAD_OF_PLAIN_COLOR

“WorkspaceWindowsBackgroundIsBitmapInsteadOfPlainColor”

4.369. IDH_MAIN_WINDOW_POPUPSUBMENU_ARRANGE_WINDOWS_IN_THE_CURRENT_WORKSPACE

test

4.370. IDH_MAIN_WINDOW_POPUPSUBMENU_AUTOMATIC_WINDOW_POSITIONING

test

4.371. IDH_MAIN_WINDOW_POPUPSUBMENU_EDIT_HOTKEY_AND_MOUSE_ACTIONS_DEFINITIONS

test

4.372. IDH_MAIN_WINDOW_POPUPSUBMENU_PUT_EXTERNAL_WINDOWS_INTO_WORKSPACE

test

4.373. IDH_MAIN_WINDOW_POPUPSUBMENU_SET_BACKGROUND_OF_THE_CURRENT_WORKSPACE

test

4.374. IDH_MAIN_WINDOW_POPUPSUBMENU_SHOW_HIDE_DOCK_FLOATING_WINDOWS

test

4.375. IDH_MAIN_WINDOW_POPUPSUBMENU_SWITCH_WORKSPACE

test

4.376. IDH_OPTIONS_PAGE_DEBUG_SETTINGS

Options Dialog, “Debug” page - used for Experimental/Test/Debug purposes

Do not mess with those Debug settings, they all should be unchecked for normal operation of the program!!

4.377. IDH_OPTIONS_PAGE_EXIT_SHUTDOWN

test

4.378. IDH_OPTIONS_PAGE_FONTS_AND_COLORS

Options Dialog, “Fonts and Colors” page

“Font”

“Allows user to choose Font used by named component. Selection is immediately applied.”

“Colors”

“Allows user to choose Background and then Foreground Colors used by named component. Selection is immediately applied.”

4.379. IDH_OPTIONS_PAGE_GRAB

test

4.380. IDH_OPTIONS_PAGE_HEALTH_MONITOR

test

4.381. IDH_OPTIONS_PAGE_MINIMIZED_WINDOW

“This page allows to configure appearance and behavior of minimized windows in the workspace.”

4.382. IDH_OPTIONS_PAGE_PASSWORD_SECURITY

test

4.383. IDH_OPTIONS_PAGE_TLS_SERVER_DISCONNECT_POLICIES

Options dialog page that allows to manage TLS server disconnect policies

4.384. IDH_OPTIONS_PAGE_TLS_SERVER_MANAGE_PFX_STORE

Options dialog page that allows to manage PFX certificate store

4.385. IDH_OPTIONS_PAGE_TLS_SERVER_RSA_CERTIFICATE_AUTOLOAD_ON_START

Options dialog page that allows to select how TLS server certificate will be loaded on start

4.386. IDH_OPTIONS_PAGE_TLS_SERVER_RSA_CERTIFICATE_CREATE_ROOT

Options dialog page that allows to select how TLS server root certificate will be created

4.387. IDH_OPTIONS_PAGE_TLS_SERVER_RSA_CERTIFICATE_CREATE_TEMP

Options dialog page that allows to select how TLS server temporary certificate will be created

4.388. IDH_OPTIONS_PAGE_TLS_SERVER_RSA_CERTIFICATE_LOAD

Options dialog page that allows to select how TLS server certificate will be loaded

4.389. IDH_OPTIONS_PAGE_TLS_SERVER_RSA_CERTIFICATE_MAIN_PAGE

Options dialog page that allows to select how TLS server certificate will be configured

4.390. IDH_OPTIONS_PAGE_TLS_SERVER_RSA_CERTIFICATE_ROOT_LOAD

Options dialog page that allows to load server root certificate

4.391. IDH_OPTIONS_PAGE_TLS_SERVER_TRUSTED_STORE

Options dialog page that allows to set TLS server trusted store

4.392. IDH_OPTIONS_PAGE_TLS_SET_CIPHERSUITES_FOR_THIS_PC

Options dialog page that allows to set ciphersuites for this PC

4.393. IDH_OPTIONS_PAGE_TLS_SET_PROTOCOL_VERSION

Options dialog page that allows to set SSL/TLS protocol version

4.394. IDH_OPTIONS_PAGE_VISUAL_CLUES

Options dialog page that allows to set visual clues

4.395. IDH_OPTIONS_PAGE_WINDOW_BEHAVIOR

Options Dialog, “Window Behavior” page

“LauncherTreeWindowMovementFollowsWorkspaceWindowMovement”

“When this option is selected, LauncherTree keeps its position relative to workspace window when workspace window is moved/resized.”

“AppBarWindowMovementFollowsWorkspaceWindowMovement”

“When this option is selected, AppBar keeps its position relative to workspace window when workspace window is moved/resized.”

“HideShowTopbarAndTreeOnMinMaxRestoreWorkspace”

“When this option is selected, Minimizing workspace window will automatically hide Proxy LauncherTree and AppBar windows. Maximizing/restoring workspace window will automatically show Proxy LauncherTree and AppBar windows.”

“SmallAppbarWindow”

“When this option is selected, uses Small AppBar window. (AppBar Icons/Font: Large is 32 pixels, Small is 16 pixels)”

“ZoomWindowOnSelectionFromList”

“When this option is selected, Application Window will be maximized inside of the workspace on selection from the list and on creation/grab.”

4.396. IDH_SCRIPTEDITOR_EXECUTE_COMMAND_FROM_SELECTED_LINE_IN_SCRIPT_EDITOR

If there is a text selection in SCRIPT editor window then this button will choose the text line (CSV row) on which selection is starting, otherwise, it will choose text line (CSV row) that contains text cursor (caret).

If SCRIPT file name does not end with “.csv” (case-insensitive):

This button executes text line chosen into the ACTIVE window in the same workspace as if this line would be configured in the COMMAND launcher.

If SCRIPT file name does end with “.csv” (case-insensitive):

This button uses CSV row chosen (except for the first CSV row of the editor buffer which is considered to be CSV header) to create Proxy32 named parameters and set their values. First CSV row of the editor buffer (column names) defines created parameter names and CSV row chosen defines values for those named parameters. Setting cursor on another CSV row (or starting text selection on another CSV row) and pressing this button will set values of named parameters to fields from the newly chosen CSV row. After named parameter’s values are set/updated from the chosen CSV row, Highlighted Launcher on LauncherTree is automatically executed.

4.397. IDH_SCRIPTEDITOR_EXECUTE_COMMAND_FROM_SELECTED_LINE_IN_SCRIPT_EDITOR_AND_MOVE_SELECTION_TO_NEXT_LINE

If there is a text selection in SCRIPT editor window then this button will choose the text line (CSV row) on which selection is starting, otherwise, it will choose text line (CSV row) that contains text cursor (caret).

If SCRIPT file name does not end with “.csv” (case-insensitive):

This button executes text line chosen into the ACTIVE window in the same workspace as if this line would be configured in the COMMAND launcher.

If SCRIPT file name does end with “.csv” (case-insensitive):

This button uses CSV row chosen (except for the first CSV row of the editor buffer which is considered to be CSV header) to create Proxy32 named parameters and set their values. First CSV row of the editor buffer (column names) defines created parameter names and CSV row chosen defines values for those named parameters. Setting cursor on another CSV row (or starting text selection on another CSV row) and pressing this button will set values of named parameters to fields from the newly chosen CSV row. After named parameter’s values are set/updated from the chosen CSV row, Highlighted Launcher on LauncherTree is automatically executed.

After execution text selection is moving to the next line.

4.398. IDH_SCRIPTEDITOR_FILE_EXIT

“Close ScriptEditor window”

4.399. IDH_SCRIPTEDITOR_FILE_NEW

“Create new file”

4.400. IDH_SCRIPTEDITOR_FILE_OPEN

“Open file from disk”

4.401. IDH_SCRIPTEDITOR_FILE_SAVE

“Save file to disk”

4.402. IDH_SCRIPTEDITOR_FILE_SAVEAS

“Save file to disk under given name”

4.403. IDH_SCRIPTEDITOR_INSERT_CHARACTER

Insert new character

4.404. IDH_SCRIPTEDITOR_INSERT_EXISTING_NAMED_PARM

“Insert existing named parameter/password”

4.405. IDH_SCRIPTEDITOR_INSERT_NEW_PARM_PASS_LINE

“Insert new parameter/password/i-line”

4.406. IDH_SCRIPTEDITOR_LOAD_ALL_COMMANDS_FROM_SELECTED_SUBTREE_INTO_EDITOR_WINDOW

Load all COMMANDs from selected (highlighted) SUBTREE into editor window. If no SUBTREE is selected when button is pressed, the whole LauncherTree is processed. Text is loaded into Editor buffer in the memory into cursor position or it is replacing current selection in the buffer. Please, do not forget to save the file to disk before closing editor window or before trying to invoke external viewer.

When Shift key is pressed while clicking on the button, the scan will not expand the tree and will not highlight processed COMMAND launchers.

When Ctrl key is pressed while clicking on the button, the scan will not check nested SUBTREEs.

When Alt key is pressed while clicking on the button, after all commands are loaded all named parameters/passwords with non-empty values will be replaced by their values in the Script Editor window memory buffer.

4.407. IDH_SCRIPTEDITOR_MERGE_SELECTED_LINES_INTO_ONE_LINE_BY_REMOVING_CR_BEFORE_NL

Merge Selected Lines into one line by removing CR before NL

4.408. IDH_SCRIPTEDITOR_OPEN_CURRENT_SCRIPT_FILE_IN_EXTERNAL_VIEWER

“Open current script file in configured external viewer (the same as terminal log viewer).”

4.409. IDH_SCRIPTEDITOR_SET_CURSOR_LINE_FOR_NEXT_MANUAL_EXEC_STEP

If there is a text selection in SCRIPT editor window then this button will choose the text line (CSV row) on which selection is starting, otherwise, it will choose text line (CSV row) that contains text cursor (caret).

If SCRIPT file name does not end with “.csv” (case-insensitive):

Sets the line under cursor as next line for manual execution. Manual execution is when SCRIPT is executed to external window. In such case each double-left-click on NON-CSV SCRIPT launcher will execute next line from the NON-CSV SCRIPT as if this line was text of COMMAND launcher. NON-CSV SCRIPT next line number is global counter shared by all NON-CSV SCRIPT executions. It is single global variable stored in LauncherTree. It can also be set by CtrlDblLeftClick on any NON-CSV SCRIPT launcher.

If SCRIPT file name does end with “.csv” (case-insensitive):

Uses CSV row under cursor (except for the first CSV row of the editor buffer which is considered to be CSV header) to create Proxy32 named parameters and set their values. First CSV row of the editor buffer (column names) defines created parameter names and CSV row under cursor defines parameter values. Setting cursor on another CSV row and pressing this button will set values of named parameters to fields from the CSV row under cursor. Sets the line under cursor as next line for manual execution. Manual execution is when double-left-click on CSV SCRIPT launcher will use next line from the CSV SCRIPT to set values of named parameters. CSV SCRIPT next line number is global counter shared by all CSV SCRIPT executions. It is single global variable stored in LauncherTree. It can also be set by CtrlDblLeftClick on any CSV SCRIPT launcher.

4.410. IDH_SCRIPTEDITOR_SHOW_HIDE_SELECTOR_AND_LAUNCHERTREE_WINDOWS

Show/Hide ActiveTerminalSelector and LauncherTree windows at their current position and size (shortcut: DoubleClick on the title of Workspace, ActiveTerminalSelector or LauncherTree windows, or on the background of Workspace window)

4.411. IDH_SCRIPTEDITOR_SPLIT_SELECTED_LINE_INTO_SEVERAL_LINES_BY_ADDING_CR_BEFORE_NL

Split Selected Line into several lines by adding CR before NL

4.412. IDH_SCRIPTEDITOR_TOGGLE_SCRIPT_LINE_TOOLTIP

Toggle Tooltips for SCRIPT lines

4.413. IDH_SCRIPTEDITOR_VIEW_FONT

“Set Editor font”

4.414. IDH_SCRIPTEDITOR_VIEW_SELECT_BACKGROUND_COLOR

“Set Editor window background color”

4.415. IDH_SCRIPTEDITOR_VIEW_SELECT_TEXT_COLOR

“Set Editor window Foreground color”

4.416. IDH_SWITCH_TO_DEFAULT_DESKTOP

“Switches to Default Windows Desktop (if Proxy32 is running on its own dedicated Windows desktop)”

4.417. IDH_TERMINAL_BUTTON_BOOKMARK_IN_TERMINAL_BUFFER

“Bookmark the first line of the selection in the ‘search results drop-down list’ for future quick navigation through bookmarks and search results (matches) that are accumulated in the ‘search results drop-down list’ located at the bottom right-hand corner of the PROXYTERM window.”

4.418. IDH_TERMINAL_BUTTON_CLEAR_SEARCH_RESULTS_IN_TERMINAL_BUFFER

“Clear the ‘search results drop-down list’ that holds search results (matches) and bookmarks”

4.419. IDH_TERMINAL_BUTTON_CONNECT_DISCONNECT_TERMINAL

Terminal connection status:

  • Green Light is On == Terminal is connected

  • Green Light is Off == Terminal is disconnected.

LeftClick while Green Light is On(DISCONNECT):

Disconnect this PROXYTERM window from the remote host (including stopping any SCRIPT/PLUGIN if such was running in this PROXYTERM window/session).

LeftClick while Green Light is Off(RECONNECT):

Connect this PROXYTERM window to the old remote host (including autostart of related SCRIPT/PLUGIN, if any). Connection info will be taken from the Launcher (TELNET-TERMINAL, SHELL-TERMINAL or COM-PORT-TERMINAL) that was used for last connection of this terminal window.

MiddleClick while Green Light is Off (NEW CONNECTION):

Connect this PROXYTERM window to the new remote host (including autostart of related SCRIPT/PLUGIN, if any). Connection info will be taken from the Launcher (TELNET, SHELL-TERMINAL or COM-PORT) that is currently ‘selected’ on the LauncherTree.

RightClick (SHOW CURRENT CONNECTION INFO):

Show (‘select’ on the LauncherTree) Launcher (TELNET, SHELL-TERMINAL or COM-PORT) from which connection info was (if connected) or will be (on reconnect) taken.

4.420. IDH_TERMINAL_BUTTON_DELETE_SELECTED_SEARCH_RESULT

“Delete the search result (match) or bookmark that is selected in the ‘search results drop-down list’”

4.421. IDH_TERMINAL_BUTTON_NEXT_SEARCH_RESULT

“Go to the next search result (match) or bookmark in the ‘search results drop- down list’”

4.422. IDH_TERMINAL_BUTTON_PREVIOUS_SEARCH_RESULT

“Go to the previous search result (match) or bookmark in the ‘search results drop-down list’”

4.423. IDH_TERMINAL_BUTTON_SEARCH_IN_TERMINAL_BUFFER

“Search in the whole terminal buffer or (if there is multiline selection present) in multiline selection. What search is used (whole buffer or multiline selection) you can find out from the title of the search dialog. Search pattern uses PERL Regular Expressions syntax and can be case-sensitive or case- insensitive. It goes line by line through your terminal buffer as you see it on the screen. It does not un-wrap lines that are wrapped by the right border of PROXYTERM window. To combine different patterns by OR use pipe symbol ‘|’. Bookmarked lines, search matches, matching lines and their positions in the PROXYTERM scrollbuffer are stored in the ‘search results drop-down list’ located at the bottom right-hand corner of the PROXYTERM window. To populate this list use ‘search’ (‘S’) or ‘bookmark’ (‘B’) buttons located to the left of this list (or corresponding commands in the PROXYTERM Edit WindowMenu). To automatically jump (scroll to the match/bookmark and highlight it) directly to the match/bookmark just select desired entry in this list. To cycle through matches/bookmarks in this list use ‘next’ (‘N’) or ‘previous’ (‘P’) buttons located to the left of this list (or corresponding commands in the PROXYTERM Edit WindowMenu). Number of matches/bookmarks in the list is programmatically limited to 1000 for the performance reasons. If you have already accumulated 1000 matches/bookmarks in the list as a result of one or many sequential searches or bookmarking activity, you will get a warning and you will have to make some free space in the list by deleting selected matches or clearing content of the whole list. To do this use ‘delete selected’ (‘D’) or ‘clear the whole list’ (‘C’) buttons located to the left of this list (or corresponding commands in the PROXYTERM Edit WindowMenu).”

4.424. IDH_TERMINAL_BUTTON_SHOW_TERMINAL_LOG_FILE

“Show Terminal Log file in the configured text editor”*

4.425. IDH_TERMINAL_BUTTON_STOP_SCRIPT_EXECUTION

“Press this button to stop SCRIPT/PLUGIN execution”

4.426. IDH_TERMINAL_CHAR_SPACE_DECREASE

“Every time you select this option the width of the char in the PROXYTERM working area will be decreasing by one point. This may help to sqeeze more text lines into the same PROXYTERM working area. If the char width is decreased too much, the text may become unreadable - use next menu item to restore default char width.”

4.427. IDH_TERMINAL_CHAR_SPACE_RESTORE

“Restore default width of the char in the PROXYTERM working area (set it equal to the font char width).”

4.428. IDH_TERMINAL_CLIPBOARD_VIEWER_WINDOW

test

4.429. IDH_TERMINAL_CONTROL_ADD_HEXDUMP_TO_LOG_FILE

“Add hex dump to terminal log file”

4.430. IDH_TERMINAL_CONTROL_ADD_TIMESTAMPS_TO_TERMINAL_LOG_FILE

“TerminalAddTimeStampsToTerminalLogFile”

4.431. IDH_TERMINAL_CONTROL_ARROWS_ARE_INITIALLY_IN_APPLICATION_MODE

“Terminal_ArrowsAreInitiallyInApplicationMode”

4.432. IDH_TERMINAL_CONTROL_BREAK

“Send telnet break command to the remote host”

4.433. IDH_TERMINAL_CONTROL_CONNECT_LISTENER_COMPORT_FROM_SELECTED_TREENODE

“Connect listener COM-PORT using info from selected TreeNode”

4.434. IDH_TERMINAL_CONTROL_DISABLE_ARROWS_APPLICATION_MODE

“Terminal_Disable_ArrowsApplicationMode”

4.435. IDH_TERMINAL_CONTROL_DISABLE_CURSOR_POSITION_REPORTING

“Terminal_Disable_Cursor_Position_Reporting”

4.436. IDH_TERMINAL_CONTROL_DISABLE_NUMPAD_APPLICATION_MODE

“Terminal_Disable_NumpadApplicationMode”

4.437. IDH_TERMINAL_CONTROL_Disable_Paste_by_Keyboard

“Disable_Paste_by_Keyboard”

4.438. IDH_TERMINAL_CONTROL_Disable_Paste_by_Mouse

“Disable_Paste_by_Mouse”

4.439. IDH_TERMINAL_CONTROL_DISABLE_REMOTE_CONTROLLED_LOG_FILE_NAME_CHANGING

“Terminal_Disable_Remote_Controlled_Log_File_Name_Changing”

4.440. IDH_TERMINAL_CONTROL_DISABLE_REMOTE_CONTROLLED_WINDOW_TITLE_CHANGING

“Terminal_Disable_Remote_Controlled_Window_Title_Changing”

4.441. IDH_TERMINAL_CONTROL_DISCONNECT

“Disconnect this PROXYTERM window from the remote host (including stopping any SCRIPT/PLUGIN if such was running in this PROXYTERM window/session)”

4.442. IDH_TERMINAL_CONTROL_DISCONNECT_ALL_CLIENTS

“Disconnect all TELNET clients connected to the TSS telnet server of this PROXYTERM window”

4.443. IDH_TERMINAL_CONTROL_DISCONNECT_LISTENER_COMPORT

“Disonnect listener COM-PORT”

4.444. IDH_TERMINAL_CONTROL_DISCONNECT_SELECTED_CLIENT

“Disconnect selected (in the clients drop-down list) TELNET client connected to the TSS telnet server of this PROXYTERM window”

4.445. IDH_TERMINAL_CONTROL_DO_NOT_SEND_NAWS

“NAWS - Negotiation about Window Size - is the TELNET command sequence that is sent by terminal to remote host to notify remote host about character width and height of the connected terminal. This guarantees correct work of the terminal-dependent programs on the remote host. UNIX/LINUX/CYGWIN shell and vi will receive NAWS via TELNET daemon/server and X/Y dimensions on tty terminal interface will be reset to correct values to ensure correct functioning of terminal-aware programs. Proxy Terminal will send NAWS to telnet server on connect and when user changes size of proxy terminal window. Proxy Terminal will also send NAWS to SHELL on connect and when user changes size of proxy terminal window ONLY if start command line of SHELL contains substring ‘proxycygterm’. ‘proxycygterm.exe’ is capable to decode NAWS that it receives over STDIN and translate them into dimentions of tty interface on which it is running CYGWIN shell or other terminal-dependent CYGWIN program. Thre is no point in sending NAWS to Windows ‘cmd’ program that is running as SHELL. ‘cmd’ will not understand NAWS, so Proxy terminal does not send it. Default behavior is as described above, but there are some situations when you may want to completely disable NAWS for particular terminal. For example, if you are sharing your terminal window via TSS with other telnet terminal, both terminals will send NAWS to remote host on window size changes. This may confuse the remote host and terminal-dependent application (such as vi) will dispaly correctly only on one terminal (the one that has sent NAWS last). To let the other (non-proxy) terminal to control remote host tty size, you may want to disable NAWS completely in the proxy terminal. This way the other terminal will not be impacted if you change size of the shared proxy terminal window. When (I-)PLUGIN or (I-)SCRIPT is running in the proxy terminal, NAWS will not be sent by the proxy terminal to prevent changes in the remote host responses that are received/analyzed by the running (I-)PLUGIN or (I-)SCRIPT.”

4.446. IDH_TERMINAL_CONTROL_DO_NOT_SEND_NEWLINE_TO_LISTENER_COMPORT

“Terminal_Spare_Setting_07”

4.447. IDH_TERMINAL_CONTROL_DO_NOT_SEND_NEWLINE_TO_SHELL

“Terminal_Spare_Setting_07”

4.448. IDH_TERMINAL_CONTROL_DO_NOT_SEND_NEWLINE_TO_SHELL_IS_AUTOMATIC

“Terminal_Spare_Setting_07”

4.449. IDH_TERMINAL_CONTROL_DO_NOT_SEND_NEWLINE_TO_TARGET_COMPORT

“Terminal_Spare_Setting_07”

4.450. IDH_TERMINAL_CONTROL_DO_NOT_SEND_NEWLINE_TO_TARGET_TELNET

“Terminal_Spare_Setting_07”

4.451. IDH_TERMINAL_CONTROL_DO_NOT_SHOW_MENU_BAR

“Do not Show Menu Bar under the title bar in the ProxyTerm window”

4.452. IDH_TERMINAL_CONTROL_DO_NOT_SHOW_TITLEBAR

Removes Titlebar from Terminal window

4.453. IDH_TERMINAL_CONTROL_ECHO_KBD_PASTE_TO_TERMINAL_LOCALLY

“Normally, all typed or pasted text is echoed back by the remote host. In some rare cases it does not work and user may not be able to see what is he/she typing or pasting. This option will turn local echo inside of the proxy terminal to allow user to see what is he/she typing or pasting. Useful when running CMD prompt in SHELL-TERMINAL terminal.”

4.454. IDH_TERMINAL_CONTROL_Enable_UNICODE_Input_from_Keyboard_IME_Paste_COMMAND_SCRIPT

“Normally, Proxy32 terminal translates all UNICODE user input (Keyboard, IME, Paste, COMMAND, SCRIPT/I-SCRIPT) into ASCII characters before sending it to remote host. In particular, by default, it is bypassing MS Windows language and keyboard layouts translation. If this option is enabled, Proxy32 terminal translates all UNICODE user input (Keyboard, IME, Paste, COMMAND, SCRIPT/I-SCRIPT) into UTF8 characters before sending it to remote host”

4.455. IDH_TERMINAL_CONTROL_FLIP_RO_SELECTED_CLIENT

“Make selected (in the clients drop-down list) TELNET client (connected to the TWS telnet server of this PROXYTERM window) unable to type through the TSS (read-only client). This is flipping boolean between read-only and read-write every time you select this option.”

4.456. IDH_TERMINAL_CONTROL_FORCE_TERMINAL_SIZE_TO_80X24

Force Terminal Size to 80x24

4.457. IDH_TERMINAL_CONTROL_KEEPALIVE

“If enabled, PROXYTERM will send TELNET NOP (no operation) command to the remote telnet host in order to create some TCP traffic and prevent TCP disconnect on idle timeout”

4.458. IDH_TERMINAL_CONTROL_KILL_SCRIPT_PLUGIN

“Select this menu item to stop SCRIPT/PLUGIN execution”

4.459. IDH_TERMINAL_CONTROL_LOGGING_TO_FILE

“Log terminal screen to the file”

4.460. IDH_TERMINAL_CONTROL_NUMPAD_IS_INITIALLY_IN_APPLICATION_MODE

“Terminal_NumpadIsInitiallyInApplicationMode”

4.461. IDH_TERMINAL_CONTROL_PASTE_ON_LEFTCTRLMIDDLECLICK_INSTEAD_OF_MIDDLECLICK

“Terminal_Paste_On_LeftCtrlMiddleClick_instead_of_MiddleClick”

4.462. IDH_TERMINAL_CONTROL_Print_Ambiguous_CJK_chars_as_wide

“Print Ambiguous CJK chars as wide”

4.463. IDH_TERMINAL_CONTROL_Print_Received_CarriageReturn_as_CRNL

“Normally, received CR and NL should be treated as separated characters. In some rare cases user may need to treat received NL (or CR) as a combination of CR/NL. Useful when executing some CYGWIN commands via CMD prompt that is running inside of SHELL-TERMINAL terminal.”

4.464. IDH_TERMINAL_CONTROL_Print_Received_NewLine_as_CRNL

“Normally, received CR and NL should be treated as separated characters. In some rare cases user may need to treat received NL (or CR) as a combination of CR/NL. Useful when executing some CYGWIN commands via CMD prompt that is running inside of SHELL-TERMINAL terminal.”

4.465. IDH_TERMINAL_CONTROL_Print_Received_NewLine_as_CRNL_Auto

“Normally, received CR and NL should be treated as separated characters. In some rare cases user may need to treat received NL (or CR) as a combination of CR/NL. Useful when executing some CYGWIN commands via CMD prompt that is running inside of SHELL-TERMINAL terminal. This switch allows to set value of “Print_Received_NewLine_as_CRNL” automatically (on connecting terminal to shell) depending on the shell type (name) in SHELL-TERMINAL. For proxywinconsole it is set to FALSE and for other types of shells it is set to TRUE. “

4.466. IDH_TERMINAL_CONTROL_RECONNECT

“Repeat ‘connection to remote host’ (including autostart of related SCRIPT/PLUGIN, if any) procedure for this PROXYTERM”

4.467. IDH_TERMINAL_CONTROL_REMOVE_MOUSE_SELECTION_WHEN_ERASE_ALL_DISPLAY_IS_REQUESTED

“Terminal_RemoveMouseSelectionWhenEraseAllDisplayIsRequested”

4.468. IDH_TERMINAL_CONTROL_Replace_Unicode_Hyphen_x2010_by_ASCII_Minus

“Replace_Unicode_Hyphen_x2010_by_ASCII_Minus”

4.469. IDH_TERMINAL_CONTROL_REPORT_TELNETTERMINALTYPE_AS_XTERM_INSTEAD_OF_VT100

“Terminal_Report_TelnetTerminalType_as_xterm_instead_of_vt100”

4.470. IDH_TERMINAL_CONTROL_REREGISTER_CLIPBOARDVIEWER

“If some poorly written application is registered with Windows to receive clipboard content change notification and it is not passing those notifications to the Proxy and to other applications, you may need to re-register Proxy with Windows in order to be able to receive clipboard content change notifications again (to display correctly clipboard content in the PROXYTERM clipboard viewer). This option re-registers Proxy with Windows to receive clipboard content change notifications. Use it if you think that your PROXYTERM clipboard viewers are not reacting to clipboard changes. This option may be needed in extremally rare cases.”

4.471. IDH_TERMINAL_CONTROL_RESETVT100

“Reset VT100 terminal emulator”

4.472. IDH_TERMINAL_CONTROL_RESTART_LOG_FILE_ON_WINDOW_TITLE_CHANGE

Re-start Terminal Log File on window title change

4.473. IDH_TERMINAL_CONTROL_RESTART_TERMINAL_LOG_FILE

“Restart Terminal Log File. Closes current terminal log file and opens new one. New log file name will be generated from current window title. Could be useful if output of some command should be logged into separate file.”

4.474. IDH_TERMINAL_CONTROL_SCROLLBUFFER_ON_THE_FILE

“Enable to extend default memory-only terminal scrollbuffer via temporary disk file, this will allow for unlimited scrollback in the terminal.”

4.475. IDH_TERMINAL_CONTROL_SEND_STTY_COLUMNS_X_ROWS_Y

“Send ‘stty columns <PROXYTERMINALCOLUMNS> rows <PROXYTERMINALROWS>’ to remote host. When application on the remote host needs to know size of your terminal (like in case of vi text editor) there are three ways to communicate this information to remote host:

  1. when you resize your own terminal window it will send telnet NAWS command to remote host (this may not work if remote host is reached via chain of telnet connections or via COM-port)

  2. application (like UNIX resize command) can query your terminal size using ESC-sequences and terminal will reply back (this may not work if many terminals share the same session and they will all respond with different values and confuse the remote application)

  3. if remote system is UNIX/LINUX user can manually set the terminal size information on remote host (via stty command) before starting application (like vi).”

4.476. IDH_TERMINAL_CONTROL_SHARED_INPUT_MODE_BUTTON

Toggles and displays shared Input Mode of this terminal window.

Scope of Shared Input: all non-minimized ProxyTerm Windows in the current Workspace.

Shared Input Master: sends copy of its kbd input to slave ProxyTerm Windows in scope.

Shared Input Slave: receives copy of kbd input from master ProxyTerm Windows in scope.

Shared Input Disabled: Neither sends nor receives copy of kbd input to/from other ProxyTerm Windows.

Following Master Terminal Input is shared:

  • keyboard input typed by the the user (or by AHK script)

  • input created by “Paste” from Clipboard

  • input created by COMMAND/SCRIPT/I-SCRIPT

Following Master Terminal Input is NOT shared:

  • input generated by PLUGIN/I-PLUGIN

  • input received via TELNET/COM-PORT listeners

4.477. IDH_TERMINAL_CONTROL_SHARED_INPUT_MODE_DISABLED

Sets shared Input Mode of this terminal window to Disabled.

Scope of Shared Input: all non-minimized ProxyTerm Windows in the current Workspace.

Shared Input Master: sends copy of its kbd input to slave ProxyTerm Windows in scope.

Shared Input Slave: receives copy of kbd input from master ProxyTerm Windows in scope.

Shared Input Disabled: Neither sends nor receives copy of kbd input to/from other ProxyTerm Windows.

Following Master Terminal Input is shared:

  • keyboard input typed by the the user (or by AHK script)

  • input created by “Paste” from Clipboard

  • input created by COMMAND/SCRIPT/I-SCRIPT

Following Master Terminal Input is NOT shared:

  • input generated by PLUGIN/I-PLUGIN

  • input received via TELNET/COM-PORT listeners

4.478. IDH_TERMINAL_CONTROL_SHARED_INPUT_MODE_MASTER

Sets shared Input Mode of this terminal window to Master.

Scope of Shared Input: all non-minimized ProxyTerm Windows in the current Workspace.

Shared Input Master: sends copy of its kbd input to slave ProxyTerm Windows in scope.

Shared Input Slave: receives copy of kbd input from master ProxyTerm Windows in scope.

Shared Input Disabled: Neither sends nor receives copy of kbd input to/from other ProxyTerm Windows.

Following Master Terminal Input is shared:

  • keyboard input typed by the the user (or by AHK script)

  • input created by “Paste” from Clipboard

  • input created by COMMAND/SCRIPT/I-SCRIPT

Following Master Terminal Input is NOT shared:

  • input generated by PLUGIN/I-PLUGIN

4.479. IDH_TERMINAL_CONTROL_SHARED_INPUT_MODE_SLAVE

Sets shared Input Mode of this terminal window to Slave.

Scope of Shared Input: all non-minimized ProxyTerm Windows in the current Workspace.

Shared Input Master: sends copy of its kbd input to slave ProxyTerm Windows in scope.

Shared Input Slave: receives copy of kbd input from master ProxyTerm Windows in scope.

Shared Input Disabled: Neither sends nor receives copy of kbd input to/from other ProxyTerm Windows.

Following Master Terminal Input is shared:

  • keyboard input typed by the the user (or by AHK script)

  • input created by “Paste” from Clipboard

  • input created by COMMAND/SCRIPT/I-SCRIPT

Following Master Terminal Input is NOT shared:

  • input generated by PLUGIN/I-PLUGIN

4.480. IDH_TERMINAL_CONTROL_SHOW_TREENODE_FROM_WHICH_TERMINAL_WAS_STARTED

“Show TreeNode that holds TARGET connection info for this Terminal”

4.481. IDH_TERMINAL_CONTROL_SPARE_BOOL_SETTING_00

“Terminal_Spare_Setting_00”

4.482. IDH_TERMINAL_CONTROL_SPARE_BOOL_SETTING_01

“Terminal_Spare_Setting_01”

4.483. IDH_TERMINAL_CONTROL_SPARE_BOOL_SETTING_02

“Terminal_Spare_Setting_02”

4.484. IDH_TERMINAL_CONTROL_SPARE_BOOL_SETTING_03

“Terminal_Spare_Setting_03”

4.485. IDH_TERMINAL_CONTROL_Use_Clear_Text_Antialiasing_Instead_of_Grayscale_Antialiasing

“Terminal_Use_Clear_Text_Antialiasing_Instead_of_Grayscale_Antialiasing”

4.486. IDH_TERMINAL_CONTROL_DISABLE_ANTIALIASING_FOR_TERMINAL_FONT

“Terminal_Disable_Antialiasing_For_Terminal_Font”

4.487. IDH_TERMINAL_CONTROL_USE_SYSTEM_FONTS_INSTEAD_OF_EMBEDDED_FONT

“Terminal_Use_System_Fonts_Instead_Of_Embedded_Font”

4.488. IDH_TERMINAL_CONTROL_TERMINAL_AUTOSCROLL_ON_NEW_DATA

“By default new output arriving to terminal forces terminal to scroll to the bottom of the scrollbuffer to show new output from the remote host. It will prevent user from manually scrolling up and down in the terminal buffer (to view or select text) while the new output from the remote host is constantly arriving to terminal. Temporarily disabling autoscroll may help in this situation.”

4.489. IDH_TERMINAL_CONTROL_TERMINAL_DO_NOT_SEND_INPUT_TO_SCREENBUFFER

“By default new output is arriving to both terminal log file and (via VT100 command interpreter) to the screenbuffer of terminal. If this setting is enabled, new output arriving from the remote host will be written to terminal log file but will not be written to terminal screenbuffer file and displayed in terminal window. This may be useful when new output is arriving too fast to display in the real time or when new input has so much data that it is desirable to conserve disk space by having only terminal log file and not having much larger terminal scrollbuffer file. The new output that has arrived while this option was enabled will only be accessible by opening terminal log file in the text editor.”

4.490. IDH_TERMINAL_CONTROL_TERMINAL_SESSION_SHARING_SERVER_LISTENS_ONLY_ON_LOOPBACK_IP

“TERMINAL_SESSION_SHARING_SERVER_LISTENS_ONLY_ON_LOOPBACK_IP - 127.0.0.1. This option may be useful to protect session sharing port by some local port redirector or by tunneling software like stunnel.”

4.491. IDH_TERMINAL_CONTROL_TIMESTAMPING

“If enabled, every 30 seconds the timestamp will be inserted into PROXYTERM scrollbuffer”

4.492. IDH_TERMINAL_CONTROL_TRY_TO_RECONNECT_TERMINAL_FROM_SELECTED_TREENODE

“Connect this Terminal using TARGET info from selected TreeNode”

4.493. IDH_TERMINAL_CONTROL_USE_SSL_TLS_TO_ENCRYPT_TELNET_TRAFFIC_FROM_TERMINAL_SESSION_SHARING_SERVER

“Terminal Session Sharing Server (Telnet server) is built-in into every ProxyTerm window. If this boolean is TRUE, Terminal Session Sharing server will expect Telnet+(SSL/TLS) connection from the client intead of simple Telnet.”

4.494. IDH_TERMINAL_Do_Not_Play_Sound_On_Receiving_BELL_Char

“Do_Not_Play_Sound_On_Receiving_BELL_Char”

4.495. IDH_TERMINAL_DO_NOT_SHOW_CONTROLS

Hide all controls in the terminal window to the right and to the bottom of the text area. This includes terminal sharing controls, search, bookmarks and log buttons, search_results/auto_command_history drop down lists, clipboard viewer, PLUGIN/(I)-SCRIPT controls (to the bottom of the terminal text area) and and fine/coarse scrollbars (to the right of the terminal text area). Menubar and titlebar/frame are controlled by separate menu switches. To Kill (I)-SCRIPT/PLUGIN in the absence of “Kill PLUGIN/(I)-SCRIPT” terminal button use separate menu switch via Terminal popup menu (Ctrl-RightClick in Terminal Text Area).

4.496. IDH_TERMINAL_EDIT_BOOKMARK

“Bookmark the first line of the selection in the ‘search results drop-down list’ for future quick navigation through bookmarks and search results (matches) that are accumulated in the ‘search results drop-down list’ located at the bottom right-hand corner of the PROXYTERM window.”

4.497. IDH_TERMINAL_EDIT_CLEAR_COMMAND_HISTORY

“Clear Commands History list”

4.498. IDH_TERMINAL_EDIT_CLEAR_SEARCH

“Clear the ‘search results drop-down list’ that holds search results (matches) and bookmarks”

4.499. IDH_TERMINAL_EDIT_COPY_HISTORY_LIST_TO_CLIPBOARD

“Copy content of the commands history drop-down list to clipboard”

4.500. IDH_TERMINAL_EDIT_COPY_SEARCH_LIST_TO_CLIPBOARD

“Copy content of the search results drop-down list to clipboard”

4.501. IDH_TERMINAL_EDIT_DELETE_SELECTED_SEARCH_RESULT

“Delete the search result (match) or bookmark that is selected in the ‘search results drop-down list’”

4.502. IDH_TERMINAL_EDIT_GO_TO_FIRST_LINE_OF_SELECTION

“Scroll to show first line of selection”

4.503. IDH_TERMINAL_EDIT_GO_TO_LAST_LINE_OF_SELECTION

“Scroll to show last line of selection”

4.504. IDH_TERMINAL_EDIT_GO_TO_NEXT_SEARCH_RESULT

“Go to the next search result (match) or bookmark in the ‘search results drop- down list’”

4.505. IDH_TERMINAL_EDIT_GO_TO_PREVIOUS_SEARCH_RESULT

“Go to the previous search result (match) or bookmark in the ‘search results drop-down list’”

4.506. IDH_TERMINAL_EDIT_PASTE

“Paste clipboard content to the remote host”

4.507. IDH_TERMINAL_EDIT_SEARCH

“Search in the whole terminal buffer or (if there is multiline selection present) in multiline selection. What search is used (whole buffer or multiline selection) you can find out from the title of the search dialog. Search pattern uses PERL Regular Expressions syntax and can be case-sensitive or case- insensitive. It goes line by line through your terminal buffer as you see it on the screen. It does not un-wrap lines that are wrapped by the right border of PROXYTERM window. To combine different patterns by OR use pipe symbol ‘|’. Bookmarked lines, search matches, matching lines and their positions in the PROXYTERM scrollbuffer are stored in the ‘search results drop-down list’ located at the bottom right-hand corner of the PROXYTERM window. To populate this list use ‘search’ (‘S’) or ‘bookmark’ (‘B’) buttons located to the left of this list (or corresponding commands in the PROXYTERM Edit WindowMenu). To automatically jump (scroll to the match/bookmark and highlight it) directly to the match/bookmark just select desired entry in this list. To cycle through matches/bookmarks in this list use ‘next’ (‘N’) or ‘previous’ (‘P’) buttons located to the left of this list (or corresponding commands in the PROXYTERM Edit WindowMenu). Number of matches/bookmarks in the list is programmatically limited to 1000 for the performance reasons. If you have already accumulated 1000 matches/bookmarks in the list as a result of one or many sequential searches or bookmarking activity, you will get a warning and you will have to make some free space in the list by deleting selected matches or clearing content of the whole list. To do this use ‘delete selected’ (‘D’) or ‘clear the whole list’ (‘C’) buttons located to the left of this list (or corresponding commands in the PROXYTERM Edit WindowMenu).”

4.508. IDH_TERMINAL_FILE_CHANGE_TITLE_OF_TERMINAL_WINDOW

“Change title of terminal window and (if enabled) restart terminal log file with new name made of new window title”

4.509. IDH_TERMINAL_FILE_EXIT

“Close PROXYTERM window/session. Remote TELNET host (or local COM-PORT or local SHELL) and all TSS telnet clients will be disconnected.”

4.510. IDH_TERMINAL_FILE_PROPAGATE_TERMINAL_SETTINGS_TO_NONMINIMIZED_TERMINALS_IN_THE_SAME_WORKSPACE

Following Terminal Menu settings are propagated to other non-minimized terminals in the same workspace:

“Do not show Menu Bar”

“Do not show controls”

“Do not show title bar”

“Shared Input Mode”

4.511. IDH_TERMINAL_FILE_SAVE_TERMINAL_SETTINGS_AS_DEFAULTS_FOR_NEW_TERMINALS

Save this Terminal settings as default initial values for creation of new terminal windows. Following Terminal Menu settings are saved:

“Terminal Size/Position, Colors, Font and Line/Char spacing”

“Do not show Menu Bar”

“Do not show controls”

“Do not show title bar”

“Shared Input Mode”

“Enable unlimited scrollbuffer on the temporary file”

“Log terminal screen to the file”

“Add hex dump to terminal log file”

“TSS Server denies new connections”

4.512. IDH_TERMINAL_FIXED_SPEED_SCROLLBAR

“This is high precision scrollbar which tries to achieve fixed scrolling speed regardless of the size of the scrollbuffer. It only scrolls approximately 200- 300 lines up or down from the position of the main scrollbar. It is useful when main scrollbar becomes ‘jerky’ when the number of lines in the terminal scrollbuffer goes above tens of thousands. When the main scrollbar becomes ‘jerky’, use ‘main’ scrollbar only to get to the approximate position in the scrollbuffer and then use ‘high precision/fixed speed’ scrollbar (or mouse wheel scrolling) to fine-tune your position in the scrollbuffer.”

4.513. IDH_TERMINAL_LINE_SPACE_DECREASE

“Every time you select this option the height of the row in the PROXYTERM working area will be decreasing by one point. This may help to sqeeze more text lines into the same PROXYTERM working area. If the row height is decreased too much, the text may become unreadable - use next menu item to restore default row height.”

4.514. IDH_TERMINAL_LINE_SPACE_RESTORE

“Restore default height of the row in the PROXYTERM working area (set it equal to the font height).”

4.515. IDH_TERMINAL_LIST_OF_COMMANDS_HISTORY

“Automatically records user-executed commands to allow user to navigate to them later.”

4.516. IDH_TERMINAL_LIST_OF_COMPUTER_IP_ADDRESSES

“This list contains TCP port number and the list of the IP addresses (of interfaces) of your PC, on which PROXYTERM is listening for the TELNET clients willing to share your PROXYTERM session (TSS telnet clients). PROXYTERM is listening for TSS telnet connections on all IP interfaces of your computer. You can also use special loopback interface IP address 127.0.0.1 of your PC to share your PROXYTERM session with another TELNET TERMINAL program running on your own PC. TCP port is allocated when PROXYTERM window is created, it is unique for every PROXYTERM window/session and stays the same until PROXYTERM window is closed. Drop-down list of IP addresses is updated every time it is opened. If you select IP address or port in this list, selected value will be copied to the clipboard. This is to simplify further pasting of TSS telnet connect info (IP address and TCP port number) into e-mail message or into IM. When you choose what IP address to send to the person who wants to share your PROXYTERM session, you have to select one IP address that this person can reach from his/her computer. There is currently no authentication implemented for connecting TSS clients, so anybody who knows the IP address and the TCP port number can connect and share your particular PROXYTERM session (you will be notified by the log message in the PROXYTERM window)”

4.517. IDH_TERMINAL_LIST_OF_CONNECTED_CLIENTS

“List of connected TSS telnet clients (IP addresses/TCP ports of connected external TELNET TERMINAL applications) that are sharing this PROXYTERM window/session with the Proxy owner. The list is updated automatically when clients connect to or disconnect from the current PROXYTERM session. The client that is currently typing on the keyboard (providing an input to the PROXYTERM session) will be automatically selected in this list to indicate its activity. Clients in this list stay connected regardless of whether PROXYTERM is connected to the Remote TELNET host (or local COM-PORT or local SHELL). There are commands in the PROXYTERM Control WindowMenu to explicitely disconnect selected or all TSS telnet clients or put them into the read-only mode when they cannot type into the shared PROXYTERM session/window.”

4.518. IDH_TERMINAL_LIST_OF_SEARCH_RESULTS

“Bookmarked lines, search matches, matching lines and their positions in the PROXYTERM scrollbuffer are stored in this ‘search results drop-down list’. To populate this list use ‘search’ (‘S’) or ‘bookmark’ (‘B’) buttons located to the left of this list (or corresponding commands in the PROXYTERM Edit WindowMenu). To automatically jump (scroll to the match/bookmark and highlight it) directly to the match/bookmark just select desired entry in this list. To cycle through matches/bookmarks in this list use ‘next’ (‘N’) or ‘previous’ (‘P’) buttons located to the left of this list (or corresponding commands in the PROXYTERM Edit WindowMenu). Number of matches/bookmarks in the list is programmatically limited to 1000 for the performance reasons. If you have already accumulated 1000 matches/bookmarks in the list as a result of one or many sequential searches or bookmarking activity, you will get a warning and you will have to make some free space in the list by deleting selected matches or clearing content of the whole list. To do this use ‘delete selected’ (‘D’) or ‘clear the whole list’ (‘C’) buttons located to the left of this list (or corresponding commands in the PROXYTERM Edit WindowMenu).”

4.519. IDH_TERMINAL_LIST_OF_TERMINAL_TELNET_RECEIVE_SPEED_SETTINGS

“This drop-down list sets maximum speed of incoming data from remote TELNET server (if terminal is in TELNET mode) or maximum speed of incoming data from STDOUT/STDERR of local SHELL (if terminal is in SHELL mode) or maximum speed of incoming data from local COMPORT (if terminal is in COMPORT mode). Speed of incoming data is controlled by the flow control logic that communicates directly with the source of the incoming data. This maximum incoming speed can be set manually by user (by selecting from the drop-down list) and it is also can be set automatically by terminal in certain situations. Proxy32 TSS module will pass incoming data from TELNET server to all connected TSS clients (TELNET terminals) and wait for TCP ACK from connected TELNET terminals before sending more data to them. If TELNET terminals connected to TSS module (or network connections themselves) are not fast enough to process and then TCP ACK incoming data in the real time, Proxy32 TSS module will have to slow down the speed with which it sends incoming data to all connected TSS clients. The only way to do so is to automatically reduce speed of incoming data from the TELNET server (in order to accomodate slow TSS clients). Reducing speed of data arriving from TELNET server will be done automatically but such reduction will be shown in this drop-down. Maximum incoming speed will be automatically reduced to accomodate slowest of connected TSS clients. The only way to increase this speed back is to disconnect TSS client that is holding everybody up because its unable to process incoming data in real time. Reducing speed of data arriving from TELNET server is also done automatically when Proxy32 CPU usage exceeds 80%, in such case incoming speed setting temporarily goes to MIN to reduce CPU usage by all Proxy32 terminals.”

4.520. IDH_TERMINAL_REGULAR_SCROLLBAR

“This is the main scrollbar that allows you to scroll to any position in the terminal scrollbuffer. If main scrollbar becomes ‘jerky’ (when the number of lines in the terminal scrollbuffer goes above tens of thousands) use ‘main’ scrollbar only to get to the approximate position in the scrollbuffer and then use ‘high precision/fixed speed’ scrollbar (or mouse wheel scrolling) to fine- tune your position in the scrollbuffer.”

4.521. IDH_TERMINAL_SCRIPT_LINES_PROGRESS_BAR

“For SCRIPT/I-SCRIPT this progress bar shows proportion of the lines in the whole script that are already executed. For PLUGIN/I-PLUGIN shows the proportion of usage of the 100KB buffer that holds PLUGIN input data that should be processed by the PLUGIN. If this buffer becomes full, PLUGIN will be automatically terminated as unable to handle it’s input data (arriving from the remote TELNET host or local COM-PORT or local SHELL).”

4.522. IDH_TERMINAL_SESSION_SHARING_SERVER_DENIES_NEW_CONNECTIONS

“Terminal_Session_Sharing_Server_denies_new_connections”

4.523. IDH_TERMINAL_VIEW_FONT

“Select font for the PROXYTERM working area”

4.524. IDH_TERMINAL_VIEW_SELECT_BACKGROUND_COLOR

“Select non-italic (regular intensity) background color for the PROXYTERM working area”

4.525. IDH_TERMINAL_VIEW_SELECT_FOREGROUND_COLOR

“Select foreground color for the PROXYTERM working area”

4.526. IDH_WORKSPACE_MENUBAR_LAUNCHERTREE_FAVORITES_BUTTON

Show Menu of Favorites from the LauncherTree

4.527. IDH_LAUNCHERTREE_INSTALLER_INSTALL_CYGWIN_x86_64

Install Cygwin_x86_64

4.528. IDH_LAUNCHERTREE_INSTALLER_INSTALL_PUTTY_AND_FRIENDS

Install PuTTY and Friends

4.529. IDH_LAUNCHERTREE_INSTALLER_INSTALL_JEDIT_AND_JRE

Install jEdit and JRE

4.530. IDH_LAUNCHERTREE_INSTALLER_INSTALL_WINMERGE

Install WinMerge

4.531. IDH_LAUNCHERTREE_INSTALLER_INSTALL_AHK_SCITE4AHK

Install AHK, SciTe4AHK

4.532. IDH_LAUNCHERTREE_INSTALLER_INSTALL_SCITE

Install SciTe

4.533. IDH_LAUNCHERTREE_INSTALLER_INSTALL_GEANY

Install Geany

4.534. IDH_LAUNCHERTREE_INSTALLER_INSTALL_LUA

Install LUA

4.535. IDH_LAUNCHERTREE_INSTALLER_INSTALL_PYTHON39

Install Python39

©2026, Sergey A Belous. | Powered by Sphinx 7.4.7 & Alabaster 0.7.16 | Page source


5. Heading 1

5.1. Heading 2

5.1.1. Heading 3

5.1.1.1. Heading 4

Proxy32 может создать отдельный рабочий стол Windows и запустить на нем свою графическую оболочку. В этом случае программы, которые запущены на общем рабочем столе Windows, не смогут взаимодействовать с графической оболочкой Proxy32 (манипулировать окнами Proxy32 и посылать в них нажатия клавиш и мыши). Режим запуска Proxy32 на отдельном рабочем столе может использоваться для выполнения очень важных задач, когда пользователь хочет исключить возможность вмешательства в его работу со стороны других программ.

Запуск на отдельном рабочем столе Windows по умолчанию выключен, но он может быть включен через Proxy32 Options Dialog.

Когда Proxy32 запущена на отдельном столе, она позволяет пользователю переключаться между отдельным рабочим столом Windows и общим рабочим столом Windows:

There is some text about active sticker (Fig. 5.1.1).

Fig. 5.1.1 Active sticker

This is described in 5.1.1.1 Heading 4.

Tables are created using the following code. A table has a caption. Optionally, you can add a label. You can make references to a table using its label as follows: Table 5.1.1.

Table 5.1.1 List of features
Feature name | Feature description | Notes
Windows size and position for 3 Proxy32 windows are remembered per each Desktop monitor configuration | Desktop in MS Window can be spanned across multiple monitors. When Proxy32 exits, it stores monitor configuration (how many monitors and size of each monitor - for example - Windows desktop has 3 monitors, size for monitor #1 is 640x480, size for monitor #2 is 800x600 and size for monitor #3 is 1920x1080). Proxy32 remembers last 4 monitor configurations. For each saved monitor configuration Proxy32 stores last sizes and locations of all 3 windows (MainWindow - aka Workspace, LauncherTree window and Selector window). When Proxy32 starts or when monitor configuration changes while Proxy32 is running, Proxy32 restores last sizes and locations of all 3 windows (MainWindow - aka Workspace, LauncherTree window and Selector window) used for this monitor configuration. | No user controls
Proxy32 Floating windows (LauncherTree window and Selector window) can be attached to Main Window, partially attached to Main Window and completely independent from the Main Window |  | MenuBar and PopupMenu of the Main Window, HOTKEYS and MOUSE shortcuts.
Main Window frame and titlebar can be removed |  |
Main Window menubar can be removed |  |
Main Window can be moved by dragging while holding left mouse button pressed on the background |  |
Main window can be moved by dragging while holding left mouse button pressed on the button1 ACTIVE window sticker |  |
Main window can be moved by dragging while holding left mouse button pressed on the button button |  |
©2026, Sergey A Belous. | Powered by Sphinx 7.4.7 & Alabaster 0.7.16 | Page source


Index

©2026, Sergey A Belous. | Powered by Sphinx 7.4.7 & Alabaster 0.7.16


<no title>

©2026, Sergey A Belous. | Powered by Sphinx 7.4.7 & Alabaster 0.7.16 | Page source


/////////////////////////////////////////////////////////////////////////////
// CygTerm - yet another Cygwin console
// Copyright (C) 2000-2004 NSym.
//---------------------------------------------------------------------------
// This program is free software; you can redistribute it and/or modify it
// under the terms of the GNU General Public License (GPL) as published by
// the Free Software Foundation; either version 2 of the License, or (at
// your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//---------------------------------------------------------------------------

/////////////////////////////////////////////////////////////////////////////
// CygTerm - yet another Cygwin console
//
//   Using Cygwin with a terminal emulator.
//   Written by NSym.
//                         *** Web Pages ***
//  (English) http://www.dd.iij4u.or.jp/~nsym/cygwin/cygterm/index-e.html
// (Japanese) http://www.dd.iij4u.or.jp/~nsym/cygwin/cygterm/index.html
//
//
//modified by Sergey A. Belous in March 2006 to work as proxy32 to cygwin interface
//
static char Program[] = "ProxyCygTerm";
static char Version[] = "version 1.06 (2004/01/24) - modified by Sergey A. Belous in March 2006 to work as proxy32 to cygwin interface";

#include <stdio.h>
//#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <fcntl.h>
#include <unistd.h>
#include <signal.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <termios.h>
#include <sys/time.h>
#include <sys/wait.h>
#include <arpa/inet.h>
#include <windows.h>

// PTY device name
//----------------
#define  DEVPTY  "/dev/ptmx"

// command line of a shell
//-------------------------------------------------
char cmd_shell[4096] = "";

// terminal type & size
//---------------------
char term_type[41] = "VT100";
struct winsize win_size = {
                                  0,0,0,0};

// additional env vars given to a shell
//-------------------------------------
struct sh_env_t {
        struct sh_env_t* next;
        char env[1];
}
sh_env = {NULL, ""};

sh_env_t* sh_envp = &sh_env;

//================//
// message output //
//----------------//
void msg_print(char* msg)
{
        MessageBox(NULL, msg, Program, MB_OK | MB_ICONINFORMATION | MB_TOPMOST);
}

//=========================//
// C-runtime error message //
//-------------------------//
void c_error(char* string = "")
{
        char msg[1024];
        char *ptr = msg;
        if (string != NULL)
                ptr += sprintf(ptr, "%s\n\n", string);
        sprintf(ptr, "%s\n", strerror(errno));
        msg_print(msg);
}

//====================//
// load configuration //
//--------------------//
void load_cfg()
{
        char cfg[MAX_PATH]; // configuration file (.cfg) path

        // get cfg path from exe path
        if (GetModuleFileName(NULL, cfg, MAX_PATH) <= 0)
        {
                return;
        }
        char* bs = strrchr(cfg, '\\');
        if (bs == NULL)
        {
                return;
        }
        char* dot = strrchr(bs, '.');
        if (dot == NULL)
        {
                strcat(bs, ".cfg");
        }
        else
        {
                strcpy(dot, ".cfg");
        }

        // read each setting parameter
        FILE* fp;
        if ((fp = fopen(cfg, "r")) == NULL)
        {
                return;
        }
        char buf[BUFSIZ];
        while (fgets(buf, sizeof(buf), fp) != NULL)
        {

                // "KEY = VALUE" format in each line.
                // skip leading/trailing blanks. KEY is not case-sensitive.
                char* p1;
                for (p1 = buf; isspace(*p1); ++p1)
                        ;
                if (!isalpha(*p1))
                {
                        continue; // comment line with non-alphabet 1st char
                }
                char* name = p1;
                for (++p1; isalnum(*p1) || *p1 == '_'; ++p1)
                        ;
                char* p2;
                for (p2 = p1; isspace(*p2); ++p2)
                        ;
                if (*p2 != '=')
                {
                        continue;
                }
                for (++p2; isspace(*p2); ++p2)
                        ;
                char* val = p2;
                for (p2 += strlen(p2); isspace(*(p2-1)); --p2)
                        ;
                *p1 = *p2 = 0;

                if (!strcasecmp(name, "SHELL"))
                {
                        // shell command line
                        strncpy(cmd_shell, val, sizeof(cmd_shell)-1);
                        cmd_shell[sizeof(cmd_shell)-1] = 0;
                }
                else if (!strncasecmp(name, "ENV_", 4))
                {
                        // additional env vars given to a shell
                        sh_env_t* e = (sh_env_t*)malloc(sizeof(sh_env_t)+strlen(val));
                        if (e != NULL)
                        {
                                strcpy(e->env, val);
                                e->next = NULL;
                                sh_envp = (sh_envp->next = e);
                        }
                }
        }
        fclose(fp);
}

//=======================//
// commandline arguments //
//-----------------------//
void get_args(int argc, char** argv)
{
        for (++argv; *argv != NULL; ++argv)
        {
                if (!strcmp(*argv, "-s"))
                {        // -s <shell>
                        if (*(argv+1) != NULL)
                        {
                                ++argv, strcpy(cmd_shell, *argv);
                        }
                }
                else if (!strcmp(*argv, "-v"))
                {        // -v <additional env var>
                        if (*(argv+1) != NULL)
                        {
                                ++argv;
                                sh_env_t* e = (sh_env_t*)malloc(sizeof(sh_env_t)+strlen(*argv));
                                if (e != NULL)
                                {
                                        strcpy(e->env, *argv);
                                        e->next = NULL;
                                        sh_envp = (sh_envp->next = e);
                                }
                        }
                }
        }
}

//========================================//
// setup *argv[] from a string for exec() //
//----------------------------------------//
void get_argv(char **argv, int maxc, char *s)
{
        int esc, sq, dq;  // recognize (\) (') (") and tokenize
        int c, argc;
        char *p;
        esc = sq = dq = 0;
        for (argc = 0; argc < maxc-1; ++argc)
        {
                for ( ; isascii(*s) && isspace(*s); ++s)
                        ;
                if (*s == 0)
                {
                        break;
                }
                argv[argc] = p = s;
                while ((c = *s) != 0)
                {
                        ++s;
                        if (isspace(c) && !esc && !sq && !dq)
                        {
                                break;
                        }
                        if (c == '\'' && !esc && !dq)
                        {
                                sq ^= 1;
                        }
                        else if (c == '"' && !esc && !sq)
                        {
                                dq ^= 1;
                        }
                        else if (c == '\\' && !esc)
                        {
                                esc = 1;
                        }
                        else
                        {
                                esc = 0;
                                *p++ = c;
                        }
                }
                *p = 0;
        }
        // not to judge syntax errors
        // if (dq || sq || esc) { syntax error }
        // if (argc == maxc) { overflow }
        argv[argc] = NULL;
}

//=================//
// shell execution //
//-----------------//
int exec_shell(int* sh_pid)
{
        // open pty master
        int master;
        if ((master = open(DEVPTY, O_RDWR)) < 0)
        {
                return -1;
        }
        int pid;
        if ((pid = fork()) < 0)
        {
                return -1;
        }
        if (pid == 0)
        {
                // detach from control tty
                setsid();
                // open pty slave
                int slave;
                if ((slave = open(ptsname(master), O_RDWR)) < 0)
                {
                        exit(0);
                }
                // stdio redirection
                while (slave <= 2)
                {
                        if ((slave = dup(slave)) < 0)
                        {
                                exit(0);
                        }
                }
                int fd;
                for (fd = 0; fd < 3; ++fd)
                {
                        close(fd);
                        dup(slave);
                        fcntl(fd, F_SETFD, 0);
                }
                for (fd = 3; fd < getdtablesize(); ++fd)
                {
                        if (fcntl(fd, F_GETFD) == 0)
                        {
                                close(fd);
                        }
                }
                // set env vars
                // set terminal type to VT100
                char env_term[64];
                sprintf(env_term, "TERM=VT100");
                putenv(env_term);
                // set other additional env vars
                sh_env_t* e;
                for (e = sh_env.next; e != NULL; e = e->next)
                {
                        putenv(e->env);
                }
                // execute a shell
                char *argv[32];
                get_argv(argv, 32, cmd_shell);
                execv(argv[0], argv);
                // no error, exec() doesn't return
                c_error(argv[0]);
                exit(0);
        }
        *sh_pid = pid;
        return master;
}

//==================//
// i/o buffer class IOBufferShell //
//------------------//
class IOBufferShell
{
private:
        int fd;
        u_char i_buf[4096];
        u_char o_buf[4096];
        int i_pos, i_len, o_pos;
public:
        IOBufferShell(int channel) : fd(channel), i_pos(0), i_len(0), o_pos(0) {
        }
        operator int() {
                return fd;
        }
        void ungetc() {
                --i_pos;
        }
        bool flush_in();
        bool getc(u_char*);
        bool nextc(u_char*);
        bool putc(u_char);
        bool flush_out();
};

// read bytes into input buffer
//-----------------------------
bool IOBufferShell::flush_in()
{
        if ((i_len = read(fd, i_buf, sizeof(i_buf))) <= 0)
                return false;
        i_pos = 0;
        return true;
}

// get 1 char from input buffer
//-----------------------------
inline bool IOBufferShell::getc(u_char* c)
{
        if (i_pos == i_len)
                return false;
        *c = i_buf[i_pos++];
        return true;
}

// get next 1 char from input buffer
//----------------------------------
inline bool IOBufferShell::nextc(u_char* c)
{
        if (i_pos == i_len)
                if (!flush_in())
                        return false;
        *c = i_buf[i_pos++];
        return true;
}

// put 1 char to output buffer
//----------------------------
inline bool IOBufferShell::putc(u_char c)
{
        if (o_pos == sizeof(o_buf))
                if (!flush_out())
                        return false;
        o_buf[o_pos++] = c;
        return true;
}

// write bytes from output buffer
//-------------------------------
bool IOBufferShell::flush_out()
{
        int n;
        for (int i = 0; i < o_pos; i += n)
        {
                if ((n = write(fd, o_buf+i, o_pos-i)) <= 0)
                        return false;
        }
        o_pos = 0;
        return true;
}

//==================//
// i/o buffer class IOBufferTerm //
//------------------//
class IOBufferTerm
{
private:
        u_char i_buf[4096];
        u_char o_buf[4096];
        int i_pos, i_len, o_pos;
public:
        IOBufferTerm() : i_pos(0), i_len(0), o_pos(0) {
        }
        void ungetc() {
                --i_pos;
        }
        bool flush_in();
        bool getc(u_char*);
        bool nextc(u_char*);
        bool putc(u_char);
        bool flush_out();
};

// read bytes into input buffer
//-----------------------------
bool IOBufferTerm::flush_in()
{
        if ((i_len = read(0, i_buf, sizeof(i_buf))) <= 0)
                return false;
        i_pos = 0;
        return true;
}

// get 1 char from input buffer
//-----------------------------
inline bool IOBufferTerm::getc(u_char* c)
{
        if (i_pos == i_len)
                return false;
        *c = i_buf[i_pos++];
        return true;
}

// get next 1 char from input buffer
//----------------------------------
inline bool IOBufferTerm::nextc(u_char* c)
{
        if (i_pos == i_len)
                if (!flush_in())
                        return false;
        *c = i_buf[i_pos++];
        return true;
}

// put 1 char to output buffer
//----------------------------
inline bool IOBufferTerm::putc(u_char c)
{
        if (o_pos == sizeof(o_buf))
                if (!flush_out())
                        return false;
        o_buf[o_pos++] = c;
        return true;
}

// write bytes from output buffer
//-------------------------------
bool IOBufferTerm::flush_out()
{
        int n;
        for (int i = 0; i < o_pos; i += n)
        {
                if ((n = write(1, o_buf+i, o_pos-i)) <= 0)
                        return false;
        }
        o_pos = 0;
        return true;
}

//=========================//
// TELNET command handling //  (see RFC854 TELNET PROTOCOL SPECIFICATION)
//-------------------------//
enum { nIAC=255, nWILL=251, nWONT=252, nDO=253, nDONT=254 };
enum { sSEND=1, sIS=0, sSB=250, sSE=240 };
enum { oTERM=24, oNAWS=31 };

u_char telnet_cmd(IOBufferTerm* te)
{
        u_char cmd, c;
        te->nextc(&cmd);
        if (cmd == sSB)
        {
                te->nextc(&c);
                // accept terminal size request
                if (c == oNAWS)
                {                      // "SB NAWS
                        u_short col, row;
                        te->nextc((u_char*)&col);
                        te->nextc((u_char*)&col+1);        //     00 00 (cols)
                        te->nextc((u_char*)&row);
                        te->nextc((u_char*)&row+1);        //     00 00 (rows)
                        te->nextc(&c);
                        te->nextc(&c);                     //     TAC SE"
                        win_size.ws_col = ntohs(col);
                        win_size.ws_row = ntohs(row);
                        return (u_char)oNAWS;
                }
                while (c != nIAC)
                        te->nextc(&c);       // "... IAC SE"
                te->nextc(&c);
        }
        return cmd;
}

//=============================================//
// relaying of a terminal emulator and a shell //
//---------------------------------------------//
void telnet_session(int sh_pty)
{
        IOBufferTerm te;
        IOBufferShell sh = sh_pty;
        fd_set rtmp, rbits;
        FD_ZERO(&rtmp);
        FD_SET(0, &rtmp);
        FD_SET(sh, &rtmp);
        u_char c;
        int cr = 0;
        for (;;)
        {
                rbits = rtmp;
                if (select(FD_SETSIZE, &rbits, 0, 0, 0) <= 0)
                {
                        break;
                }
                if (FD_ISSET(sh, &rbits))
                {
                        // send data from a shell to a terminal
                        if (sh.flush_in() == false)
                        {
                                break;
                        }
                        while (sh.getc(&c) == true)
                        {
                                te.putc(c);
                        }
                        if (te.flush_out() == false)
                        {
                                break;
                        }
                        continue;  // give priority to data from a shell
                }
                if (FD_ISSET(0, &rbits))
                {
                        // send data from a terminal to a shell
                        if (te.flush_in() == false)
                        {
                                break;
                        }
                        while (te.getc(&c) == true)
                        {
                                if (c == nIAC)
                                {
                                        u_char cmd = telnet_cmd(&te) ;
                                        if (cmd == oNAWS)
                                        {
                                                // resize pty by terminal size change notice
                                                ioctl(sh_pty, TIOCSWINSZ, &win_size);
                                                continue;
                                        }
                                        if (cmd != nIAC)
                                        {
                                                continue;
                                        }
                                }
                                else if (c == '\r')
                                {
                                        cr = 1;
                                }
                                else if (c == '\n' || c == '\0')
                                {
                                        if (cr)
                                        {  // do not send LF or NUL just after CR
                                                cr = 0;
                                                continue;
                                        }
                                }
                                else
                                {
                                        cr = 0;
                                }
                                sh.putc(c);
                        }
                        if (sh.flush_out() == false)
                        {
                                break;
                        }
                }
        }
}

//=========================================================//
// connection of terminal emulator and Cygwin shell //
//---------------------------------------------------------//
int main(int argc, char** argv)
{
        int sh_pty = -1;
        int sh_pid;

        // load configuration
        load_cfg();

        // read commandline arguments
        get_args(argc, argv);

        if (cmd_shell[0] == 0)
        {
                msg_print("missing shell");
                return 0;
        }

        // execute a shell
        if ((sh_pty = exec_shell(&sh_pid)) < 0)
        {
                goto cleanup;
        }

        // relay the terminal emulator and the shell
        telnet_session(sh_pty);

cleanup:
        if (sh_pty >= 0)
        {
                close(sh_pty);
                kill(sh_pid, SIGKILL);
                wait((int*)NULL);
        }
        return 0;
}

// This program is a Win32 application but, start as Cygwin main().
//-----------------------------------------------------------------
extern "C" {
        void mainCRTStartup(void);
        void WinMainCRTStartup(void) {
                mainCRTStartup();
        }
};

//EOF


Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
                               and Clark Cooper
Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers.

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


License for Scintilla and SciTE

Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>

All Rights Reserved

Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation.

NEIL HODGSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS, IN NO EVENT SHALL NEIL HODGSON BE LIABLE FOR ANY
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
OR PERFORMANCE OF THIS SOFTWARE.


Software License

Scintilla and SciTE

Copyright 1998-2014 by Neil Hodgson <neilh@scintilla.org>

All Rights Reserved

Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation.

NEIL HODGSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS, IN NO EVENT SHALL NEIL HODGSON BE LIABLE FOR ANY
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
OR PERFORMANCE OF THIS SOFTWARE.

Everything else

Copyright 2007-2014 by fincs (@ autohotkey.com forum)

This program is free software. It comes without any warranty, to
the extent permitted by applicable law. You can redistribute it and/or
modify it under the terms of the WTFPL, Version 2, as published by
Sam Hocevar. The full license text can be found at http://www.wtfpl.net/txt/copying/.


                    GNU GENERAL PUBLIC LICENSE
                       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

                    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

                            NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

                     END OF TERMS AND CONDITIONS

------------
PCRE LICENCE
------------

PCRE is a library of functions to support regular expressions whose syntax
and semantics are as close as possible to those of the Perl 5 language.

Release 6 of PCRE is distributed under the terms of the "BSD" licence, as
specified below. The documentation for PCRE, supplied in the "doc"
directory, is distributed under the same terms as the software itself.

The basic library functions are written in C and are freestanding. Also
included in the distribution is a set of C++ wrapper functions.

THE BASIC LIBRARY FUNCTIONS
---------------------------

Written by:       Philip Hazel
Email local part: ph10
Email domain:     cam.ac.uk

University of Cambridge Computing Service,
Cambridge, England. Phone: +44 1223 334714.

Copyright (c) 1997-2006 University of Cambridge
All rights reserved.

THE C++ WRAPPER FUNCTIONS
-------------------------

Contributed by:   Google Inc.

Copyright (c) 2006, Google Inc.
All rights reserved.

THE "BSD" LICENCE
-----------------

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

    * Redistributions of source code must retain the above copyright notice,
      this list of conditions and the following disclaimer.

    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.

    * Neither the name of the University of Cambridge nor the name of Google
      Inc. nor the names of their contributors may be used to endorse or
      promote products derived from this software without specific prior
      written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

End


Copyright 2010-2019 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'.

All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries.

This Font Software is licensed under the SIL Open Font License, Version 1.1.

This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL

-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------

PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.

The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.

DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.

"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).

"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).

"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.

"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.

PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:

1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.

2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.

3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.

4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.

5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.

TERMINATION
This license becomes null and void if any of the above conditions are
not met.

DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.


PCRE LICENCE
------------

PCRE is a library of functions to support regular expressions whose syntax
and semantics are as close as possible to those of the Perl 5 language.

Release 6 of PCRE is distributed under the terms of the "BSD" licence, as
specified below. The documentation for PCRE, supplied in the "doc"
directory, is distributed under the same terms as the software itself.

The basic library functions are written in C and are freestanding. Also
included in the distribution is a set of C++ wrapper functions.

THE BASIC LIBRARY FUNCTIONS
---------------------------

Written by:       Philip Hazel
Email local part: ph10
Email domain:     cam.ac.uk

University of Cambridge Computing Service,
Cambridge, England. Phone: +44 1223 334714.

Copyright (c) 1997-2006 University of Cambridge
All rights reserved.

THE C++ WRAPPER FUNCTIONS
-------------------------

Contributed by:   Google Inc.

Copyright (c) 2006, Google Inc.
All rights reserved.

THE "BSD" LICENCE
-----------------

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

    * Redistributions of source code must retain the above copyright notice,
      this list of conditions and the following disclaimer.

    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.

    * Neither the name of the University of Cambridge nor the name of Google
      Inc. nor the names of their contributors may be used to endorse or
      promote products derived from this software without specific prior
      written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

End