Gratuliere!
Das ist schon mal die halbe Miete.
Der Rest ist zwar auch noch Gefrickel, aber in Teilen optional, bzw. Geschmackssache.
Für Input-Geräte gibt es Möglichkeiten die über den Netzwerk-Stack mit der VM zu teilen ("evdev" wäre da eine der Varianten).
Ich persönlich habe es mit einem Bash-Script gemacht, das neben Keyboard und Maus auch gleich die Monitor-Source gewechselt hat. (Ich hatte eine zweite Maus, die immer beim Host blieb und auf einer Taste das Ausführen des entsprechenden Scripts belegt hatte. Ich hatte auch irgendwann eine Variante, bei der ich das Script per SSH von der VM auf dem Host ausgeführt habe...aber da musste ich halt immer das Passwort eintippen, was mir gegenüber einem simplen Tastendruck dann zu blöd war
)
Für das Monitor-Switching habe ich "ddccontrol" verwendet. Dafür muss dein Monitor allerdings i2c unterstützen und bei nVidia-Karten gab/gibt es da die ein oder andere Beschränkung. (Wenn ich mich richtig erinnere, konnte man in Linux nicht zu einem HDMI-Port wechseln, weil der Part im nVidia-Treiber proprietär ist und von ddccontrol nicht angesprochen werden kann und man musste in irgendeinem Config-File des nVidia-Treibers rumtricksen, damit ddccontrol mit der Karte arbeiten konnte.)
Sound wird wahrscheinlich noch ein Thema werden.
Das lässt sich einigermaßen gut mit z.B. einem PulseAudio-Server (auch wieder über den Netzwerk-Stack) lösen, allerdings mit dem Nachteil, dass immer mal wieder ein Knacken zu hören sein wird.
Die beste Qualität hatte ich mit einer separaten USB-Soundkarte für die VM, bei der der Ausgang physikalisch mit nem Kabel in eine Input-Buchse der Mainboard-Soundkarte geschleift wurde.
Beide Konstruktionen lassen das Mischen des Host- und VM-Sounds zu. (Über die Sound-Einstellungen kann man relativ einfach mehrere Quellen beim selben Ausgabegerät ausgeben lassen.)