All Projects → catsout → wallpaper-engine-kde-plugin

catsout / wallpaper-engine-kde-plugin

Licence: GPL-2.0 license
A kde wallpaper plugin integrating wallpaper engine

Programming Languages

C++
36643 projects - #6 most used programming language
QML
638 projects
CMake
9771 projects

Projects that are alternatives of or similar to wallpaper-engine-kde-plugin

Lively
Stars: ✭ 5,721 (+795.31%)
Mutual labels:  live-wallpaper, wallpaper-engine
WallEngine
An engine for creating and setting animated wallpapers
Stars: ✭ 39 (-93.9%)
Mutual labels:  wallpaper-engine, video-wallpaper
konfsave
Easy saving and switching between multiple KDE configurations.
Stars: ✭ 42 (-93.43%)
Mutual labels:  kde
meta-qt5-extra
OE layer for desktop environments based on Qt5 (KDE KF5+Plasma+Apps / lirios / lxqt / lumina)
Stars: ✭ 28 (-95.62%)
Mutual labels:  kde
marketo
Re-borned
Stars: ✭ 74 (-88.42%)
Mutual labels:  kde
kcm-colorful
Make your KDE Plasma colorful.
Stars: ✭ 126 (-80.28%)
Mutual labels:  kde
pidswallow
A swallower script using process hierarchy.
Stars: ✭ 40 (-93.74%)
Mutual labels:  kde
KDynamic
An Alternative to MacOS Mojave Dynamic Theme and Wallpaper Changer
Stars: ✭ 48 (-92.49%)
Mutual labels:  kde
grub2-editor
A KDE Control Module for configuring the GRUB2 bootloader. Unofficial KF5 port.
Stars: ✭ 24 (-96.24%)
Mutual labels:  kde
plasma-dotfiles
In this repository I intend to keep configuration files that I deem important, in addition to the theme customizations that I make to have a consistent working environment.
Stars: ✭ 58 (-90.92%)
Mutual labels:  kde
JetBrainsRunner
A Krunner Plugin which allows you to open your recent projects
Stars: ✭ 31 (-95.15%)
Mutual labels:  kde
plasma-docker
Plasmoid for KDE Plasma to control docker containers
Stars: ✭ 38 (-94.05%)
Mutual labels:  kde
chameleon-live-wallpaper
Color adapting live wallpaper for Android.
Stars: ✭ 20 (-96.87%)
Mutual labels:  live-wallpaper
MLab
“云上炼丹师”中的云
Stars: ✭ 54 (-91.55%)
Mutual labels:  kde
kde-plasmoid-betterinlineclock
Your usual clock widget, just way better and on a single line!
Stars: ✭ 18 (-97.18%)
Mutual labels:  kde
archlinuxcn-dotfiles-collection
来自社区小伙伴们的 dotfiles 集锦
Stars: ✭ 73 (-88.58%)
Mutual labels:  kde
EmojiRunner
Search for emojis in Krunner and copy/paste them
Stars: ✭ 33 (-94.84%)
Mutual labels:  kde
secret-service
Service to keep secrets of applications
Stars: ✭ 56 (-91.24%)
Mutual labels:  kde
plexydesk
Lightweight Desktop Manager for Gnu/Linux and FreeBSD - Ideal for Low resource computers
Stars: ✭ 33 (-94.84%)
Mutual labels:  kde
gahshomar
A Persian (Jalali/Farsi) calendar for Linux
Stars: ✭ 69 (-89.2%)
Mutual labels:  kde

Wallpaper Engine for Kde

A wallpaper plugin integrating wallpaper engine into kde wallpaper setting.

Note

  • Known issues:
    • Some scene wallpapers may crash your KDE.
      Remove WallpaperSource line in ~/.config/plasma-org.kde.plasma.desktop-appletsrc and restart KDE to fix.
    • Mouse long press (to enter panel edit mode) is broken on desktop.
    • Screen Locking is not supported, please not use this plugin in screen locking.
  • Support scene(2d),video,web wallpaper types
  • Requires Wallpaper Engine installed on steam
  • Requires Python 3.3+
  • Requires Qt 5.13+ for playing video(no mpv), or mpv instead
  • Requires Vulkan 1.1+, Opengl External Memory Object extension
  • Requires vulkan driver installed
    If you are using amd, please choose RADV driver.

Install

Dependencies

Debian:

sudo apt install build-essential libvulkan-dev plasma-workspace-dev gstreamer1.0-libav \
liblz4-dev libmpv-dev python3-websockets qtbase5-private-dev \
libqt5x11extras5-dev \
qml-module-qtwebchannel qml-module-qtwebsockets

