libplasma2 and Wallpaper

Aaron J. Seigo aseigo at kde.org
Tue Sep 25 07:49:16 UTC 2012


hello ...

Plasma::Wallpaper has a number of limitations that are a result of the times 
it came from :)

namely, it directly paints using QPainter and forwards in a rather artifical 
means various mouse events. nothing else was really possible without dong the 
wallpapers in individual Containments, which obviously wasn't an option.

but now we are heading to a QML centric world. i think it would be far more 
useful to rip out the Wallpaper C++ plugin support and replace it instead with 
a solution using QML that lives outside of libplasma2.

this new approach would:

* use Plasma::Package to contain individual wallpaper engines
* have a set API made available to it by a QML component providing e.g. access 
to configuration options, a way to load configuration using QML (including a 
standardized item view that can be populated with a model provided by the QML 
wallpaper)

the benefits:

* no API in libplasma
* still available to all shells (and all QML apps, for that matter)
* full access to user interaction
* OpenGL rendering (at least in QML2)
* greater consistency by providing a way to make things like the config item 
view available to all plugins
* easier to make beautiful and interactive wallpapers (with good performance)

the drawbacks:

* all existing wallpapers will break
* any app / plasma shell that does not use QML will not benefit from this; but 
that # for plasma apps should be zero in the near future

the re-assuring:

* we can maintain configuration compatibility with the old plugins, so a 
configuration that uses the image plugin (for instance) would contnue to work 
with the same configuration as-is

to implement this, we would take some of the code in apol's recent plugin, add 
access to a small set of the existing QML bindings for config (e.g.) and 
provide a QML component in runtime to make it easy to use and write new 
wallpapers.

we may even want to put support for these new plugins into the QML helper for 
Containment so that shells don't need to do anything at all. this is the 
design we have right now in libplasma for Wallpapers and Containments and that 
part works rather well.

thoughts?

-- 
Aaron J. Seigo
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20120925/3960f50a/attachment-0001.sig>


More information about the Plasma-devel mailing list