Plasma/Vocabulary: Difference between revisions

From KDE Community Wiki
(Split lines in wiki source for better readability, editability, and diffing.)
(→‎More terminology: add content of chapter)
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
====Plasma====
==Plasma==
Plasma refers to the framework upon which
Plasma refers to the framework upon which
the various Plasma workspaces,
the various Plasma workspaces,
Line 19: Line 19:
scriptable and highly portable, and componentized interface to the user.
scriptable and highly portable, and componentized interface to the user.


====Widget====
==Widget==
A widget is a single component on the canvas.
A widget is a single component on the canvas.
Other common names that are analogous are "applet" or "gadget".
Other common names that are analogous are "applet" or "gadget".
Line 27: Line 27:
(some of which are supported by Plasma via ScriptEngines as well).
(some of which are supported by Plasma via ScriptEngines as well).


====Plasmoid====
==Plasmoid==
A Plasmoid is the combination of files that go into creating a native Plasma widget.
A Plasmoid is the combination of files that go into creating a native Plasma widget.
This includes:
This includes:
Line 36: Line 36:
* ...
* ...


====Applet====
==Applet==
An applet is the code part of a Plasmoid,
An applet is the code part of a Plasmoid,
technically because it provides a Plasma::Applet object.
technically because it provides a Plasma::Applet object.
To users, this will be an implementation detail they are unlikely to see.
To users, this will be an implementation detail they are unlikely to see.


====Corona====
==Corona==
The Corona, a QGraphicsScene subclass, is the Plasma canvas.
The Corona, a QGraphicsScene subclass, is the Plasma canvas.
It contains all of the Containments that exist for the application,
It contains all of the Containments that exist for the application,
Line 49: Line 49:
and other such canvas-global tasks.
and other such canvas-global tasks.


====Containment====
==Containment==
A Containment is a top level grouping of widgets.
A Containment is a top level grouping of widgets.
Each Containment manages the layout and configuration data
Each Containment manages the layout and configuration data
Line 60: Line 60:
(usually one per screen).
(usually one per screen).


====Data Engine====
==Data Engine==
A DataEngine is a plugin that provides a ''visualization''
A DataEngine is a plugin that provides a ''visualization''
with a standard way to access a body of information.
with a standard way to access a body of information.
Line 80: Line 80:
that all visualizations must implement to receive updates.
that all visualizations must implement to receive updates.


====Runner====
==Runner==
A Runner is a plugin that provides possible matches to search queries.
A Runner is a plugin that provides possible matches to search queries.
Runners are generally used and coordinated via Plasma::RunnerManager,
Runners are generally used and coordinated via Plasma::RunnerManager,
Line 86: Line 86:
This sytem is used in KRunner, Kickoff
This sytem is used in KRunner, Kickoff
and other places that need this kind of functionality.
and other places that need this kind of functionality.
== More terminology ==
=== Workflow ===
Workflow is the sequence of actions a user performs to accomplish a task. A workflow involves applications, but can also lead the user across devices.
Example:
* Writing a report and sending it to your boss
* Importing photos and reviewing them
* Interacting friends (catching up on the social network, taking part)
* Running into articles while working on the desktop, reading them on your tablet later
* Downloading a movie on the laptop, watching it on the TV/Media Center
=== Workspace ===
The workspace's purpose is to guide the user through their workflow, across applications. A workspace runs on a specific device, such as Desktop, tablet, etc, and forms part of workflows across devices.
The workspace is a generic term for all the software component intended to provide the final UX for the global work environment, the minimal "fixed" running user interface that manages documents, applications  (opening, closing) and global system properties such as notifications or attached hardware devices.
Examples:
* KDE Plasma Desktop
* KDE Plasma Mobile
(KDE is used as umbrella brand in this context, standing for "created by the KDE community")
=== Shell ===
The shell, technically speaking, is the binary that will load and display the UI parts of the "Workspace". It doesn't provide its own UI, it may be tied to a particular form-factor.
Examples (these refer *only* to binary names):
* plasma-desktop
* plasma-mobile
==== Current Implementation ====
The term shell does not include Plasmoids loaded into it, it provides the implementation of the Corona and defines how the views are bound to it. These views hold containment, which then loads applets. The particular shell and the final UX are only tied in part.
=== Activities ===

