55 lines
1.4 KiB
Bash
Executable File
55 lines
1.4 KiB
Bash
Executable File
#!/run/current-system/sw/bin/bash
|
|
set -euo pipefail
|
|
|
|
WALLPAPER_DIR="$HOME/Wallpapers/pictures"
|
|
echo "Wallpaper dir = $WALLPAPER_DIR"
|
|
|
|
randomize_and_rename_wallpapers() {
|
|
echo "Randomizing JPG filenames..."
|
|
|
|
shopt -s nullglob
|
|
|
|
# Grab all jpg/JPG files
|
|
files=("$WALLPAPER_DIR"/*.[jJ][pP][gG])
|
|
|
|
if [ ${#files[@]} -eq 0 ]; then
|
|
echo "No JPG files found in $WALLPAPER_DIR"
|
|
return
|
|
fi
|
|
|
|
# Shuffle the array
|
|
mapfile -t files < <(printf "%s\n" "${files[@]}" | shuf)
|
|
|
|
tmp_names=()
|
|
|
|
for file in "${files[@]}"; do
|
|
ext="${file##*.}"
|
|
|
|
# generate a random 16-character alphanumeric name
|
|
while : ; do
|
|
rand_name=$(head /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c16)
|
|
new_path="$WALLPAPER_DIR/$rand_name.$ext"
|
|
if [[ ! -e "$new_path" ]]; then
|
|
mv "$file" "$new_path"
|
|
tmp_names+=("$new_path")
|
|
echo "Renamed $file -> $new_path"
|
|
break
|
|
fi
|
|
done
|
|
done
|
|
|
|
# Sequentially rename to 01.jpg ... 99.jpg
|
|
counter=1
|
|
for file in "${tmp_names[@]}"; do
|
|
new_name=$(printf "%02d.jpg" "$counter")
|
|
mv "$file" "$WALLPAPER_DIR/$new_name"
|
|
echo "Final rename $file -> $WALLPAPER_DIR/$new_name"
|
|
((counter++))
|
|
[[ $counter -gt 99 ]] && break
|
|
done
|
|
|
|
echo "Randomization complete."
|
|
}
|
|
|
|
randomize_and_rename_wallpapers
|