#壁纸 #桌面 #背景

more-wallpapers

跨平台库,可按屏幕设置桌面壁纸

7 个不稳定版本

0.4.0 2024年3月29日
0.3.1 2023年10月31日
0.3.0 2023年1月4日
0.2.1 2022年12月8日
0.1.1 2022年7月5日

#7 in #壁纸


konachan-wallpaper 中使用

MIT/Apache

40KB
869

more-wallpapers 许可证: MIT OR Apache-2.0 more-wallpapers on crates.io more-wallpapers on docs.rs 源代码仓库 Rust 版本: 1.65.0

又一个可以按屏幕设置壁纸的壁纸库。

与其他库(如 wallpaperwall)相比,其主要特性是可以在不同的屏幕上设置不同的壁纸。目前,此功能仅在某些环境中实现。因此,您可以启用 fallback 功能,使用 自定义版本wallpaper 库作为不支持环境中的后备。这意味着您可以使用此库的附加功能,同时仍然支持大量环境。

目前支持以下环境

环境 设置壁纸 按屏幕设置壁纸 要求
Windows features=["fallback"]¹
MacOS features=["fallback"]¹
X11³ xwallpaper, libxrandr²
Budgie(wayland) features=["fallback"]¹
Cinnamon⁴ xwallpaper, libxrandr²
Deepin(wayland) features=["fallback"]¹
GNOME(wayland) features=["fallback"]¹
KDE
Mate(wayland) features=["fallback"]¹
Sway
XFCE

¹ 请也查看 wallpaper 库的要求。
² 通常已安装。
³ 重启后壁纸将被重置。
⁴ 重启后壁纸将被重置为默认值。

当前支持的功能信息也由 Environment 枚举提供。

快速入门/示例

如果您只想为每个屏幕设置不同的壁纸,而不关心哪个屏幕使用哪个壁纸,您可以使用set_wallpapers_from_vec()set_random_wallpapers_from_vec()(仅在使用了rand特性时可用)

use more_wallpapers::Mode;

let images = vec!["1.jpg", "/usr/share/wallpapers/2.jpg"];
more_wallpapers::set_wallpapers_from_vec(images, "default.jpg", Mode::Crop)?;

使用"default.jpg"作为非活动屏幕的壁纸。如果您不知道在这里应该使用哪个值,您可以使用图片向量中的第一个元素。

对于高级壁纸设置,您可以使用WallpaperBuilder

use more_wallpapers::{Mode, WallpaperBuilder};

let fallback_images = vec!["/usr/share/wallpapers/1.jpg", "/usr/share/wallpapers/2.jpg"];
let mut i = 0;
WallpaperBuilder::new()?.set_wallpapers(|screen| {
	i += 1;
	if i == 1 {
		return ("first.jpg".to_owned(), Mode::default());
	}
	if screen.name == "HDMI1" {
		return ("/usr/share/wallpapers/hdmi.jpg".to_owned(), Mode::Fit);
	}
	(
		fallback_images[i % fallback_images.len()].to_owned(),
		Mode::Tile,
	)
})?;

依赖项

~0.4–2.1MB
~40K SLoC