Plasma-framework

Plasma framework

Plasma framework is the core of the Plasma desktop. It provides a framework of graphical widgets (Plasma::Applet) that can be organised into managed groupings (Plasma::Containment), such as a desktop or panel.) and a corresponding service interaction layer (Plasma::Service) to make implementing widgets easier.

The Qt Quick framework and set of KDE Frameworks provide the underpinning for Plasma framework. As a result, it should work anywhere that Qt does.

Although Plasma framework is developed for the use of the Plasma desktop shell, currently known as Plasma 5, it is general enough to be useful in other applications. Amarok is using it for its context view, allowing for pluggable widgets to display and interact with the music collection, such as "current track" and "tag cloud" widgets.

Plasma framework itself only provides a framework, and the widgets, containments, data engines are all implemented as plugins (using C++, for widgets QML is prefferd). However, the framework is designed to make implementing these plugins as easy as possible, including providing scripting support.

Other important classes are:

  • Plasma::Corona: the canvas that containments are placed on
  • Plasma::View: a QWidget for displaying a containment
  • Plasma::Theme: provides theming support
  • Plasma::Package: provides descriptions of packages containing plugins for libplasma
  • Plasma::Svg and Plasma::FrameSvg: provides themable, cached SVGs

The Plasma tutorials on TechBase provide a good introduction to writing plugins, such as widgets and data engines, for libplasma-based applications.

Author(s)
Aaron Seigo <aseig.nosp@m.o@kd.nosp@m.e.org>
Alessandro Diaferia <aledi.nosp@m.afer.nosp@m.ia@gm.nosp@m.ail..nosp@m.com>
Alex Merry <kde@r.nosp@m.ando.nosp@m.mguy3.nosp@m..me..nosp@m.uk>
Alexander Wiedenbruch <wirr0.nosp@m.1@gm.nosp@m.ail.c.nosp@m.om>
Alexis Ménard <darkt.nosp@m.ears.nosp@m.31@gm.nosp@m.ail..nosp@m.com>
André Duffeck <andre.nosp@m.@duf.nosp@m.feck..nosp@m.de>
Andrew Lake <jambo.nosp@m.arde.nosp@m.r@yah.nosp@m.oo.c.nosp@m.om>
Artur de Souza <asouz.nosp@m.a@kd.nosp@m.e.org>
Bertjan Broeksema <b.bro.nosp@m.ekse.nosp@m.ma@kd.nosp@m.emai.nosp@m.l.net>
Chani Armitage <chani.nosp@m.ka@g.nosp@m.mail..nosp@m.com>
Davide Bettio <david.nosp@m.e.be.nosp@m.ttio@.nosp@m.kdem.nosp@m.ail.n.nosp@m.et>
Dan Meltzer <hydro.nosp@m.gen@.nosp@m.notye.nosp@m.timp.nosp@m.lemen.nosp@m.ted..nosp@m.com>
Fredrik Höglund <fredr.nosp@m.ik@k.nosp@m.de.or.nosp@m.g>
Ivan Cukic <ivan..nosp@m.cuki.nosp@m.c+kde.nosp@m.@gma.nosp@m.il.co.nosp@m.m>
John Tapsell <tapse.nosp@m.ll@k.nosp@m.de.or.nosp@m.g>
Jordi Polo <mumis.nosp@m.mo@g.nosp@m.mail..nosp@m.com>
Kevin Ottens <ervin.nosp@m.@kde.nosp@m..org>
Montel Laurent <monte.nosp@m.l@kd.nosp@m.e.org>
Marco Martin <notma.nosp@m.rt@g.nosp@m.mail..nosp@m.com>
Matt Broadstone <mbroa.nosp@m.dst@.nosp@m.gmail.nosp@m..com>
Petri Damsten <damu@.nosp@m.iki..nosp@m.fi>
Rafael Fernández López <eresl.nosp@m.ibre.nosp@m.@kde..nosp@m.org>
Riccardo Iaconelli <ricca.nosp@m.rdo@.nosp@m.kde.o.nosp@m.rg>
Richard J. Moore <rich@.nosp@m.kde..nosp@m.org>
Rob Scheepmaker <r.sch.nosp@m.eepm.nosp@m.aker@.nosp@m.stud.nosp@m.ent.u.nosp@m.twen.nosp@m.te.nl>
Robert Knight <rober.nosp@m.tkni.nosp@m.ght@g.nosp@m.mail.nosp@m..com>
Sebastian Kuegler <sebas.nosp@m.@kde.nosp@m..org>
Siraj Razick <siraj.nosp@m.@kde.nosp@m..net>
Zack Rusin <zack@.nosp@m.kde..nosp@m.org>
Maintainer(s)
Marco Martin <notma.nosp@m.rt@g.nosp@m.mail..nosp@m.com>
License(s)
LGPLv2
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Tue Mar 26 2024 11:15:19 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.