Latest revision as of 14:34, 12 February 2023

Plasma

Plasma refers to the framework upon which the various Plasma workspaces, Plasma and KRunner plugins, etc. are built upon.

The Plasma library provides a scene/view (much like model/view) approach to presenting a user interface. Widgets sit on a canvas (the "Corona", a QGraphicsScene subclass), grouped into Containments. Data is obtained via DataEngines and Runners. The entire scene is designed to be viewed in a flexible manner, including zooming and resolution independence.

Plasma also provides many standardized services such as artwork, presentation and script management, and creating add-ons for a Plasma application quite easy.

The goal of Plasma is to provide a flexible, re-targetable, scriptable and highly portable, and componentized interface to the user.

Widget

A widget is a single component on the canvas. Other common names that are analogous are "applet" or "gadget". Superkaramba Themes, Apple's Dashboard, Google Gadgets, Yahoo Widgets, Vista Sidebar Widgets, Opera Widgets are all examples of other widget systems (some of which are supported by Plasma via ScriptEngines as well).

Plasmoid

A Plasmoid is the combination of files that go into creating a native Plasma widget. This includes:

  • metadata (e.g. .desktop files)
  • images (svg, png, etc)
  • configuration definitions (KConfigXT)
  • code (C++, ECMA Script, HTML+JavaScript, Python, ..)
  • ...

Applet

An applet is the code part of a Plasmoid, technically because it provides a Plasma::Applet object. To users, this will be an implementation detail they are unlikely to see.

Corona

The Corona, a QGraphicsScene subclass, is the Plasma canvas. It contains all of the Containments that exist for the application, providing the "model" for the Views to use.

It handles initiating loading and saving of Containments and Applets and other such canvas-global tasks.

Containment

A Containment is a top level grouping of widgets. Each Containment manages the layout and configuration data of its set of widgets independently from other Containments.

In the Plasma Desktop, for instance, each panel on screen is viewing a (panel) Containment, and each activity is a collection of one or more Containments as well (usually one per screen).

Data Engine

A DataEngine is a plugin that provides a visualization with a standard way to access a body of information. Each unit of data is called a "source", and source may be created on demand. Sources are updated either when the data changes (such as in response to a hotplug event for the devices DataEngine) or in a timed interval as requested by the visualization.

The timings and memory management of the sources are handled by DataEngine, making implementation of DataEngines trivial.

The sources themselves are organized into a list, and each source can have zero or more key/value pairs. The values are QVariants and therefore quite flexible.

DataEngines send information to visualizations via the dataUpdated(QString source, Plasma::Data data) slot that all visualizations must implement to receive updates.

Runner

A Runner is a plugin that provides possible matches to search queries. Runners are generally used and coordinated via Plasma::RunnerManager, which provides a multi-threaded runtime for collections of Runners. This sytem is used in KRunner, Kickoff and other places that need this kind of functionality.

More terminology

Workflow

Workflow is the sequence of actions a user performs to accomplish a task. A workflow involves applications, but can also lead the user across devices.

Example:

  • Writing a report and sending it to your boss
  • Importing photos and reviewing them
  • Interacting friends (catching up on the social network, taking part)
  • Running into articles while working on the desktop, reading them on your tablet later
  • Downloading a movie on the laptop, watching it on the TV/Media Center

Workspace

The workspace's purpose is to guide the user through their workflow, across applications. A workspace runs on a specific device, such as Desktop, tablet, etc, and forms part of workflows across devices. The workspace is a generic term for all the software component intended to provide the final UX for the global work environment, the minimal "fixed" running user interface that manages documents, applications (opening, closing) and global system properties such as notifications or attached hardware devices.

Examples:

  • KDE Plasma Desktop
  • KDE Plasma Mobile

(KDE is used as umbrella brand in this context, standing for "created by the KDE community")

Shell

The shell, technically speaking, is the binary that will load and display the UI parts of the "Workspace". It doesn't provide its own UI, it may be tied to a particular form-factor.

Examples (these refer *only* to binary names):

  • plasma-desktop
  • plasma-mobile

Current Implementation

The term shell does not include Plasmoids loaded into it, it provides the implementation of the Corona and defines how the views are bound to it. These views hold containment, which then loads applets. The particular shell and the final UX are only tied in part.

Activities