phonto 0.2.1

GPU-accelerated video wallpaper program for wayland compositors & MacOS
phonto-0.2.1 is not a library.

Phonto

phonto (/'fon.to/) — from Greek φόντο: background

GPU-accelerated video wallpaper program for Wayland compositors and macOS, written in Rust.

https://github.com/user-attachments/assets/efba2097-1bb9-46f4-ae45-8f8f67916992

On Linux, phonto plays videos as your desktop background with minimal overhead, decoding and rendering entirely on the GPU through GStreamer and EGL. On macOS it drives an AVPlayerLayer attached to a window sitting just below the system wallpaper level, so VideoToolbox handles decoding and CoreAnimation handles compositing.

Installation

Using cargo:

cargo install phonto

From source:

git clone https://github.com/museslabs/phonto
cd phonto
cargo build --release

Dependencies

Linux (Wayland)

Phonto requires GStreamer and a VA-API GStreamer plugin for GPU-accelerated decoding. Without the VA-API plugin, GStreamer falls back to software decoding and CPU usage will be significantly higher.

Arch Linux:

sudo pacman -S gst-plugin-va

Ubuntu/Debian:

sudo apt install gstreamer1.0-vaapi

Fedora:

sudo dnf install gstreamer1-vaapi

macOS

No external dependencies. phonto links against system frameworks (AVFoundation, CoreMedia, AppKit, QuartzCore). Decoding goes through VideoToolbox automatically for codecs the OS supports (H.264, HEVC, ProRes, etc.).

Usage

Play a specific video:

phonto /path/to/video.mp4

Play a random wallpaper from your configured search paths:

phonto --rand

Configuration

Phonto reads its config from $XDG_CONFIG_HOME/phonto/config.toml, falling back to ~/.config/phonto/config.toml.

search_paths

A list of directories to scan when using --rand. Each entry has a path and a depth controlling how many levels deep to search.

[[search_paths]]
path = "/home/user/wallpapers"
depth = 1

[[search_paths]]
path = "/mnt/media/videos"
depth = 2

depth = 0 scans only the top-level directory. depth = 1 includes one level of subdirectories, and so on.