summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicholas Bennett <nicholas.bennett@qt.io>2021-11-23 14:58:08 +0200
committerNicholas Bennett <nicholas.bennett@qt.io>2021-12-01 14:26:03 +0000
commit59762d2b675059d0ea9afcdf53a1437a8f655c44 (patch)
tree9079d62a1394ce3550029d1d1b35e371eeff68d7
parentd684c669a5001c8a9551b523aebbefa8bf99ff7c (diff)
Docs: 6.2 Release review
Removed notes related to minor Qt5 changes. Spelling and grammar correction. Utilized notes and warnings formatting in places for clarity. Updated the name of the online qdocconf file. Used grouping to create the important topics list. Removed qt 5 to qt 5 migration guides from important topics. Task-number: QTBUG-97120 Pick-to: 6.2 Change-Id: Ide5354e987c5175a08030cf32d78b38bae68e53e Reviewed-by: Robert Griebl <robert.griebl@qt.io>
-rw-r--r--doc/configuration.qdoc18
-rw-r--r--doc/container.qdoc15
-rw-r--r--doc/controller.qdoc3
-rw-r--r--doc/debugging.qdoc3
-rw-r--r--doc/elements-apps.qdoc4
-rw-r--r--doc/elements-common.qdoc2
-rw-r--r--doc/elements-systemui.qdoc6
-rw-r--r--doc/index.qdoc18
-rw-r--r--doc/installation.qdoc26
-rw-r--r--doc/installer.qdoc10
-rw-r--r--doc/intents.qdoc24
-rw-r--r--doc/introduction.qdoc9
-rw-r--r--doc/manifest.qdoc3
-rw-r--r--doc/migration-guide-6.2.qdoc5
-rw-r--r--doc/online/qtapplicationmanager.qdocconf (renamed from doc/online/applicationmanager.qdocconf)2
-rw-r--r--doc/qmlmodule.qdoc3
-rw-r--r--doc/resources.qdoc37
-rw-r--r--doc/singlevsmultiprocess.qdoc33
-rw-r--r--doc/systemui.qdoc19
-rw-r--r--doc/troubleshooting.qdoc43
-rw-r--r--doc/write-applications.qdoc11
-rw-r--r--doc/yaml.qdoc1
22 files changed, 167 insertions, 128 deletions
diff --git a/doc/configuration.qdoc b/doc/configuration.qdoc
index 841dd45d..aa19459b 100644
--- a/doc/configuration.qdoc
+++ b/doc/configuration.qdoc
@@ -30,11 +30,13 @@
/*!
\page configuration.html
+\ingroup qtappman
+\ingroup qtappman-highlights
\title Configuration
-
+\brief Configure the application manager through configuration (config) files and the command line.
\section1 Main Configuration
-You can configure the application manager through config files and the command line. To display the
+You can configure the application manager through configuration (config) files and the command line. To display the
currently supported command line options, run \c{appman --help}. Some of these options can also be
set via config files that are referenced on the command line with the \c{--config-file <filename>}
option.
@@ -75,10 +77,10 @@ or across multiple config files, the final value is resolved based on these rule
on the command line. Values are overridden by config files, as they are loaded.
\li Options that are specified directly via the command line always override values in any
config file.
- \li There is one exception: options that expect a list of values, such as \c -I or
- \c ui/importPaths. In this case, all values, regardless of where they are specified, are
- merged into one single, final list.
\endlist
+\note There is one exception: options that expect a list of values, such as \c -I or
+\c ui/importPaths. In this case, all values, regardless of where they are specified, are
+merged into one single, final list.
\table 100%
\header
@@ -109,7 +111,7 @@ or across multiple config files, the final value is resolved based on these rule
file, for example, to split the configuration cleanly, into a device specific and a
UI specific part. All the config files' content are merged in the order in which they
appear on the command line: keys that didn't appear in an earlier config value are
- taken as is; duplicate keys are merged according to the following algorithm:
+ taken as is; duplicate keys are merged according to the following rules:
\list 1
\li Scalar values overwrite earlier config values.
\li Lists are appended to the content from earlier lists.
@@ -182,7 +184,7 @@ or across multiple config files, the final value is resolved based on these rule
\li \b --dbus
\li string
\li Registers the ApplicationManager, ApplicationInstaller, NotificationManager, and
- WindowManager on the specified D-Bus: can be a full D-Bus bus specification string,
+ WindowManager on the specified D-Bus. This can be a full D-Bus bus specification string,
\c session, \c system, \c auto (default), or \c none (for no registration at all).
Use the \c auto keyword on the desktop or during development only. This keyword implies
@@ -195,8 +197,6 @@ or across multiple config files, the final value is resolved based on these rule
keeping the NotificationManager on the session bus. See the more advanced config-file
option\c dbus below.
- \note As of Qt 5.13, the new \c auto keyword replaces the old \c --start-session-dbus
- flag.
\row
\li [\c dbus]
\li map<object>
diff --git a/doc/container.qdoc b/doc/container.qdoc
index 4392639d..1135194f 100644
--- a/doc/container.qdoc
+++ b/doc/container.qdoc
@@ -31,6 +31,9 @@
\page containers.html
\title Containers
+\ingroup qtappman
+\ingroup qtappman-highlights
+\brief Describes an execution environment for an executable.
In the application manager context, a \b container describes an execution environment for an
executable: either an application's binary or its runtime binary, in multi-process mode. The
@@ -97,7 +100,7 @@ in multi-process mode:
devices. For GPUs that follow Linux standards, such as Intel, make sure to have
\c{/dev/dri/*} available within the container.
\li You have to implement PID mapping in your plugin; unless your container solution shares its
- PID namespace with the rest of the ssytem. This is necessary if you want to make use of the
+ PID namespace with the rest of the system. This is necessary if you want to make use of the
application manager's security features. Each connection coming into the application manager
via the Wayland or D-Bus Unix local sockets is queried for the PID of the application that
requests the connection. The application manager verifies these PIDs against the PIDs of all
@@ -165,8 +168,8 @@ plugins:
container: [ "/full/path/to/softwarecontainers.so", "/another/plugin.so" ]
\endcode
-Note that the application manager does \b not load plugins automatically if they are placed
-in a specific directory, since container plugins control the central security mechanism for
+\note The application manager does \b not load plugins automatically if they are placed
+in a specific directory. This is because container plugins control the central security mechanism for
separating applications.
\target container-integration
@@ -195,8 +198,8 @@ The \c process container accepts the following configuration settings:
\li \c controlGroups
\li object
\li A two-stage mapping object to allow for more readable code when dealing with \c cgroups
- from the System UI via Container::controlGroup. The top-level keys are readable group names
- that are used to interface with Container::controlGroup. The values themselves are maps
+ from the System UI via Container::controlGroup. The top-level \c keys are readable group names
+ that are used to interface with Container::controlGroup. The values themselves are \c maps
between multiple low-level \c cgroup sub-system names and the actual \c cgroup names within
those sub-systems, such as:
@@ -232,7 +235,7 @@ control which container integration is used:
preserve the order of the mappings. Each key is interpreted as a standard Unix wildcard
expression that is matched against the application ID. The first match stops the algorithm
and the mapping's value is used as the container integration ID. If no matches are found,
- the resulting containter integration ID is an empty string.
+ the resulting container integration ID is an empty string.
\badcode
containers:
diff --git a/doc/controller.qdoc b/doc/controller.qdoc
index 20b47f3f..602e00df 100644
--- a/doc/controller.qdoc
+++ b/doc/controller.qdoc
@@ -30,8 +30,7 @@
/*!
\page appman-controller.html
\title Controller
-\brief A command-line utility to trigger the installation of a specified package on the
- target device.
+\brief A command-line utility to trigger the installation of a specified package on a target device.
\ingroup qtappman-tools
The \c{appman-controller} is a command-line utility that can be used by the developer, or
diff --git a/doc/debugging.qdoc b/doc/debugging.qdoc
index 271b2fb3..56eac81b 100644
--- a/doc/debugging.qdoc
+++ b/doc/debugging.qdoc
@@ -30,7 +30,10 @@
/*!
\page debugging.html
+\ingroup qtappman
+\ingroup qtappman-highlights
\title Logging and Debugging
+\brief The application manager installs its own message handler to format logging output neatly.
\section1 Logging
diff --git a/doc/elements-apps.qdoc b/doc/elements-apps.qdoc
index 05f7bd0a..0c663f29 100644
--- a/doc/elements-apps.qdoc
+++ b/doc/elements-apps.qdoc
@@ -31,7 +31,9 @@
\page qml-apps.html
\title QtApplicationManager.Application QML module
-\brief Qt Application Manager module to use in applications.
+\ingroup qtappman
+\ingroup qtappman-highlights
+\brief Contains the components and types to use in an application.
The QtApplicationManager.Application QML module contains the components and types to use in an
application.
diff --git a/doc/elements-common.qdoc b/doc/elements-common.qdoc
index d62e199d..c951f44e 100644
--- a/doc/elements-common.qdoc
+++ b/doc/elements-common.qdoc
@@ -31,6 +31,8 @@
\page qml-common.html
\title QtApplicationManager QML module
+\ingroup qtappman
+\ingroup qtappman-highlights
\brief Qt Application Manager module common to both System UI and applications.
The QtApplicationManager QML module contains the components and types available to both System UI
diff --git a/doc/elements-systemui.qdoc b/doc/elements-systemui.qdoc
index 79ba7fe7..47344e41 100644
--- a/doc/elements-systemui.qdoc
+++ b/doc/elements-systemui.qdoc
@@ -31,7 +31,9 @@
\page qml-sysui.html
\title QtApplicationManager.SystemUI QML module
-\brief Qt Application Manager module for use in a System UI
+\ingroup qtappman
+\ingroup qtappman-highlights
+\brief Qt Application Manager module for use in a System UI.
The QtApplicationManager.SystemUI QML module contains the components and types to use in a
System UI.
@@ -41,7 +43,7 @@ Singleton QML types need not be declared, they are referenced by their type name
Instantiable QML types are declared with their name followed by curly braces. These
declarations may be nested, creating parent-child relationships between the items.
-Non-Instantiable QML types are return values provided to the System UI code, that allow the user
+QML types that cannot be instantiated are return values provided to the System UI code, that allow the user
direct access to data that would otherwise only be available (partially) through the singletons'
item models.
diff --git a/doc/index.qdoc b/doc/index.qdoc
index a6d70c83..c08e85e1 100644
--- a/doc/index.qdoc
+++ b/doc/index.qdoc
@@ -42,22 +42,8 @@ compositing window manager using the APIs that are exported from the C++ side.
For a high-level overview, see \l{The Qt Application Manager}{Introduction to the Qt Application Manager}.
\section1 Important topics
-\list
- \li \l{Installation}
- \li \l{Configuration}
- \li \l{Troubleshoot}
- \li \l{The System UI}
- \li \l{Write Applications}
- \li \l{Application Installer}
- \li \l{Logging and Debugging}
- \li \l{Containers}
- \li \l{Intents}
- \li \l{Use Qt Resources}
- \li \l{Single-Process vs. Multi-Process Mode}
- \li \l{Migrating code from 5.11 to 5.12}
- \li \l{Migrating code from 5.13 to 5.14}
- \li \l{Migrating code from 5.15 to 6.2}
-\endlist
+
+\annotatedlist qtappman-highlights
\section1 Tools
\annotatedlist qtappman-tools
diff --git a/doc/installation.qdoc b/doc/installation.qdoc
index 871facd4..1adc6985 100644
--- a/doc/installation.qdoc
+++ b/doc/installation.qdoc
@@ -31,7 +31,9 @@
\page installation.html
\title Installation
-
+\brief Discusses Qt Application Manager installation considerations, such as; support, prerequisites, code coverage data and system setup.
+\ingroup qtappman
+\ingroup qtappman-highlights
\section1 Supported Platforms
The application manager is tested regularly on multiple platforms.
@@ -63,7 +65,6 @@ To build the application manager with all its features, the following components
\list
\li \b Qt 6.2.0 or higher.
-
\li \b openssl \e{- Linux only and only if you need the installer functionality}.
Qt needs to be built with openssl support. The required minimum version is defined by Qt.
\li \b libyaml 1.6 or higher.
@@ -76,15 +77,16 @@ apt-get install libyaml-dev libarchive-dev libssl-dev
\endcode
\note On platforms without \c pkg-config (for example, Windows or macOS) as well as on platforms
-that lack one of the dependencies, the bundled versions of these libraries from the \c src/3rdparty
+that lack one of the prerequisites, the bundled versions of these libraries from the \c src/3rdparty
folder are automatically used instead. Make sure you are aware of the licensing implications,
-since these bundled 3rdparty libs will be linked in as static libraries. This option is not meant
-for production, but for development and testing environments only.
+since these bundled 3rdparty libs will be linked in as static libraries.
+
+\warning This option is not meant for production, but for development and testing environments only.
\section1 Multi-process vs. Single-process
By default, the application manager always tries to build in multi-process mode, but falls back
-to single-process mode, if certain dependencies are not available, such as:
+to single-process mode, if certain multi-process mode dependencies are not available, such as:
\list
\li You are building for \b Linux.
@@ -98,7 +100,7 @@ You can force the build mode via the respective \c --force-multi-process and
\target build
\section1 Build
-The application manager uses \c cmake for its build system. The basic installation steps are:
+The application manager uses \c CMake for its build system. The basic installation steps are:
\code
mkdir <builddir>
@@ -116,17 +118,17 @@ mkdir <builddir>
&& cmake --install .
\endcode
-There are various options that can be given to \c cmake to tailor the build to suit your needs.
+There are various options that can be given to \c CMake to tailor the build to suit your needs.
-With Qt's new cmake based build system, there are three ways to set configure options for Qt
+With Qt's new CMake based build system, there are three ways to set configure options for Qt
modules:
\list 1
\li You can call \c cmake from a shell and specify the options as \c -DINPUT_<option>=<value>
- directly on the cmake command line
+ directly on the CMake command line
\li You can also use the \c cmake-gui or Qt Creator's built-in configuration UI to change options
- after the first cmake run
- \li Again on the command line, there is Qt's convenience cmake wrapper \c qt-configure-module,
+ after the first CMake run
+ \li Again on the command line, there is Qt's convenience CMake wrapper \c qt-configure-module,
which lets you specify the options as normal command line options: \c --<option>=<value>
\endlist
diff --git a/doc/installer.qdoc b/doc/installer.qdoc
index 4b71c94e..b56f05ea 100644
--- a/doc/installer.qdoc
+++ b/doc/installer.qdoc
@@ -30,7 +30,11 @@
/*!
\page installer.html
+\ingroup qtappman
+\ingroup qtappman-highlights
+\ingroup qtappman-tools
\title Package Installer
+\brief Discusses the installer tool which dynamically installs, updates and removes packages.
\keyword Installer
\section1 Dynamically Installing, Updating, and Removing Packages
@@ -39,8 +43,8 @@ After applications have been packaged by the \l {Packager}{\c appman-packager} t
installed by the application manager at runtime. There are two interfaces for this functionality:
\list
- \li a QML interface for use within the application manager process
- \li a D-Bus interface for use by any process that is allowed to talk to the application
+ \li A QML interface for use within the application manager process.
+ \li A D-Bus interface for use by any process that is allowed to talk to the application
manager's \c PackageManager interface.
\endlist
@@ -91,7 +95,7 @@ that you need two Certificate Authorities (CAs):
in P12 format. The developers use these certificates to developer-sign their packages, using
the \l {Packager}, before submitting to an app store.
\li An \e {App-Store CA}: responsible for creating certificates for use by app store server
- backends to store-sign packages, before they are downloaded and installed onto devices.
+ back ends to store-sign packages, before they are downloaded and installed onto devices.
\endlist
Both these CAs can be the same or they can be derived from a common root CA.
diff --git a/doc/intents.qdoc b/doc/intents.qdoc
index eb825cf8..aa16f769 100644
--- a/doc/intents.qdoc
+++ b/doc/intents.qdoc
@@ -28,7 +28,10 @@
/*!
\page intents.html
+\ingroup qtappman
+\ingroup qtappman-highlights
\title Intents
+\brief Discusses the application manager's intent system and its API.
Much like the intent concept used on mobile operating systems, the application manager's intent
system is built around the idea of having a light weight inter-process communication (IPC)
@@ -43,21 +46,24 @@ system to display an image file: if the system has an image viewer application i
registered itself for handling the \c showImage intent, then any application could display image
files without knowing any specifics of the image viewer application.
-
The \l{https://developer.android.com/guide/components/intents-filters}{Android documentation} also
has a nice introduction to this concept.
+\section1 The Application Manager's Approach to Intents
The application manager's approach to intents is much simpler: although it (still) lacks a few
-features compared to other solutions (e.g. support for binary data or system broadcasts), it also
-comes with a very simple and straight forward API.
+features compared to other solutions. For example, support for binary data or system broadcasts.
+However, compared to other solutions, it comes with a very simple and straight forward API.
\note While mobile operating systems provide you with both the intent \b mechanism as well as a
description of all the defined \b{intent APIs}, the application manager is only providing the
mechanism. This is in line with the philosophy used in other modules within the application
manager, where the System UI is responsible for defining the system's interface and behavior.
+\section1 Intents Terminology
+
Here is some terminology to make it easier to understand the difference between all the IDs
involved in an intent request:
+
\list
\li the \c intentId: the name or class of an intent. In complex systems it makes sense to use
reverse-DNS notation here, e.g. \c io.qt.openUrl.
@@ -73,10 +79,12 @@ involved in an intent request:
\endlist
Arbitrary data can be attached to an intent request (see IntentClient::sendIntentRequest) and to an
-intent request reply (see IntentRequest::sendReply). Please be aware that this data needs to be
-first serialized from JavaScript objects to the underlying IPC transport and then deserialized back
-to a JavaScript object on the receiving side. Restricting the types used within the parameters and
-result object to JSON types is strongly advised.
+intent request reply (see IntentRequest::sendReply).
+
+\warning This data needs to be first serialized from JavaScript objects to the
+underlying IPC transport and then de-serialized back to a JavaScript object on
+the receiving side. Restricting the types used within the parameters and result
+object to JSON types is strongly advised.
\section1 Registering Intents
@@ -125,7 +133,7 @@ used to track the completion and possible result value of this request.
Within the System UI you can use exactly the same mechanism to create and track intent requests.
-\section1 Disambiguating Intent Request in the System UI
+\section1 Disambiguating an Intent Request in the System UI
In case an incoming intent request could potentially be handled by more than one application, the
application manager will reach out to the System UI to disambiguate the request and pick an
diff --git a/doc/introduction.qdoc b/doc/introduction.qdoc
index 37533e7b..e7174e11 100644
--- a/doc/introduction.qdoc
+++ b/doc/introduction.qdoc
@@ -30,11 +30,14 @@
/*!
\page introduction.html
+\ingroup qtappman
+\ingroup qtappman-highlights
\title The Qt Application Manager
+\brief Provides an introduction and overview of Qt Application Manager.
-The Qt Application Manager is a daemon that helps you to create embedded Linux systems that
-have a highly complex UI setup, which you can optionally split into a multi-process setup to
-increase flexibility and stability.
+The Qt Application Manager is a headless daemon that helps you to create embedded
+Linux systems with a highly complex UI setup, which you can optionally split into
+a multi-process setup to increase flexibility and stability.
\image qt-application-manager.png
\caption Qt Application Manager Architecture
diff --git a/doc/manifest.qdoc b/doc/manifest.qdoc
index 95ca14c9..db6ceb7d 100644
--- a/doc/manifest.qdoc
+++ b/doc/manifest.qdoc
@@ -28,8 +28,11 @@
/*!
\page manifest.html
+\ingroup qtappman
+\ingroup qtappman-highlights
\keyword info.yaml metadata manifest format
\title Manifest Definition
+\brief Describes the current metadata format (\c am-package, version \c 1) that was introduced with the 5.14 release.
\note This page describes the current metadata format (\c am-package, version \c 1) that was
introduced with the 5.14 release. For the old format - that is still supported - please see
diff --git a/doc/migration-guide-6.2.qdoc b/doc/migration-guide-6.2.qdoc
index 67eb9e74..07cb1623 100644
--- a/doc/migration-guide-6.2.qdoc
+++ b/doc/migration-guide-6.2.qdoc
@@ -28,9 +28,12 @@
/*!
\page migration-guide-6.2.html
+\ingroup qtappman
+\ingroup qtappman-highlights
\title Migrating code from 5.15 to 6.2
+\brief Discusses factors for moving from the Qt 5 to Qt 6 release of the Application Manager.
-Qt Application Manager 6.2 added no new APIs, but switched the build system from qmake to cmake and
+Qt Application Manager 6.2 added no new APIs, but switched the build system from qmake to CMake and
finally removed the deprecated legacy \c ApplicationInterfaceExtension IPC mechanism.
A direct replacement for the old IPC had been added in 5.14 already in form of the new \l{Intents}
mechanism.
diff --git a/doc/online/applicationmanager.qdocconf b/doc/online/qtapplicationmanager.qdocconf
index 680e3452..26b95860 100644
--- a/doc/online/applicationmanager.qdocconf
+++ b/doc/online/qtapplicationmanager.qdocconf
@@ -23,4 +23,4 @@ include($QT_INSTALL_DOCS/global/html-footer-online.qdocconf)
HTML.nosubdirs = "false"
HTML.outputsubdir = "applicationmanager"
-include(../applicationmanager-project.qdocconf)
+include(../qtapplicationmanager-project.qdocconf)
diff --git a/doc/qmlmodule.qdoc b/doc/qmlmodule.qdoc
index 4c3a0ea6..0fb58f61 100644
--- a/doc/qmlmodule.qdoc
+++ b/doc/qmlmodule.qdoc
@@ -32,6 +32,7 @@
\qmlmodule QtApplicationManager.SystemUI 2.0
\title Qt Application Manager System UI QML types
\ingroup qmlmodules
+ \ingroup qtappman
*/
/*!
@@ -39,6 +40,7 @@
\qmlmodule QtApplicationManager.Application 2.0
\title Qt Application Manager Application QML types
\ingroup qmlmodules
+ \ingroup qtappman
*/
/*!
@@ -46,4 +48,5 @@
\qmlmodule QtApplicationManager 2.0
\title Qt Application Manager QML types common to System UI and applications
\ingroup qmlmodules
+ \ingroup qtappman
*/
diff --git a/doc/resources.qdoc b/doc/resources.qdoc
index 159de477..dd04fa32 100644
--- a/doc/resources.qdoc
+++ b/doc/resources.qdoc
@@ -29,16 +29,20 @@
/*!
\page use-qt-resources.html
-\title Use Qt Resources
+\title Using Qt Resources
+\brief Discusses compiling, loading and accesses resources in your program's executable.
+\ingroup qtappman
+\ingroup qtappman-highlights
+
\l{The Qt Resource System} lets you store files in your program's executable. In some ways,
this feature resembles a dedicated file system, which we call \e{resource file system}. Usually,
this file system contains QML code and other assets like images. If you use the QML compiler, the
-compiled code is always placed in the resource file system. There are a few application manager
+compiled code is always placed in the resource file system. This leads to a few application manager
specific considerations, especially when your application needs to support both single-process and
multi-process modes.
-\section1 Compile Resources
+\section1 Compiling Resources
You can add resources as \l{External Resource Files}{external binary resources} or as
\l{Resource Collection Files}{compiled-in resources}; both are generated from a \c .qrc file.
@@ -48,39 +52,40 @@ compiled-in resources are stored in libraries in the Application Manager context
It's important to understand that each process has its own resource file system. Consequently, to
support multi-process mode, resources must be generated separately for the System UI and for each
application. Conversely, in single-process mode there is only one resource file system and you must
-ensure that file paths don't clash. To prevent clashes, we recommend to prefix each application
+ensure that file paths don't clash. To prevent clashes, we recommend you prefix each application
file path with the unique application ID.
Consider the following application file structure:
\badcode
apps
-|---- app1
+|---- spaceinvaders
| |---- main.qml
-| |---- app1.qrc
+| |---- spaceinvaders.qrc
| ...
-|---- app2
+|---- grandtheftdolphin
| |---- main.qml
-| |---- app2.qrc
+| |---- grandtheftdolphin.qrc
| ...
\endcode
Without a prefix, in single-process mode, the \c main.qml files would clash. To avoid this, the
-\c .qrc file for app1 should read like this:
+\c .qrc file for spaceinvaders should read like this:
\badcode
<!DOCTYPE RCC><RCC version="1.0">
-<qresource prefix="app1">
+<qresource prefix="spaceinvaders">
<file>main.qml</file>
</qresource>
</RCC>
\endcode
-For \c app2 the prefix should be "app2", respectively. Generally, all files contained in any
-\c .qrc file should be unique; this also includes files that the System UI uses.
+For \c grandtheftdolphin the prefix should be "grandtheftdolphin", respectively.
+Generally, all files contained in any \c .qrc file should be unique; this also
+includes files that the System UI uses.
-\section1 Load Resources
+\section1 Loading Resources
In addition to the approaches described in \l{The Qt Resource System}, the Application Manager
provides configuration options to load resources, both -- external binary resources and
@@ -109,15 +114,15 @@ multi-process mode the application resources are also loaded into the applicatio
startup. In single-process mode, resources are loaded when the application first starts and then
reused on subsequent invocations; they are never unloaded.
-\section1 Access Resources
+\section1 Accessing Resources
The application manager allows for file access in the resource file system, either with the URL
scheme (\c{qrc}) or the file name prefix (\c{:}). Both these options require an absolute file path
in the resource file system, such as:
\list
- \li \c{qrc:/app1/main.qml} or \c{qrc:///app1/main.qml}
- \li \c{:/app1/main.qml}
+ \li \c{qrc:/spaceinvaders/main.qml} or \c{qrc:///spaceinvaders/main.qml}
+ \li \c{:/spaceinvaders/main.qml}
\endlist
While the Qt Application Manager accepts this relaxed naming structure, the QML engine
diff --git a/doc/singlevsmultiprocess.qdoc b/doc/singlevsmultiprocess.qdoc
index 027fa58e..374ff39f 100644
--- a/doc/singlevsmultiprocess.qdoc
+++ b/doc/singlevsmultiprocess.qdoc
@@ -30,7 +30,10 @@
/*!
\page singlevsmultiprocess.html
+\ingroup qtappman
+\ingroup qtappman-highlights
\title Single-Process vs. Multi-Process Mode
+\brief Discusses running the System UI and QML applications in two different modes.
The application manager can run the System UI and QML applications in two different modes:
@@ -57,23 +60,23 @@ System UI's process, or in separate processes.
\section1 Single-process Mode
-The single-process mode allows for:
+The single-process mode enables:
\list
- \li Specific system applications to run with maximum performance, with no compositing
+ \li Specific system applications to run with maximum performance, with no compositing.
\li Scaling down your system to target hardware that lacks RAM/GPU resources to run in
- multi-process mode
+ multi-process mode.
\li Development on platforms that do not yet support multi-process mode, such as Windows, macOS,
- Android, QNX, as well as targets with broken Wayland drivers
+ Android, QNX, as well as targets with broken Wayland drivers.
\endlist
However, the cost of using single-process mode is reduced stability and testability: you cannot
test your components in isolation, which makes it difficult to diagnose errors or crashes.
In operating systems, the concept of a process is intertwined with the concept of isolation.
-Processes cannot easily affect each other - the operating system ensures this to the best of its
-ability. This isolation is crucial, both from a security standpoint and for stability. If a process
-crashes, it won't take down another process along the way, for example.
+Processes cannot easily affect each other, the operating system ensures this to the best of its
+ability. This isolation is crucial, both from a security standpoint and for stability.
+For example, if a process crashes, it won't take down another process along the way.
Sometimes, this isolation can hinder you, as a developer, if you need to cross this boundary to
communicate with another process. Then, you need to make an effort to do this correctly, by using
@@ -85,7 +88,7 @@ call functions that you need.
\section1 Configuration
-Since single-process mode only has one QML engine, shared amongst the System UI and all
+Since single-process mode only has one QML engine, shared between the System UI and all
applications, any QML import paths provided, for example via \c am-config.yaml, is taken into
consideration when the engine is resolving import statements. Import statements provided by the
application manifest file, \c info.yaml, are only considered once the application has started,
@@ -148,11 +151,11 @@ the singleton is instantiated anew.
\section1 Application Windows
-Windows are represented differently, whether you run your application in single-process or
+The way windows are represented depends on whether you run your application in single-process or
multi-process mode. Windows are exposed from the application to the System UI through
\l{WindowManager::windowAdded}. For convenience and to serve as a replacement for Qt's standard
-\c qmlscene and \c qml tools, it is possible to use plain QML Windows in applications or even an
-Item as the root element. However, if you require close resemblance between single-process and
+\c qmlscene and \c qml tools, it is possible to use plain QML \c Windows in applications or even an
+\c Item as the root element. However, if you require close resemblance between single-process and
multi-process mode for your application, you have to use an \l{ApplicationManagerWindow}. There
are also other benefits to using an ApplicationManagerWindow, such as window properties.
@@ -172,7 +175,7 @@ compatibility. The following are some examples:
Items from System UI itself or from any other running application as they are all
sharing the same QML scene.
\endlist
-\li Many properties, functions, and signals defined in a Window are not yet reimplemented in the
+\li Many properties, functions, and signals defined in a Window are not yet re-implemented in the
single-process version of ApplicationManagerWindow.
\li An error encountered in a code block due to properties or methods described above will cause
subsequent statements not to be evaluated in multi-process mode; but this is not the case in
@@ -194,7 +197,7 @@ single-process mode.
The CPU memory consumption per application is higher due to additional data structures. For
instance, if one application is running, there are two instances of the QML engine in multi-process
mode: one for the System UI and one for the application. In single-process mode there is only one
-instance since everything is running within the System UI. Also assets might be duplicated in
+instance since everything is running within the System UI. Assets might also be duplicated in
multi-process mode. This can be mitigated though, by using shared image providers or by removing
images from CPU memory once they are uploaded to GPU memory, via the QSG_TRANSIENT_IMAGES
environment variable.
@@ -206,9 +209,9 @@ consumption to grow steadily with each application starting, no matter, whether
stopped. The QML engine doesn't allow you to unload parts of the object hierarchy.
-\section1 Support for Single-Process and Multi-Procecss Mode in One Application
+\section1 Support for Single-Process and Multi-Process Mode in One Application
-If your application needs to support both, single-process mode and multi-process mode, you must
+If your application needs to support both single-process mode and multi-process mode, you must
define a set of Inter-Process Communication (IPC) interfaces between the application and System UI,
and always stick to them. Consider making these interfaces part of your review policy. While you
can use any IPC mechanism that suits your use case, the application manager includes an \l{Intents}
diff --git a/doc/systemui.qdoc b/doc/systemui.qdoc
index f0698618..9927938f 100644
--- a/doc/systemui.qdoc
+++ b/doc/systemui.qdoc
@@ -30,7 +30,10 @@
/*!
\page system-ui.html
+\ingroup qtappman
+\ingroup qtappman-highlights
\title The System UI
+\brief Describes the part of a UI which starts and stops any application, on a device
The System UI is the part of a UI which starts and stops any application, on a device. It's
responsible for managing the application windows and compositing them in a specific way. For
@@ -47,13 +50,13 @@ The System UI has the following tasks:
\li Description
\row
\li Compositing
- \li Manage multiple applications' surfaces, known as windows. \br
+ \li Manages multiple applications' surfaces, known as windows. \br
Arrange these windows on one or more physical screens, according to the required
design. \br
Handle window decoration, transition effects and other system-wide user experience.
\row
\li Communication Interface
- \li Act as a channel to exchange information between applciations and itself, such as to
+ \li Act as a channel to exchange information between applications and itself, such as to
switch the language.
\row
\li Input Handling
@@ -109,7 +112,7 @@ One example of a simple System UI is the one written for the "Hello World!" Syst
\section2 Notifications
-In cases where you'd like to display notificiations or pop-ups, applications or clients can
+In cases where you'd like to display notifications or pop-ups, applications or clients can
create these with \l{ApplicationInterface::createNotification()}. They are then made available
on the System UI via the \l{NotificationManager}.
@@ -178,7 +181,7 @@ Below are some key practices to consider when you write a System UI:
\list
\li \b{Always test your System UI and its applications on the target as early as possible.}
- This is especially useful because the combination of your target hardware and the
+ This is especially important because the combination of your target hardware and the
asynchronous Wayland protocol may result in some timing constraints on some parts of
the system. For example, when are window properties available to the System UI, after
an application has started. These constraints are best identified as early as possible.
@@ -188,7 +191,7 @@ Below are some key practices to consider when you write a System UI:
it's likely that a different mechanism is used on the target platform, compared to your
development machine. Testing on the target hardware as early as possible can help to
bring forward any issues with the sharing mechanism or side effects from other graphic
- intense elements, such as shader effects or 3D engine integrations.
+ intense elements, such as shader effects or 3D engine integration.
\li \b{Allow the System UI to stop applications that take up too much memory or CPU.}
Design your system in such a way that lets the System UI stop applications when necessary,
particularly in situations where hardware resources like memory or CPU is low. This
@@ -205,14 +208,14 @@ Below are some key practices to consider when you write a System UI:
\list
\li If the root element of the System UI is an Item, the application manager creates a
QQuickWindow for it and sets the Item as its root Item.
- \li If the root element of the System UI is a Window -- or an Item that is wrapped in a Window
- -- the window is shown initially, regardless of the value of its \c visible property.
+ \li If the root element of the System UI is a Window, or an Item that is wrapped in a Window
+ the window is shown initially, regardless of the value of its \c visible property.
\endlist
\section1 Related Information
\list
- \li \l{Write Applications}
+ \li \l{Writing Applications}
\li \l{QtApplicationManager.SystemUI QML module}
\endlist
diff --git a/doc/troubleshooting.qdoc b/doc/troubleshooting.qdoc
index 7dc1022c..d6be5f3f 100644
--- a/doc/troubleshooting.qdoc
+++ b/doc/troubleshooting.qdoc
@@ -30,48 +30,48 @@
/*!
\page troubleshoot.html
-\title Troubleshoot
+\ingroup qtappman
+\ingroup qtappman-highlights
+\title Troubleshooting
+\brief Lists possible issues you may encounter while using QtApplicationManager and how to solve them.
This section lists possible issues you may encounter while using QtApplicationManager and how to
solve them.
\table
\header
- \li Possible Issues
+ \li Possible Issues or questions.
\row
- \li \l{ts-01}{How do I check whether my application manager instance is running in multi-process mode?}
+ \li \l{How do I check whether my application manager instance is running in multi-process mode?}
\row
- \li \l{ts-02}{How do I find out why my application manager instance doesn't support multi-process mode?}
+ \li \l{How do I find out why my application manager instance doesn't support multi-process mode?}
\row
- \li \l{ts-03}{My applications are running slowly within the application manager. What are some possible solutions?}
+ \li \l{My applications are running slowly within the application manager. What are some possible solutions?}
\row
- \li \l{ts-04}{How do I find out if my applications use hardware acceleration?}
+ \li \l{How do I find out if my applications use hardware acceleration?}
\row
- \li \l{ts-05}{How do I enable hardware acceleration?}
+ \li \l{How do I enable hardware acceleration?}
\row
- \li \l{ts-06}{My applications are crashing immediately within the application manager. What are some possible solutions?}
+ \li \l{My applications are crashing immediately within the application manager. What are some possible solutions?}
\endtable
-\target ts-01
-\b{How do I check whether my application manager instance is running in multi-process mode?}
+\section1 How do I check whether my application manager instance is running in multi-process mode?
Start the Application manager with the \c --verbose argument and verify that you see
\c{WindowManager: running in Wayland mode} in the output. Alternatively, start an application and
make sure that you can see at least one \c appman-launcher-qml process running.
-\target ts-02
-\b{How do I find out why my application manager instance doesn't support multi-process mode?}
+\section1 How do I find out why my application manager instance doesn't support multi-process mode?
Check the "Application Manager configuration", which is visible when you run the \c qmake command.
It's possible that your configuration doesn't support the \c QtCompositor module.
-\target ts-03
-\b{My applications are running slowly within the application manager. What are some possible solutions?}
+\section1 My applications are running slowly within the application manager. What are some possible solutions?
Verify if your applications are running with hardware acceleration.
-\target ts-04
-\b{How do I find out if my applications use hardware acceleration?}
+
+\section1 How do I find out if my applications use hardware acceleration?
Run the \c appman, with the environment variable \c QSG_INFO=1. When you start an application, you
should see a similar output:
@@ -94,8 +94,8 @@ If \c GL_RENDERER is \c llvmpipe, you're using software rendering for your Wayla
\note This information is also available for the System UI itself, based on the application's ID in
the prefix. In the example above, \c{com.pelagicore.music} is truncated to \c{c.p.music}.
-\target ts-05
-\b{How do I enable hardware acceleration?}
+
+\section1 How do I enable hardware acceleration?
This depends on your hardware and operating system:
@@ -112,7 +112,7 @@ Desktop OpenGL. In Qt's configure summary, verify that you see the following lin
OpenGL ES 2.0 ........................ yes
\endcode
-You can force Qt to use Opengl ES2 by using the \c --opengl es2 configure option.
+You can force Qt to use OpenGL ES2 by using the \c --opengl es2 configure option.
Additionally, you also need to make sure that the \c wayland-egl integration plugin is built. If
the plugin built successfully, you should have the following file:
@@ -123,7 +123,7 @@ built.
\target ts-06
-\b{My applications are crashing immediately within the application manager. What are some possible solutions?}
+\section1 My applications are crashing immediately within the application manager. What are some possible solutions?
Your system setup might not allow Wayland clients to use OpenGL. In this case both the application
manager and the QML application launcher output a critical log message if hardware accelerated
@@ -132,6 +132,7 @@ rendering is not possible for applications.
Make sure to enable hardware acceleration.
You can also force software rendering by setting the environment variable \c $QT_QUICK_BACKEND to
-\c software, but only if your applications aren't using OpenGL features (e.g. shaders) explicitly.
+\c software, but only if your applications aren't using OpenGL features explicitly.
+For example, shaders.
*/
diff --git a/doc/write-applications.qdoc b/doc/write-applications.qdoc
index f8c29362..49e6b7ae 100644
--- a/doc/write-applications.qdoc
+++ b/doc/write-applications.qdoc
@@ -30,10 +30,13 @@
/*!
\page howto-apps.html
-\title Write Applications
+\ingroup qtappman
+\ingroup qtappman-highlights
+\title Writing Applications
+\brief Discusses writing an application to run as a client within the application manager.
Writing an application to run as a client within the application manager is similar to writing a
-stand-alone QML application, except for these three additional tasks:
+stand-alone QML application, except for these three additional tasks or limitations:
\list 1
\li If you write a QML application, make your QML scene's root element an
@@ -86,8 +89,8 @@ The integration adds an additional \c{package} target to the Makefile. You can c
application in one of two ways:
\list
- \li call \c{make package} on the command line
- \li add \c{make package} as an additional build step in QtCreator
+ \li Call \c{make package} on the command line.
+ \li Add \c{make package} as an additional build step in QtCreator.
\endlist
\section3 Simple QML Applications
diff --git a/doc/yaml.qdoc b/doc/yaml.qdoc
index b0857a34..69a9ce04 100644
--- a/doc/yaml.qdoc
+++ b/doc/yaml.qdoc
@@ -30,6 +30,7 @@
/*!
\page yaml.html
+\ingroup qtappman
\title YAML Syntax
All YAML files used in the application manager are parsed using a YAML 1.1 compliant parser.