# skwd-wall renders images, video and Wallpaper Engine scenes on Linux

> skwd-wall is a Rust wallpaper manager for Linux that draws images, videos and Wallpaper Engine scenes through wgpu, with GPU-rendered pickers, colour theming, playlists and a scheduling engine. It suits Wayland and X11 users who want a wallpaper tool that stays cheap, and the v2 line is still in beta.

**liixini/skwd-wall** — An aesthetics-first wallpaper selector and engine with extreme performance that supports images, videos and Wallpaper Engine Scenes. Wallpaper-based theming with Matugen and granular colour fixing as well! Also has a built in Wallhaven.cc & Steam browser because why not. Join us on discord - https://discord.gg/cgxy8EEVmz

- Repository: https://github.com/liixini/skwd-wall
- Stars: 1,086 · Forks: 33
- Language: Rust
- License: MIT
- Published: 2026-10-19 · Updated: 2026-10-19 · Language: en
- Canonical page: https://hysenlabs.com/projects/liixini-skwd-wall

## A wallpaper manager that stops rendering when nothing is happening

skwd-wall is a wallpaper manager for most Linux distributions and window managers, and it can show Wallpaper Engine scenes and browse them, images and videos, and it claims to be much more performant than most wallpaper daemons.

The performance claim is backed by a chart in the README rather than by adjectives, and the mechanism behind it is stated plainly. It starts in about 150 ms, stops rendering when idle, and exits completely when closed, meaning no resources are required unless you are switching wallpapers.

That last point is the architectural decision. Most wallpaper daemons are a long-lived process holding a texture and a GL context for the whole session, whether or not anything is on screen. skwd-wall's model is closer to a screensaver: it starts when you want it, renders what it needs, and goes away. A user quoted in the README describes running v1 on their machine without complaint and v2 as going from family sedan fast to ferrari fast.

The target platform is broad. The distribution badges cover Arch Linux, CachyOS, Fedora, Bazzite, NixOS, Debian, Ubuntu, Pop!_OS and Linux Mint, and the compositor badges cover Niri, Hyprland, KDE Plasma, Mango, Sway, COSMIC and labwc. So the intent is a Linux-native tool that works across the Wayland and X11 landscape rather than one tied to a single desktop.

The primary language is Rust, with the workspace on edition 2024 and a minimum Rust version of 1.93, and the description of the main package is precise: a GPU-rendered graphical client for the Skwd wallpaper suite.

## Everything is drawn through wgpu and iced, with Vulkan for the scenes

The dependency list explains how the rendering is done, and it is a modern GPU stack rather than a GL one.

The graphics core is wgpu at 27 with the std, parking_lot, vulkan and wgsl features, and ash at 0.38 as the raw Vulkan bindings, which means the path to the GPU is Vulkan and the shader language is WGSL. On top of that sits iced at 0.14 with the wgpu-bare, advanced, canvas, image-without-codecs, thread-pool, wayland and x11 features, plus iced_runtime and iced_wgpu with texture-compression-bc. iced is the GUI framework that sits on top of that stack.

The Wallpaper Engine scene support renders through Vulkan, and the README says it exposes the scenes' switches, sliders and other editable properties, so you can adjust a scene's parameters rather than accepting it as shipped.

The image decoding is deliberately split. The image crate at 0.25 is included with the jpeg, png, webp, bmp, gif and tiff features but with default-features off and image-without-codecs on the iced side, and image-webp at 0.2 is pulled in separately, so WebP handling is done outside the general decoder. That is what a wallpaper daemon wants, since a wallpaper is a large image decoded once and kept resident, and the codec choice dominates the memory and the start-up cost.

The rest of the stack is unremarkable and tells you what kind of project this is. serde and serde_json for configuration, glam for the vector maths that the shader-side and transition work needs, bytemuck with derive for the zero-copy GPU data paths, bit-set and bit-vec, and texpresso at 2.0.2 for texture compression. There is also a set of profiling crates, tracing with the subscriber and the env-filter feature, tracy-client and tracing-tracy and tracing-chrome for profiling, and dhat for heap profiling.

