How qubes passes screen from a standalone to dom0?

From what I see in GUI virtualisation article, Qubes uses qubes-gui and qubes-guid processes connected over vchan to create windows in dom0 and update their contents.

I wonder what happens when domU has no qubes integration (for instance, when you’re installing a distro from scratch)? Namely, what software or protocol or whatever is used to pass the desktop to dom0? How can it be configured or modified?

Cool, thanks! Although useful, I still would like to have more flexibility than that.

Is it possible to resize the window or maximize it and stretch the image while keeping the proportions?

I don’t think that I can deduce what technology is used from the xml snippet in the post since it is abstracted by libvirt. Is it a part of xen or qemu?

I think it’s a qemu inside stubdomain:

gui-emulated

Qube provides GUI through emulated VGA. Setting this feature to True enables emulated VGA output. Note that when gui-agent connects to actual VM, emulated VGA output is closed (unless debug property is set to True). It’s possible to open emulated VGA output for a running qube, regardless of this feature, using qvm-start-daemon –force-stubdomain QUBE_NAME command.

This feature is applicable only when qube’s virt_mode is set to hvm. See also gui feature.

If neither gui nor gui-emulated is set, emulated VGA is used (if applicable for given VM virtualization mode).

linux-stubdom

Use Linux-based stubdomain for running device model (qemu). This makes use of recent qemu upstream version. If disabled, use MiniOS-based stubdomain with old qemu fork (aka qemu-traditional). This applies only to hvm virt_mode, for other modes it is ignored.

Default: True

https://dev.qubes-os.org/projects/core-admin-client/en/stable/manpages/qvm-features.html

1 Like