C

Qt VNC Server - Remote Desktop Example

// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

import QtQuick
import QtWayland.Compositor
import QtWayland.Compositor.XdgShell
import QtWayland.Compositor.WlShell
import QtWayland.Compositor.IviApplication
import QtVncServer

WaylandCompositor {

    WaylandOutput {
        sizeFollowsWindow: true
        window: Window {
            width: 1024
            height: 768
            visible: true

            VncItem {
                id: vncItem
                anchors.fill: parent
                Rectangle {
                    id: sourceRect
                    anchors.fill: parent
                    color: "steelblue"
                    Repeater {
                        model: shellSurfaces
                        ShellSurfaceItem {
                            shellSurface: modelData
                            onSurfaceDestroyed: shellSurfaces.remove(index)
                        }
                    }

                    Rectangle {
                        id: connectedIndicator
                        visible: vncItem.serverState === VncItem.Connected
                        x: 10
                        y: 10
                        width: 30
                        height: 30
                        radius: 15
                        color: "red"
                    }
                }
            }
        }
    }

    WlShell {
        onWlShellSurfaceCreated:
            shellSurfaces.append({shellSurface: shellSurface});
    }
    XdgShell {
        onToplevelCreated:
            shellSurfaces.append({shellSurface: xdgSurface});
    }
    IviApplication {
        onIviSurfaceCreated: {
            shellSurfaces.append({shellSurface: iviSurface});
        }
    }

    ListModel { id: shellSurfaces }
}