diff options
Diffstat (limited to 'webclients/novnc/vnc.html')
-rw-r--r-- | webclients/novnc/vnc.html | 437 |
1 files changed, 280 insertions, 157 deletions
diff --git a/webclients/novnc/vnc.html b/webclients/novnc/vnc.html index adb0157..701714c 100644 --- a/webclients/novnc/vnc.html +++ b/webclients/novnc/vnc.html @@ -1,213 +1,336 @@ <!DOCTYPE html> -<html> +<html class="noVNC_loading"> <head> <!-- noVNC example: simple example using default UI Copyright (C) 2012 Joel Martin - Copyright (C) 2013 Samuel Mannehed for Cendio AB + Copyright (C) 2016 Samuel Mannehed for Cendio AB + Copyright (C) 2016 Pierre Ossman for Cendio AB noVNC is licensed under the MPL 2.0 (see LICENSE.txt) This file is licensed under the 2-Clause BSD license (see LICENSE.txt). Connect parameters are provided in query string: - http://example.com/?host=HOST&port=PORT&encrypt=1&true_color=1 + http://example.com/?host=HOST&port=PORT&encrypt=1 + or the fragment: + http://example.com/#host=HOST&port=PORT&encrypt=1 --> <title>noVNC</title> - <meta charset="utf-8"> + <meta charset="utf-8" /> <!-- Always force latest IE rendering engine (even in intranet) & Chrome Frame Remove this if you use the .htaccess --> - <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> + + <!-- Icons (see Makefile for what the sizes are for) --> + <link rel="icon" sizes="16x16" type="image/png" href="app/images/icons/novnc-16x16.png"> + <link rel="icon" sizes="24x24" type="image/png" href="app/images/icons/novnc-24x24.png"> + <link rel="icon" sizes="32x32" type="image/png" href="app/images/icons/novnc-32x32.png"> + <link rel="icon" sizes="48x48" type="image/png" href="app/images/icons/novnc-48x48.png"> + <link rel="icon" sizes="60x60" type="image/png" href="app/images/icons/novnc-60x60.png"> + <link rel="icon" sizes="64x64" type="image/png" href="app/images/icons/novnc-64x64.png"> + <link rel="icon" sizes="72x72" type="image/png" href="app/images/icons/novnc-72x72.png"> + <link rel="icon" sizes="76x76" type="image/png" href="app/images/icons/novnc-76x76.png"> + <link rel="icon" sizes="96x96" type="image/png" href="app/images/icons/novnc-96x96.png"> + <link rel="icon" sizes="120x120" type="image/png" href="app/images/icons/novnc-120x120.png"> + <link rel="icon" sizes="144x144" type="image/png" href="app/images/icons/novnc-144x144.png"> + <link rel="icon" sizes="152x152" type="image/png" href="app/images/icons/novnc-152x152.png"> + <link rel="icon" sizes="192x192" type="image/png" href="app/images/icons/novnc-192x192.png"> + <!-- Firefox currently mishandles SVG, see #1419039 + <link rel="icon" sizes="any" type="image/svg+xml" href="app/images/icons/novnc-icon.svg"> + --> + <!-- Repeated last so that legacy handling will pick this --> + <link rel="icon" sizes="16x16" type="image/png" href="app/images/icons/novnc-16x16.png"> <!-- Apple iOS Safari settings --> - <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> + <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" /> - <!-- App Start Icon --> - <link rel="apple-touch-startup-image" href="images/screen_320x460.png" /> - <!-- For iOS devices set the icon to use if user bookmarks app on their homescreen --> - <link rel="apple-touch-icon" href="images/screen_57x57.png"> - <!-- - <link rel="apple-touch-icon-precomposed" href="images/screen_57x57.png" /> - --> - + <!-- Home Screen Icons (favourites and bookmarks use the normal icons) --> + <link rel="apple-touch-icon" sizes="60x60" type="image/png" href="app/images/icons/novnc-60x60.png"> + <link rel="apple-touch-icon" sizes="76x76" type="image/png" href="app/images/icons/novnc-76x76.png"> + <link rel="apple-touch-icon" sizes="120x120" type="image/png" href="app/images/icons/novnc-120x120.png"> + <link rel="apple-touch-icon" sizes="152x152" type="image/png" href="app/images/icons/novnc-152x152.png"> <!-- Stylesheets --> - <link rel="stylesheet" href="include/base.css" /> - <link rel="alternate stylesheet" href="include/black.css" TITLE="Black" /> - <link rel="alternate stylesheet" href="include/blue.css" TITLE="Blue" /> + <link rel="stylesheet" href="app/styles/base.css" /> <!-- <script type='text/javascript' src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script> --> + <!-- this is included as a normal file in order to catch script-loading errors as well --> + <script type="text/javascript" src="app/error-handler.js"></script> + + <!-- begin scripts --> + <!-- promise polyfills promises for IE11 --> + <script src="vendor/promise.js"></script> + <!-- ES2015/ES6 modules polyfill --> + <script type="module"> + window._noVNC_has_module_support = true; + </script> + <script> + window.addEventListener("load", function() { + if (window._noVNC_has_module_support) return; + var loader = document.createElement("script"); + loader.src = "vendor/browser-es-module-loader/dist/browser-es-module-loader.js"; + document.head.appendChild(loader); + }); + </script> + <!-- actual script modules --> + <script type="module" crossorigin="anonymous" src="app/ui.js"></script> + <!-- end scripts --> </head> <body> - <div id="noVNC-control-bar"> - <!--noVNC Mobile Device only Buttons--> - <div class="noVNC-buttons-left"> - <input type="image" alt="viewport drag" src="images/drag.png" - id="noVNC_view_drag_button" class="noVNC_status_button" - title="Move/Drag Viewport"> - <div id="noVNC_mobile_buttons"> - <input type="image" alt="No mousebutton" src="images/mouse_none.png" - id="noVNC_mouse_button0" class="noVNC_status_button"> - <input type="image" alt="Left mousebutton" src="images/mouse_left.png" - id="noVNC_mouse_button1" class="noVNC_status_button"> - <input type="image" alt="Middle mousebutton" src="images/mouse_middle.png" - id="noVNC_mouse_button2" class="noVNC_status_button"> - <input type="image" alt="Right mousebutton" src="images/mouse_right.png" - id="noVNC_mouse_button4" class="noVNC_status_button"> - <input type="image" alt="Keyboard" src="images/keyboard.png" - id="showKeyboard" class="noVNC_status_button" - value="Keyboard" title="Show Keyboard"/> - <!-- Note that Google Chrome on Android doesn't respect any of these, - html attributes which attempt to disable text suggestions on the - on-screen keyboard. Let's hope Chrome implements the ime-mode - style for example --> - <textarea id="keyboardinput" autocapitalize="off" - autocorrect="off" autocomplete="off" spellcheck="false" - mozactionhint="Enter" onsubmit="return false;" - style="ime-mode: disabled;"></textarea> - <div id="noVNC_extra_keys"> - <input type="image" alt="Extra keys" src="images/showextrakeys.png" - id="showExtraKeysButton" class="noVNC_status_button"> - <input type="image" alt="Ctrl" src="images/ctrl.png" - id="toggleCtrlButton" class="noVNC_status_button"> - <input type="image" alt="Alt" src="images/alt.png" - id="toggleAltButton" class="noVNC_status_button"> - <input type="image" alt="Tab" src="images/tab.png" - id="sendTabButton" class="noVNC_status_button"> - <input type="image" alt="Esc" src="images/esc.png" - id="sendEscButton" class="noVNC_status_button"> - </div> - </div> + + <div id="noVNC_fallback_error" class="noVNC_center"> + <div> + <div>noVNC encountered an error:</div> + <br> + <div id="noVNC_fallback_errormsg"></div> </div> + </div> - <div id="noVNC_status">Loading</div> + <!-- noVNC Control Bar --> + <div id="noVNC_control_bar_anchor" class="noVNC_vcenter"> - <!--noVNC Buttons--> - <div class="noVNC-buttons-right"> - <input type="image" alt="Ctrl+Alt+Del" src="images/ctrlaltdel.png" - id="sendCtrlAltDelButton" class="noVNC_status_button" - title="Send Ctrl-Alt-Del" /> - <input type="image" alt="Shutdown/Reboot" src="images/power.png" - id="xvpButton" class="noVNC_status_button" - title="Shutdown/Reboot..." /> - <input type="image" alt="Clipboard" src="images/clipboard.png" - id="clipboardButton" class="noVNC_status_button" - title="Clipboard" /> - <input type="image" alt="Settings" src="images/settings.png" - id="settingsButton" class="noVNC_status_button" - title="Settings" /> - <input type="image" alt="Connect" src="images/connect.png" - id="connectButton" class="noVNC_status_button" - title="Connect" /> - <input type="image" alt="Disconnect" src="images/disconnect.png" - id="disconnectButton" class="noVNC_status_button" - title="Disconnect" /> - </div> + <div id="noVNC_control_bar"> + <div id="noVNC_control_bar_handle" title="Hide/Show the control bar"><div></div></div> - <!-- Description Panel --> - <!-- Shown by default when hosted at for kanaka.github.com --> - <div id="noVNC_description" class=""> - noVNC is a browser based VNC client implemented using HTML5 Canvas - and WebSockets. You will either need a VNC server with WebSockets - support (such as <a href="http://libvncserver.sourceforge.net/">libvncserver</a>) - or you will need to use - <a href="https://github.com/kanaka/websockify">websockify</a> - to bridge between your browser and VNC server. See the noVNC - <a href="https://github.com/kanaka/noVNC">README</a> - and <a href="http://kanaka.github.com/noVNC">website</a> - for more information. - <br /> - <input id="descriptionButton" type="button" value="Close"> - </div> + <div class="noVNC_scroll"> - <!-- Popup Status Panel --> - <div id="noVNC_popup_status_panel" class=""> - </div> + <h1 class="noVNC_logo" translate="no"><span>no</span><br />VNC</h1> - <!-- Clipboard Panel --> - <div id="noVNC_clipboard" class="triangle-right top"> - <textarea id="noVNC_clipboard_text" rows=5> - </textarea> - <br /> - <input id="noVNC_clipboard_clear_button" type="button" - value="Clear"> - </div> + <!-- Drag/Pan the viewport --> + <input type="image" alt="viewport drag" src="app/images/drag.svg" + id="noVNC_view_drag_button" class="noVNC_button noVNC_hidden" + title="Move/Drag Viewport" /> - <!-- XVP Shutdown/Reboot Panel --> - <div id="noVNC_xvp" class="triangle-right top"> - <span id="noVNC_xvp_menu"> - <input type="button" id="xvpShutdownButton" value="Shutdown" /> - <input type="button" id="xvpRebootButton" value="Reboot" /> - <input type="button" id="xvpResetButton" value="Reset" /> - </span> - </div> + <!--noVNC Touch Device only buttons--> + <div id="noVNC_mobile_buttons"> + <input type="image" alt="No mousebutton" src="app/images/mouse_none.svg" + id="noVNC_mouse_button0" class="noVNC_button" + title="Active Mouse Button"/> + <input type="image" alt="Left mousebutton" src="app/images/mouse_left.svg" + id="noVNC_mouse_button1" class="noVNC_button" + title="Active Mouse Button"/> + <input type="image" alt="Middle mousebutton" src="app/images/mouse_middle.svg" + id="noVNC_mouse_button2" class="noVNC_button" + title="Active Mouse Button"/> + <input type="image" alt="Right mousebutton" src="app/images/mouse_right.svg" + id="noVNC_mouse_button4" class="noVNC_button" + title="Active Mouse Button"/> + <input type="image" alt="Keyboard" src="app/images/keyboard.svg" + id="noVNC_keyboard_button" class="noVNC_button" + value="Keyboard" title="Show Keyboard" /> + </div> + + <!-- Extra manual keys --> + <div id="noVNC_extra_keys"> + <input type="image" alt="Extra keys" src="app/images/toggleextrakeys.svg" + id="noVNC_toggle_extra_keys_button" class="noVNC_button" + title="Show Extra Keys"/> + <div class="noVNC_vcenter"> + <div id="noVNC_modifiers" class="noVNC_panel"> + <input type="image" alt="Ctrl" src="app/images/ctrl.svg" + id="noVNC_toggle_ctrl_button" class="noVNC_button" + title="Toggle Ctrl"/> + <input type="image" alt="Alt" src="app/images/alt.svg" + id="noVNC_toggle_alt_button" class="noVNC_button" + title="Toggle Alt"/> + <input type="image" alt="Tab" src="app/images/tab.svg" + id="noVNC_send_tab_button" class="noVNC_button" + title="Send Tab"/> + <input type="image" alt="Esc" src="app/images/esc.svg" + id="noVNC_send_esc_button" class="noVNC_button" + title="Send Escape"/> + <input type="image" alt="Ctrl+Alt+Del" src="app/images/ctrlaltdel.svg" + id="noVNC_send_ctrl_alt_del_button" class="noVNC_button" + title="Send Ctrl-Alt-Del" /> + </div> + </div> + </div> + + <!-- Shutdown/Reboot --> + <input type="image" alt="Shutdown/Reboot" src="app/images/power.svg" + id="noVNC_power_button" class="noVNC_button" + title="Shutdown/Reboot..." /> + <div class="noVNC_vcenter"> + <div id="noVNC_power" class="noVNC_panel"> + <div class="noVNC_heading"> + <img src="app/images/power.svg"> Power + </div> + <input type="button" id="noVNC_shutdown_button" value="Shutdown" /> + <input type="button" id="noVNC_reboot_button" value="Reboot" /> + <input type="button" id="noVNC_reset_button" value="Reset" /> + </div> + </div> + + <!-- Clipboard --> + <input type="image" alt="Clipboard" src="app/images/clipboard.svg" + id="noVNC_clipboard_button" class="noVNC_button" + title="Clipboard" /> + <div class="noVNC_vcenter"> + <div id="noVNC_clipboard" class="noVNC_panel"> + <div class="noVNC_heading"> + <img src="app/images/clipboard.svg"> Clipboard + </div> + <textarea id="noVNC_clipboard_text" rows=5></textarea> + <br /> + <input id="noVNC_clipboard_clear_button" type="button" + value="Clear" class="noVNC_submit" /> + </div> + </div> - <!-- Settings Panel --> - <div id="noVNC_settings" class="triangle-right top"> - <span id="noVNC_settings_menu"> + <!-- Toggle fullscreen --> + <input type="image" alt="Fullscreen" src="app/images/fullscreen.svg" + id="noVNC_fullscreen_button" class="noVNC_button noVNC_hidden" + title="Fullscreen" /> + + <!-- Settings --> + <input type="image" alt="Settings" src="app/images/settings.svg" + id="noVNC_settings_button" class="noVNC_button" + title="Settings" /> + <div class="noVNC_vcenter"> + <div id="noVNC_settings" class="noVNC_panel"> <ul> - <li><input id="noVNC_encrypt" type="checkbox"> Encrypt</li> - <li><input id="noVNC_true_color" type="checkbox" checked> True Color</li> - <li><input id="noVNC_cursor" type="checkbox"> Local Cursor</li> - <li><input id="noVNC_clip" type="checkbox"> Clip to Window</li> - <li><input id="noVNC_shared" type="checkbox"> Shared Mode</li> - <li><input id="noVNC_view_only" type="checkbox"> View Only</li> - <li><input id="noVNC_path" type="input" value="websockify"> Path</li> - <li><input id="noVNC_repeaterID" type="input" value=""> Repeater ID</li> - <hr> - <!-- Stylesheet selection dropdown --> - <li><label><strong>Style: </strong> - <select id="noVNC_stylesheet" name="vncStyle"> - <option value="default">default</option> - </select></label> + <li class="noVNC_heading"> + <img src="app/images/settings.svg"> Settings </li> - - <!-- Logging selection dropdown --> - <li><label><strong>Logging: </strong> - <select id="noVNC_logging" name="vncLogging"> - </select></label> + <li> + <label><input id="noVNC_setting_shared" type="checkbox" /> Shared Mode</label> + </li> + <li> + <label><input id="noVNC_setting_view_only" type="checkbox" /> View Only</label> + </li> + <li><hr></li> + <li> + <label><input id="noVNC_setting_view_clip" type="checkbox" /> Clip to Window</label> + </li> + <li> + <label for="noVNC_setting_resize">Scaling Mode:</label> + <select id="noVNC_setting_resize" name="vncResize"> + <option value="off">None</option> + <option value="scale">Local Scaling</option> + <option value="remote">Remote Resizing</option> + </select> + </li> + <li><hr></li> + <li> + <div class="noVNC_expander">Advanced</div> + <div><ul> + <li> + <label for="noVNC_setting_repeaterID">Repeater ID:</label> + <input id="noVNC_setting_repeaterID" type="input" value="" /> + </li> + <li> + <div class="noVNC_expander">WebSocket</div> + <div><ul> + <li> + <label><input id="noVNC_setting_encrypt" type="checkbox" /> Encrypt</label> + </li> + <li> + <label for="noVNC_setting_host">Host:</label> + <input id="noVNC_setting_host" /> + </li> + <li> + <label for="noVNC_setting_port">Port:</label> + <input id="noVNC_setting_port" type="number" /> + </li> + <li> + <label for="noVNC_setting_path">Path:</label> + <input id="noVNC_setting_path" type="input" value="websockify" /> + </li> + </ul></div> + </li> + <li><hr></li> + <li> + <label><input id="noVNC_setting_reconnect" type="checkbox" /> Automatic Reconnect</label> + </li> + <li> + <label for="noVNC_setting_reconnect_delay">Reconnect Delay (ms):</label> + <input id="noVNC_setting_reconnect_delay" type="number" /> + </li> + <li><hr></li> + <!-- Logging selection dropdown --> + <li> + <label>Logging: + <select id="noVNC_setting_logging" name="vncLogging"> + </select> + </label> + </li> + </ul></div> </li> - <hr> - <li><input type="button" id="noVNC_apply" value="Apply"></li> </ul> - </span> - </div> + </div> + </div> + + <!-- Connection Controls --> + <input type="image" alt="Disconnect" src="app/images/disconnect.svg" + id="noVNC_disconnect_button" class="noVNC_button" + title="Disconnect" /> - <!-- Connection Panel --> - <div id="noVNC_controls" class="triangle-right top"> - <ul> - <li><label><strong>Host: </strong><input id="noVNC_host" /></label></li> - <li><label><strong>Port: </strong><input id="noVNC_port" /></label></li> - <li><label><strong>Password: </strong><input id="noVNC_password" type="password" /></label></li> - <li><input id="noVNC_connect_button" type="button" value="Connect"></li> - </ul> + </div> </div> - </div> <!-- End of noVNC-control-bar --> + <div id="noVNC_control_bar_hint"></div> + + </div> <!-- End of noVNC_control_bar --> + <!-- Status Dialog --> + <div id="noVNC_status"></div> - <div id="noVNC_screen"> - <div id="noVNC_screen_pad"></div> + <!-- Connect button --> + <div class="noVNC_center"> + <div id="noVNC_connect_dlg"> + <div class="noVNC_logo" translate="no"><span>no</span>VNC</div> + <div id="noVNC_connect_button"><div> + <img src="app/images/connect.svg"> Connect + </div></div> + </div> + </div> - <h1 id="noVNC_logo"><span>no</span><br />VNC</h1> + <!-- Password Dialog --> + <div class="noVNC_center noVNC_connect_layer"> + <div id="noVNC_password_dlg" class="noVNC_panel"><form> + <ul> + <li> + <label>Password:</label> + <input id="noVNC_password_input" type="password" /> + </li> + <li> + <input id="noVNC_password_button" type="submit" value="Send Password" class="noVNC_submit" /> + </li> + </ul> + </form></div> + </div> - <!-- HTML5 Canvas --> - <div id="noVNC_container"> - <canvas id="noVNC_canvas" width="640px" height="20px"> - Canvas not supported. - </canvas> + <!-- Transition Screens --> + <div id="noVNC_transition"> + <div id="noVNC_transition_text"></div> + <div> + <input type="button" id="noVNC_cancel_reconnect_button" value="Cancel" class="noVNC_submit" /> </div> + <div class="noVNC_spinner"></div> + </div> + <!-- This is where the RFB elements will attach --> + <div id="noVNC_container"> + <!-- Note that Google Chrome on Android doesn't respect any of these, + html attributes which attempt to disable text suggestions on the + on-screen keyboard. Let's hope Chrome implements the ime-mode + style for example --> + <textarea id="noVNC_keyboardinput" autocapitalize="off" + autocorrect="off" autocomplete="off" spellcheck="false" + mozactionhint="Enter" tabindex="-1"></textarea> </div> - <script src="include/util.js"></script> - <script src="include/ui.js"></script> + <audio id="noVNC_bell"> + <source src="app/sounds/bell.oga" type="audio/ogg"> + <source src="app/sounds/bell.mp3" type="audio/mpeg"> + </audio> </body> </html> |