2 个稳定版本
1.0.1 | 2024年4月18日 |
---|---|
1.0.0 | 2024年4月17日 |
#32 在 多媒体
125KB
3K SLoC
wpaperd
wpaperd 是为 Wayland 设计的现代壁纸守护进程。它可以在指定时间后动态更改当前壁纸,也可以通过命令行界面进行更改。它使用 OpenGL ES 渲染图像,并具有美观的硬件加速过渡,同时节省资源。
注意:wpaperd 使用 wlr_layer_shell wayland 协议,该协议在所有基于 wlroots 的合成器(sway、hyprland、...)和 KDE 上可用。因此,它不会在 GNOME 上工作。
功能
- 每个显示器有不同的壁纸
- 从目录中选择壁纸
- 在设置的时间后更改壁纸
- 多种排序方法(随机或顺序)
- 灵活的 TOML 配置文件
- 所有设置的快速重新加载
- 易于使用的命令行界面
- 硬件加速的可配置过渡
- 多种背景模式(居中、填充)
- 对资源友好(低 CPU 和内存使用)
入门
依赖项
wpaperd 用 Rust 编写,需要安装 Cargo。它还依赖于
mesa
wayland-client
wayland-egl
rinstall
(可选,用于安装wpaperd
)
构建
要安装 wpaperd
,请克隆仓库并构建项目
$ git clone https://github.com/danyspin97/wpaperd
$ cd wpaperd
$ cargo build --release
通过运行 scdoc
生成手册页
$ scdoc < man/wpaperd-output.5.scd > man/wpaperd-output.5
安装
您可以使用 rinstall 同时安装守护进程(wpaperd
)和 CLI(wpaperctl
)
$ rinstall --yes
要运行 wpaperd,请运行守护进程
$ wpaperd
如果您想在启动时自动运行它,请将以下行添加到 sway 配置文件(位于 $HOME/.config/sway/config
)中
# Assuming it has been installed in ~/.local/bin/wpaperd
exec ~/.local/bin/wpaperd -d
或在 Hyprland 中
exec-once=~/.local/bin/wpaperd -d
图像格式支持
加载和显示图像。有关支持的格式,请参阅其 文档。
循环图像
当 path
设置为目录时,您可以使用 wpaperctl 运行 next
和 previous
命令来循环图像
$ wpaperctl next
$ wpaperctl previous
当 sorting
设置为 asceding
和 desceding
时,wpaperd 将使用壁纸名称来相应地计算下一个壁纸。当 sorting
设置为 random
时,它将把显示的所有壁纸存储在一个队列中,以便 next
和 previous
命令能按预期工作。
壁纸配置
wpaperd 的配置文件位于 XDG_CONFIG_HOME/wpaperd/config.toml
(默认为 ~/.config/wpaperd/config.toml
)。每个部分代表不同的显示器,可以包含以下键
path
,用于壁纸的图片路径或从中选择壁纸的目录duration
,图片应显示多长时间才更换为新图片。它支持人类格式来声明持续时间(例如30s
或10m
),详细说明见这里。这仅在路径指向目录时有效。(可选)sorting
,选择排序顺序。有效选项为ascending
、descending
和random
,默认为random
。这仅在路径指向目录时有效。(可选)mode
,选择如何显示壁纸,当其大小与显示分辨率不同时fit
显示整个图片,用黑色角落覆盖剩余空间center
在屏幕上居中图片,省略无法适合的图片角落stretch
显示整个图片,将其拉伸以适应整个屏幕,不留下任何黑色角落,改变宽高比tile
在水平和垂直方向上多次显示图片以填充屏幕
transition_time
,过渡应运行多少毫秒。(可选,默认为300
)。queue_size
,当path
设置为目录且sorting
设置为random
时,决定队列的大小。(可选,默认为10
)
部分 default
将作为所有显示配置的基础;部分 any
将用于所有未明确列出的显示器。这允许有一个灵活的配置,无需重复任何设置。wpaperd 将在启动时以及每次更改配置时检查配置,并在配置错误时提供帮助。
这是一个最简单的配置
[DP-3]
path = "/home/danyspin97/github_octupus.png"
[DP-4]
path = "/home/danyspin97/Wallpapers"
duration = "30m"
这是一个更复杂的配置
[default]
duration = "30m"
mode = "center"
sorting = "ascending"
[any]
path = "/home/danyspin97/default_wallpaper.png"
[DP-3]
path = "/home/danyspin97/Wallpapers"
如果您正在运行 sway,可以通过运行以下命令来查找可用的输出及其 ID
$ swaymsg -t get_outputs
在 Hyprland 上可以运行
$ hyprctl monitors
常见问题解答
- 壁纸加载 缓慢:wpaperd 使用
image
包来加载和解码图片。然而,在debug
模式下构建时,加载和解码时间从半秒到几秒不等,即使在现代硬件上也是如此。尝试以发布模式构建 wpaperd
$ cargo build --release
许可协议
wpaperd 使用 GPL-3.0+ 许可证。
依赖项
~18–29MB
~464K SLoC