* [pve-devel] [PATCH qemu-server v9 1/5] enable VNC clipboard parameter in vga_fmt
2023-05-22 10:09 [pve-devel] [PATCH qemu-server/novnc/manager/docs v9 0/5] Feature VNC-Clipboard Markus Frank
@ 2023-05-22 10:09 ` Markus Frank
2023-08-21 14:05 ` Fiona Ebner
2023-05-22 10:09 ` [pve-devel] [PATCH qemu-server v9 2/5] test cases for clipboard spice & std Markus Frank
` (5 subsequent siblings)
6 siblings, 1 reply; 10+ messages in thread
From: Markus Frank @ 2023-05-22 10:09 UTC (permalink / raw)
To: pve-devel
added option to use the qemu vdagent implementation to enable the VNC
clipboard. When enabled with SPICE the spice-vdagent gets replaced with the qemu
implementation.
This patch does not solve #1406, but does allow copy and paste with
a running X-session, when spice-vdagent is installed on the guest.
added vnc-clipboard variable to return at status/current
By that noVNC is able to check if clipboard is active.
Signed-off-by: Markus Frank <m.frank@proxmox.com>
---
PVE/API2/Qemu.pm | 13 ++++++++++
PVE/QemuServer.pm | 61 ++++++++++++++++++++++++++++++++---------------
2 files changed, 55 insertions(+), 19 deletions(-)
diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm
index 587bb22..a785693 100644
--- a/PVE/API2/Qemu.pm
+++ b/PVE/API2/Qemu.pm
@@ -970,6 +970,9 @@ __PACKAGE__->register_method({
$conf->{boot} = PVE::QemuServer::print_bootorder($devs);
}
+ my $vga = PVE::QemuServer::parse_vga($conf->{vga});
+ PVE::QemuServer::assert_vnc_clipboard_config($vga);
+
# auto generate uuid if user did not specify smbios1 option
if (!$conf->{smbios1}) {
$conf->{smbios1} = PVE::QemuServer::generate_smbios1_uuid();
@@ -1760,6 +1763,10 @@ my $update_vm_api = sub {
die "only root can modify '$opt' config for real devices\n";
}
$conf->{pending}->{$opt} = $param->{$opt};
+ } elsif ($opt eq 'vga') {
+ my $vga = PVE::QemuServer::parse_vga($param->{$opt});
+ PVE::QemuServer::assert_vnc_clipboard_config($vga);
+ $conf->{pending}->{$opt} = $param->{$opt};
} elsif ($opt =~ m/^usb\d+/) {
if ((!defined($conf->{$opt}) || $conf->{$opt} =~ m/spice/) && $param->{$opt} =~ m/spice/) {
$rpcenv->check_vm_perm($authuser, $vmid, undef, ['VM.Config.HWType']);
@@ -2580,6 +2587,11 @@ __PACKAGE__->register_method({
type => 'boolean',
optional => 1,
},
+ 'vnc-clipboard' => {
+ description => "QEMU clipboard for noVNC is enabled in config.",
+ type => 'boolean',
+ optional => 1,
+ },
},
},
code => sub {
@@ -2598,6 +2610,7 @@ __PACKAGE__->register_method({
my $spice = defined($vga->{type}) && $vga->{type} =~ /^virtio/;
$spice ||= PVE::QemuServer::vga_conf_has_spice($conf->{vga});
$status->{spice} = 1 if $spice;
+ $status->{'vnc-clipboard'} = $vga->{'vnc-clipboard'};
}
$status->{agent} = 1 if PVE::QemuServer::get_qga_key($conf, 'enabled');
diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index 40be44d..8d30f7c 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -193,8 +193,16 @@ my $vga_fmt = {
minimum => 4,
maximum => 512,
},
+ 'vnc-clipboard' => {
+ description => "enable VNC clipboard (requires spice tools in the guest)",
+ type => 'boolean',
+ optional => 1,
+ default => 0
+ }
};
+my $vnc_clipboard_regex = qr/^(std|cirrus|vmware|virtio|qxl)/;
+
my $ivshmem_fmt = {
size => {
type => 'integer',
@@ -1405,6 +1413,14 @@ sub pve_verify_hotplug_features {
die "unable to parse hotplug option\n";
}
+sub assert_vnc_clipboard_config {
+ my ($vga) = @_;
+
+ if ($vga->{'vnc-clipboard'} && $vga->{type} && $vga->{type} !~ $vnc_clipboard_regex) {
+ die "vga type $vga->{type} is not compatible with VNC clipboard\n";
+ }
+}
+
sub scsi_inquiry {
my($fh, $noerr) = @_;
@@ -3935,7 +3951,10 @@ sub config_to_command {
my $spice_port;
- if ($qxlnum || $vga->{type} =~ /^virtio/) {
+ assert_vnc_clipboard_config($vga);
+ my $is_spice = $qxlnum || $vga->{type} =~ /^virtio/;
+
+ if ($is_spice || $vga->{'vnc-clipboard'}) {
if ($qxlnum > 1) {
if ($winversion){
for (my $i = 1; $i < $qxlnum; $i++){
@@ -3953,32 +3972,36 @@ sub config_to_command {
push @$cmd, '-global', "qxl-vga.vram_size=$vram";
}
}
-
my $pciaddr = print_pci_addr("spice", $bridges, $arch, $machine_type);
- my $pfamily = PVE::Tools::get_host_address_family($nodename);
- my @nodeaddrs = PVE::Tools::getaddrinfo_all('localhost', family => $pfamily);
- die "failed to get an ip address of type $pfamily for 'localhost'\n" if !@nodeaddrs;
-
push @$devices, '-device', "virtio-serial,id=spice$pciaddr";
- push @$devices, '-chardev', "spicevmc,id=vdagent,name=vdagent";
+ if ($vga->{'vnc-clipboard'}) {
+ push @$devices, '-chardev', 'qemu-vdagent,id=vdagent,name=vdagent,clipboard=on';
+ } else {
+ push @$devices, '-chardev', 'spicevmc,id=vdagent,name=vdagent';
+ }
push @$devices, '-device', "virtserialport,chardev=vdagent,name=com.redhat.spice.0";
- my $localhost = PVE::Network::addr_to_ip($nodeaddrs[0]->{addr});
- $spice_port = PVE::Tools::next_spice_port($pfamily, $localhost);
+ if ($is_spice) {
+ my $pfamily = PVE::Tools::get_host_address_family($nodename);
+ my @nodeaddrs = PVE::Tools::getaddrinfo_all('localhost', family => $pfamily);
+ die "failed to get an ip address of type $pfamily for 'localhost'\n" if !@nodeaddrs;
- my $spice_enhancement_str = $conf->{spice_enhancements} // '';
- my $spice_enhancement = parse_property_string($spice_enhancements_fmt, $spice_enhancement_str);
- if ($spice_enhancement->{foldersharing}) {
- push @$devices, '-chardev', "spiceport,id=foldershare,name=org.spice-space.webdav.0";
- push @$devices, '-device', "virtserialport,chardev=foldershare,name=org.spice-space.webdav.0";
- }
+ my $localhost = PVE::Network::addr_to_ip($nodeaddrs[0]->{addr});
+ $spice_port = PVE::Tools::next_spice_port($pfamily, $localhost);
- my $spice_opts = "tls-port=${spice_port},addr=$localhost,tls-ciphers=HIGH,seamless-migration=on";
- $spice_opts .= ",streaming-video=$spice_enhancement->{videostreaming}"
- if $spice_enhancement->{videostreaming};
+ my $spice_enhancement_str = $conf->{spice_enhancements} // '';
+ my $spice_enhancement = parse_property_string($spice_enhancements_fmt, $spice_enhancement_str);
+ if ($spice_enhancement->{foldersharing}) {
+ push @$devices, '-chardev', "spiceport,id=foldershare,name=org.spice-space.webdav.0";
+ push @$devices, '-device', "virtserialport,chardev=foldershare,name=org.spice-space.webdav.0";
+ }
- push @$devices, '-spice', "$spice_opts";
+ my $spice_opts = "tls-port=${spice_port},addr=$localhost,tls-ciphers=HIGH,seamless-migration=on";
+ $spice_opts .= ",streaming-video=$spice_enhancement->{videostreaming}"
+ if $spice_enhancement->{videostreaming};
+ push @$devices, '-spice', "$spice_opts";
+ }
}
# enable balloon by default, unless explicitly disabled
--
2.30.2
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [pve-devel] [PATCH qemu-server v9 1/5] enable VNC clipboard parameter in vga_fmt
2023-05-22 10:09 ` [pve-devel] [PATCH qemu-server v9 1/5] enable VNC clipboard parameter in vga_fmt Markus Frank
@ 2023-08-21 14:05 ` Fiona Ebner
0 siblings, 0 replies; 10+ messages in thread
From: Fiona Ebner @ 2023-08-21 14:05 UTC (permalink / raw)
To: Proxmox VE development discussion, Markus Frank
This needs a rebase, but looks good to me other than a few nits.
Am 22.05.23 um 12:09 schrieb Markus Frank:
> added option to use the qemu vdagent implementation to enable the VNC
> clipboard. When enabled with SPICE the spice-vdagent gets replaced with the qemu
> implementation.
>
Nit: QEMU should be capitalized
> This patch does not solve #1406, but does allow copy and paste with
> a running X-session, when spice-vdagent is installed on the guest.
>
> added vnc-clipboard variable to return at status/current
>
Nit: This part could've been a separate patch
> By that noVNC is able to check if clipboard is active.
>
> Signed-off-by: Markus Frank <m.frank@proxmox.com>
> ---
(...)
> diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
> index 40be44d..8d30f7c 100644
> --- a/PVE/QemuServer.pm
> +++ b/PVE/QemuServer.pm
> @@ -193,8 +193,16 @@ my $vga_fmt = {
> minimum => 4,
> maximum => 512,
> },
> + 'vnc-clipboard' => {
> + description => "enable VNC clipboard (requires spice tools in the guest)",
Nit: SPICE should be capitalized
"SPICE guest tools" seems to be the name for Windows, should we say
"SPICE guest tools/SPICE vdagent" instead?
> + type => 'boolean',
> + optional => 1,
> + default => 0
> + }
Style nit: missing trailing comma for the above two lines
> };
>
> +my $vnc_clipboard_regex = qr/^(std|cirrus|vmware|virtio|qxl)/;
I'd slightly prefer a hash with all the valid keys instead of a regex,
but no big deal.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [pve-devel] [PATCH qemu-server v9 2/5] test cases for clipboard spice & std
2023-05-22 10:09 [pve-devel] [PATCH qemu-server/novnc/manager/docs v9 0/5] Feature VNC-Clipboard Markus Frank
2023-05-22 10:09 ` [pve-devel] [PATCH qemu-server v9 1/5] enable VNC clipboard parameter in vga_fmt Markus Frank
@ 2023-05-22 10:09 ` Markus Frank
2023-05-22 10:09 ` [pve-devel] [PATCH novnc v9 3/5] added show clipboard button patch to series Markus Frank
` (4 subsequent siblings)
6 siblings, 0 replies; 10+ messages in thread
From: Markus Frank @ 2023-05-22 10:09 UTC (permalink / raw)
To: pve-devel
added one test case for a spice display and one for std
Signed-off-by: Markus Frank <m.frank@proxmox.com>
---
test/cfg2cmd/VNC-clipboard-spice.conf | 1 +
test/cfg2cmd/VNC-clipboard-spice.conf.cmd | 27 +++++++++++++++++++++++
test/cfg2cmd/VNC-clipboard-std.conf | 1 +
test/cfg2cmd/VNC-clipboard-std.conf.cmd | 27 +++++++++++++++++++++++
4 files changed, 56 insertions(+)
create mode 100644 test/cfg2cmd/VNC-clipboard-spice.conf
create mode 100644 test/cfg2cmd/VNC-clipboard-spice.conf.cmd
create mode 100644 test/cfg2cmd/VNC-clipboard-std.conf
create mode 100644 test/cfg2cmd/VNC-clipboard-std.conf.cmd
diff --git a/test/cfg2cmd/VNC-clipboard-spice.conf b/test/cfg2cmd/VNC-clipboard-spice.conf
new file mode 100644
index 0000000..bd58818
--- /dev/null
+++ b/test/cfg2cmd/VNC-clipboard-spice.conf
@@ -0,0 +1 @@
+vga: qxl,vnc-clipboard=1
diff --git a/test/cfg2cmd/VNC-clipboard-spice.conf.cmd b/test/cfg2cmd/VNC-clipboard-spice.conf.cmd
new file mode 100644
index 0000000..f24cc7f
--- /dev/null
+++ b/test/cfg2cmd/VNC-clipboard-spice.conf.cmd
@@ -0,0 +1,27 @@
+/usr/bin/kvm \
+ -id 8006 \
+ -name 'vm8006,debug-threads=on' \
+ -no-shutdown \
+ -chardev 'socket,id=qmp,path=/var/run/qemu-server/8006.qmp,server=on,wait=off' \
+ -mon 'chardev=qmp,mode=control' \
+ -chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect=5' \
+ -mon 'chardev=qmp-event,mode=control' \
+ -pidfile /var/run/qemu-server/8006.pid \
+ -daemonize \
+ -smp '1,sockets=1,cores=1,maxcpus=1' \
+ -nodefaults \
+ -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' \
+ -vnc 'unix:/var/run/qemu-server/8006.vnc,password=on' \
+ -cpu kvm64,enforce,+kvm_pv_eoi,+kvm_pv_unhalt,+lahf_lm,+sep \
+ -m 512 \
+ -device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e' \
+ -device 'pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f' \
+ -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' \
+ -device 'qxl-vga,id=vga,max_outputs=4,bus=pci.0,addr=0x2' \
+ -device 'virtio-serial,id=spice,bus=pci.0,addr=0x9' \
+ -chardev 'qemu-vdagent,id=vdagent,name=vdagent,clipboard=on' \
+ -device 'virtserialport,chardev=vdagent,name=com.redhat.spice.0' \
+ -spice 'tls-port=61000,addr=127.0.0.1,tls-ciphers=HIGH,seamless-migration=on' \
+ -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \
+ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \
+ -machine 'type=pc+pve0'
diff --git a/test/cfg2cmd/VNC-clipboard-std.conf b/test/cfg2cmd/VNC-clipboard-std.conf
new file mode 100644
index 0000000..fb788b5
--- /dev/null
+++ b/test/cfg2cmd/VNC-clipboard-std.conf
@@ -0,0 +1 @@
+vga: std,vnc-clipboard=1
diff --git a/test/cfg2cmd/VNC-clipboard-std.conf.cmd b/test/cfg2cmd/VNC-clipboard-std.conf.cmd
new file mode 100644
index 0000000..c0c6cd2
--- /dev/null
+++ b/test/cfg2cmd/VNC-clipboard-std.conf.cmd
@@ -0,0 +1,27 @@
+/usr/bin/kvm \
+ -id 8006 \
+ -name 'vm8006,debug-threads=on' \
+ -no-shutdown \
+ -chardev 'socket,id=qmp,path=/var/run/qemu-server/8006.qmp,server=on,wait=off' \
+ -mon 'chardev=qmp,mode=control' \
+ -chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect=5' \
+ -mon 'chardev=qmp-event,mode=control' \
+ -pidfile /var/run/qemu-server/8006.pid \
+ -daemonize \
+ -smp '1,sockets=1,cores=1,maxcpus=1' \
+ -nodefaults \
+ -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' \
+ -vnc 'unix:/var/run/qemu-server/8006.vnc,password=on' \
+ -cpu kvm64,enforce,+kvm_pv_eoi,+kvm_pv_unhalt,+lahf_lm,+sep \
+ -m 512 \
+ -device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e' \
+ -device 'pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f' \
+ -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' \
+ -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' \
+ -device 'VGA,id=vga,bus=pci.0,addr=0x2' \
+ -device 'virtio-serial,id=spice,bus=pci.0,addr=0x9' \
+ -chardev 'qemu-vdagent,id=vdagent,name=vdagent,clipboard=on' \
+ -device 'virtserialport,chardev=vdagent,name=com.redhat.spice.0' \
+ -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \
+ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \
+ -machine 'type=pc+pve0'
--
2.30.2
^ permalink raw reply [flat|nested] 10+ messages in thread
* [pve-devel] [PATCH novnc v9 3/5] added show clipboard button patch to series
2023-05-22 10:09 [pve-devel] [PATCH qemu-server/novnc/manager/docs v9 0/5] Feature VNC-Clipboard Markus Frank
2023-05-22 10:09 ` [pve-devel] [PATCH qemu-server v9 1/5] enable VNC clipboard parameter in vga_fmt Markus Frank
2023-05-22 10:09 ` [pve-devel] [PATCH qemu-server v9 2/5] test cases for clipboard spice & std Markus Frank
@ 2023-05-22 10:09 ` Markus Frank
2023-05-22 10:09 ` [pve-devel] [PATCH manager v9 4/5] added clipboard checkbox to VM Options Markus Frank
` (3 subsequent siblings)
6 siblings, 0 replies; 10+ messages in thread
From: Markus Frank @ 2023-05-22 10:09 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Markus Frank <m.frank@proxmox.com>
---
.../patches/0019-show-clipboard-button.patch | 30 +++++++++++++++++++
debian/patches/series | 1 +
2 files changed, 31 insertions(+)
create mode 100644 debian/patches/0019-show-clipboard-button.patch
diff --git a/debian/patches/0019-show-clipboard-button.patch b/debian/patches/0019-show-clipboard-button.patch
new file mode 100644
index 0000000..7f7202f
--- /dev/null
+++ b/debian/patches/0019-show-clipboard-button.patch
@@ -0,0 +1,30 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Markus Frank <m.frank@proxmox.com>
+Date: Fri, 28 Oct 2022 13:57:57 +0200
+Subject: [PATCH] show clipboard button
+
+show button when vnc-clipboard at status/current is true
+
+Signed-off-by: Markus Frank <m.frank@proxmox.com>
+---
+ app/pve.js | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/app/pve.js b/app/pve.js
+index 287615f..a2e54b0 100644
+--- a/app/pve.js
++++ b/app/pve.js
+@@ -411,6 +411,10 @@ PVEUI.prototype = {
+ document.getElementById('pve_start_dlg')
+ .classList.add("noVNC_open");
+ }
++ if (result.data['vnc-clipboard']) {
++ document.getElementById('noVNC_clipboard_button')
++ .classList.remove('pve_hidden');
++ }
+ },
+ failure: function(msg, code) {
+ if (code === 403) {
+--
+2.30.2
+
diff --git a/debian/patches/series b/debian/patches/series
index 085e2b4..212add7 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -16,3 +16,4 @@
0016-hide-fullscreen-button-on-isFullscreen-get-variable.patch
0017-make-error-hideable.patch
0018-show-start-button-on-not-running-vm-ct.patch
+0019-show-clipboard-button.patch
--
2.30.2
^ permalink raw reply [flat|nested] 10+ messages in thread
* [pve-devel] [PATCH manager v9 4/5] added clipboard checkbox to VM Options
2023-05-22 10:09 [pve-devel] [PATCH qemu-server/novnc/manager/docs v9 0/5] Feature VNC-Clipboard Markus Frank
` (2 preceding siblings ...)
2023-05-22 10:09 ` [pve-devel] [PATCH novnc v9 3/5] added show clipboard button patch to series Markus Frank
@ 2023-05-22 10:09 ` Markus Frank
2023-05-22 10:09 ` [pve-devel] [PATCH docs v9 5/5] added noVNC clipboard documentation Markus Frank
` (2 subsequent siblings)
6 siblings, 0 replies; 10+ messages in thread
From: Markus Frank @ 2023-05-22 10:09 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Markus Frank <m.frank@proxmox.com>
---
www/manager6/qemu/DisplayEdit.js | 8 +++++++
www/manager6/qemu/Options.js | 37 ++++++++++++++++++++++++++++++++
2 files changed, 45 insertions(+)
diff --git a/www/manager6/qemu/DisplayEdit.js b/www/manager6/qemu/DisplayEdit.js
index 9bb1763e..5ba0a512 100644
--- a/www/manager6/qemu/DisplayEdit.js
+++ b/www/manager6/qemu/DisplayEdit.js
@@ -4,6 +4,9 @@ Ext.define('PVE.qemu.DisplayInputPanel', {
onlineHelp: 'qm_display',
onGetValues: function(values) {
+ if (typeof this.originalConfig['vnc-clipboard'] !== 'undefined') {
+ values['vnc-clipboard'] = this.originalConfig['vnc-clipboard'];
+ }
let ret = PVE.Parser.printPropertyString(values, 'type');
if (ret === '') {
return { 'delete': 'vga' };
@@ -11,6 +14,11 @@ Ext.define('PVE.qemu.DisplayInputPanel', {
return { vga: ret };
},
+ onSetValues: function(values) {
+ this.originalConfig = values;
+ return values;
+ },
+
items: [{
name: 'type',
xtype: 'proxmoxKVComboBox',
diff --git a/www/manager6/qemu/Options.js b/www/manager6/qemu/Options.js
index 7b112400..6b5c868b 100644
--- a/www/manager6/qemu/Options.js
+++ b/www/manager6/qemu/Options.js
@@ -154,6 +154,43 @@ Ext.define('PVE.qemu.Options', {
},
} : undefined,
},
+ vga: {
+ header: gettext('Use VNC clipboard'),
+ defaultValue: false,
+ renderer: function(value) {
+ let vga = PVE.Parser.parsePropertyString(value, 'type');
+ return vga['vnc-clipboard'] ? Proxmox.Utils.yesText : Proxmox.Utils.noText;
+ },
+ editor: caps.vms['VM.Config.HWType'] ? {
+ xtype: 'proxmoxWindowEdit',
+ subject: gettext('Use VNC clipboard'),
+ onlineHelp: 'qm_display',
+ items: {
+ xtype: 'pveDisplayInputPanel',
+ items: {
+ xtype: 'proxmoxcheckbox',
+ name: 'vnc-clipboard',
+ uncheckedValue: 0,
+ defaultValue: 0,
+ itemId: 'clipboardBox',
+ fieldLabel: gettext('Enabled'),
+ },
+ onGetValues: function(values) {
+ values = Ext.apply(this.originalConfig, values);
+ PVE.Utils.delete_if_default(values, 'vnc-clipboard', 0, 1);
+ let ret = PVE.Parser.printPropertyString(values, 'type');
+ if (ret === '') {
+ return { 'delete': 'vga' };
+ }
+ return { vga: ret };
+ },
+ onSetValues: function(values) {
+ this.originalConfig = PVE.Parser.parsePropertyString(values.vga, 'type');
+ return this.originalConfig;
+ },
+ },
+ } : undefined,
+ },
hotplug: {
header: gettext('Hotplug'),
defaultValue: 'disk,network,usb',
--
2.30.2
^ permalink raw reply [flat|nested] 10+ messages in thread
* [pve-devel] [PATCH docs v9 5/5] added noVNC clipboard documentation
2023-05-22 10:09 [pve-devel] [PATCH qemu-server/novnc/manager/docs v9 0/5] Feature VNC-Clipboard Markus Frank
` (3 preceding siblings ...)
2023-05-22 10:09 ` [pve-devel] [PATCH manager v9 4/5] added clipboard checkbox to VM Options Markus Frank
@ 2023-05-22 10:09 ` Markus Frank
2023-06-15 12:11 ` [pve-devel] [PATCH qemu-server/novnc/manager/docs v9 0/5] Feature VNC-Clipboard Dominik Csapak
2023-07-14 8:27 ` Markus Frank
6 siblings, 0 replies; 10+ messages in thread
From: Markus Frank @ 2023-05-22 10:09 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Markus Frank <m.frank@proxmox.com>
---
qm.adoc | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/qm.adoc b/qm.adoc
index f28043f..fc604a5 100644
--- a/qm.adoc
+++ b/qm.adoc
@@ -717,6 +717,24 @@ Selecting `serialX` as display 'type' disables the VGA output, and redirects
the Web Console to the selected serial port. A configured display 'memory'
setting will be ignored in that case.
+.VNC clipboard
+You can enable the VNC clipboard by setting `vnc-clipboard` to 1.
+
+----
+# qm set <vmid> -vga <displaytype>,vnc-clipboard=1
+----
+
+In order to use the clipboard feature, you must first install the
+SPICE guest tools. On Debian-based distributions, this can be achieved
+by installing `spice-vdagent`. For other Operating Systems search for it
+in the offical repositories or see: https://www.spice-space.org/download.html
+
+Once you have installed the spice guest tools, you can use the VNC clipboard
+function (e.g. in the noVNC console panel). However, if you're using
+SPICE, virtio or virgl, you'll need to choose which clipboard to use.
+This is because the default *SPICE* clipboard will be replaced by the
+*VNC* clipboard, if `vnc-clipboard` is set to 1.
+
[[qm_usb_passthrough]]
USB Passthrough
~~~~~~~~~~~~~~~
--
2.30.2
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [pve-devel] [PATCH qemu-server/novnc/manager/docs v9 0/5] Feature VNC-Clipboard
2023-05-22 10:09 [pve-devel] [PATCH qemu-server/novnc/manager/docs v9 0/5] Feature VNC-Clipboard Markus Frank
` (4 preceding siblings ...)
2023-05-22 10:09 ` [pve-devel] [PATCH docs v9 5/5] added noVNC clipboard documentation Markus Frank
@ 2023-06-15 12:11 ` Dominik Csapak
2023-07-17 13:50 ` Thomas Lamprecht
2023-07-14 8:27 ` Markus Frank
6 siblings, 1 reply; 10+ messages in thread
From: Dominik Csapak @ 2023-06-15 12:11 UTC (permalink / raw)
To: Proxmox VE development discussion, Markus Frank
Looks good from my side now, maybe someone else wants to chime in
regarding the splitting of the setting in the gui (but IMHO that's good)
consider the series:
Reviewed-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by: Dominik Csapak <d.csapak@proxmox.com>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [pve-devel] [PATCH qemu-server/novnc/manager/docs v9 0/5] Feature VNC-Clipboard
2023-06-15 12:11 ` [pve-devel] [PATCH qemu-server/novnc/manager/docs v9 0/5] Feature VNC-Clipboard Dominik Csapak
@ 2023-07-17 13:50 ` Thomas Lamprecht
0 siblings, 0 replies; 10+ messages in thread
From: Thomas Lamprecht @ 2023-07-17 13:50 UTC (permalink / raw)
To: Proxmox VE development discussion, Dominik Csapak, Markus Frank
Am 15/06/2023 um 14:11 schrieb Dominik Csapak:
> Looks good from my side now, maybe someone else wants to chime in
> regarding the splitting of the setting in the gui (but IMHO that's good)
>
I'm torn about that, as IMO it would be a slightly better fit there,
but if we'd move it we'd also need to move the spice enhancements, and
for that to still provide good UX we'd need to transform the display
edit into a tab panel with the second tab providing this and spice
enhancements, depending on selected display type, and that would be
quite the scope creep for this relatively long running patch series.
So can be fine for now as is for now..
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [pve-devel] [PATCH qemu-server/novnc/manager/docs v9 0/5] Feature VNC-Clipboard
2023-05-22 10:09 [pve-devel] [PATCH qemu-server/novnc/manager/docs v9 0/5] Feature VNC-Clipboard Markus Frank
` (5 preceding siblings ...)
2023-06-15 12:11 ` [pve-devel] [PATCH qemu-server/novnc/manager/docs v9 0/5] Feature VNC-Clipboard Dominik Csapak
@ 2023-07-14 8:27 ` Markus Frank
6 siblings, 0 replies; 10+ messages in thread
From: Markus Frank @ 2023-07-14 8:27 UTC (permalink / raw)
To: pve-devel
ping
On 5/22/23 12:09, Markus Frank wrote:
> overall changes v9:
> * renamed vnc_clipboard to vnc-clipboard
>
>
> qemu-server:
>
> changes v8:
> * removed unnecessary conditions
> * removed spicedevices variable and changed back to devices
> * created is_spice variable
>
> changes v6:
> * added check if vga->type is set to prevent error when using default display
> * renamed clipboard to vnc_clipboard
>
> changes v5:
> * removed return of regex check in the assertion-function for the clipboard config
> * moved clipboard code into spice-if-block
>
> changes v4:
> * removed duplicate code and created a spicedevices variable to store
> spice/vdagent devices.
> * clipboard_check_compatibility function
>
> changes v3:
> * added hint to make clearer that the spice guest tools are required for
> the noVNC-clipboard
> * Checkbox changes to ComboBox when a spice device is selected to make
> clear that only one clipboard can be used at a time.
> * added 2 test-cases
>
> changes v2:
> * added pci address to virtio-serial-pci
>
> Markus Frank (2):
> enable clipboard parameter in vga_fmt
> test cases for clipboard spice & std
>
> PVE/API2/Qemu.pm | 13 +++++
> PVE/QemuServer.pm | 61 ++++++++++++++++-------
> test/cfg2cmd/VNC-clipboard-spice.conf | 1 +
> test/cfg2cmd/VNC-clipboard-spice.conf.cmd | 27 ++++++++++
> test/cfg2cmd/VNC-clipboard-std.conf | 1 +
> test/cfg2cmd/VNC-clipboard-std.conf.cmd | 27 ++++++++++
> 6 files changed, 111 insertions(+), 19 deletions(-)
> create mode 100644 test/cfg2cmd/VNC-clipboard-spice.conf
> create mode 100644 test/cfg2cmd/VNC-clipboard-spice.conf.cmd
> create mode 100644 test/cfg2cmd/VNC-clipboard-std.conf
> create mode 100644 test/cfg2cmd/VNC-clipboard-std.conf.cmd
>
>
> novnc-pve:
>
> Markus Frank (1):
> added show clipboard button patch to series
>
> .../patches/0019-show-clipboard-button.patch | 30 +++++++++++++++++++
> debian/patches/series | 1 +
> 2 files changed, 31 insertions(+)
> create mode 100644 debian/patches/0019-show-clipboard-button.patch
>
>
> pve-manager:
>
> change v7:
> * fixed the empty Display Bug in VGA options found by Friedrich
> (it should be "Default" instead of empty)
>
> changes v6:
> * Changed onGetValues in DisplayEdit to only set the saved vnc_clipboard
> variable, so it's possible to reset type and memory to default values
>
> changes v4:
> * moved clipboard option from Display settings in Hardware to Options
>
> Markus Frank (1):
> added clipboard checkbox to VM Options
>
> www/manager6/qemu/DisplayEdit.js | 8 +++++++
> www/manager6/qemu/Options.js | 37 ++++++++++++++++++++++++++++++++
> 2 files changed, 45 insertions(+)
>
>
> pve-docs:
>
> changes v4:
> * rewrote entire Text
> * added command example to set clipboard to 1
>
> Markus Frank (1):
> added noVNC clipboard documentation
>
> qm.adoc | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
^ permalink raw reply [flat|nested] 10+ messages in thread