sysprog21 / mado

A window system for resource-constrained devices
MIT License
33 stars 12 forks source link

Implement VNC-compatible backend #32

Open jserv opened 1 month ago

jserv commented 1 month ago

The Qt VNC server uses the Remote Frame Buffer (RFB) protocol to share graphics and input between the server and one or more remote VNC-compatible clients. A common use case is to share parts of a Qt Quick application with a remote user or screen using the QtVncServer module. The remote user can view and interact with the application through VNC-compatible client software.

If we implement a VNC-compatible backend for Mado, we can create a similar scenario inspired by the Qt VNC server. This would serve as a minimalist backend for purposes such as performing memory analysis with Valgrind on Linux without needing to start in framebuffer console (fbcon) mode (#15), and providing a reference implementation for remote desktop support.

Reference:

shengwen-tw commented 1 month ago

Remote Frame Buffer (RFB) specification

jserv commented 1 month ago

The C library libvncserver offers extensive functionality for implementing VNC server or client capabilities in software projects. However, its GNU GPL licensing requires that any programs using it must also be released under the GNU GPL, as they're considered derivative works. In contrast, neatvnc is a VNC server library designed for speed and simplicity, distributed under the more permissive ISC license. QEMU incorporates a custom-built VNC display driver, which is made available under the permissive MIT license.

Reference: