Skip to content

JustMaris/f1_wallpaper_vault

Repository files navigation

🏁 F1 Wallpapers

A personal collection of Formula 1 wallpapers, synced via GitHub for easy access across multiple devices.

Main source of photos is Album by NonStopF1

📦 About

This repository contains various F1-themed wallpapers I've collected over time. There's some structure.

📥 Usage

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.git

Then just browse or use your OS's wallpaper tools to set them.

🖼️ Wallpaper Auto-Update Scripts (macOS, Linux, Windows)

This repository provides scripts to randomly set unique wallpapers per monitor on different operating systems.

macOS

Requirements:

brew install desktoppr
Use 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"
done

Replace /path/to/your/f1-wallpapers with your actual path.

Automating on macOS with launchd

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}.plist

Linux / Windows (Untested)

Click to view example Linux and Windows workflows

Linux

Install feh (Debian/Ubuntu):

sudo apt install feh

Example 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]}"
done

Note: feh might set the last wallpaper on all screens depending on your DE.


Windows

Use third-party tools:

Sync wallpapers using Git for Windows. PowerShell support for multi-monitor setup is limited and typically requires Windows API access.


🔄 Syncing Across Devices

Keep your collection up to date by running:

git pull

Automate syncing with cron, launchd, Task Scheduler, or other tools.


📌 Notes

  • Image copyrights belong to their original creators.
  • Intended for personal use only.

✨ Suggestions

Contributions and suggestions are welcome! Feel free to open an issue or fork the repo.

About

GitHub version of F1 Album from Google Photos with some personal additions

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages