什么是 vwallpaper2?
vwallpaper2 是一个为 Wayland 合成器设计的动态壁纸(或称视频壁纸)工具,它不同于传统的静态壁纸,可以播放视频、动画甚至支持交互式内容(如网页),让你的桌面背景“活”起来。

主要特性
- 高性能: 利用
wlr-randr和wlr-layer-shell在 Wayland 上高效渲染,通常对性能影响很小。 - 轻量级: 相较于其他解决方案,
vwallpaper2非常简洁,没有过多依赖。 - 多输出支持: 可以在不同显示器上设置不同的壁纸。
- 多种输入源: 支持本地视频文件、网络流、摄像头输入,甚至可以加载网页作为壁纸。
- 自动暂停: 当全屏应用(如游戏、视频播放器)激活时,可以自动暂停视频播放,以节省资源。
第零步:前置要求
在安装之前,请确保你的系统满足以下条件:
-
Wayland 会话:
vwallpaper2是专为 Wayland 设计的,你必须正在使用一个 Wayland 合成器,- Sway
- Hyprland
- Wayfire
- GNOSIS (GNOME on Wayland)
- 其他支持
wlr-layer-shell的 Wayland 合成器
-
开发工具和依赖: 你需要安装
git、meson、ninja以及 C/C++ 编译工具链。 -
视频解码库:
vwallpaper2依赖 FFmpeg 来解码视频,你需要安装 FFmpeg 的开发库。
(图片来源网络,侵删) -
网络库: 如果你想使用网络流或网页壁纸,需要安装
libcurl和webkit2gtk的开发库。
第一步:安装
vwallpaper2 通常不在主流发行版的官方仓库中,所以最推荐的方式是从源代码编译安装。
安装系统依赖
根据你的 Linux 发行版,运行以下命令安装必要的依赖:
基于 Debian/Ubuntu 的系统:

