Signed-off-by: Dominik Csapak <d.csa...@proxmox.com> --- i tested around a bit, everything seemed to work
.../0001-add-pve-specific-js-code.patch | 78 +++++------ ...002-add-custom-fbresize-event-on-rfb.patch | 19 ++- ...nge-scaling-when-toggling-fullscreen.patch | 15 +-- debian/patches/0004-add-pve-style.patch | 23 ++-- debian/patches/0005-remove-vnc-logos.patch | 30 ++--- ...ge-src-directory-for-images-js-files.patch | 124 +++++++++--------- .../patches/0007-add-pve-vnc-commands.patch | 11 +- ...add-replaceable-snippets-in-vnc.html.patch | 23 ++-- .../0009-decrease-animation-time.patch | 21 ++- debian/patches/0010-use-only-app.js.patch | 11 +- .../0011-add-localCursor-setting-to-rfb.patch | 55 ++++---- .../0012-pass-custom-command-to-vnc.patch | 14 +- 12 files changed, 195 insertions(+), 229 deletions(-) diff --git a/debian/patches/0001-add-pve-specific-js-code.patch b/debian/patches/0001-add-pve-specific-js-code.patch index c03901b..44e62a5 100644 --- a/debian/patches/0001-add-pve-specific-js-code.patch +++ b/debian/patches/0001-add-pve-specific-js-code.patch @@ -1,7 +1,7 @@ -From 9607c6496f643fde5435fa799702961dd22bf81a Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dominik Csapak <d.csa...@proxmox.com> Date: Tue, 13 Dec 2016 16:11:35 +0100 -Subject: [PATCH 01/10] add pve specific js code +Subject: [PATCH 01/12] add pve specific js code this adds a es6 module 'PVEUI' which we use for defining the pve related methods (API2Request, etc.) @@ -11,10 +11,10 @@ autoresizing, commandstoggle, etc. Signed-off-by: Dominik Csapak <d.csa...@proxmox.com> --- - app/pve.js | 418 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - app/ui.js | 71 +++++++++-- + app/pve.js | 418 +++++++++++++++++++++++++++++++++++++++++++++++++++++ + app/ui.js | 66 +++++++-- vnc.html | 10 +- - 3 files changed, 482 insertions(+), 17 deletions(-) + 3 files changed, 480 insertions(+), 14 deletions(-) create mode 100644 app/pve.js diff --git a/app/pve.js b/app/pve.js @@ -442,10 +442,10 @@ index 0000000..e2c37fb + }, +}; diff --git a/app/ui.js b/app/ui.js -index 4fe2a3f..59f7cca 100644 +index 17ec48d..4683c02 100644 --- a/app/ui.js +++ b/app/ui.js -@@ -17,6 +17,7 @@ import keysyms from "../core/input/keysymdef.js"; +@@ -16,6 +16,7 @@ import keysyms from "../core/input/keysymdef.js"; import Keyboard from "../core/input/keyboard.js"; import RFB from "../core/rfb.js"; import * as WebUtil from "./webutil.js"; @@ -453,15 +453,16 @@ index 4fe2a3f..59f7cca 100644 const UI = { -@@ -58,6 +59,7 @@ const UI = { +@@ -54,6 +55,8 @@ const UI = { // Render default UI and initialize settings menu - start(callback) { + start() { + UI.PVE = new PVEUI(UI); - // Setup global variables first - UI.isSafari = (navigator.userAgent.indexOf('Safari') !== -1 && - navigator.userAgent.indexOf('Chrome') === -1); -@@ -89,6 +91,9 @@ const UI = { ++ + UI.initSettings(); + + // Translate the DOM +@@ -81,6 +84,9 @@ const UI = { UI.addConnectionControlHandlers(); UI.addClipboardHandlers(); UI.addSettingsHandlers(); @@ -471,7 +472,7 @@ index 4fe2a3f..59f7cca 100644 document.getElementById("noVNC_status") .addEventListener('click', UI.hideStatus); -@@ -97,23 +102,19 @@ const UI = { +@@ -89,19 +95,15 @@ const UI = { UI.openControlbar(); @@ -491,18 +492,11 @@ index 4fe2a3f..59f7cca 100644 - // Show the connect panel on first load unless autoconnecting - UI.openConnectPanel(); - } - -- if (typeof callback === "function") { -- callback(UI.rfb); -- } -+ if (typeof callback === "function") { -+ callback(UI.rfb); -+ } + }); - }, - initFullscreen() { -@@ -156,9 +157,10 @@ const UI = { + return Promise.resolve(UI.rfb); + }, +@@ -145,9 +147,10 @@ const UI = { /* Populate the controls if defaults are provided in the URL */ UI.initSetting('host', window.location.hostname); UI.initSetting('port', port); @@ -513,16 +507,16 @@ index 4fe2a3f..59f7cca 100644 + UI.initSetting('autoresize', true); UI.initSetting('shared', true); UI.initSetting('view_only', false); - UI.initSetting('path', 'websockify'); -@@ -342,6 +344,7 @@ const UI = { + UI.initSetting('show_dot', false); +@@ -334,6 +337,7 @@ const UI = { UI.addSettingChangeHandler('resize'); - UI.addSettingChangeHandler('resize', UI.enableDisableViewClip); UI.addSettingChangeHandler('resize', UI.applyResizeMode); + UI.addSettingChangeHandler('resize', UI.updateViewClip); + UI.addSettingChangeHandler('autoresize'); UI.addSettingChangeHandler('view_clip'); UI.addSettingChangeHandler('view_clip', UI.updateViewClip); UI.addSettingChangeHandler('shared'); -@@ -390,6 +393,9 @@ const UI = { +@@ -384,6 +388,9 @@ const UI = { document.documentElement.classList.add("noVNC_connecting"); break; case 'connected': @@ -532,7 +526,7 @@ index 4fe2a3f..59f7cca 100644 document.documentElement.classList.add("noVNC_connected"); break; case 'disconnecting': -@@ -397,6 +403,11 @@ const UI = { +@@ -391,6 +398,11 @@ const UI = { document.documentElement.classList.add("noVNC_disconnecting"); break; case 'disconnected': @@ -544,7 +538,7 @@ index 4fe2a3f..59f7cca 100644 break; case 'reconnecting': transition_elem.textContent = _("Reconnecting..."); -@@ -818,6 +829,7 @@ const UI = { +@@ -805,6 +817,7 @@ const UI = { UI.closePowerPanel(); UI.closeClipboardPanel(); UI.closeExtraKeys(); @@ -552,7 +546,7 @@ index 4fe2a3f..59f7cca 100644 }, /* ------^------- -@@ -993,6 +1005,12 @@ const UI = { +@@ -980,6 +993,12 @@ const UI = { UI.reconnect_password = password; } @@ -565,7 +559,7 @@ index 4fe2a3f..59f7cca 100644 if (password === null) { password = undefined; } -@@ -1567,9 +1585,36 @@ const UI = { +@@ -1549,9 +1568,36 @@ const UI = { /* ------^------- * /EXTRA KEYS * ============== @@ -604,25 +598,26 @@ index 4fe2a3f..59f7cca 100644 const view_only = UI.rfb.viewOnly; if (UI.rfb && !view_only) { diff --git a/vnc.html b/vnc.html -index 701714c..6c041b5 100644 +index 212321b..072d86b 100644 --- a/vnc.html +++ b/vnc.html -@@ -200,7 +200,7 @@ +@@ -191,7 +191,7 @@ <li class="noVNC_heading"> - <img src="app/images/settings.svg"> Settings + <img alt="" src="app/images/settings.svg"> Settings </li> - <li> + <li style="display:none;"> - <label><input id="noVNC_setting_shared" type="checkbox" /> Shared Mode</label> + <label><input id="noVNC_setting_shared" type="checkbox"> Shared Mode</label> </li> <li> -@@ -211,15 +211,17 @@ - <label><input id="noVNC_setting_view_clip" type="checkbox" /> Clip to Window</label> - </li> +@@ -201,16 +201,18 @@ <li> + <label><input id="noVNC_setting_view_clip" type="checkbox"> Clip to Window</label> + </li> ++ <li> + <label><input id="noVNC_setting_autoresize" type="checkbox" /> Autoresize Window</label> + </li> -+ <li> + <li> <label for="noVNC_setting_resize">Scaling Mode:</label> <select id="noVNC_setting_resize" name="vncResize"> - <option value="off">None</option> @@ -637,6 +632,3 @@ index 701714c..6c041b5 100644 <div class="noVNC_expander">Advanced</div> <div><ul> <li> --- -2.11.0 - diff --git a/debian/patches/0002-add-custom-fbresize-event-on-rfb.patch b/debian/patches/0002-add-custom-fbresize-event-on-rfb.patch index e88e974..a63e049 100644 --- a/debian/patches/0002-add-custom-fbresize-event-on-rfb.patch +++ b/debian/patches/0002-add-custom-fbresize-event-on-rfb.patch @@ -1,7 +1,7 @@ -From 4bf525059741e1bb68e355904fb82e8c1639aff9 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dominik Csapak <d.csa...@proxmox.com> Date: Wed, 9 May 2018 10:47:53 +0200 -Subject: [PATCH 02/10] add custom fbresize event on rfb +Subject: [PATCH 02/12] add custom fbresize event on rfb this can be use to react to changes of the resolution, like resizing the window @@ -13,10 +13,10 @@ Signed-off-by: Dominik Csapak <d.csa...@proxmox.com> 2 files changed, 21 insertions(+) diff --git a/app/ui.js b/app/ui.js -index 59f7cca..d960a12 100644 +index 4683c02..1b0f7aa 100644 --- a/app/ui.js +++ b/app/ui.js -@@ -1050,6 +1050,7 @@ const UI = { +@@ -1039,6 +1039,7 @@ const UI = { UI.rfb.addEventListener("clipboard", UI.clipboardReceive); UI.rfb.addEventListener("bell", UI.bell); UI.rfb.addEventListener("desktopname", UI.updateDesktopName); @@ -24,7 +24,7 @@ index 59f7cca..d960a12 100644 UI.rfb.clipViewport = UI.getSetting('view_clip'); UI.rfb.scaleViewport = UI.getSetting('resize') === 'scale'; UI.rfb.resizeSession = UI.getSetting('resize') === 'remote'; -@@ -1610,6 +1611,16 @@ const UI = { +@@ -1593,6 +1594,16 @@ const UI = { document.getElementById('pve_commands_button').classList.remove("noVNC_selected"); }, @@ -42,10 +42,10 @@ index 59f7cca..d960a12 100644 * /PVE * ============== diff --git a/core/rfb.js b/core/rfb.js -index 3433030..3e0f176 100644 +index 89b8130..c079af1 100644 --- a/core/rfb.js +++ b/core/rfb.js -@@ -1593,6 +1593,16 @@ export default class RFB extends EventTargetMixin { +@@ -1670,6 +1670,16 @@ export default class RFB extends EventTargetMixin { this._updateClip(); this._updateScale(); @@ -59,9 +59,6 @@ index 3433030..3e0f176 100644 + ); + this.dispatchEvent(event); + - this._timing.fbu_rt_start = (new Date()).getTime(); this._updateContinuousUpdates(); } --- -2.11.0 - + diff --git a/debian/patches/0003-change-scaling-when-toggling-fullscreen.patch b/debian/patches/0003-change-scaling-when-toggling-fullscreen.patch index bb1eac1..3f6080e 100644 --- a/debian/patches/0003-change-scaling-when-toggling-fullscreen.patch +++ b/debian/patches/0003-change-scaling-when-toggling-fullscreen.patch @@ -1,7 +1,7 @@ -From ce3216300e07c2723dc934c734dda432355a3100 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dominik Csapak <d.csa...@proxmox.com> Date: Thu, 11 May 2017 10:34:10 +0200 -Subject: [PATCH 03/10] change scaling when toggling fullscreen +Subject: [PATCH 03/12] change scaling when toggling fullscreen when activating fullscreen, we change the scaling to 'scale', and changing it back when leaving fullscreen @@ -12,10 +12,10 @@ Signed-off-by: Dominik Csapak <d.csa...@proxmox.com> 1 file changed, 11 insertions(+) diff --git a/app/ui.js b/app/ui.js -index d960a12..662352f 100644 +index 1b0f7aa..8cc6cfd 100644 --- a/app/ui.js +++ b/app/ui.js -@@ -1212,6 +1212,13 @@ const UI = { +@@ -1201,6 +1201,13 @@ const UI = { } else if (document.msExitFullscreen) { document.msExitFullscreen(); } @@ -29,7 +29,7 @@ index d960a12..662352f 100644 } else { if (document.documentElement.requestFullscreen) { document.documentElement.requestFullscreen(); -@@ -1222,7 +1229,11 @@ const UI = { +@@ -1211,7 +1218,11 @@ const UI = { } else if (document.body.msRequestFullscreen) { document.body.msRequestFullscreen(); } @@ -38,9 +38,6 @@ index d960a12..662352f 100644 + UI.enableSetting('resize'); } + UI.applyResizeMode(); - UI.enableDisableViewClip(); UI.updateFullscreenButton(); }, --- -2.11.0 - + diff --git a/debian/patches/0004-add-pve-style.patch b/debian/patches/0004-add-pve-style.patch index 61f301b..a733168 100644 --- a/debian/patches/0004-add-pve-style.patch +++ b/debian/patches/0004-add-pve-style.patch @@ -1,7 +1,7 @@ -From ad3490e9908ce0a65ef40576520fb33236b5c102 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dominik Csapak <d.csa...@proxmox.com> Date: Tue, 13 Dec 2016 16:03:41 +0100 -Subject: [PATCH 04/10] add pve style +Subject: [PATCH 04/12] add pve style this adds the custom pve style (based on black.css) @@ -11,8 +11,8 @@ and fix the z-index of the connect overlay Signed-off-by: Dominik Csapak <d.csa...@proxmox.com> --- app/styles/pve.css | 42 ++++++++++++++++++++++++++++++++++++++++++ - vnc.html | 1 + - 2 files changed, 43 insertions(+) + vnc.html | 3 ++- + 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 app/styles/pve.css diff --git a/app/styles/pve.css b/app/styles/pve.css @@ -64,17 +64,16 @@ index 0000000..eaeb5cb + background: #5BA8DF; +} diff --git a/vnc.html b/vnc.html -index 6c041b5..3110e8b 100644 +index 072d86b..57b44a1 100644 --- a/vnc.html +++ b/vnc.html -@@ -55,6 +55,7 @@ +@@ -48,7 +48,8 @@ + <link rel="apple-touch-icon" sizes="152x152" type="image/png" href="app/images/icons/novnc-152x152.png"> <!-- Stylesheets --> - <link rel="stylesheet" href="app/styles/base.css" /> +- <link rel="stylesheet" href="app/styles/base.css"> ++ <link rel="stylesheet" href="app/styles/base.css" /> + <link rel="stylesheet" href="/novnc/app/styles/pve.css" /> - <!-- - <script type='text/javascript' --- -2.11.0 - + <!-- this is included as a normal file in order to catch script-loading errors as well --> + <script src="app/error-handler.js"></script> diff --git a/debian/patches/0005-remove-vnc-logos.patch b/debian/patches/0005-remove-vnc-logos.patch index a477e01..aca64d9 100644 --- a/debian/patches/0005-remove-vnc-logos.patch +++ b/debian/patches/0005-remove-vnc-logos.patch @@ -1,24 +1,24 @@ -From b093138dedf1c2b8f5b91fe8819092bf8f1371be Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dominik Csapak <d.csa...@proxmox.com> Date: Fri, 20 Jan 2017 10:35:05 +0100 -Subject: [PATCH 05/10] remove vnc logos +Subject: [PATCH 05/12] remove vnc logos to show the pve icon instead Signed-off-by: Dominik Csapak <d.csa...@proxmox.com> --- - vnc.html | 26 -------------------------- - 1 file changed, 26 deletions(-) + vnc.html | 32 +++----------------------------- + 1 file changed, 3 insertions(+), 29 deletions(-) diff --git a/vnc.html b/vnc.html -index 3110e8b..bc1a47d 100644 +index 57b44a1..1420849 100644 --- a/vnc.html +++ b/vnc.html -@@ -23,36 +23,10 @@ - Remove this if you use the .htaccess --> - <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> +@@ -17,36 +17,10 @@ -- <!-- Icons (see Makefile for what the sizes are for) --> + <meta charset="utf-8"> + +- <!-- Icons (see app/images/icons/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"> @@ -39,18 +39,18 @@ index 3110e8b..bc1a47d 100644 - <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="apple-mobile-web-app-capable" content="yes" /> - <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" /> +- <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"> - <!-- 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"> - ++ <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" /> <!-- Stylesheets --> <link rel="stylesheet" href="app/styles/base.css" /> <link rel="stylesheet" href="/novnc/app/styles/pve.css" /> --- -2.11.0 - diff --git a/debian/patches/0006-change-src-directory-for-images-js-files.patch b/debian/patches/0006-change-src-directory-for-images-js-files.patch index 209d6e3..b5e051a 100644 --- a/debian/patches/0006-change-src-directory-for-images-js-files.patch +++ b/debian/patches/0006-change-src-directory-for-images-js-files.patch @@ -1,7 +1,7 @@ -From 127328ecd3996a572d202d9a33da98cad24ecc75 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dominik Csapak <d.csa...@proxmox.com> Date: Tue, 17 Jan 2017 17:24:03 +0100 -Subject: [PATCH 06/10] change src directory for images/js files +Subject: [PATCH 06/12] change src directory for images/js files since they will be in /novnc/ also change the directory in the build script @@ -9,27 +9,27 @@ also change the directory in the build script Signed-off-by: Dominik Csapak <d.csa...@proxmox.com> --- app/ui.js | 2 +- - vnc.html | 56 ++++++++++++++++++++++++++++---------------------------- - 2 files changed, 29 insertions(+), 29 deletions(-) + vnc.html | 58 +++++++++++++++++++++++++++---------------------------- + 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/app/ui.js b/app/ui.js -index 662352f..c523fcd 100644 +index 8cc6cfd..7201179 100644 --- a/app/ui.js +++ b/app/ui.js -@@ -1720,7 +1720,7 @@ const UI = { - const LINGUAS = ["de", "el", "es", "nl", "pl", "sv", "tr", "zh_CN", "zh_TW"]; - l10n.setup(LINGUAS); - if (l10n.language !== "en" && l10n.dictionary === undefined) { -- WebUtil.fetchJSON('app/locale/' + l10n.language + '.json', (translations) => { -+ WebUtil.fetchJSON('/novnc/app/locale/' + l10n.language + '.json', function (translations) { - l10n.dictionary = translations; - - // wait for translations to load before loading the UI +@@ -1713,7 +1713,7 @@ l10n.setup(LINGUAS); + if (l10n.language === "en" || l10n.dictionary !== undefined) { + UI.prime(); + } else { +- WebUtil.fetchJSON('app/locale/' + l10n.language + '.json') ++ WebUtil.fetchJSON('/novnc/app/locale/' + l10n.language + '.json') + .then((translations) => { l10n.dictionary = translations; }) + .catch(err => Log.Error("Failed to load translations: " + err)) + .then(UI.prime); diff --git a/vnc.html b/vnc.html -index bc1a47d..d17ee81 100644 +index 1420849..f93cf89 100644 --- a/vnc.html +++ b/vnc.html -@@ -28,7 +28,7 @@ +@@ -22,15 +22,15 @@ <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" /> <!-- Stylesheets --> @@ -37,13 +37,9 @@ index bc1a47d..d17ee81 100644 + <link rel="stylesheet" href="/novnc/app/styles/base.css" /> <link rel="stylesheet" href="/novnc/app/styles/pve.css" /> - <!-- -@@ -37,11 +37,11 @@ - --> - <!-- 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> -+ <script type="text/javascript" src="/novnc/app/error-handler.js"></script> +- <script src="app/error-handler.js"></script> ++ <script src="/novnc/app/error-handler.js"></script> <!-- begin scripts --> <!-- promise polyfills promises for IE11 --> @@ -52,7 +48,7 @@ index bc1a47d..d17ee81 100644 <!-- ES2015/ES6 modules polyfill --> <script type="module"> window._noVNC_has_module_support = true; -@@ -50,12 +50,12 @@ +@@ -39,12 +39,12 @@ window.addEventListener("load", function() { if (window._noVNC_has_module_support) return; var loader = document.createElement("script"); @@ -67,37 +63,36 @@ index bc1a47d..d17ee81 100644 <!-- end scripts --> </head> -@@ -80,49 +80,49 @@ - <h1 class="noVNC_logo" translate="no"><span>no</span><br />VNC</h1> +@@ -69,51 +69,51 @@ + <h1 class="noVNC_logo" translate="no"><span>no</span><br>VNC</h1> <!-- Drag/Pan the viewport --> - <input type="image" alt="viewport drag" src="app/images/drag.svg" + <input type="image" alt="viewport drag" src="/novnc/app/images/drag.svg" id="noVNC_view_drag_button" class="noVNC_button noVNC_hidden" - title="Move/Drag Viewport" /> + title="Move/Drag Viewport"> <!--noVNC Touch Device only buttons--> <div id="noVNC_mobile_buttons"> - <input type="image" alt="No mousebutton" src="app/images/mouse_none.svg" + <input type="image" alt="No mousebutton" src="/novnc/app/images/mouse_none.svg" id="noVNC_mouse_button0" class="noVNC_button" - title="Active Mouse Button"/> + title="Active Mouse Button"> - <input type="image" alt="Left mousebutton" src="app/images/mouse_left.svg" + <input type="image" alt="Left mousebutton" src="/novnc/app/images/mouse_left.svg" id="noVNC_mouse_button1" class="noVNC_button" - title="Active Mouse Button"/> + title="Active Mouse Button"> - <input type="image" alt="Middle mousebutton" src="app/images/mouse_middle.svg" + <input type="image" alt="Middle mousebutton" src="/novnc/app/images/mouse_middle.svg" id="noVNC_mouse_button2" class="noVNC_button" - title="Active Mouse Button"/> + title="Active Mouse Button"> - <input type="image" alt="Right mousebutton" src="app/images/mouse_right.svg" + <input type="image" alt="Right mousebutton" src="/novnc/app/images/mouse_right.svg" id="noVNC_mouse_button4" class="noVNC_button" - title="Active Mouse Button"/> + title="Active Mouse Button"> - <input type="image" alt="Keyboard" src="app/images/keyboard.svg" + <input type="image" alt="Keyboard" src="/novnc/app/images/keyboard.svg" - id="noVNC_keyboard_button" class="noVNC_button" - value="Keyboard" title="Show Keyboard" /> + id="noVNC_keyboard_button" class="noVNC_button" title="Show Keyboard"> </div> <!-- Extra manual keys --> @@ -105,104 +100,108 @@ index bc1a47d..d17ee81 100644 - <input type="image" alt="Extra keys" src="app/images/toggleextrakeys.svg" + <input type="image" alt="Extra keys" src="/novnc/app/images/toggleextrakeys.svg" id="noVNC_toggle_extra_keys_button" class="noVNC_button" - title="Show Extra Keys"/> + 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" + <input type="image" alt="Ctrl" src="/novnc/app/images/ctrl.svg" id="noVNC_toggle_ctrl_button" class="noVNC_button" - title="Toggle Ctrl"/> + title="Toggle Ctrl"> - <input type="image" alt="Alt" src="app/images/alt.svg" + <input type="image" alt="Alt" src="/novnc/app/images/alt.svg" id="noVNC_toggle_alt_button" class="noVNC_button" - title="Toggle Alt"/> + title="Toggle Alt"> +- <input type="image" alt="Windows" src="app/images/windows.svg" ++ <input type="image" alt="Alt" src="/novnc/app/images/windows.svg" + id="noVNC_toggle_windows_button" class="noVNC_button" + title="Toggle Windows"> - <input type="image" alt="Tab" src="app/images/tab.svg" + <input type="image" alt="Tab" src="/novnc/app/images/tab.svg" id="noVNC_send_tab_button" class="noVNC_button" - title="Send Tab"/> + title="Send Tab"> - <input type="image" alt="Esc" src="app/images/esc.svg" + <input type="image" alt="Esc" src="/novnc/app/images/esc.svg" id="noVNC_send_esc_button" class="noVNC_button" - title="Send Escape"/> + title="Send Escape"> - <input type="image" alt="Ctrl+Alt+Del" src="app/images/ctrlaltdel.svg" + <input type="image" alt="Ctrl+Alt+Del" src="/novnc/app/images/ctrlaltdel.svg" id="noVNC_send_ctrl_alt_del_button" class="noVNC_button" - title="Send Ctrl-Alt-Del" /> + title="Send Ctrl-Alt-Del"> </div> -@@ -130,13 +130,13 @@ +@@ -121,13 +121,13 @@ </div> <!-- Shutdown/Reboot --> - <input type="image" alt="Shutdown/Reboot" src="app/images/power.svg" + <input type="image" alt="Shutdown/Reboot" src="/novnc/app/images/power.svg" id="noVNC_power_button" class="noVNC_button" - title="Shutdown/Reboot..." /> + 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 -+ <img src="/novnc/app/images/power.svg"> Power +- <img alt="" src="app/images/power.svg"> Power ++ <img alt="" src="/novnc/app/images/power.svg"> Power </div> - <input type="button" id="noVNC_shutdown_button" value="Shutdown" /> - <input type="button" id="noVNC_reboot_button" value="Reboot" /> -@@ -145,13 +145,13 @@ + <input type="button" id="noVNC_shutdown_button" value="Shutdown"> + <input type="button" id="noVNC_reboot_button" value="Reboot"> +@@ -136,13 +136,13 @@ </div> <!-- Clipboard --> - <input type="image" alt="Clipboard" src="app/images/clipboard.svg" + <input type="image" alt="Clipboard" src="/novnc/app/images/clipboard.svg" id="noVNC_clipboard_button" class="noVNC_button" - title="Clipboard" /> + title="Clipboard"> <div class="noVNC_vcenter"> <div id="noVNC_clipboard" class="noVNC_panel"> <div class="noVNC_heading"> -- <img src="app/images/clipboard.svg"> Clipboard -+ <img src="/novnc/app/images/clipboard.svg"> Clipboard +- <img alt="" src="app/images/clipboard.svg"> Clipboard ++ <img alt="" src="/novnc/app/images/clipboard.svg"> Clipboard </div> <textarea id="noVNC_clipboard_text" rows=5></textarea> - <br /> -@@ -161,19 +161,19 @@ + <br> +@@ -152,19 +152,19 @@ </div> <!-- Toggle fullscreen --> - <input type="image" alt="Fullscreen" src="app/images/fullscreen.svg" + <input type="image" alt="Fullscreen" src="/novnc/app/images/fullscreen.svg" id="noVNC_fullscreen_button" class="noVNC_button noVNC_hidden" - title="Fullscreen" /> + title="Fullscreen"> <!-- Settings --> - <input type="image" alt="Settings" src="app/images/settings.svg" + <input type="image" alt="Settings" src="/novnc/app/images/settings.svg" id="noVNC_settings_button" class="noVNC_button" - title="Settings" /> + title="Settings"> <div class="noVNC_vcenter"> <div id="noVNC_settings" class="noVNC_panel"> <ul> <li class="noVNC_heading"> -- <img src="app/images/settings.svg"> Settings -+ <img src="/novnc/app/images/settings.svg"> Settings +- <img alt="" src="app/images/settings.svg"> Settings ++ <img alt="" src="/novnc/app/images/settings.svg"> Settings </li> <li style="display:none;"> - <label><input id="noVNC_setting_shared" type="checkbox" /> Shared Mode</label> -@@ -246,7 +246,7 @@ + <label><input id="noVNC_setting_shared" type="checkbox"> Shared Mode</label> +@@ -241,7 +241,7 @@ </div> <!-- Connection Controls --> - <input type="image" alt="Disconnect" src="app/images/disconnect.svg" + <input type="image" alt="Disconnect" src="/novnc/app/images/disconnect.svg" id="noVNC_disconnect_button" class="noVNC_button" - title="Disconnect" /> + title="Disconnect"> -@@ -265,7 +265,7 @@ +@@ -260,7 +260,7 @@ <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 -+ <img src="/novnc/app/images/connect.svg"> Connect +- <img alt="" src="app/images/connect.svg"> Connect ++ <img alt="" src="/novnc/app/images/connect.svg"> Connect </div></div> </div> </div> -@@ -306,8 +306,8 @@ +@@ -300,8 +300,8 @@ </div> <audio id="noVNC_bell"> @@ -213,6 +212,3 @@ index bc1a47d..d17ee81 100644 </audio> </body> </html> --- -2.11.0 - diff --git a/debian/patches/0007-add-pve-vnc-commands.patch b/debian/patches/0007-add-pve-vnc-commands.patch index a062647..675b034 100644 --- a/debian/patches/0007-add-pve-vnc-commands.patch +++ b/debian/patches/0007-add-pve-vnc-commands.patch @@ -1,7 +1,7 @@ -From 67da56922c2edea81ee98198db125d9fc8abd8b4 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dominik Csapak <d.csa...@proxmox.com> Date: Fri, 20 Jan 2017 10:35:43 +0100 -Subject: [PATCH 07/10] add pve vnc commands +Subject: [PATCH 07/12] add pve vnc commands Signed-off-by: Dominik Csapak <d.csa...@proxmox.com> --- @@ -9,10 +9,10 @@ Signed-off-by: Dominik Csapak <d.csa...@proxmox.com> 1 file changed, 21 insertions(+) diff --git a/vnc.html b/vnc.html -index d17ee81..eca9a54 100644 +index f93cf89..fad5d4a 100644 --- a/vnc.html +++ b/vnc.html -@@ -245,6 +245,27 @@ +@@ -240,6 +240,27 @@ </div> </div> @@ -40,6 +40,3 @@ index d17ee81..eca9a54 100644 <!-- Connection Controls --> <input type="image" alt="Disconnect" src="/novnc/app/images/disconnect.svg" id="noVNC_disconnect_button" class="noVNC_button" --- -2.11.0 - diff --git a/debian/patches/0008-add-replaceable-snippets-in-vnc.html.patch b/debian/patches/0008-add-replaceable-snippets-in-vnc.html.patch index 6b1cceb..0f84dd7 100644 --- a/debian/patches/0008-add-replaceable-snippets-in-vnc.html.patch +++ b/debian/patches/0008-add-replaceable-snippets-in-vnc.html.patch @@ -1,32 +1,34 @@ -From 492c7d299d770dca563f806eadb6458a24d97b2d Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dominik Csapak <d.csa...@proxmox.com> Date: Fri, 20 Jan 2017 10:16:09 +0100 -Subject: [PATCH 08/10] add replaceable snippets in vnc.html +Subject: [PATCH 08/12] add replaceable snippets in vnc.html so that we can insert the username/csrftoken via search/replace Signed-off-by: Dominik Csapak <d.csa...@proxmox.com> --- - vnc.html | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) + vnc.html | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/vnc.html b/vnc.html -index eca9a54..f63aaa7 100644 +index fad5d4a..bba7d7d 100644 --- a/vnc.html +++ b/vnc.html -@@ -15,7 +15,7 @@ +@@ -13,7 +13,7 @@ or the fragment: http://example.com/#host=HOST&port=PORT&encrypt=1 --> - <title>noVNC</title> + <title>[% nodename %] - Proxmox Console</title> - <meta charset="utf-8" /> + <meta charset="utf-8"> -@@ -38,6 +38,12 @@ +@@ -26,7 +26,13 @@ + <link rel="stylesheet" href="/novnc/app/styles/pve.css" /> <!-- this is included as a normal file in order to catch script-loading errors as well --> - <script type="text/javascript" src="/novnc/app/error-handler.js"></script> +- <script src="/novnc/app/error-handler.js"></script> ++ <script type="text/javascript" src="/novnc/app/error-handler.js"></script> + <script type="text/javascript"> + if (typeof(PVE) === 'undefined') PVE = {}; + PVE.UserName = '[% username %]'; @@ -36,6 +38,3 @@ index eca9a54..f63aaa7 100644 <!-- begin scripts --> <!-- promise polyfills promises for IE11 --> --- -2.11.0 - diff --git a/debian/patches/0009-decrease-animation-time.patch b/debian/patches/0009-decrease-animation-time.patch index 34c9d8e..12ccfbe 100644 --- a/debian/patches/0009-decrease-animation-time.patch +++ b/debian/patches/0009-decrease-animation-time.patch @@ -1,7 +1,7 @@ -From 60e19c4a22688d0e13dedbed1808e6b4576946e8 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dominik Csapak <d.csa...@proxmox.com> Date: Fri, 20 Jan 2017 10:55:49 +0100 -Subject: [PATCH 09/10] decrease animation time +Subject: [PATCH 09/12] decrease animation time because 0.5s is too long @@ -11,10 +11,10 @@ Signed-off-by: Dominik Csapak <d.csa...@proxmox.com> 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/styles/base.css b/app/styles/base.css -index 344db9b..6e0d8d6 100644 +index 3ca9894..137aec8 100644 --- a/app/styles/base.css +++ b/app/styles/base.css -@@ -285,7 +285,7 @@ select:active { +@@ -283,7 +283,7 @@ select:active { position: fixed; z-index: 10; @@ -23,7 +23,7 @@ index 344db9b..6e0d8d6 100644 /* Edge misrenders animations wihthout this */ transform: translateX(0); -@@ -302,7 +302,7 @@ select:active { +@@ -300,7 +300,7 @@ select:active { position: relative; left: -100%; @@ -32,7 +32,7 @@ index 344db9b..6e0d8d6 100644 background-color: rgb(110, 132, 163); border-radius: 0 10px 10px 0; -@@ -320,7 +320,7 @@ select:active { +@@ -318,7 +318,7 @@ select:active { height: 100%; width: 30px; left: -30px; @@ -41,7 +41,7 @@ index 344db9b..6e0d8d6 100644 } #noVNC_control_bar.noVNC_open::before { box-shadow: 6px 6px 0px rgba(0, 0, 0, 0.5); -@@ -354,7 +354,7 @@ select:active { +@@ -352,7 +352,7 @@ select:active { } #noVNC_control_bar_handle:after { content: ""; @@ -50,7 +50,7 @@ index 344db9b..6e0d8d6 100644 background: url("../images/handle.svg"); position: absolute; top: 22px; /* (50px-6px)/2 */ -@@ -476,7 +476,7 @@ select:active { +@@ -474,7 +474,7 @@ select:active { .noVNC_panel { transform: translateX(25px); @@ -59,7 +59,7 @@ index 344db9b..6e0d8d6 100644 max-height: 100vh; /* Chrome is buggy with 100% */ overflow-x: hidden; -@@ -653,7 +653,7 @@ select:active { +@@ -651,7 +651,7 @@ select:active { cursor: pointer; @@ -68,6 +68,3 @@ index 344db9b..6e0d8d6 100644 visibility: hidden; opacity: 0; --- -2.11.0 - diff --git a/debian/patches/0010-use-only-app.js.patch b/debian/patches/0010-use-only-app.js.patch index edcddba..51cf720 100644 --- a/debian/patches/0010-use-only-app.js.patch +++ b/debian/patches/0010-use-only-app.js.patch @@ -1,7 +1,7 @@ -From e78d6d49ae2c4986ce283ddb2b36601f498d5015 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dominik Csapak <d.csa...@proxmox.com> Date: Tue, 16 May 2017 10:36:15 +0200 -Subject: [PATCH 10/10] use only app.js +Subject: [PATCH 10/12] use only app.js because we will use the commonjs version, we only need to use the generated app.js @@ -12,10 +12,10 @@ Signed-off-by: Dominik Csapak <d.csa...@proxmox.com> 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/vnc.html b/vnc.html -index f63aaa7..83825eb 100644 +index bba7d7d..6fb195e 100644 --- a/vnc.html +++ b/vnc.html -@@ -46,22 +46,7 @@ +@@ -35,22 +35,7 @@ </script> <!-- begin scripts --> @@ -39,6 +39,3 @@ index f63aaa7..83825eb 100644 <!-- end scripts --> </head> --- -2.11.0 - diff --git a/debian/patches/0011-add-localCursor-setting-to-rfb.patch b/debian/patches/0011-add-localCursor-setting-to-rfb.patch index 50d2410..a505dcb 100644 --- a/debian/patches/0011-add-localCursor-setting-to-rfb.patch +++ b/debian/patches/0011-add-localCursor-setting-to-rfb.patch @@ -1,7 +1,7 @@ -From c00b6dd12a3daa100673561cdedc5909ed4c3738 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dominik Csapak <d.csa...@proxmox.com> Date: Thu, 19 Jul 2018 11:31:51 +0200 -Subject: [PATCH 11/11] add localCursor setting to rfb +Subject: [PATCH 11/12] add localCursor setting to rfb and use it in app.js (default true) @@ -14,27 +14,27 @@ Signed-off-by: Dominik Csapak <d.csa...@proxmox.com> 4 files changed, 36 insertions(+), 1 deletion(-) diff --git a/app/ui.js b/app/ui.js -index c523fcd..ac310ba 100644 +index 7201179..35d5d7a 100644 --- a/app/ui.js +++ b/app/ui.js -@@ -161,6 +161,7 @@ const UI = { +@@ -151,6 +151,7 @@ const UI = { UI.initSetting('view_clip', false); UI.initSetting('resize', 'off'); UI.initSetting('autoresize', true); + UI.initSetting('local_cursor', true); UI.initSetting('shared', true); UI.initSetting('view_only', false); - UI.initSetting('path', 'websockify'); -@@ -350,6 +351,8 @@ const UI = { - UI.addSettingChangeHandler('shared'); - UI.addSettingChangeHandler('view_only'); + UI.initSetting('show_dot', false); +@@ -345,6 +346,8 @@ const UI = { UI.addSettingChangeHandler('view_only', UI.updateViewOnly); + UI.addSettingChangeHandler('show_dot'); + UI.addSettingChangeHandler('show_dot', UI.updateShowDotCursor); + UI.addSettingChangeHandler('local_cursor'); + UI.addSettingChangeHandler('local_cursor', UI.updateLocalCursor); UI.addSettingChangeHandler('host'); UI.addSettingChangeHandler('port'); UI.addSettingChangeHandler('path'); -@@ -1052,6 +1055,7 @@ const UI = { +@@ -1041,6 +1044,7 @@ const UI = { UI.rfb.addEventListener("desktopname", UI.updateDesktopName); UI.rfb.addEventListener("fbresize", UI.updateSessionSize); UI.rfb.clipViewport = UI.getSetting('view_clip'); @@ -42,7 +42,7 @@ index c523fcd..ac310ba 100644 UI.rfb.scaleViewport = UI.getSetting('resize') === 'scale'; UI.rfb.resizeSession = UI.getSetting('resize') === 'remote'; -@@ -1655,6 +1659,11 @@ const UI = { +@@ -1638,6 +1642,11 @@ const UI = { } }, @@ -55,10 +55,10 @@ index c523fcd..ac310ba 100644 if (!UI.rfb) return; UI.rfb.viewOnly = UI.getSetting('view_only'); diff --git a/core/rfb.js b/core/rfb.js -index 3e0f176..8216c53 100644 +index c079af1..2beb00c 100644 --- a/core/rfb.js +++ b/core/rfb.js -@@ -262,6 +262,7 @@ export default class RFB extends EventTargetMixin { +@@ -246,6 +246,7 @@ export default class RFB extends EventTargetMixin { this._clipViewport = false; this._scaleViewport = false; this._resizeSession = false; @@ -66,9 +66,9 @@ index 3e0f176..8216c53 100644 } // ===== PROPERTIES ===== -@@ -315,6 +316,15 @@ export default class RFB extends EventTargetMixin { - } - } +@@ -308,6 +309,15 @@ export default class RFB extends EventTargetMixin { + get background() { return this._screen.style.background; } + set background(cssValue) { this._screen.style.background = cssValue; } + get localCursor() { return this._localCursor; } + set localCursor(localCursor) { @@ -83,11 +83,11 @@ index 3e0f176..8216c53 100644 disconnect() { diff --git a/core/util/cursor.js b/core/util/cursor.js -index 18aa7be..2a99bd4 100644 +index 0d0b754..73d7880 100644 --- a/core/util/cursor.js +++ b/core/util/cursor.js @@ -12,6 +12,8 @@ export default class Cursor { - constructor(container) { + constructor() { this._target = null; + this._showLocalCursor = false; @@ -95,7 +95,7 @@ index 18aa7be..2a99bd4 100644 this._canvas = document.createElement('canvas'); if (useFallback) { -@@ -128,7 +130,7 @@ export default class Cursor { +@@ -115,7 +117,7 @@ export default class Cursor { } clear() { @@ -104,7 +104,7 @@ index 18aa7be..2a99bd4 100644 this._canvas.width = 0; this._canvas.height = 0; this._position.x = this._position.x + this._hotSpot.x; -@@ -137,6 +139,11 @@ export default class Cursor { +@@ -124,6 +126,11 @@ export default class Cursor { this._hotSpot.y = 0; } @@ -116,7 +116,7 @@ index 18aa7be..2a99bd4 100644 _handleMouseOver(event) { // This event could be because we're entering the target, or // moving around amongst its sub elements. Let the move handler -@@ -225,4 +232,10 @@ export default class Cursor { +@@ -218,4 +225,10 @@ export default class Cursor { this._canvas.style.left = this._position.x + "px"; this._canvas.style.top = this._position.y + "px"; } @@ -128,19 +128,16 @@ index 18aa7be..2a99bd4 100644 + } diff --git a/vnc.html b/vnc.html -index 83825eb..438d531 100644 +index 6fb195e..d48091d 100644 --- a/vnc.html +++ b/vnc.html -@@ -177,6 +177,9 @@ - <label><input id="noVNC_setting_view_clip" type="checkbox" /> Clip to Window</label> - </li> +@@ -167,6 +167,9 @@ <li> + <label><input id="noVNC_setting_view_clip" type="checkbox"> Clip to Window</label> + </li> ++ <li> + <label><input id="noVNC_setting_local_cursor" type="checkbox" /> Local Cursor</label> + </li> -+ <li> + <li> <label><input id="noVNC_setting_autoresize" type="checkbox" /> Autoresize Window</label> </li> - <li> --- -2.11.0 - diff --git a/debian/patches/0012-pass-custom-command-to-vnc.patch b/debian/patches/0012-pass-custom-command-to-vnc.patch index c836b5b..3999212 100644 --- a/debian/patches/0012-pass-custom-command-to-vnc.patch +++ b/debian/patches/0012-pass-custom-command-to-vnc.patch @@ -1,9 +1,10 @@ -From bc515ecef9162774bff846e362b4c8315032ea2a Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Tim Marx <t.m...@proxmox.com> Date: Fri, 21 Dec 2018 11:46:13 +0100 Subject: [PATCH 12/12] pass custom command to vnc Signed-off-by: Tim Marx <t.m...@proxmox.com> +Signed-off-by: Dominik Csapak <d.csa...@proxmox.com> --- app/pve.js | 7 +++++++ 1 file changed, 7 insertions(+) @@ -20,19 +21,16 @@ index e2c37fb..9cf4b09 100644 this.lastFBWidth = undefined; this.lastFBHeight = undefined; this.sizeUpdateTimer = undefined; -@@ -47,6 +48,12 @@ export default function PVEUI(UI){ +@@ -46,6 +47,12 @@ export default function PVEUI(UI){ + url = baseUrl + '/vncshell'; params.upgrade = 1; title = 'System upgrade on node ' + this.nodename; - break; ++ break; + case 'cmd': + url = baseUrl + '/vncshell'; + params.cmd = decodeURI(this.cmd); + title = 'Install Ceph on node ' + this.nodename; + -+ break; + break; default: throw 'implement me'; - break; --- -2.11.0 - -- 2.20.1 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel