A modern wallpaper tool with Gnome dynamic wallpaper support. https://enkei.spacesnek.rocks
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Johannes Wünsche b563d8aece
Handle new results of cairos calls
4 months ago
.rpm Add rpm spec 8 months ago
src Handle new results of cairos calls 4 months ago
.gitignore Initial commit 8 months ago
Cargo.lock Update gtk-rs to 0.14 5 months ago
Cargo.toml Update gtk-rs to 0.14 5 months ago
LICENSE.txt Add License 8 months ago
README.md Update README 7 months ago



A wayland wallpaper tool with support for Gnome dynamic wallpapers. The main motivation behind enkei the option to display dynamic wallpapers compatible with the Gnome wallpaper specification. This wallpaper tool uses gtk-layer-shell to render backgrounds on all monitors. It has been tested in sway but should be compatible in general with all compositors supporting the wlr-layer-shell protocol.


  • Show Static Image
  • Show Dynamic Wallpapers
  • Set Different Scaling Modes
  • Set Wallpaper Filter Algorithm
  • Most common image formats supported (PNG, JPG, TIF,...)

Under the hood we use image which provides the most common image types, have a look on their documentation


flag purpose/variants
-f Filter Methods (Fast, Good, Best, Nearest, Bilinear, Gaussian) [default: Good]
-m Display Mode (Dynamic, Static) [default: Autodetect]
-s Scale (Fill, Fit, None) [default: Fill]


Available Packages

Prebuilt images are currently only available for Fedora 33/34/rawhide via copr.

Add the copr to your system and install enkei with:

# dnf copr enable jwuensche/wayland-tools 
# dnf install enkei

Patches for packaging of any other distribution are welcome, and will be merged gladly.


If no packages are available for your distribution, you want to manually install, or develop on enkei you can build it yourself locally with the following steps.


Make sure you have to following dependencies installed:


Building the project

To build the project then clone it and from within the cloned directory:

$ cargo build

Installing from Local Build

You can either install enkei via a cargo, to your $CARGO_BIN directory

$ cargo install --path .

or to any other arbitrary directory in your path e.g. /usr/local/bin.

$ cargo build --release
$ install -Dm755 "target/release/enkei" "/usr/local/bin/enkei"

Known Limitations / TODOs

  • More efficient image rendering for animation steps

    We create new cairo surface for separate animation steps, this leads to more effort in copying but guarantees a linear progression in the animation. We would best change this to only apply a certain level of alpha to the image at each step halving the copy effort.

  • Allow setting of wallpapers via IPC

    A nice to have would be to send messages to the already running enkei instance to change the wallpaper shown. For this we would need to interrupt any ongoing animations or static images and hot-swap the images in the current gtk session.

    oguri has done something similar seems like a cool feature to have to avoid respawning the application.

  • Individual wallpapers on different displays

    The base functionality for this is already present, as each output is treated individually. But higher logic and interface is missing to realize this. This goes hand in hand with being able to choose on which display you want to display a wallpaper. Maybe not all should be set.