|
|
> :warning: **This page needs work!** Information should be concise but not overly verbose with the details.
|
|
|
|
|
|
The scale of Plasma's stack can be daunting for new contributors. This page aims to introduce the stack that makes up Plasma Mobile at a high level.
|
|
|
|
|
|
Don't hesitate to seek help in the developer channels linked on the [home](home) page!
|
|
|
|
|
|
## Qt
|
|
|
|
|
|
Plasma Mobile is heavily dependent on the Qt Quick framework for writing the shell, as well as applications. We currently depend on Qt 5.15, with a planned migration to Qt 6 in the future.
|
|
|
|
|
|
In general, applications are rewritten in C++ with layout of UI components created in QML.
|
|
|
|
|
|
A recommended resource to learn about Qt Quick is [QmlBook](https://qmlbook.github.io/).
|
|
|
|
|
|
##### [Qt Quick Controls 2](https://doc.qt.io/qt-5/qtquickcontrols-index.html)
|
|
|
|
|
|
Qt Quick Controls (abbrevated as QQC) provides a set of **UI components** (ex. buttons) that we use in QML to create interfaces. In Plasma Mobile, we use the [qqc2-breeze-style](https://invent.kde.org/plasma/qqc2-breeze-style) theme to theme our QQC2 controls.
|
|
|
|
|
|
## System
|
|
|
|
|
|
Listed are the components that provide system functionality.
|
|
|
* [NetworkManager](https://wiki.gnome.org/Projects/NetworkManager) - Provides network capability control
|
|
|
* [ModemManager](https://www.freedesktop.org/wiki/Software/ModemManager/) - Provides calls, SMS, mobile data, and overall cellular modem control
|
|
|
* [Maliit Keyboard](https://github.com/maliit/keyboard) - Provides the virtual keyboard
|
|
|
* [hfd-service](https://gitlab.com/ubports/core/hfd-service) - Provides haptics (vibration, LED control), part of the UBPorts project
|
|
|
* [PulseAudio](https://www.freedesktop.org/wiki/Software/PulseAudio/) - Provides sound functionality, may be replaced by PipeWire
|
|
|
* [PipeWire](https://pipewire.org/) - Used for window thumbnails, can provide sound functionality
|
|
|
* [Wayland](https://wayland.freedesktop.org/) - Plasma Mobile solely uses the Wayland protocol through KWin for display
|
|
|
|
|
|
## Plasma
|
|
|
|
|
|
These are the components that make up the Plasma stack. Only the most important repositories are listed here, but the full list can be viewed [here](https://invent.ke.org/plasma).
|
|
|
|
|
|
##### [KWin](https://invent.kde.org/plasma/kwin) - Window manager and compositor
|
|
|
|
|
|
KWin is responsible for implementing Wayland, providing everything from displays, window effects, virtual keyboard integration, and more.
|
|
|
|
|
|
##### [KScreen](https://invent.kde.org/plasma/kscreen) - Screen management
|
|
|
|
|
|
KScreen is coupled tightly with KWin, providing display management for the system.
|
|
|
|
|
|
##### [Plasma Workspace](https://invent.kde.org/plasma/plasma-workspace/) - Shared Plasma components
|
|
|
|
|
|
This repository provides shared Plasma components that are used for Plasma on desktop, mobile, bigscreen and others. This includes settings modules, plasmoids, as well as shared libraries for components like notifications.
|
|
|
|
|
|
##### [Plasma Mobile](https://invent.kde.org/plasma/plasma-mobile) - The shell repository
|
|
|
|
|
|
This repository is similar to Plasma Workspace, but provides **mobile specific** shell components.
|
|
|
|
|
|
##### [PowerDevil](https://invent.kde.org/plasma/powerdevil) - Power management
|
|
|
|
|
|
PowerDevil provides power management capabilities to Plasma. This includes managing when to suspend, screen brightness, battery consumption profiles, and more.
|
|
|
|
|
|
##### [plasma-nm](https://invent.kde.org/plasma/plasma-nm) - Networking
|
|
|
|
|
|
plasma-nm provides networking functions in Plasma, such as network connection dialogs and settings modules.
|
|
|
|
|
|
##### [qqc2-breeze-style](https://invent.kde.org/plasma/qqc2-breeze-style) - Qt UI theme
|
|
|
|
|
|
qqc2-breeze-style is the Qt Quick UI theme that is used by default on Plasma Mobile. This is contrast to Plasma Desktop, that uses the [qqc2-desktop-style](https://invent.kde.org/frameworks/qqc2-desktop-style) theme.
|
|
|
|
|
|
##### [xdg-desktop-portal-kde](https://invent.kde.org/plasma/xdg-desktop-portal-kde) - XDG Portals implementation
|
|
|
|
|
|
Implements the concept of "portals", which are used by flatpaks and native applications to perform system actions without relying on a desktop environment (ex. screenshots, open file dialog)
|
|
|
|
|
|
##### [Polkit KDE Agent](https://invent.kde.org/plasma/polkit-kde-agent-1) - Authentication Dialog
|
|
|
|
|
|
This is the Polkit agent for Plasma, providing the system authentication dialog.
|
|
|
|
|
|
## Frameworks
|
|
|
|
|
|
These are the major frameworks that are used commonly in Plasma Mobile projects. Omitted are less commonly used frameworks.
|
|
|
|
|
|
##### [Plasma Framework](https://api.kde.org/frameworks/plasma-framework/html/index.html) - Shell development framework
|
|
|
|
|
|
This framework provides UI components for building the Plasma shell.
|
|
|
|
|
|
Applications do **not** use this framework.
|
|
|
|
|
|
##### [Kirigami](https://develop.kde.org/docs/use/kirigami/) - Convergent application development framework
|
|
|
|
|
|
[Kirigami](https://develop.kde.org/docs/use/kirigami/) provides components necessary to build applications following the [KDE HIG](https://develop.kde.org/hig/). This is used **in conjunction** with Qt Quick Controls 2 to create convergent applications for Plasma on both desktop and mobile.
|
|
|
|
|
|
##### [Kirigami Add-ons](https://invent.kde.org/libraries/kirigami-addons)
|
|
|
|
|
|
Kirigami Add-ons provides extra components to Kirigami, that require extra dependencies.
|
|
|
|
|
|
##### [KNotifications](https://invent.kde.org/frameworks/knotifications)
|
|
|
|
|
|
KNotifications provides an easy-to-use framework for applications to implement notifications.
|
|
|
|
|
|
##### [KConfig](https://invent.kde.org/frameworks/kconfig) - Configuration framework
|
|
|
|
|
|
KConfig is used by KDE projects to easily manage application configuration.
|
|
|
|
|
|
##### [Purpose](https://invent.kde.org/frameworks/purpose) - Sharing and integration framework
|
|
|
|
|
|
Purpose is an application framework that allows developers to integrate services (such as file sharing) without having to implement them themselves.
|
|
|
|
|
|
##### [Breeze Icons](https://invent.kde.org/frameworks/breeze-icons)
|
|
|
|
|
|
Icons in the Breeze style, that can be used in the shell and applications.
|
|
|
|
|
|
---
|
|
|
|
|
|
<img src="uploads/bca947b4d74d2a6d932cbdc0c2552c56/image.png" width=200px/>
|
|
|
|
|
|
*konqi, the master of the stack* |
|
|
\ No newline at end of file |