KVM Guest's fullscreen issue using virt-manager

Dear Sir/Madam,

I’ve been struggling with this issue for a while and haven’t found a solution yet. I already searched here and in Google but nothing that could help me find the reason. Perhaps I used the wrong keywords? Anyway… I hope someone can give me some light of what I may be missing or doing wrong.

I’ve installed and configured a Windows 7 guest in KVM. I used YaST as described right here. Installed the Virtio drivers and the spice-guest-tools in the guest. So far so good.
For managing the VM guests I use the Virtual Machine Manager (virt-manager) tool.

The issue comes here. Whenever I use virt-manager graphical console (virt-viewer?) for connecting to the guest, I get a glitched screen (frozen image) when going to fullscreen making it unusable. Exiting the fullscreen mode makes it usable again. When in fullscreen I can issue commands or move the mouse like if I’m clicking around, but no visual feedback until I switch back to windowed mode.

I’m using Splice as the Display along with QXL for the Video. Tried different Virtio drivers and QXL drivers and all with the same output.

However, using spice-gtk as the graphical console I can view the guest in fullscreen mode without any issue with the following command:

# spicy -h 127.0.0.1 -p 5600

Which makes me wonder what could be wrong with virt-manager?
I know I can just live with it and use spicy but I would like to be able to use virt-manager.

Here is my VM xml config (created with the mentioned tool):


<domain type='kvm'>
  <name>Development</name>
  <uuid>613e8faf-ba11-48bb-a3f5-2dce328adc9e</uuid>
  <memory unit='KiB'>8388608</memory>
  <currentMemory unit='KiB'>8388608</currentMemory>
  <vcpu placement='static'>4</vcpu>
  <os>
    <type arch='x86_64' machine='pc-i440fx-2.6'>hvm</type>
  </os>
  <features>
    <acpi/>
    <apic/>
    <hyperv>
      <relaxed state='on'/>
      <vapic state='on'/>
      <spinlocks state='on' retries='8191'/>
    </hyperv>
    <vmport state='off'/>
  </features>
  <cpu mode='custom' match='exact'>
    <model fallback='allow'>Skylake-Client</model>
  </cpu>
  <clock offset='localtime'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='no'/>
    <timer name='hypervclock' present='yes'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <pm>
    <suspend-to-mem enabled='no'/>
    <suspend-to-disk enabled='no'/>
  </pm>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw'/>
      <source file='/var/lib/libvirt/images/Development.raw.img'/>
      <target dev='vda' bus='virtio'/>
      <boot order='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/var/lib/libvirt/images/virtio.iso'/>
      <target dev='sda' bus='sata'/>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <controller type='usb' index='0' model='ich9-ehci1'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x7'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci1'>
      <master startport='0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0' multifunction='on'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci2'>
      <master startport='2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x1'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci3'>
      <master startport='4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pci-root'/>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </controller>
    <controller type='sata' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
    </controller>
    <interface type='network'>
      <mac address='52:54:00:48:8a:35'/>
      <source network='default'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>
    <channel type='spicevmc'>
      <target type='virtio' name='com.redhat.spice.0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <input type='tablet' bus='usb'>
      <address type='usb' bus='0' port='1'/>
    </input>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='spice' autoport='yes'>
      <listen type='address'/>
      <image compression='off'/>
    </graphics>
    <sound model='ich6'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </sound>
    <video>
      <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <redirdev bus='usb' type='spicevmc'>
      <address type='usb' bus='0' port='2'/>
    </redirdev>
    <redirdev bus='usb' type='spicevmc'>
      <address type='usb' bus='0' port='3'/>
    </redirdev>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </memballoon>
  </devices>
</domain>

The host is running openSUSE Tumbleweed updated today.

Thanks in advance!

virt-manager is likely using the VNC protocol and not Spice.

I’ve never felt that VNC graphics performed very well, particularly on a Windows machine…
Particularly for a very large, very high resolution screen you need a fairly powerful GPU.

You can <try> to modify the Remote Desktop graphics to be only 16-bit color, and a low display resolution.

Personally, when I run into this,
I just don’t go to full screen.

TSU

You mean it is overriding it, even if virt-manager is set to use Spice (screenshot below)?

I will try that but would like to keep the same resolution as host… is 1366x768, so is not high. The reason for using it as full screen mode is because the resolution is quite limited for the IDE I use in Windows for work. If the monitor were a bit larger, I won’t have any issue running in windowed mode.

Found that is a bug, Bug 1352216](https://bugzilla.redhat.com/show_bug.cgi?id=1352216) - screen content is not updated automatically but only on focus and unfocus.
Specially as described in Comment 16.

I guess I will have to wait for them to release an update.

Issue is fixed in version 0.33 of spice-gtk.
For anyone experiencing the same, you can find all the details here: Bug 1352216](https://bugzilla.redhat.com/show_bug.cgi?id=1352216) - screen content is not updated automatically but only on focus and unfocus.

You can also find the rpms I’ve built for openSUSE Tumbleweed in there. You can use them while openSUSE team updates the packages.