Having a dhat dependency in a wallpaper daemon says something about the author's priorities. This is a program that is expected to use very little memory, and a heap profiler in the dependency tree is how you check that claim rather than assert it.

## Four pickers, colour theming and a schedule engine built on real-world conditions

The feature list in the README is enormous, and the way it is written tells you a lot about the intended audience.

There are four completely different GPU-rendered pickers, named Slices, Geometric, Wall and Sandy. The README's own aside on the four is because why not, which is the tone of a feature list written by someone who enjoys building pickers. Each is GPU-rendered, which is the point: a picker is where a wallpaper manager spends its frame budget, and doing it on the CPU is what makes the alternatives feel sluggish.

The colour side integrates with the ecosystem rather than inventing a new one. There is out of the box colour theming for popular applications including KDE Plasma, and it can be extended with Matugen scripts. Desktop colours can be derived from the wallpaper using Iris, Matugen, Wallust, Pywal, Caelestia, Noctalia, DMS or end-4, with the author noting he went a bit crazy. There is a theme designer with all 50 Material colour roles, separate dark and light variants, saved palettes and wallpaper profiles, and saved colours carry through to app templates.

The scheduling engine is the feature that shows the ambition. It runs schedules using time, date, sunrise, sunset, weather, battery, power and connected displays, combined with full conditional logic using ANY, ALL or OR and nested groups. Displays can be locked against schedules and random changes, and playlists support manual or filtered lists with shuffle, sequential playback and separate display assignments.

The library filtering is equally specific. Enormous libraries can be filtered by type, shape, resolution, folder, colour, tags, favourites, metadata and current weather, with the weather filter followed by a wry aside about how you might use it.

The browsing is done inside the picker, covering Steam Workshop, Wallhaven, YouTube and Bing Daily. The description of the project also mentions a built in Wallhaven.cc and Steam browser because why not, and local visual search for describing the wallpaper you want.

## Niri, Hyprland and KWin get per-workspace pinning

One feature deserves its own treatment because it is the clearest sign that the tool is written by someone who runs these compositors daily.

skwd-wall can pin wallpapers to individual Niri, Hyprland and KWin workspaces. The README notes this is configuration only for now, so work in progress, which is an honest caveat rather than a hidden limitation.

Workspace pinning is the feature that separates a real desktop wallpaper tool from a screen changer. The common complaint about workspace-specific backgrounds is that a compositor's own per-workspace background feature only handles a solid colour or a static image, and that a tool which animates video has no way to coordinate with the workspace switch. A tool that can pin a specific wallpaper to a specific workspace has to talk to the compositor's IPC, and the README lists three compositors where it does this.

Two more compositor-aware details appear elsewhere in the feature list. The layout can be changed to right-to-left for languages read that way, and videos can be placed in the Niri backdrop, paused unless you are looking at it, which is a small thing that saves a surprising amount of GPU time on a laptop.

The Niri support also explains why the tool talks about displays at such length. It can apply different wallpapers, placement and audio to each display independently, and it shares Vulkan devices and video decoders across displays, pauses idle playback and applies automatic battery handling. The last of those is the kind of detail that separates a tool used on a laptop from a tool demonstrated on a desktop.

## A v2 beta with known issues and almost no written documentation

The README is candid about the state of the project, and the important caveats are at the very top.

The announcement block says skwd-wall v2 beta is here, invites people to join the Discord if they want to help steer the direction of the beta, report bugs or just chat, and then says that v2 is the most ambitious software the author has ever written and that he expects at least one bug, maybe two.

Three known issues and work in progress items are listed. The Wallpaper Engine support has inconsistencies and bugs in comparison to the real Wallpaper Engine, and that part of the application is still work in progress with imperfect coverage. The Debian version is work in progress. And a wiki and better documentation are work in progress, with the plain admission that skwd-wall is packed with tons of features but almost nothing is explained in detail in writing.

