tbh i dont know. i just google why spice is bad (craft pointed it out, so it wasnt just me experiencing this), and someone suggested virtviewer, i tried it and it worked fine. i’m not sure if there is anything better.
virt-viewer uses libvirt to connect to domain graphical console.
as virt-viewer --help suggests, it takes a DOMAIN-NAME|ID|UUID as argument.remote-viewer is the same client, but doesn’t use libvirt, but a URI
instead. A spice URI is just like what you imagined, spice://server:port.
https://spice-devel.freedesktop.narkive.com/2bHrbNG4/can-t-connect-with-virt-viewer-on-windows
all i can tell you is, i didn’t feel laggy, so to me it worked fine. when i adjust screen size it auto adjust resolution as well. it detects my mouse and keyboard, and there is a display for monitor.
there is no audio, not sure what to do about that. I got bluetooth headphones was wondering if i could connect to it that way, still researching.
anyway i’m just locally accessing it on homelab, so virtviewer for that purpose.
*new video
before starting to build your homelab, watch this first
PS: just a correction. i said use virtviewer, but actually the one im using is an accompinent app that came with it called remote viewer, located in the folder where virt viewer was installed.