ref:main

QEMU D-Bus display interface

dbus-display1.xml describes the org.qemu.Display1.* D-Bus interfaces that QEMU exports when started with -display dbus and -audiodev dbus. Sunshine’s capture = qemu backend generates its GDBus bindings from this file at configure time.

Provenance

Item Value
Upstream https://gitlab.com/qemu-project/qemu
Release v11.1.1 (qemu-11.1.1.tar.xz)
Commit c3d48b7d1e89604920e5b81b91140c2ad39a1943
Source file ui/dbus-display1.xml
Source sha256 b611ea1e075e8380611437ba0ca65ee77b970c435530e349fe9b5ef1998ee335
Vendored sha256 9531784ec43c168df8268bf31a70812f9ddb867f41acd2684fab7f51ff59e87e

Why the file is preprocessed

The upstream XML contains <?if $(env.HOST_OS) ...?> processing instructions that gdbus-codegen cannot parse. QEMU’s build runs scripts/xml-preprocess.py first. The vendored copy is the output of that same step for Linux hosts:

HOST_OS=linux python3 qemu-11.1.1/scripts/xml-preprocess.py \
qemu-11.1.1/ui/dbus-display1.xml \
third-party/qemu-dbus-display/dbus-display1.xml

The bindings are generated with the same flags QEMU uses (ui/meson.build):

gdbus-codegen --glib-min-required 2.64 --interface-prefix org.qemu. \
--c-namespace QemuDBus --generate-c-code dbus-display1 dbus-display1.xml

Updating

Repeat the preprocessing command against a newer QEMU release, then update the table above. The interfaces are versioned by name (org.qemu.Display1); new optional interfaces are advertised through the Interfaces properties, so older QEMU releases keep working with newer bindings.

License

ui/dbus-display1.xml carries no license header. Per QEMU’s LICENSE file, source files with no licensing information are released under the GNU General Public License, version 2 or (at your option) any later version, which is compatible with Sunshine’s GPL-3.0 license. scripts/xml-preprocess.py is MIT licensed and is not vendored.