1 unstable release

new 0.1.0 Jan 29, 2025

#311 in GUI

MIT license

130KB
3.5K SLoC

org.qemu.Display1 D-Bus RDP server

Crates.io Documentation License

RDP server for org.qemu.Display1 interface (as exposed by qemu -display dbus).

The project was originally designed to work with QEMU, but it can be used with other displays/UI that implement the D-Bus interface.

Features

  • RDP server in Rust thanks to IronRDP
  • using TLS/CredSSP for secure connections
  • text clipboard sharing
  • audio playback
  • monitor resize
  • remotefx image codec
  • Opus audio codec (works with some clients, like FreeRDP)

Installation & usage

cargo install qemu-rdp

To run the server against qemu, the simplest way is to use qemu -display dbus and run the server: (requires certificate and key)

qemu-rdp serve --bind-address YOUR_IP:3389 --cert=CERT.PEM --key=KEY.PEM

Although for a complete setup (with audio devices, clipboard and such), you may want to wait for libvirt to support it.

TODO

Some ideas to improve the project:

  • some video/image codec (AV1/AVC/HEVC)
  • USB redirection
  • audio recording
  • more types clipboard redirection
  • file system redirection
  • multimonitor
  • tons of other stuff from RDP features, and a lot of bug fixes🐛

Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

Development Setup

  1. Clone the repository:
git clone https://gitlab.com/marcandre.lureau/qemu-display
cd qemu-display/qemu-rdp
  1. Build the project:
cargo build

Changelog

[0.1.0] - 2025-01-29

  • Initial release

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

  • Thanks to contributors, especially Mihnea Buzatu would did the initial work during GSoC 2023
  • Credits to IronRDP
  • Red Hat!

Contact


Built with ❤️ using Rust

Dependencies

~49–82MB
~1.5M SLoC