That last point is the most important for an adopter, because the feature list is longer than most of the documentation a project like this would have. The README itself is the primary reference, and the Discord is the support channel.

The release record shows how active it is. The recent releases are v1.0.0-beta.26 on 2026-10-15, v1.0.0-beta.25 on 2026-10-14 and v1.0.0-beta.24 on 2026-10-01, and the default branch is v2. The version in Cargo.toml is 1.0.0-beta.26 with the workspace on edition 2024, and the last push was on 2026-10-15.

The licence is MIT, with the LICENSE file in the repository as the authoritative text, and there is a LICENSES/ directory plus a LICENSING.md file for third-party licence tracking, a deny.toml for cargo-deny checks, and a rust-toolchain.toml pinning the compiler. The repository also has locales/ for translations, a flake.nix, an install.sh, shaders/ and a.forgejo/ directory alongside.github/.

The honest summary is that this is a large, ambitious, actively developed beta with a very wide feature set, a real engineering approach to performance, and documentation that is behind the code. Which of those matters most depends on whether you want the features or a stable tool.

## Conclusion

Adopt skwd-wall if you run Linux and want a wallpaper manager that handles still images, video and Wallpaper Engine scenes in one GPU-rendered client, and you are comfortable with a beta. Do not adopt it if you need a stable, documented tool, because the README lists a wiki and better documentation as still work in progress, and the Wallpaper Engine support has known inconsistencies. Before you install, check that your distribution and compositor are on the supported list, and read the known issues, since Debian packaging and Wallpaper Engine parity are both marked work in progress.

## FAQ

### What is skwd-wall and what can it display?

It is a wallpaper manager for most Linux distributions and window managers that can display images, videos and supported Wallpaper Engine scenes, browse Steam Workshop, Wallhaven, YouTube and Bing Daily from inside the picker, and render Wallpaper Engine scenes through Vulkan with their switches, sliders and other editable properties exposed.

### How does skwd-wall achieve its performance?

The README states it starts in about 150 ms, stops rendering when idle, and exits completely when closed, so no resources are required unless you are switching wallpapers. The rendering stack is wgpu with the vulkan and wgsl features plus ash for the raw Vulkan bindings, with iced as the GUI framework.

### Which Linux distributions and window managers does skwd-wall support?

The README carries badges for Arch Linux, CachyOS, Fedora, Bazzite, NixOS, Debian, Ubuntu, Pop!_OS and Linux Mint, and for Niri, Hyprland, KDE Plasma, Mango, Sway, COSMIC and labwc. It can also pin wallpapers to individual Niri, Hyprland and KWin workspaces, though that is configuration only for now.

### Can skwd-wall derive colours from the wallpaper for my applications?

Yes. It has out of the box colour theming for popular applications including KDE Plasma, can be extended with Matugen scripts, and can derive desktop colours using Iris, Matugen, Wallust, Pywal, Caelestia, Noctalia, DMS or end-4. There is also a theme designer with all 50 Material colour roles and separate dark and light variants.

### Is skwd-wall stable?

The README says the v2 beta is the most ambitious software the author has written and that he expects at least one bug. The known issues are Wallpaper Engine inconsistencies, the Debian version, and a wiki and better documentation, since the project is packed with features but almost nothing is explained in detail in writing. Recent releases are v1.0.0-beta.26 on 2026-10-15, beta.25 on 2026-10-14 and beta.24 on 2026-10-01.

## Sources

- [Issues](https://github.com/liixini/skwd-wall/issues)
- [License: MIT](https://github.com/liixini/skwd-wall/blob/v2/LICENSE)
- [liixini/skwd-wall on GitHub](https://github.com/liixini/skwd-wall)
- [README](https://github.com/liixini/skwd-wall/blob/v2/README.md)
- [Releases](https://github.com/liixini/skwd-wall/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/liixini-skwd-wall
