25 lines
819 B
Bash
Executable File
25 lines
819 B
Bash
Executable File
#!/bin/bash
|
|
|
|
# One cached frame shared by all lock outputs, including when OWE is paused.
|
|
set -euo pipefail
|
|
|
|
source_path=$1
|
|
cache_dir="${XDG_CACHE_HOME:-$HOME/.cache}/omarchy/lock-poster"
|
|
signature=$(stat -Lc '%s:%y:%z' "$source_path")
|
|
key=$(printf '%s\n%s' "$source_path" "$signature" | sha256sum | cut -d ' ' -f 1)
|
|
poster="$cache_dir/poster-$key.jpg"
|
|
mkdir -p "$cache_dir"
|
|
exec {lock_fd}>"$cache_dir/.lock"
|
|
flock -w 10 "$lock_fd"
|
|
|
|
if [[ ! -s $poster ]]; then
|
|
temporary=$(mktemp "$cache_dir/.poster-XXXXXX.jpg")
|
|
trap 'rm -f "$temporary"' EXIT
|
|
timeout -k 1 5 ffmpegthumbnailer -i "$source_path" -o "$temporary" -s 1920 -q 8 {lock_fd}>&-
|
|
[[ -s $temporary ]]
|
|
mv -f "$temporary" "$poster"
|
|
find "$cache_dir" -maxdepth 1 -type f -name 'poster-*.jpg' ! -name "poster-$key.jpg" -delete
|
|
fi
|
|
|
|
printf '%s\n' "$poster"
|