||2 weeks ago|
|.rpm||2 weeks ago|
|src||2 weeks ago|
|.gitignore||1 month ago|
|Cargo.lock||2 weeks ago|
|Cargo.toml||2 weeks ago|
|LICENSE.txt||3 weeks ago|
|README.md||2 weeks ago|
A wayland wallpaper tool with support for Gnome dynamic wallpapers. The main motivation behind
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
||Filter Methods (Fast, Good, Best, Nearest, Bilinear, Gaussian) [default: Good]|
||Display Mode (Dynamic, Static) [default: Autodetect]|
||Scale (Fill, Fit, None) [default: Fill]|
Prebuilt images are currently only available for Fedora 33/34/rawhide via copr.
Add the copr to your system and install
# 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:
git cargo rust glibc-devel gtk3-devel gtk-layer-shell-devel
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 install --path .
or to any other arbitrary directory in your path e.g.
$ cargo build --release $ install -Dm755 "target/release/enkei" "/usr/local/bin/enkei"
Known Limitations / TODOs
Handle Output Changes
It would be a nice to have to handle addition and removal of monitors while running. Changes required would be to connect to the gdk DisplayManager and interact with these proclaimed changes. The delay in which this should happen is best to be kept low, so long-time animations will have to interrupted.
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.