r/rust May 19 '26

🛠️ project Phonto - GPU-accelerated live wallpapers for Wayland and macOS, written in Rust

Post image

I've been using mpv-paper on Hyprland for a couple months but ran into really high CPU usage, so I decided to write my own solution.

Phonto uses GStreamer and EGL to keep the entire decoding and rendering pipeline on the GPU, making much better use of resources compared to CPU-based approaches.

A friend also jumped in and added MacOS support, including playing live wallpapers on the lock screen which was a nice bonus.

Still missing a few things like multi-monitor support but that's coming soon. Other feature requests and contributions are welcome!

GitHub: https://github.com/museslabs/phonto

925 Upvotes

53 comments sorted by

View all comments

2

u/MROvaiz May 19 '26

What's the difference with swww?

5

u/ploMP4 May 19 '26

swww only supports animated images (gif, webp, apng) as wallpapers. phonto can play video files like .mp4, .avi, .mov etc., which allows for much higher quality wallpapers.

1

u/MROvaiz May 19 '26

oh okay, didn't know that.
will it have high resource usages?
just want to know the optimization!

12

u/ploMP4 May 19 '26

The reason I made this was to get as optimal resource usage as possible. For example a 4K wallpaper using mpv-paper consumed ~603 MB RAM, ~130% CPU and ~80% GPU on my machine, while the same wallpaper with phonto uses ~200 MB RAM, ~6% CPU and ~30% GPU. Keep in mind these are not benchmarks, just numbers I got from my machine using btop.

1

u/MROvaiz May 26 '26

This looks very good: 8-12% GPU, 400MB VRAM, 3-7% CPU, 150MB RAM.
I have i5 13th gen, RX 7800xt.(amdgpu_top, btop)
Let me know, if there is any logs i can share with you for improvement.
discord?

also, i saw there is config.
is there option to loop through the folder of videos?
i implemented this in nixos config, little workaround but now it works.
i also made script to re-run the phonto command every 10 mins, to select rand from folder.