Skip to content

Latest commit

 

History

History
76 lines (57 loc) · 3.73 KB

File metadata and controls

76 lines (57 loc) · 3.73 KB

openwallpaper

OpenWallpaper is a powerful open source platform for interactive live wallpapers. Heavily inspired by Wallpaper Engine, it steps away from restrictive declarative scene formats in favour of WebAssembly. In OpenWallpaper, a scene is a WASM module - meaning if you can code it, you can make it a wallpaper!

It runs on Linux Wayland with wlr-layer-shell protocol, supporting KDE Plasma Wayland, Hyprland and wlroots-based compositors. More platforms will be added soon.

✨ Features

  • 🧩 WASM scenes - implement any kind of complex scene logic by just writing code
  • 🚀 High performance - renderer written in C and SDL3 GPU, with Vulkan, DirectX and Metal backends
  • 🕊️ Lightweight runtime - only 11 MB with all the dependencies bundled
  • ⚙️ Wallpaper Engine support - automatically convert Wallpaper Engine pkg scenes into OpenWallpaper owf scenes
  • 🎵 Audio visualization - make your scene react to the beat of currently playing music
  • 🔋 Battery friendly - options to pause rendering on battery or when wallpaper is hidden

🚀 Quick start

Download, build and install wallpaperd host application:

git clone --depth=1 --recurse-submodules https://github.com/mechakotik/openwallpaper
cd openwallpaper/wallpaperd
mkdir build && cd build
cmake ..
cmake --build . -j$(nproc)
sudo cmake --install .

Run fullscreen-shader example from OpenWallpaper website (more examples here):

wget http://openwallpaper.org/fullscreen-shader.owf
wallpaperd fullscreen-shader.owf

⚙️ Wallpaper Engine support

You may convert Wallpaper Engine pkg scenes into OpenWallpaper owf scenes using wpe-compile. Instructions on how to do it are available on wpe-compile page at OpenWallpaper webiste.

Note that not all Wallpaper Engine features are supported, and conversion is not always 100% accurate. Though it can already convert many scenes without issues.

🧩 Make your own wallpaper

  • Developer guide - step-by-step tutorial for making simple scenes
  • Examples - minimal scene examples with source code
  • API reference - documentation for openwallpaper.h functionality

🤝 Contributing

Contributions are more than welcome! Areas where project needs help:

  • Packaging for Linux distributions
  • Porting wallpaperd features to more platforms (see platform support)
  • Improving wpe-compile accuracy (see support status)
  • Making new OpenWallpaper scenes and sharing them