public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Dominik Csapak <d.csapak@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: Re: [pve-devel] [PATCH qemu-server v3 1/6] enable clipboard parameter in vga_fmt
Date: Thu, 2 Mar 2023 11:28:17 +0100	[thread overview]
Message-ID: <b6cbebb5-7c93-4ba9-dbf0-fe46a24eb57a@proxmox.com> (raw)
In-Reply-To: <20221028123322.93142-2-m.frank@proxmox.com>

first:
sorry for the late review ;)

high level comments:

i know why you're adding it to the vga format, but maybe that's not the way
to go? we couple the console method with the display quite a lot, but
maybe we don't want to further increase that coupling?

(imho it would be much nicer to be able to define the console method/options
independently to the virtual display hardware)

any thoughts to that anyone?


On 10/28/22 14:33, Markus Frank wrote:
> added option to use the qemu vdagent implementation to enable the noVNC
> 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.
> 
> Signed-off-by: Markus Frank <m.frank@proxmox.com>
> ---
>   PVE/QemuServer.pm     | 19 ++++++++++++++++++-
>   PVE/QemuServer/PCI.pm |  3 ++-
>   2 files changed, 20 insertions(+), 2 deletions(-)
> 
> diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
> index c706653..333afc2 100644
> --- a/PVE/QemuServer.pm
> +++ b/PVE/QemuServer.pm
> @@ -190,6 +190,12 @@ my $vga_fmt = {
>   	minimum => 4,
>   	maximum => 512,
>       },
> +    clipboard => {
> +	description => "enable clipboard (requires spice-vdagent)",
i'd expand/change that a bit, e.g. by saying it needs the spice tools
in the guest (spice-vdagent is rather linux specific)

> +	type => 'boolean',
> +	optional => 1,
> +	default => 0
> +    }
>   };
>   
>   my $ivshmem_fmt = {
> @@ -3836,6 +3842,13 @@ sub config_to_command {
>   	}
>       }
>   
> +    if ($vga->{clipboard} && $vga->{type} =~ /^std|^cirrus|^vmware/) {

that regex could be written as /^(std|cirrus|vmware)/, it's a bit clearer and
if one adds one, the chance to oversee/forget the '^' is mitigated

also, whats with serial ports? can it even work on that?

maybe it would be nicer to have some compatibility hash where we can simply
add the vga methods supported, and add it here only instead of in two places?
(just a thought, you don't have to go that way if it's not much better)

> +	push @$devices, '-chardev', 'qemu-vdagent,id=vdagent,name=vdagent,clipboard=on';
> +	my $pciaddr = print_pci_addr("clipboard", $bridges, $arch, $machine_type);
> +	push @$devices, '-device', "virtio-serial-pci$pciaddr";
> +	push @$devices, '-device', 'virtserialport,chardev=vdagent,name=com.redhat.spice.0';
> +    }
> +
>       my $rng = $conf->{rng0} ? parse_rng($conf->{rng0}) : undef;
>       if ($rng && $version_guard->(4, 1, 2)) {
>   	check_rng_source($rng->{source});
> @@ -3880,7 +3893,11 @@ sub config_to_command {
>   	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->{clipboard}) {
> +	    push @$devices, '-chardev', 'qemu-vdagent,id=vdagent,name=vdagent,clipboard=on';

like i wrote above, we add it in two different places (that cannot happen together AFAICS)

it would be much nicer if we'd only have a single point in the code where we add that

> +	} 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});
> diff --git a/PVE/QemuServer/PCI.pm b/PVE/QemuServer/PCI.pm
> index 3d0e70e..7ddabe0 100644
> --- a/PVE/QemuServer/PCI.pm
> +++ b/PVE/QemuServer/PCI.pm
> @@ -138,7 +138,8 @@ sub get_pci_addr_map {
>   	scsihw1 => { bus => 0, addr => 6 },
>   	ahci0 => { bus => 0, addr => 7 },
>   	qga0 => { bus => 0, addr => 8 },
> -	spice => { bus => 0, addr => 9 },
> +	spice => { bus => 0, addr => 9, conflict_ok => qw(clipboard) },
> +	clipboard => { bus => 0, addr => 9, conflict_ok => qw(spice) }, # clipboard is used if spice is not running
>   	virtio0 => { bus => 0, addr => 10 },
>   	virtio1 => { bus => 0, addr => 11 },
>   	virtio2 => { bus => 0, addr => 12 },





  reply	other threads:[~2023-03-02 10:28 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-28 12:33 [pve-devel] [PATCH qemu-server/novnc/manager/docs v3 0/6] Feature noVNC-Clipboard Markus Frank
2022-10-28 12:33 ` [pve-devel] [PATCH qemu-server v3 1/6] enable clipboard parameter in vga_fmt Markus Frank
2023-03-02 10:28   ` Dominik Csapak [this message]
2022-10-28 12:33 ` [pve-devel] [PATCH qemu-server v3 2/6] added clipboard variable to return at status/current Markus Frank
2023-03-02 10:28   ` Dominik Csapak
2022-10-28 12:33 ` [pve-devel] [PATCH qemu-server v3 3/6] test cases for clipboard spice & std Markus Frank
2022-10-28 12:33 ` [pve-devel] [PATCH novnc v3 4/6] added show clipboard button patch to series Markus Frank
2022-10-28 12:33 ` [pve-devel] [PATCH manager v3 5/6] added clipboard checkbox & combobox to DisplayEdit Markus Frank
2023-03-02 10:28   ` Dominik Csapak
2022-10-28 12:33 ` [pve-devel] [PATCH docs v3 6/6] added noVNC clipboard documentation Markus Frank
2023-03-02 10:28   ` Dominik Csapak

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b6cbebb5-7c93-4ba9-dbf0-fe46a24eb57a@proxmox.com \
    --to=d.csapak@proxmox.com \
    --cc=pve-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal