Recent Linux kernels and have added the ability to pass through PCI devices to QEMU guests.
I run NixOS with Windows 10, Windows 7, and Ubuntu guests. Only one guest can be run at a time. I have a second GPU with a second screen that gets passed directly to the VM. I use numactl and nice to half surrender half my CPU cores to the VM and static huge pages to hand over a chunk of memory. The VM also gets passed an entire dedicate SSD for application storage. I believe libvirt can do most of this automatically now. I pass in a seperate bluetooth controller for keyboard and mouse.
Performance wise you're missing some CPU power and RAM, but otherwise running at full speed. Applications run flawlessly, its my dream development machine. I dont game much but I get the same FPS from the vm as bare metal windows on the same machine, as CPU and RAM are not my bottle neck.
Id I had a supported GPU or the Pascal drivers dropped I could get MacOS running and it'd be a one stop shop.
The best source to get started I've found is the arch wiki: https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVM...
My keyboard and mouse can pair to multiple different machines at the same time and switch with a button press so I just do that.
Synergy also works fine, you just need to temporarily pass a real keyboard in to set it up.
There is also a newish feature in QEMU that allows they physical devices to be swapped back and forward by pressing both CTRL keys [1]. It works reasonably well with a few quirks (Extra mouse buttons dont work in guest, for example)
Same thing apples to the screen, I surrender an entire monitor to whatever VM is running, but you could use a KVM switch.
It's a little work to get set up and tuned but it is 100% a dual boot killer. The next time I reconfigure this machine, I won't be installing a native Windows partition, I simply don't need it anymore.
Heres a video demoing and explaining it a bit: https://youtu.be/16dbAUrtMX4
[1] https://www.kraxel.org/blog/2016/04/linux-evdev-input-suppor...