Plasma类库 is generally the more interesting meaning of the word, as it provides a scene/view (much like model/view) approach to presenting a user interface. Widgets sit on the Corona canvas, 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.
A widget is a single component on the canvas. Other common names that are analogous are "applet" or "gadget". Superkaramba主题，苹果的Dashboard, Google Gadgets, Yahoo的Widgets, Vista的边栏Widgets, Opera的Widgets是些其他系统的Widget(Plasma也支持其中的一些)。
A Plasmoid is the combination of files that go into creating a native Plasma widget. 它们包括：
Corona，QGraphicsScene的子类，是Plasma的画布。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.
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.
数据引擎是个插件。 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.
数据引擎 send information to visualizations via the dataUpdated(QString source, Plasma::Data data) slot that all visualizations must implement to receive updates.