| Crates.io | bevy_live_wallpaper |
| lib.rs | bevy_live_wallpaper |
| version | 0.3.1 |
| created_at | 2025-12-01 09:49:48.736796+00 |
| updated_at | 2025-12-25 12:24:53.342475+00 |
| description | A Bevy plugin to create live wallpapers. |
| homepage | |
| repository | https://github.com/yadokani389/bevy_live_wallpaper |
| max_upload_size | |
| id | 1959579 |
| size | 275,939 |
A Bevy plugin that renders your scene into a Wayland layer-shell surface, an X11 root window, or a Windows desktop background.

| Bevy Version | Crate Version |
|---|---|
0.17 |
0.1-0.3 |
zwlr_layer_shell_v1 (e.g. Sway,
Hyprland, River, Niri).wayland and/or x11 features.
# In your Cargo.toml
# For Windows:
[dependencies]
bevy_live_wallpaper = "0.3.1"
# For Linux/BSD:
[dependencies]
bevy_live_wallpaper = { version = "0.3.1", features = ["wayland", "x11"] }
Add the LiveWallpaperPlugin to your app. To make your application
cross-platform, you will need to use conditional compilation (#[cfg]) for
platform-specific setup.
LiveWallpaperCamera component to the camera you want to render.LiveWallpaperCamera is not required,
but keeping it attached is harmless.Here is a complete, cross-platform example:
use bevy::prelude::*;
use bevy_live_wallpaper::{LiveWallpaperCamera, LiveWallpaperPlugin};
fn main() {
let mut app = App::new();
// Platform-specific window adjustments for wallpaper mode.
// On Wayland/X11, the primary window must be disabled; on Windows, use a borderless window.
let mut window_plugin = WindowPlugin::default();
#[cfg(any(feature = "wayland", feature = "x11"))]
{
window_plugin.primary_window = None;
window_plugin.exit_condition = bevy::window::ExitCondition::DontExit;
}
#[cfg(target_os = "windows")]
{
window_plugin.primary_window = Some(Window {
decorations: false,
..default()
});
}
app.add_plugins(DefaultPlugins.set(window_plugin));
app.add_plugins(LiveWallpaperPlugin::default());
app.add_systems(Startup, setup_scene).run();
}
fn setup_scene(mut commands: Commands) {
// Spawn a camera. On Wayland/X11 this component is required; on Windows
// it is optional but harmless to keep for consistency.
commands.spawn((Camera2d, LiveWallpaperCamera));
// ... spawn your scene entities here ...
commands.spawn((
Sprite::from_color(Color::srgb(0.15, 0.4, 0.85), Vec2::splat(1600.0)),
Transform::from_xyz(0.0, 0.0, 0.0),
));
}
The included examples are cross-platform.
cargo run --features=wayland,x11 --example=3d_shapes -- --help
# or
nix run github:yadokani389/bevy_live_wallpaper -- --help
cargo run --example=3d_shapes -- --help