Fedora:

# Please add "RPM Fusion" repo first
sudo dnf install vulkan-headers plasma-workspace-devel kf5-plasma-devel gstreamer1-libav \
lz4-devel mpv-libs-devel python3-websockets qt5-qtbase-private-devel \
qt5-qtx11extras-devel qt5-qtwebchannel-devel qt5-qtwebsockets-devel

Arch:

sudo pacman -S extra-cmake-modules plasma-framework gst-libav \
base-devel mpv python-websockets qt5-declarative qt5-websockets qt5-webchannel vulkan-headers 

Void:

sudo xbps-install -S extra-cmake-modules plasma-framework \
gst-libav base-devel mpv python3-websockets qt5-declarative qt5-websockets \
qt5-webchannel plasma-workspace-devel mpv-devel liblz4-devel Vulkan-Headers

Fedora Kinoite:
see install via rpm-ostree

Note for kde store

Still need to run commands below to get scene and mpv work.
Every time you receive update in discover, you should run these commands to update.

Build and Install

# Download source
git clone https://github.com/catsout/wallpaper-engine-kde-plugin.git
cd wallpaper-engine-kde-plugin

# Download submodule (glslang)
git submodule update --init

# Configure
# 'USE_PLASMAPKG=ON': using plasmapkg2 tool to install plugin
mkdir build && cd build
cmake .. -DUSE_PLASMAPKG=ON

# Build
make

# Install package (ignore if USE_PLASMAPKG=OFF for system-wide installation)
make install_pkg
# install lib
sudo make install

Uninstall

  1. remove files that list in wallpaper-engine-kde-plugin/build/install_manifest.txt
  2. plasmapkg2 -r ~/.local/share/plasma/wallpapers/com.github.casout.wallpaperEngineKde

Usage

  1. Wallpaper Engine installed on Steam
  2. Subscribe to some wallpapers on the Workshop
  3. Select the steamlibrary folder on the Wallpapers tab of this plugin
    • The steamlibrary which contains the steamapps folder
      • This is usually ~/.local/share/Steam by default
    • Wallpaper Engine needs to be installed in this steamlibrary

Restart KDE

You need to restart KDE(re-login) after reinstalling the plugin
Please not use kstart5 plasmashell, which will cause freezing
Re-login is ok

Support Status

Scene:

Scene wallpapers are supported by vulkan 1.1
Requires Wallpaper Engine installed for assets(shaders,pictures...)

standalone

Only for testing and debug
Requires glfw

# git clone and init submodule
cd src/backend_scene/standalone_view
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_QML=ON
make 

./sceneviewer --help

open-source libraries

argparse - Command line argument parser
stb - Image loading
miniaudio - Audio loading and playback
nlohmann/json - Json parsing
Eigen - Math operations
glad - Opengl loader
glslang - Glsl to Spv
Vulkan-Hpp - Vulkan C++ API
VulkanMemoryAllocator - Vulkan memory allocation library

supported

  • Layer
    • Image
    • Composition / Fullscreen
    • Text
  • Effect
    • Mouse position with delay
    • Parallax
    • Depth Parallax
    • ColorBlendMode
    • PBR light
    • Global bloom
  • Camera
    • Zoom
    • Shake
    • Fade / Path
  • Audio
    • Loop
    • Random
    • Visualization
  • Particle System
    • Renderers
    • Emitters
      • Duration
    • Initializers
    • Operators
      • Control Point Force
      • Vortex
    • Control Points
    • Children
  • Puppet warp
  • 3D model
  • Timeline animations
  • Scenescript
  • User Properties

Web

Basic web apis are supported, but the audio api does not send data for now.

no webgl

WebEngineView in plasmashell can't init opengl.
Some wallpaper using webgl may not work, and performance may be bad.

Video HWdecode

QtMultimedia

The default video backend of this plugin.
It's using GStreamer to play video.
hwdecode for GStreamer

Mpv

Need to compile the plugin lib.
The config is set to hwdec=auto, and is not configurable for now.

About integrating into other desktop environments

There is no general way. If there is a way to have good support for most desktop environments, why not we just require wallpaper engine itself to support linux. Some similar apps like lively and ScreenPlay can benefit from that, but that way doesn't exist. Actually the integration and implement are separated, for all integration ways, the implement is shared. So if there is a general way, we can move to it easily.

The major work of this plugin is the scene wallpaper renderer. If you want to integrate this into other desktop environments, here are some examples. Currently this renderer is rendering under vulkan and sharing to opengl texture which will be read by qml(plasmashell) in kde. You can integrate this renderer into anything that can show vulkan or opengl textures.

Acknowledgments

Preview

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].