Hi,

I would like to propose a dynamic wallpaper plugin for KDE Plasma [1].

As the name suggests, the plugin updates the background continuously to reflect the user's current light situation. Besides being eye-candy, it can be useful for a Night Mode (if Plasma gets one).

The HEIF file format is used to store dynamic wallpapers. Each image in a dynamic wallpaper has metadata associated with it. The metadata contains information such as the position of the Sun, and the time. The plugin uses the metadata to determine what image(s) must be shown at the current moment. The solar metadata is optional. It will be used when the plugin is able to construct the path of the Sun; otherwise it will fallback to using time metadata.

The only big issue with using the HEIF file format is that Qt doesn't have full support for it on Linux. I assume that's the case because the HEIF file format was introduced quite recently (iirc, in 2015 or something). So, there's no a QImageIOHandler for HEIF files and the QImageReader class can't be used to read image collections (it's good for reading image sequences, though).

Due to the aforementioned issues, the dynamic wallpaper plugin ships a small library that contains two classes (KDynamicWallpaperReader and KDynamicWallpaperWriter) that can be used to read and write dynamic wallpapers. Even if Qt gains a QImageIOHandler class for HEIF files, we would still need those two classes because QImageIOHandler lacks an API to read and write image metadata.

In addition to the helper library, the plugin ships an utility that one could use to create a dynamic wallpaper from a collection of jpg or png files.

I would like to stress that we probably still need a QImageIOHandler for the HEIF file format in order to have file previews. It's worth to point out that there is an upstream patch to add one [2].

In general, the core part of the plugin is complete. What is left to do is to clean up code turds and finish writing documentation.

Any thoughts?

Cheers,
Vlad

[1] https://invent.kde.org/vladz/plasma5-wallpapers-dynamic/
[2] https://codereview.qt-project.org/c/qt/qtimageformats/+/236077

Reply via email to