wayvid plays video files as animated wallpapers on Wayland compositors. v0.5 introduces a GUI-first design โ just open the app, pick a wallpaper, and apply.
Features:
- ๐ผ๏ธ GUI wallpaper browser with thumbnails and search
- ๐ฅ๏ธ Multi-monitor support with independent wallpapers per display
- โก Hardware accelerated decoding (VA-API/NVDEC via mpv)
- ๐ฎ Steam Workshop import (video wallpapers)
- ๐ HDR support with tone-mapping
- ๐ง CLI tools for scripting and automation
- ๐พ Wallpaper persistence - restore wallpapers after restart
- ๐ Power management - auto-pause on battery
- ๐ฅ System tray - start minimized and run in background
Tested on: Hyprland, Niri
Should work on: Sway, River, and other wlr-layer-shell compositors
If the video doesn't play, click here to watch
yay -S wayvid# Direct run
nix run github:YangYuS8/wayvid
# Install to profile
nix profile install github:YangYuS8/wayvidgit clone https://github.com/YangYuS8/wayvid.git
cd wayvid
cargo build --release
# Install using script (recommended)
./scripts/install.sh --user
# Or manual install
sudo install -Dm755 target/release/wayvid-gui /usr/local/bin/
sudo install -Dm755 target/release/wayvid-ctl /usr/local/bin/Dependencies: libmpv, libEGL, libwayland-client
wayvid-guiThe GUI provides:
- Wallpaper library browser with thumbnails
- Monitor selection and preview
- Settings configuration (autostart, power management)
- Minimizes to system tray
# Apply wallpaper
wayvid-ctl apply ~/Videos/wallpaper.mp4
wayvid-ctl apply ~/Videos/wallpaper.mp4 --output DP-1
# Control playback
wayvid-ctl pause
wayvid-ctl resume
wayvid-ctl stop
# Check status
wayvid-ctl status
wayvid-ctl status --json
# List monitors
wayvid-ctl outputsThe GUI includes autostart options in Settings:
- Start with system - Enable autostart
- Minimize to tray - Keep running in background
- Start minimized - Start directly to tray
With all three enabled, wayvid will:
- Start automatically on login
- Run in the background (tray icon)
- Restore your wallpapers from last session
Alternative manual configuration:
# niri: ~/.config/niri/config.kdl
spawn-at-startup "wayvid-gui"# hyprland: ~/.config/hypr/hyprland.conf
exec-once = wayvid-gui
systemd (optional):
systemctl --user enable --now wayvidSettings are managed through the GUI and saved automatically to:
~/.config/wayvid/settings.yaml
For advanced users, legacy config.yaml is still supported:
# ~/.config/wayvid/config.yaml
source:
type: file
path: ~/Videos/wallpaper.mp4
layout: fill
volume: 0Use the GUI's Monitor tab, or configure per-output:
# ~/.config/wayvid/config.yaml
source:
type: file
path: ~/Videos/default.mp4
per_output:
DP-1:
source:
type: file
path: ~/Videos/left.mp4
HDMI-A-1:
source:
type: file
path: ~/Videos/right.mp4Import video wallpapers from Wallpaper Engine through the GUI, or:
wayvid-ctl apply ~/.steam/steam/steamapps/workshop/content/431960/<id>/video.mp4Note: Only video wallpapers are supported. Web/scene types require Wallpaper Engine.
Black screen:
mpv ~/Videos/wallpaper.mp4 # Test if video playsHigh CPU:
# Enable hardware decode
hwdec: trueView logs:
journalctl --user -u wayvid -fcrates/
โโโ wayvid-core # Core types and configuration
โโโ wayvid-engine # Integrated playback engine (Wayland layer-shell + MPV)
โโโ wayvid-library # Wallpaper library (SQLite + thumbnails)
โโโ wayvid-gui # GUI application (iced framework + embedded engine)
โโโ wayvid-ctl # CLI control tool
wayvid v0.5 uses a single-process architecture:
- The GUI (
wayvid-gui) embeds the playback engine directly - No separate daemon process required
- CLI tools communicate via IPC socket
- Better resource management and simpler deployment
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ wayvid-gui โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ iced GUI โโโโ PlaybackEngineโ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ โ โ
โ IPC Server Wayland Layer Shellโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
wayvid-ctl Compositor
cargo build --release
cargo test --workspace
cargo clippy --workspaceMIT OR Apache-2.0
Built with mpv, wayland-rs, and iced.