KVM with multiple monitors

On Pop!_OS 21.04 - I’ve just got into KVM and virtual-machine-manager (which I like way more than QEMU). It makes USB passthrough very simple (QEMU failed altogether to allow me to pass through my USB headset). However, one issue is how I can get a VM to use both monitors on my machine. I have read what I can find online that overall imply that multiple monitors can be done with spice display.

I have added a second display to the VM configuration, and the running Windows VM thinks it has two screens - but I can’t find a way to show the second screen in a window and full screen view only presents the one screen. It is very frustrating.

Can anyone give me some clues?

I haven’t used virt-manager in a while, but I’ll be coming back to it soon, I hope. In any case, I don’t remember there being a way to make it act like it has 2 screens. I assume in the windows vm, you set the screen to side-by-side, instead of duplicate display.

I think your window manager / desktop environment needs to support full screening a window on two monitors, but I can’t say for sure.

If you want to really get into passthrough, pass a GPU to the VM and connect it to your monitors, that’d be the easiest to do from what I know. But maybe someone has experience with multi-monitors and VMs. I hate multi-monitors, so I don’t even know why I’m commenting here.

1 Like

Biky said “I hate multi-monitors, so I don’t even know why I’m commenting here.”
Biky made Bart spit coffee on his keyboard! Thanks Biky!

1 Like

I wonder if there’s demand for virt-manager, enough to make a video. I have a backlog that’ll probably last me into September (at least) but that might be a topic to add to the list.

1 Like

I doubt there’s any, for most home users, virt-manager is just a stepping stone, either for GPU passthrough, or just a simple VM that doesn’t need multi-monitor setup and stuff.

I disagree - I use Pop_OS at home as I (as an IT pro) am tired of Windows. However, when working from home for my employer I find there are a few things that must have Windows for - including integration with my corporate SIP softphone, AD management and GPO maintenance/testing. Having one PC for both home/personal use in Pop_OS and some work use with Remmina for RDP, and a virtual PC when I luck out and have to run a Windows app, uses less floor space and uses one set of screens, keyboard and mouse. I also like it.

This website article - Spice with multiple monitors - tells me I can probably get multi-monitor support with Spice and QXL.

I’m thinking a bit more about this lately. I’m also thinking about content around GNOME Boxes also.

If there’s not much popularity in regards to virt-manager, it can actually gain popularity if I cover it and title it properly. It might even be a good idea to try and push the popularity with the right video title.

I’m not sure where in my schedule I might be able to fit this in, but I think I’d have a lot of fun covering these things. Every now and then, I’ll cover something that’s not popular at all just because I selfishly want to lol

What in particular makes you need Windows for your softphone? Is it a corporate restriction? I was using a SIP app on Linux some time ago, and it’s on my list of things to set back up again. I can confirm it works on Linux but it all depends on what’s on the other end. I was curious because I need to sit down and set up my work phone again so as not to be so reliant on my mobile phone.

1 Like

I didn’t really want to sound too stupid, but I’ll do it, fine.

I think the particular accent is put on integration:

I worked for a company in the past that was using SIP, it was a call center and all the phones were softphones. I tried doing a push towards Linux, at least for some projects, but it didn’t really work out. The issue was that the only 2 softphones that we tried that worked fine were X-Lite and microSIP. X-Lite is proprietary, microSIP is open source, but for it’s for windows only.

I tried installing Linphone on Windows, as it’s also open source and available on other OS like Linux, macOS and Android, so it was a strong contender. The problem was that Linphone would only show the number that would be calling in, not the actual name / extension and language, which were custom names from Asterisk depending on which number the customers called (they could call Project X’s German line, or Project Y’s Turkish line etc.). X-Lite and microSIP would properly show that it was a customer coming from project X and calling on whatever language. This wouldn’t be an issue on an agent dedicated on a single project, even dedicated on a project on multiple languages, but it would be huge deal for agents who were taking care of more projects, because you can’t answer a customer from Project X “hello, you have called Project Y’s customer support line, how may we help you?”

And this was purely a linphone thing. Linphone is pretty awesome, but it has its quirks and I couldn’t find the option to change the default behavior to show the caller ID / name instead of the phone number.

And this was something pretty standard, so I can imagine that they could have other integrations with Windows. On that particular call center, agents would show as online in the CRM only if their softphone was connected. This was done server-side, so not really that big of a deal in this case, but I can imagine a smarter integration locally with the softphone, like click on a certain link in a proprietary program in their environment which would cal someone for you without having to click stuff.


Of course, all of the above could not apply and the only integration on their end could be server side, but I’d think it would be something to do with Windows. As for AD and GPO, not sure why one would even need that on their Linux boxes, although there are some things that can be done with that, besides the classic one-account to rule them all (SSO), which I honestly kinda hate, because I can’t have a different password for different places.

I was thinking of doing some short tutorials on it myself, I am about to finish a threadripper 1950x build and I’m going to run virt-manager and probably LXD on it. I’m going to control stuff via virt-manager from another machine, probably my main PC, just to show how useful it can be when managing multiple boxes running libvirt. But not sure if there will be a lot to be said, at least by me, so I think you can probably make a much better tutorial than I ever can.

Hi Jay - My interest in a Windows VM is for the corporate software I must use within my employment, which includes a SIP softphone from BT (in the UK) that is only available for Windows. I could have a SIP desk phone, but I prefer to use the softphone. There is also a requirement on most businesses for Microsoft Office, which I don’t like much but I have to play along. MS Office webapps are reducing the reliance on Windows clients but they’re not quite as functionally rich. I am the Head of IT for the company, so I look after all users’ interests, and make decisions on policy and strategy for the company - believe me, I would love to break reliance on Windows! Too many software service suppliers are Windows-based, so it is not practical to break free.

One thing you might consider adding to the Windows VM video, apart from use with multiple monitors (for me), is TPM with a VM. Windows 11 requirement for TPM 2.0 is a) stupid and b) not well documented with KVM/QEMU from what I could see, and without it Windows 11 would need to be installed with the registry hack and risk Windows 11 being unusable later when the hack loophole is closed.

Thanks for considering my request. I watch all your content and learn new stuff all the time from your excellent content. I recommend your channel to anyone starting out with Linux!

I have cracked/solved using multiple monitors with KVM virtual machine manager!

I saw this youtube video, which gave me the clue: Setting up Multiple Monitors in a KVM QEMU VM - YouTube

I added second QXL display device to the VM, started the VM and then connected to it using ‘Remote Viewer’, enabling the second display in the Remote Viewer’s view menu. The path in my case was spice://localhost:

Happy days.

1 Like

I forgot to mention - it is also crucial to install the KVM VM tools. For Windows they can be downloaded from here: virtio-win-pkg-scripts/README.md at master · virtio-win/virtio-win-pkg-scripts · GitHub