What Is Phonto?
Phonto is one of the best Video Wallpaper Tools for Wayland compositor users and macOS power users who want animated desktop and lock-screen backgrounds in 2026. Built by museslabs, Phonto keeps video playback on the GPU and exposes four Wayland layer-shell positions: background, bottom, top, and overlay, which makes it useful for Linux desktop tinkerers who want motion without a CPU-heavy wrapper and for Mac users who want the same asset on the desktop and lock screen.
Quick Overview
| Attribute | Details |
|---|---|
| Type | Video Wallpaper Tools |
| Best For | Wayland compositor users and macOS power users who want animated desktop and lock-screen backgrounds |
| Language/Stack | Rust, GStreamer, EGL, VA-API, Wayland layer-shell, AVFoundation, VideoToolbox, CoreAnimation, GLSL ES 3.00 |
| License | N/A in scraped page text |
| GitHub Stars | N/A as of Feb 2026 |
| Pricing | Open-Source |
| Last Release | N/A |
Who Should Use Phonto?
- Wayland users with integrated or discrete GPUs who want animated wallpapers without pushing decode onto the CPU.
- Hyprland and wlroots users who need control over layer placement for desktop overlays and lock-screen composition.
- macOS users who want live lock-screen backgrounds instead of a static wallpaper image.
- Shader tinkerers who want a GLSL ES fragment hook for custom frame processing without writing a full compositor plugin.
Not ideal for:
- Static-wallpaper setups where motion adds no value and a lighter image tool is enough.
- X11-only environments that do not benefit from Wayland layer-shell controls or macOS integration.
- Users who need multi-pass post-processing such as bloom chains or separable blur, because Phonto runs shaders in a single pass.
Key Features of Phonto
- GPU-first decode path — On Linux, Phonto relies on GStreamer runtime plugins plus VA-API so video decode and rendering stay on the GPU. If the VA-API plugin is missing, GStreamer falls back to software decode and CPU usage rises sharply.
- Wayland layer-shell control — Phonto can render at
background,bottom,top, oroverlay, which is useful when pairing a wallpaper session with lock-screen tools like hyprlock. Theoverlaymode is especially useful when the lock-screen UI needs an animated backdrop. - macOS live lock-screen wallpapers — Phonto sidesteps
loginwindowrestrictions by registering a video into Apple's aerial catalog, then letting Apple's signed extension play it on the desktop and lock screen. The install flow transcodes to HEVC Main10 with two temporal sub-layers, generates a thumbnail, and exposes the asset inside System Settings → Wallpaper. - Single-pass GLSL ES shader hook —
--shader PATHapplies a fragment shader to every frame, so you can do edge detection, tinting, or color remapping without rebuilding the app. The shader API exposesu_tex,v_uv, and optionalu_resolution, and it intentionally skips multi-pass pipelines. - Config-driven random playback — Phonto reads
config.tomlfrom the XDG config directory, scans configurablesearch_paths, and uses--randto pick a wallpaper from local media directories. It also writes the chosen file path to~/.cache/phonto/current, which lets other tools reuse the same asset. - Fit and scale controls —
--scalesupportsstretch,fit,fill, andcenter, so you can trade off aspect ratio preservation against exact screen coverage. On macOS,centerfalls back tofillbecauseAVPlayerLayerdoes not expose a native equivalent. - Battery-aware playback — Phonto can pause when the laptop is on battery or when charge drops below a percentage threshold, which is practical for mobile workstations that should not waste power on background video.
Phonto vs Alternatives
For broader desktop automation workflows, compare the wallpaper runtime side with browse all CLI Tools and the compositor side with browse all Desktop Customization Tools.
| Tool | Best For | Key Differentiator | Pricing |
|---|---|---|---|
| Phonto | Wayland and macOS video wallpapers | Rust native app with GPU decode, shader hooks, and macOS lock-screen support | Open-Source |
| mpvpaper | Thin Wayland video wallpaper wrapper | Reuses mpv playback and keeps configuration simple | Open-Source |
| xwinwrap | Legacy X11 wallpaper embedding | Works as a generic window wrapper for older desktops | Open-Source |
| hyprpaper | Static wallpapers on Hyprland | Image-first setup with lower runtime overhead than video playback | Open-Source |
Pick Phonto when you need the same wallpaper workflow across Linux Wayland and macOS, plus lock-screen video on Apple hardware. Pick mpvpaper if you only need a minimal Wayland video wrapper and want to stay close to mpv's codec stack. Pick xwinwrap if you are still on X11 and need maximum compatibility, or hyprpaper if your real requirement is fast static wallpaper switching rather than motion.
How Phonto Works
Phonto uses two different rendering pipelines depending on the host OS. On Linux, the CLI builds a Wayland surface, places it on the requested layer-shell plane, and feeds media into a GStreamer pipeline that demuxes, parses, decodes, and hands frames to EGL for GPU compositing. That design keeps the hot path close to the compositor and only works well when the correct runtime plugins are installed, especially for MP4 and H.264 assets.
The Linux pipeline depends on VA-API for hardware decode. If qtdemux, the H.264 parser, or the VA-API plugin is missing, Phonto may fail to start on common video files or fall back to software decode, which is where CPU usage spikes. That behavior is explicit and useful because it makes the failure mode obvious instead of silently degrading into a heavy background process.
On macOS, Phonto does not fight the system wallpaper stack. It attaches an AVPlayerLayer to a window that sits below the wallpaper level, then lets VideoToolbox handle decode and CoreAnimation handle compositing, which keeps the implementation close to Apple's native media path. The live lock-screen feature goes further by registering a transcode into the aerial catalog, so loginwindow can show an animated background without relying on a non-signed window surviving the screen-lock transition.
phonto /path/to/video.mp4 --layer background
phonto --rand
phonto /path/to/video.mp4 --shader ~/.config/phonto/edge-detect.glsl
The first command renders a specific video on the default desktop layer. The second command picks a random file from configured search paths and stores the choice in ~/.cache/phonto/current, and the third command applies a single-pass fragment shader to every frame so you can test custom image processing quickly.
Pros and Cons of Phonto
Pros:
- Native GPU decode paths on both Linux and macOS, which is the main reason Phonto stays light enough for wallpaper duty.
- Layer-shell placement gives you real compositor control instead of treating the wallpaper as a hacked-up full-screen window.
- macOS lock-screen support is uncommon in this category and removes the need for a separate video-to-wallpaper workflow.
- Shader support is practical for visual tweaks because the API is simple and frame-local.
- Good packaging options exist for Nix, Homebrew, AUR, Cargo, and source builds, so installation is not tied to one distro.
- Battery controls make sense for laptops that spend real time on battery power.
Cons:
- Linux setup is plugin-sensitive, especially for MP4/H.264. Missing GStreamer pieces can break startup or force software decode.
- No multi-pass shader graph, so effects like bloom or separable blur are out of scope.
- macOS center mode falls back to fill, which can surprise users expecting pixel-perfect centering.
- Lock-screen video on macOS depends on Apple's aerial catalog flow, so it is more specialized than a plain desktop wallpaper tool.
- X11 is not the target environment, so users on older stacks should pick a different tool.
Getting Started with Phonto
A useful Phonto tutorial starts with installation, then a direct run against one known-good video. If you are on Linux and care about hardware decode, install the GStreamer VA-API packages first so you do not accidentally benchmark software fallback.
cargo install phonto
phonto --rand
phonto /path/to/video.mp4 --scale fit
After that, Phonto will either play the selected random wallpaper from your configured directories or render the file you passed explicitly. On Wayland, set the layer with --layer overlay if you want to pair Phonto with a lock-screen compositor like hyprlock, and on Linux make sure the codec plugins for your media files are present before assuming the app is broken.
Verdict
Phonto is the strongest option for GPU video wallpapers on Wayland and macOS when you need native decode paths and lock-screen support. Its biggest strength is platform-specific rendering that avoids a generic mpv wrapper, but Linux setup can be plugin-sensitive. Choose Phonto if you want animated wallpaper plus macOS aerial-style lock-screen playback.



