62 lines
1.4 KiB
Bash
Executable file
62 lines
1.4 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
SCAN_DIR=${HOME}/Drives/Stuff/Pictures/Waifus
|
|
OUPUT_DIR=${HOME}/Drives/Stuff/Pictures/Wallpapers
|
|
# SCAN_DIR=${HOME}/Pictures/Screenshots
|
|
|
|
franchises=(
|
|
Mario
|
|
Zelda
|
|
Persona
|
|
)
|
|
|
|
orientations=(
|
|
Portrait
|
|
Landscape
|
|
)
|
|
|
|
# TODO: give option to exit script while inside fzf
|
|
get_fzf() {
|
|
# run inside subshell because fzf exit with 1 when no mach has been selected
|
|
output="$(
|
|
printf "%s\n" "$@" | fzf \
|
|
--reverse \
|
|
--height '10' \
|
|
--print-query \
|
|
--cycle \
|
|
--bind \
|
|
"alt-1:pos(1)+accept,alt-2:pos(2)+accept,alt-3:pos(3)+accept,alt-4:pos(4)+accept,alt-5:pos(5)+accept,alt-6:pos(6)+accept,alt-7:pos(7)+accept,alt-8:pos(8)+accept,alt-9:pos(9)+accept,alt-0:pos(10)+accept"
|
|
)"
|
|
echo "$output"
|
|
}
|
|
|
|
readarray -td '' wallpapers < <(
|
|
fd -ap -e jpg -e jpeg -e png -e webp \
|
|
--max-depth 2 \
|
|
--print0 \
|
|
--base-directory "$SCAN_DIR"
|
|
)
|
|
|
|
# open all images in imv
|
|
imv "${wallpapers[@]}" &
|
|
pid=$!
|
|
|
|
sleep 1
|
|
|
|
for dir in "${orientations[@]}"; do
|
|
mkdir -p "$OUPUT_DIR/$dir"
|
|
done
|
|
|
|
for img in "${wallpapers[@]}"; do
|
|
orientation=$(get_fzf "${orientations[@]}")
|
|
franchise=$(get_fzf "${franchises[@]}")
|
|
|
|
cp "$img" "$OUPUT_DIR/$orientation"
|
|
|
|
echo "$img $orientation $franchise"
|
|
imv-msg "$pid" next
|
|
done
|
|
|
|
imv-msg "$pid" close all
|