diff --git a/home.md b/home.md index e11bbd4..a2da29d 100644 --- a/home.md +++ b/home.md @@ -66,10 +66,11 @@ In this wiki, you will find guides about [how to install](#install) and [use](#g ### Guest hardware - [Virtual hardware definition](/virt/vm) - - [Chipsets](/virt/vm/chipset) + - [Chipset](/virt/vm/chipset) - [Firmware](/virt/vm/firmware) - - [Graphic cards](/virt/vm/graphic-card) - - [Virtual I/O (virtio) devices](/virt/vm/virtio) + - [Graphic card](/virt/vm/graphic-card) + - [Virtual I/O device](/virt/vm/virtio) + - [Display](/virt/vm/display) ### Guest software diff --git a/virt/vm/display.md b/virt/vm/display.md new file mode 100644 index 0000000..ddab627 --- /dev/null +++ b/virt/vm/display.md @@ -0,0 +1,42 @@ +--- +title: Display +description: +published: true +date: 2025-11-08T10:28:07.779Z +tags: +editor: markdown +dateCreated: 2022-01-25T14:50:10.751Z +--- + +# Virtual displays + +There are mutliple displays devices available, or screens where one can access the virtual machine graphical contents. + +## Dbus display + +The Dbus display is the newest of the bunch. + +### libkms + +A project called [**libmks**](https://gitlab.gnome.org/GNOME/libmks) is offering an implementation with `libvirt` and `QEMU`. + +This project is a GTK library called "libmks" (short for Mouse, Keyboard, Screen) that provides a way to interact with QEMU virtual machines through D-Bus. + +It allows GTK applications to display and control VM screens, keyboards, and mice. + +Key komponents: + +1. **MksDisplay** - A GTK widget that displays the VM screen content, handling the visual representation and user interaction (mouse, keyboard, touch). +2. **MksScreen** - Represents a VM screen that can be connected to a display widget. It provides access to screen properties and allows configuration of screen dimensions. +3. **MksKeyboard/MksMouse/MksTouchable** - Abstractions for virtualized QEMU devices that allow sending input events (key presses, mouse clicks/moves, touch events) to the VM. +4. **MksSession** - Manages the connection to a QEMU instance via D-Bus, discovering available devices and providing access to them. +5 **MksPaintable** - A GDK paintable object that receives rendering updates from QEMU, supporting both traditional framebuffer updates and DMA-BUF based updates for better performance. + +The library uses D-Bus communication with QEMU's display interface to: +- Attach to VM screens and receive visual updates +- Send keyboard/mouse/touch events to the VM +- Configure screen properties +- Handle clipboard sharing + +It's designed to work with QEMU's D-Bus display interface and provides a GTK-friendly API for integrating VM displays into GTK applications. The library supports both synchronous and asynchronous operations for all its functions. +The project uses GTK 4, GIO, and various GTK components for the UI integration, with D-Bus for communication with QEMU. \ No newline at end of file