Autowall is a simple Rust program to fetch wallpapers from Unsplash and provide them to Windows for use as slideshow backgrounds.
Windows allows users to set a slideshow as their wallpaper, picking a random picture from a specified folder.
Autowall fetches and stores wallpapers from unsplash and stores it in a folder which is picked up by windows.
- Fetches random wallpapers from Unsplash using a configurable query.
- Downloads wallpapers to a specified directory.
- Copies wallpapers to your Windows wallpapers folder (for WSL/dual-boot setups).
- Can be automated via cron.
- Rust (see
Cargo.tomlfor dependencies) - Unsplash API key
- Any Linux System (for dual-boot systems) / WSL Distro (Windows Subsystem for Linux)
- Clone the repo
git clone git@github.com:nkitan/autowall.git cd autowall - Run setup
Provide sudo permissions if required.
bash setup.sh
- Configure
scripts/place.shEdit the destination and source directories inscripts/place.sh:ReplaceDEST=/mnt/c/Users/<USERNAME>/Pictures/Wallpapers/ for WSL or DEST=/mnt/windows_drive/Users/<USERNAME>/Pictures/Wallpapers/ for dualboot (Please note that for dual boot systems it is assumed that windows install drive is mounted at /mnt/windows_drive) SRC=/opt/autowall/wallpapers/
<USERNAME>with your Windows username. - Set up environment variables
Fill in your Unsplash API key and other settings.
cp autowall.env.template autowall.env vim autowall.env
- Use autowall to fetch a new wallpaper
/opt/autowall/autowall
- Set Windows to pick up wallpapers from C:/Users//Pictures/Wallpapers/
To run Autowall automatically (e.g., daily):
- Copy
scripts/autowall-cronto/etc/cron.daily/:This script will run Autowall and append logs tosudo cp scripts/autowall-cron /etc/cron.daily/autowall sudo chmod +x /etc/cron.daily/autowall
/opt/autowall/autowall.log.
Or set up your own cron job to run /opt/autowall/autowall as needed.
src/main.rs: Main entry point.src/lib/unsplash/: Unsplash API integration and schema.src/lib/download.rs: Download logic.src/lib/place.rs: Wallpaper placement logic.scripts/place.sh: Copies wallpapers to Windows folder.scripts/autowall-cron: Example cron script.autowall.env.template: Example environment config.