Files
caelestia-cli/scheme/gen-scheme.fish
T
2 * r + 2 * t f9a83990a9 scheme: better colours + parallel generation
Fix some wallpapers not having enough colours by disabling filter (also gives better colours)
Use GNU parallel to run scheme generation in parallel
Also ensure all schemes exist when generating
Cache wallpaper thumbnails
2025-04-07 11:38:05 +10:00

35 lines
1.1 KiB
Fish
Executable File

#!/bin/fish
set -l src (dirname (status filename))
. $src/../util.fish
test -f "$argv[1]" && set -l img (realpath "$argv[1]") || set -l img $C_STATE/wallpaper/thumbnail.jpg
contains -- "$argv[2]" light dark && set -l theme $argv[2] || set -l theme dark
set -l variants vibrant tonalspot expressive fidelity fruitsalad rainbow neutral content monochrome
set -l hash (sha1sum $img | cut -d ' ' -f 1)
# Cache schemes
mkdir -p $C_CACHE/schemes
set -l dirty_variants
if test -d $C_CACHE/schemes/$hash
for variant in $variants
test -f $C_CACHE/schemes/$hash/$variant/$theme.txt || set -a dirty_variants $variant
end
else
set dirty_variants $variants
end
if test -n "$dirty_variants"
# Generate schemes for variants that need it
set -l colours ($src/score.py $img)
parallel "mkdir -p $C_CACHE/schemes/$hash/{} && $src/autoadjust.py $theme {} '$colours' | head -c -1 > $C_CACHE/schemes/$hash/{}/$theme.txt" ::: $dirty_variants
end
# Copy schemes from cache
for variant in $variants
mkdir -p $src/../data/schemes/dynamic/$variant
cp $C_CACHE/schemes/$hash/$variant/$theme.txt $src/../data/schemes/dynamic/$variant/$theme.txt
end