I made it work with Debian 10 host, and a Windows 10 guest, in both directions.
install the spice-guest-tools in windows (it has a non-costly license on http://spice-space.org/)
find the details tab for the VM
put the video qxl to qxl (other may work but slower)
bottom left, click add hardware, add a channel, and put the spicevmc type with the redhat name. This is very important for the clipboard to work.
You must restart virt-manager. It is also important you shut down the OS of the VM.
you can also use the option virt-manager --debug to see logs when you copy paste.
Here can be found more details:
thanks to redhat that provided all the drivers
Since my answer was popular, I would like also to share how to share a folder.
I don't think it is supported for linux kernel older than 4.19. But it works on 4.19. You need to be careful that you do not share a folder with the whole internet wihtout password. But you need to check this yourself.
Use virt-manager to share files between Linux host and Windows guest?
You set a folder as shared by right clicking on Windows.
linux with Nautilus can connect to the smb://IP_WINDOWS. But it is better to use the shell it is more stable.
enable firmware rules on windows
Open Control Panel, click System and Security, and then click Windows Firewall.
In the left pane, click Advanced settings, and in the console tree, click Inbound Rules.
Under Inbound Rules, locate the rules File and Printer Sharing (NB-Session-In) and File and Printer Sharing (SMB-In).
For each rule, right-click the rule, and then click Enable Rule.
find ips using ipconfig and ifconfig
remove password protection for smb
It is important to deactivate authenticate for all networks in the network configuration in windows, accessible from file sharing. then the folder must be created from scratch to make sure it works
See in particular the section "How to share files over the network without needing a password" at the pureinfotech.com link above.
If you make the public network have free access without password, it may be a security risk (do not put your credit card number in the shared folder yet). But it will work. You can expand upon those instructions. I don't think a VM inside linux is easily accessible from the public network, but maybe.
And this is how to mount
sudo mount -t cifs //192.168.1.123/Users/MrHappy/Desktop/repos /media/vm -o user=externo,password=asd,uid=1000,gid=1000,mfsymlinks
or add this in /etc/fstab
//192.168.1.123/Users/MrHappy/Desktop/repos /media/vm cifs user=externo,password=asd,uid=1000,gid=1000,mfsymlinks
And then one can mount using
sudo mount /media/vm
it is important to replace the gid and uid with the ones of the linux machine, using "id -g user" and "id -u user"
the ui adn gid are so taht not only root has access but also the user
the option mfsymlinks enables symlinks to work
before you shut down the host computer, you should run this or the mount point is stuck:
sudo umount -a -t cifs -l
It is better to do it a few minutes before shutting down the computer.
if you want to make a plug-and play usb microphone (such as audio technica) work in a windows guest, you just need to add a "usb redirection" module in virtmanager, and perhaps set the hardware usb device to usb 3 if the socket is blue for usb 3. lsusb -v can inspect that the host finds the device. Windows device manager should then see the device. Try to unplug and replug. do not add the specific usb name in virt-manager or it crashes. sometimes, you may need in windows to unplug-replug the microphone, and open settings/system/sound to see the microphone appear.
On a working PC, I was using the Intel integrated graphics and not an amd/nvidia card. I had tearing for videos inside the VM. I removed it by activating TearFree in the intel driver. You can check that TearFree is enabled by running "grep -i tear /var/log/Xorg.0.log"