WIP Rust crates to interact with a -display dbus QEMU. Some dependencies, such as RDW are also in development and unreleased.
Go to file
Marc-André Lureau 9fd90c70c8 qemu-display: avoid sending absolute position if unsupported
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-11-15 14:37:47 +04:00
.cargo Remove gtk4 2021-04-13 16:45:42 +04:00
keycodemap keycodemap: bump phf 2022-01-18 23:10:36 +04:00
keycodemapdb@320f92c36a Update keycodemapdb 2021-03-09 15:47:09 +04:00
qemu-display zbus: stick to 3.3, until !596 is fixed 2022-11-15 14:37:47 +04:00
qemu-rdw qemu-display: avoid sending absolute position if unsupported 2022-11-15 14:37:47 +04:00
qemu-vnc Bump zbus & clap 2022-09-28 18:32:17 +04:00
qemu-vte Update to gtk4 0.5 2022-11-15 11:36:27 +04:00
xtask Clippy fixes 2021-03-08 01:02:59 +04:00
.gitignore Initial commit 2021-02-09 16:26:31 +04:00
.gitmodules Remove gtk4 2021-04-13 16:45:42 +04:00
.rustfmt.toml Add a README.md 2021-10-08 20:25:58 +04:00
Cargo.toml Bump gtk/glib/rdw deps 2022-01-18 23:08:46 +04:00
README.md Add a README.md 2021-10-08 20:25:58 +04:00

QEMU D-Bus display experiment

Introduction

WIP Rust crates to interact with a -display dbus QEMU. The development branch is currently: https://gitlab.com/marcandre.lureau/qemu/-/tree/dbus

See also the QEMU mailing list for progress.

Most dependencies are released, but notably zbus 2.0 is still in beta. RDW and VTE4 widgets are also unreleased at this stage.

Features

Depending on what the VM exposes & supports, various interfaces are implemented:

  • display, with optional DMABUF sharing
  • display resize
  • keyboard & mouse
  • serial terminals
  • QMP/HMP monitors
  • audio playback & recording
  • USB device redirection
  • clipboard sharing

Project organization

qemu-display

This crate provides simple D-Bus interfaces through zbus, and some basic abstractions.

qemu-rdw

This crate aims to provide Gtk+ 4 widget for a QEMU display, as well as dialogs/widgets for USB redirection and other options or features.

Currently it's a demo app (run by default with cargo run).

It is also based on a WIP crate "RDW" (Remote display/desktop widget) to provide a base widget for various remote display solutions (VNC, RDP, Spice etc).

qemu-vnc

A simple VNC server implementation.

qemu-vte

A standalone VTE/Gtk+ 4 client, which should eventually be a consumable crate or integrated with qemu-rdw.

Build requirements

To build this project, you will need several system libraries. Here is the current list of build dependencies on Fedora:

$ sudo dnf install cargo gcc usbredir-devel wayland-devel libxkbcommon-devel glib2-devel gtk4-devel gstreamer1-devel gstreamer1-plugins-base-devel