If you notice virsh always requires root permission due to the access to libvirt and kvm. When it comes to creating shortcut for non-root user, you're stuck.
To overcome the root permission request (e.g. sudo password), what you need is to export the LIBVIRT_DEFAULT_URI variable for that user.
$ export LIBVIRT_DEFAULT_URI=qemu:///systemThis way, when virsh picks up the environment variable, it knows which qemu URI to interface with.
With that in mind, you need to create a standard Linux shortcut file, something like the following example. Of course, please replace YOUR_VM_NAME to your actual VM name.
#!/usr/bin/env xdg-open[Desktop Entry]Version=1.0Type=ApplicationTerminal=falseExec=bash -c "export LIBVIRT_DEFAULT_URI=qemu:///system && virsh start YOUR_VM_NAME && virt-viewer YOUR_VM_NAME &"Name=My Shortcut NameComment= My VM Quick LaunchIcon=/path/to/image.pngThat's all about it!