139 lines
5.6 KiB
Markdown
139 lines
5.6 KiB
Markdown
# Komplex Wallpaper Engine
|
|
|
|
Komplex Wallpaper Engine is an advanced wallpaper engine for the KDE Plasma 6 Desktop Environment that allows the use of complex shader arrangements as a Wallpaper. Shader arrangements are a collection of shaders and various channel buffers that the shader is intended to manipulate, resulting in visually stunning live motion and reactive wallpapers.
|
|
|
|
[](https://www.youtube.com/watch?v=qjKEwrNts1A)
|
|
|
|
## Supported Engine Modes
|
|
- Simple
|
|
- Komplex
|
|
|
|
### Supported Channel Buffers
|
|
- Shaders*
|
|
- Images
|
|
- Videos
|
|
- Cubemaps**
|
|
- Audio***
|
|
- QML Scenes
|
|
- Recursive Frame Buffer
|
|
|
|
*Shaders must be compiled with the `qsb` tool supplied with Qt. It may be available through your distribution's package manager. Follow the instructions in /tools/README.md to compile shaders for use with Qt.
|
|
|
|
**The Cubemaps provided in this package are released under Creative Commons Attribution 3.0 Unported License and were obtained from [Humus](http://www.humus.name)
|
|
|
|
***Audio reactivity requires KDE to be using Pipewire
|
|
|
|
### Engine Mode: Simple
|
|
|
|
The **Simple** engine mode is meant to use a single generative or manipulative shader that can use up to 4 configurable channel buffers as the wallpaper. Channel buffers can be configured to be other shaders, images, videos, cubemaps, QML scenes and desktop audio capture. For video and images, you have the ability to import directly from the respective Pexels API.
|
|
|
|
### Engine Mode: Komplex
|
|
|
|
The **Komplex** engine mode allows for a much more complex wallpaper experience. Instead of a simple configuration scheme, the Komplex engine mode uses a shader pack file that can contain it's own images, cubemaps, videos and shaders. This shader pack must contain a pack.json file that describes the output shader, resolution, speed and channel buffers 0-3. Each channel buffer can have channel buffers 0-3, which can in-turn have channel buffers 0-3 and so on. This allows near infinite arrangement complexity, only limited by hardware and reasoning.
|
|
|
|
The **Komplex** engine mode also allows for direct ShaderToy importing through the use of the ShaderToy API. Most ShaderToy functionality is supported, and features a media import function when the shader uses a video as a resource.
|
|
|
|
## Installation (manual)
|
|
|
|
Contents of the `data` directory should be placed in `~/.local/komplex/`
|
|
|
|
### Requirements
|
|
- qt6-base
|
|
- qt6-multimedia
|
|
- qt6-multimedia-gstreamer*
|
|
- qt6-declarative
|
|
- qt6-imageformats
|
|
- qt6-quick3d
|
|
- qt6-shadertools
|
|
- ECM (extra-cmake-modules)
|
|
- plasma-desktop
|
|
- cmake
|
|
|
|
### Additional Requirements
|
|
- Pexels API Key - Free from [pexels.com](http://www.pexels.com)
|
|
- ShaderToy API Key - Free from [shadertoy.com](http://www.shadertoy.com)
|
|
|
|
### Instructions
|
|
|
|
After ensuring your system has all the required packages, run the following commands to clone the repo and enter it's directory.
|
|
```
|
|
git clone https://github.com/DigitalArtifex/kde-komplex-wallpaper-engine.git
|
|
cd kde-komplex-wallpaper-engine
|
|
```
|
|
|
|
Before we can compile the plugin, we will need to provide the ShaderToy and Pexels API keys through defines in `plugin/ShaderToyAPI.h` and `plugin/PlexelsAPI.h`
|
|
|
|
`plugin/ShaderToyAPI.h`
|
|
```cpp
|
|
#ifndef SHADERTOYAPI_H
|
|
#define SHADERTOYAPI_H
|
|
|
|
#define STK "SHADERTOYKEY"
|
|
|
|
#endif // SHADERTOYAPI_H
|
|
```
|
|
|
|
`plugin/ShaderToyAPI.h`
|
|
```cpp
|
|
#ifndef PEXELSAPI_H
|
|
#define PEXELSAPI_H
|
|
|
|
#define PAK "PEXELSKEY"
|
|
|
|
#endif // PEXELSAPI_H
|
|
```
|
|
|
|
Now that we have the API keys setup, we can finally build from source
|
|
```
|
|
mkdir build
|
|
cmake -S ./ -B ./build
|
|
cmake --build ./build
|
|
cmake --install ./build
|
|
```
|
|
|
|
After installation, it is likely that you may experience scan lines and other artifacts when using the `Video Channel Buffer`. This is due to the default backend being FFMPEG, which is known to have such issues with Qt. You can correct this issue by using the `gstreamer` backend provided by qt6-multimedia-gstreamer.
|
|
```
|
|
sudo echo "export QT_MEDIA_BACKEND=gstreamer" >> /etc/profile
|
|
```
|
|
This step is automatically executed by the Arch installation package.
|
|
|
|
## Installation (Release Packages)
|
|
|
|
Currently only x86_64 binaries are provided through release packages.
|
|
|
|
### Installation (Arch - Manual)
|
|
Manual: Download the provided `zst` package from one of the releases and install it via pacman. This example assumes you downloaded release 1.0.6.
|
|
```
|
|
pacman -U plasma6-wallpapers-komplex-bin-1.0.6-1-x86_64.pkg.tar.zst
|
|
```
|
|
### Installation (Arch - AUR)
|
|
Use your favorite AUR helper to install `plasma6-wallpapers-komplex-bin`.
|
|
|
|
### Installation (Generic x86_64 Linux - Qt 6.9.1)
|
|
Download the provided `tar.gz` from one of the releases, unpack it and run `install.sh`. This example assumes you downloaded release 1.0.6
|
|
```
|
|
tar -xvzf plasma6-wallpapers-komplex_1-0-6_linux_x86.tar.gz
|
|
cd plasma6-wallpapers-komplex_1-0-6_linux_x86.tar.gz
|
|
sudo ./install.sh
|
|
```
|
|
|
|
## Post-installation
|
|
In order for the plugin to be registered with Plasma 6, we will need to restart the plasmashell session. In order for the g-streamer backend to take effect, a reboot may be required.
|
|
|
|
### Restart Plasmashell
|
|
```
|
|
systemctl --user restart plasma-plasmashell.service
|
|
```
|
|
|
|
## Credits
|
|
|
|
This project was inspired by `KDE Shader Wallpaper`, `Wallpaper Engine` and others. It uses code that was originally part of `KDE Shader Wallpaper`.
|
|
|
|
This project uses icons donated by [Icons8](http://www.icons8.com)
|
|
|
|
Shader import functionality provided by [ShaderToy](http://www.shadertoy.com) API
|
|
|
|
Image and Video import functionality provided by [Pexels](http://www.pexels.com) API
|
|
|
|
To support me, this project or to find Linux themed hot sauces, you can [Buy me a coffee](https://ko-fi.com/digitalartifex)
|