#壁纸 #wayland #wlroots #config-toml #合成器

app wpaperd

Wayland 壁纸守护进程

2 个稳定版本

1.0.1 2024年4月18日
1.0.0 2024年4月17日

#32多媒体

GPL-3.0+

125KB
3K SLoC

wpaperd

GitHub's release (latest by date) GitHub license GitHub Workflow Status

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 运行 nextprevious 命令来循环图像

$ wpaperctl next
$ wpaperctl previous

sorting 设置为 ascedingdesceding 时,wpaperd 将使用壁纸名称来相应地计算下一个壁纸。当 sorting 设置为 random 时,它将把显示的所有壁纸存储在一个队列中,以便 nextprevious 命令能按预期工作。

壁纸配置

wpaperd 的配置文件位于 XDG_CONFIG_HOME/wpaperd/config.toml(默认为 ~/.config/wpaperd/config.toml)。每个部分代表不同的显示器,可以包含以下键

  • path,用于壁纸的图片路径或从中选择壁纸的目录
  • duration,图片应显示多长时间才更换为新图片。它支持人类格式来声明持续时间(例如 30s10m),详细说明见这里。这仅在路径指向目录时有效。(可选
  • sorting,选择排序顺序。有效选项为 ascendingdescendingrandom,默认为 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