/****************************************************************************
**
** Copyright (C) 2017 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
  \page qtwaylandcompositor-index.html
  \title Qt Wayland Compositor
  \brief An API to develop display servers that support the Wayland protocol.

  The Qt Wayland Compositor is a module that provides convenient and powerful
  QML and C++ APIs for developing custom display servers based on the
  \l {https://wayland.freedesktop.org/}{Wayland} protocol. The display server,
  often called a compositor, displays content from client applications that
  support the Wayland protocol.

  Wayland's design philosophy is to keep the core protocol simple and minimal.
  Developers can then expand on this core protocol with use-case-specific
  extensions. Qt Wayland Compositor supports many common extensions by default,
  and also has APIs to enable the creation of new, custom extensions.

  Typically, a compositor written with Qt Wayland Compositor becomes a
  subsystem inside a larger application manager process. Qt Wayland Compositor
  provides the APIs to communicate with clients and display their content on
  the screen. The QML APIs contain high-level APIs that easily integrate with
  the rest of Qt, enabling convenient animations, effects, and UI through
  Qt Quick. There are also C++ APIs available - if you need more low-level
  access.

  An application manager would typically implement additional features such as
  application life cycle, virtual keyboard input, security, and Inter-Process
  Communication (IPC). Qt provides the APIs that can be used to develop the
  remaining parts of an application manager in other modules. The
  \l {https://www.qt.io/qt-automotive-suite/}{Qt Automotive Suite} provides
  \l{https://doc.qt.io/QtApplicationManager}{Qt Application Manager}, which is a complete application manager that
  includes a compositor developed using Qt Wayland Compositor.

  For more information on Wayland, see \l{Wayland and Qt}.

  \section1 Features of Qt Wayland Compositor

  The Qt Wayland Compositor includes features necessary to create a compositor:

  \list
    \li A QML API to display and manipulate client content, fully integrated
        with all the features in Qt Quick.
    \li A C++ API for low-level access and control.
    \li Support for common extensions, including XDG Shell and IVI Application.
    \li APIs to easily expand the support for custom extensions.
  \endlist

  \section1 Environment Variables and Command-line Arguments

  The Qt Wayland Compositor recognizes the following environment variables and
  command-line arguments:

  \list
  \li Environment variables:
      \list
      \li \b QT_WAYLAND_HARDWARE_INTEGRATION Selects the hardware integration
          plugin to use.
      \li \b QT_WAYLAND_CLIENT_BUFFER_INTEGRATION Selects the client buffer
          integration plugin to use.
      \li \b QT_WAYLAND_SERVER_BUFFER_INTEGRATION Selects the server
          integration plugin to use.
      \endlist
  \li Command-line arguments:
      \list
      \li \c{--wayland-socket-name} Overrides the default socket name used for
          communicating with clients.
      \endlist
  \endlist

  \section1 Examples

  Take a look at the \l{Qt Wayland Compositor Examples} to learn how these APIs
  can be used to write custom compositors.

  \section1 API Reference

  The Qt Wayland Compositor can be used from C++ or QML:

  \list
    \li \l{Qt Wayland Compositor QML Types}
    \li \l{Qt Wayland Compositor C++ Classes}
  \endlist

  \section1 Module Evolution
  \l{Porting to Qt 6 - Qt Wayland Compositor} lists important changes in the
  module API and functionality that were done for the Qt 6 series of Qt.

  \section1 Licenses and Attributions

  Qt Wayland Compositor and the Qt Wayland integration plugin
  are available under commercial licenses from \l{The Qt Company}.

  In addition, Qt Wayland Compositor is available under the
  \l{GNU General Public License, version 3}, while
  the Qt Wayland integration plugin is available under the
  \l{GNU General Public License, version 3} or the
  \l{GNU General Public License, version 2}.

  See \l{Qt Licensing} for further details.

  Qt Wayland Compositor and the Qt Wayland integration plugin
  use protocol definitions under following permissive licenses:

  \generatelist{groupsbymodule attributions-qtwaylandcompositor}

*/
