A personal collection of Formula 1 wallpapers, synced via GitHub for easy access across multiple devices.
Main source of photos is Album by NonStopF1
This repository contains various F1-themed wallpapers I've collected over time. There's some structure.
You can clone or pull this repo to any device to keep your wallpaper collection in sync:
git clone https://github.com/yourusername/f1-wallpapers.gitThen just browse or use your OS's wallpaper tools to set them.
This repository provides scripts to randomly set unique wallpapers per monitor on different operating systems.
Requirements:
desktopprinstalled via Homebrew:
brew install desktopprUse the provided set-random-wallpapers-multi.sh script
#!/bin/zsh
WALLPAPER_ROOT="/path/to/your/f1-wallpapers"
num_screens=$(desktoppr | wc -l | tr -d ' ')
if (( num_screens == 0 )); then
echo "No screens detected by desktoppr."
exit 1
fi
wallpapers=()
while IFS= read -r -d '' file; do
wallpapers+=("$file")
done < <(find "$WALLPAPER_ROOT" -type f -iname '*.jpg' -print0)
if (( ${#wallpapers[@]} < num_screens )); then
echo "Not enough wallpapers (${#wallpapers[@]}) for $num_screens screens."
exit 1
fi
function shuffle_array() {
local i tmp size rand
size=${#wallpapers[@]}
for ((i = size; i > 1; i--)); do
rand=$((RANDOM % i + 1))
tmp=${wallpapers[i]}
wallpapers[i]=${wallpapers[rand]}
wallpapers[rand]=$tmp
done
}
shuffle_array
selected=("${(@)wallpapers[1,$num_screens]}")
for ((i=0; i < num_screens; i++)); do
wallpaper="${selected[i+1]}"
echo "Setting wallpaper for screen $i: $wallpaper"
desktoppr "$i" "$wallpaper"
doneReplace /path/to/your/f1-wallpapers with your actual path.
Save a plist file in ~/Library/LaunchAgents/{name_of_plist}.plist
Click to expand launchd configuration
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.maris.setwallpapers</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/set-random-wallpapers-multi.sh</string>
</array>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
</dict>
<key>StartInterval</key>
<integer>300</integer>
<key>RunAtLoad</key>
<true/>
<key>StandardOutPath</key>
<string>/tmp/setwallpapers.out</string>
<key>StandardErrorPath</key>
<string>/tmp/setwallpapers.err</string>
</dict>
</plist>Then load it:
launchctl load ~/Library/LaunchAgents/{name_of_plist}.plistClick to view example Linux and Windows workflows
Install feh (Debian/Ubuntu):
sudo apt install fehExample wallpaper script:
#!/bin/bash
WALLPAPER_ROOT="/path/to/f1-wallpapers"
mapfile -d '' wallpapers < <(find "$WALLPAPER_ROOT" -type f -iname '*.jpg' -print0)
num_screens=$(xrandr --listmonitors | tail -n +2 | wc -l)
if (( ${#wallpapers[@]} < num_screens )); then
echo "Not enough wallpapers for $num_screens monitors."
exit 1
fi
for ((i=0; i < num_screens; i++)); do
feh --bg-scale "${wallpapers[i]}"
doneNote:
fehmight set the last wallpaper on all screens depending on your DE.
Use third-party tools:
Sync wallpapers using Git for Windows. PowerShell support for multi-monitor setup is limited and typically requires Windows API access.
Keep your collection up to date by running:
git pullAutomate syncing with cron, launchd, Task Scheduler, or other tools.
- Image copyrights belong to their original creators.
- Intended for personal use only.
Contributions and suggestions are welcome! Feel free to open an issue or fork the repo.