[libvirt PATCH v2 0/4] Enable copy/paste for vnc displays

Jonathon Jongsma jjongsma at redhat.com
Thu Mar 24 19:25:40 UTC 2022


This patch series enables support for the qemu-vdagent character device which
enables copy/paste support between guest and client when using vnc graphics.

The guest must be configured with something like the following:

    <channel type='qemu-vdagent'>
      <source>
        <clipboard copypaste='yes'/>
        <mouse mode='client'/>
      </source>
      <target type='virtio' name='com.redhat.spice.0'/>
    </channel>

Copy/paste sync requires a vnc client that has support for copy/paste commands.
Currently virt-viewer does not work, but the version of tigervnc provided by
fedora (executable name 'vncviewer') does work.

More details about this device on Gerd's blog:
https://www.kraxel.org/blog/2021/05/qemu-cut-paste/

For now I have left the target to be configurable to match the spicevmc
channel, although Marc-Andre has suggested to simply hard-code it to the virtio
name com.redhat.spice.0

Changes in v2:
 - change xml syntax to use <clipboard> and <mouse> sub-elements of <source>
   defined in the same way as they are for the spice display.
 - fix a build failure when apparmor was enabled
 - Add another test for when features are turned off

Jonathon Jongsma (4):
  qemu: add capability for qemu-vdagent chardev
  Rename virDomainGraphicsSpiceMouseMode to virDomainMouseMode
  conf: add qemu-vdagent channel
  qemu: add support for qemu-vdagent channel

 docs/formatdomain.rst                         | 23 ++++++
 src/conf/domain_conf.c                        | 70 +++++++++++++++++--
 src/conf/domain_conf.h                        | 24 ++++---
 src/conf/domain_validate.c                    |  1 +
 src/conf/schemas/domaincommon.rng             | 51 +++++++++-----
 src/libvirt_private.syms                      |  4 +-
 src/libxl/libxl_conf.c                        |  8 +--
 src/libxl/xen_xl.c                            | 16 ++---
 src/qemu/qemu_capabilities.c                  |  2 +
 src/qemu/qemu_capabilities.h                  |  1 +
 src/qemu/qemu_command.c                       | 32 +++++++--
 src/qemu/qemu_monitor_json.c                  | 27 +++++++
 src/qemu/qemu_process.c                       |  1 +
 src/qemu/qemu_validate.c                      |  9 +++
 src/security/security_apparmor.c              |  2 +
 src/security/security_dac.c                   |  2 +
 .../caps_6.1.0.x86_64.xml                     |  1 +
 .../caps_6.2.0.aarch64.xml                    |  1 +
 .../caps_6.2.0.x86_64.xml                     |  1 +
 .../caps_7.0.0.x86_64.xml                     |  1 +
 ...l-qemu-vdagent-features.x86_64-latest.args | 41 +++++++++++
 .../channel-qemu-vdagent-features.xml         | 37 ++++++++++
 .../channel-qemu-vdagent.x86_64-latest.args   | 41 +++++++++++
 .../qemuxml2argvdata/channel-qemu-vdagent.xml | 37 ++++++++++
 tests/qemuxml2argvtest.c                      |  2 +
 ...el-qemu-vdagent-features.x86_64-latest.xml | 58 +++++++++++++++
 .../channel-qemu-vdagent.x86_64-latest.xml    | 58 +++++++++++++++
 tests/qemuxml2xmltest.c                       |  2 +
 tests/testutilsqemu.c                         |  1 +
 29 files changed, 500 insertions(+), 54 deletions(-)
 create mode 100644 tests/qemuxml2argvdata/channel-qemu-vdagent-features.x86_64-latest.args
 create mode 100644 tests/qemuxml2argvdata/channel-qemu-vdagent-features.xml
 create mode 100644 tests/qemuxml2argvdata/channel-qemu-vdagent.x86_64-latest.args
 create mode 100644 tests/qemuxml2argvdata/channel-qemu-vdagent.xml
 create mode 100644 tests/qemuxml2xmloutdata/channel-qemu-vdagent-features.x86_64-latest.xml
 create mode 100644 tests/qemuxml2xmloutdata/channel-qemu-vdagent.x86_64-latest.xml

-- 
2.35.1



More information about the libvir-list mailing list