sudo apt update sudo apt install -y git meson ninja-build build-essential libffmpeg-dev libcurl4-openssl-dev libwebkit2gtk-4.0-dev
注意:libffmpeg-dev 在某些系统上可能叫 libavcodec-dev 等其他名字,请根据你的系统调整。
基于 Arch Linux 的系统:
sudo pacman -Syu sudo pacman -S --needed git meson ninja base-devel ffmpeg libcurl webkit2gtk
克隆并编译 vwallpaper2
打开终端,执行以下命令:
# 克隆仓库 git clone https://github.com/n3rdox/vwallpaper2.git cd vwallpaper2 # 使用 Meson 配置和编译项目 meson setup build --buildtype=release ninja -C build
安装
# 安装到系统 sudo ninja -C build install
安装完成后,你可以执行 vwallpaper2 --help 来验证是否安装成功。
第二步:基本使用
vwallpaper2 的核心功能是通过命令行参数控制的。
播放一个本地视频文件
这是最基本的功能,假设你有一个视频文件 my_wallpaper.mp4,你可以这样运行:
vwallpaper2 /path/to/your/my_wallpaper.mp4
重要提示: 运行这个命令后,你的壁纸可能会变成黑色或你视频的最后一帧,这是因为 vwallpaper2 默认会以全屏方式播放,但它的尺寸可能不匹配你的显示器分辨率,你需要调整它的位置和大小。
调整壁纸位置和大小
vwallpaper2 使用 wlr-randr 的输出名称和几何参数来定位。
a. 查看你的显示器输出名称
运行以下命令:
wlr-randr
你会看到类似下面的输出:
DP-1 connected 1920x1080+0+0 (0x1a3) output eDP-1 (0x1a4)
eDP-1 connected 1920x1080+1920+0 (0x1a4)
这里,DP-1 和 eDP-1 就是你的输出名称。
b. 使用 --output 和 --geometry 参数
假设你想在 DP-1 这个显示器上播放壁纸,并且希望它居中显示。
vwallpaper2 --output DP-1 --geometry 1920x1080+0+0 /path/to/my_wallpaper.mp4
--output DP-1: 指定在哪个显示器上显示。--geometry 1920x1080+0+0: 指定壁纸的大小和位置。1920x1080: 宽度和高度,你可以设置为你的显示器分辨率,或者设置为0x0让vwallpaper2自动使用视频的原始分辨率。+0+0: 左上角的 x 和 y 坐标,相对于显示器的左上角,要居中,你可以计算:x = (显示器宽度 - 壁纸宽度) / 2,y = (显示器高度 - 壁纸高度) / 2。
一个更通用的居中命令(假设视频是 16:9,显示器也是 1920x1080):
vwallpaper2 --output DP-1 --geometry 0x0+960+540 /path/to/my_wallpaper.mp4
这里的 960x540 是视频的分辨率,+960+540 是计算出的居中位置,你可以先用 0x0 让它自动,然后根据效果手动调整。
第三步:进阶配置
为了方便使用,你肯定不希望每次都输入一长串命令,最佳实践是将它集成到你的 Wayland 环境的启动配置文件中。
示例 1:Sway 配置
在 ~/.config/sway/config 文件中,你可以这样配置:
-
设置壁纸为黑色(可选,防止视频加载前桌面图标混乱):
# 在文件开头添加 output * bg #000000 solid_color
-
添加一个用于启动和停止壁纸的快捷键:
# 按下 Mod+Shift+V 启动或重新加载壁纸 bindsym Mod+Shift+v exec --no-startup-id ~/.config/sway/scripts/vwallpaper.sh
-
创建启动脚本: 在
~/.config/sway/scripts/目录下创建一个名为vwallpaper.sh的文件(如果目录不存在,请先创建):mkdir -p ~/.config/sway/scripts nano ~/.config/sway/scripts/vwallpaper.sh
粘贴进去,并修改你的视频路径和显示器输出名称:
#!/bin/bash # 定义变量 WALLPAPER_PATH="/path/to/your/my_wallpaper.mp4" OUTPUT_NAME="DP-1" # 修改为你的输出名称 GEOMETRY="0x0+960+540" # 修改为你的几何参数 # 检查 vwallpaper2 是否已经在运行 if pgrep -x "vwallpaper2" > /dev/null then echo "vwallpaper2 is already running. Restarting it..." pkill -x vwallpaper2 sleep 1 else echo "Starting vwallpaper2..." fi # 启动 vwallpaper2 vwallpaper2 --output "$OUTPUT_NAME" --geometry "$GEOMETRY" "$WALLPAPER_PATH" &给脚本添加执行权限:
chmod +x ~/.config/sway/scripts/vwallpaper.sh
-
重启 Sway 或重新加载配置 (
Mod+Shift+R),然后按下Mod+Shift+V,你的动态壁纸就应该出现了。
示例 2:Hyprland 配置
在 ~/.config/hypr/hyprland.conf 文件中:
-
设置初始壁纸:
# 在文件开头添加 monitor=,preferred,auto,1 # ... # 在 decoration 部分 decoration { # ... # 设置一个纯色背景 # ... } # 或者使用其他工具设置静态壁纸 -
添加快捷键:
# 在 bind 部分 $mainMod = SUPER bind = $mainMod, V, exec, ~/.config/hypr/scripts/vwallpaper.sh
-
创建启动脚本: 同样地,在
~/.config/hypr/scripts/目录下创建vwallpaper.sh与 Sway 示例中的脚本相同。
第四步:高级功能
使用网络流作为壁纸
vwallpaper2 可以直接播放网络视频流(如 M3U8 播放列表)。
# 播放一个网络直播流 vwallpaper2 --output DP-1 --geometry 0x0+960+540 "https://example.com/stream.m3u8"
使用摄像头作为壁纸
这是一个非常酷的功能,可以把你的摄像头画面变成背景。
# /dev/video0 通常是第一个摄像头设备 vwallpaper2 --output DP-1 --geometry 0x0+960+540 /dev/video0
使用网页作为壁纸
vwallpaper2 可以加载任何网页作为壁纸,甚至可以支持交互(需要配合鼠标绑定)。
# 加载一个网页 vwallpaper2 --output DP-1 --geometry 0x0+1920+1080 "https://www.bing.com"
--geometry的尺寸最好设置成你的显示器分辨率,以确保网页完整显示。
第五步:排错与技巧
-
壁纸不显示/显示黑屏:
- 检查输出名称: 确认
wlr-randr中的输出名称是否正确。 - 检查几何参数: 确认
--geometry的尺寸和位置是否正确,先用0x0测试。 - 检查视频文件: 确保视频文件没有损坏,并且可以被 FFmpeg 正常解码。
- 检查权限: 确保运行
vwallpaper2的用户有访问视频文件和设备的权限。
- 检查输出名称: 确认
-
性能问题:
- 自动暂停:
vwallpaper2默认会检测全屏窗口,如果它没有自动暂停,可能是你的合成器的问题,你可以尝试使用--pause-on-fullscreen参数强制开启。 - 降低分辨率: 如果视频分辨率远高于你的显示器,尝试将其缩小到显示器尺寸,可以显著降低 CPU/GPU 负载。
- 使用硬件加速: 确保你的系统配置了 FFmpeg 的硬件加速(如 NVDEC, VAAPI)。
- 自动暂停:
-
如何停止壁纸: 最简单的方法是直接终止进程:
pkill -x vwallpaper2
在你的启动脚本中,我们也是用
pkill来实现重启功能的。
vwallpaper2 是一个功能强大且灵活的 Wayland 动态壁纸工具,虽然初次配置需要一些命令行操作,但一旦你将其脚本化并绑定到快捷键,使用起来就会非常方便,希望这份教程能帮助你成功打造一个独一无二的动态桌面!
