Files
wiki/virt/vm/display.md

42 lines
2.7 KiB
Markdown

---
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.