Dotfiles_ArchAP/sway/.config/sway/scripts/copypast
2026-06-03 14:15:15 +02:00

60 lines
1.4 KiB
Bash
Executable file

#!/usr/bin/env bash
thumb_dir="${XDG_CACHE_HOME:-$HOME/.cache}/cliphist/thumbs"
mkdir -p "$thumb_dir"
clip_list="$(cliphist list)"
# Nettoyer les vignettes orphelines
for thumb in "$thumb_dir"/*; do
[ -e "$thumb" ] || continue
clip_id="${thumb##*/}"
clip_id="${clip_id%.*}"
if ! printf '%s\n' "$clip_list" | rg -q "^${clip_id}[[:space:]]"; then
rm -f "$thumb"
fi
done
read -r -d '' prog <<EOF
match(\$0, /^([0-9]+)[[:space:]]+\\[\\[ binary data .* (png|jpeg|jpg|bmp|webp) [0-9]+x[0-9]+ \\]\\]/, grp) {
id = grp[1]
ext = grp[2]
if (ext == "jpeg") ext = "jpg"
image = id "." ext
thumb = "$thumb_dir/" image
cmd = "[ -f '" thumb "' ] || printf '%s\\n' '" \$0 "' | cliphist decode | magick - -resize '256x256>' '" thumb "'"
system(cmd)
print "img:" thumb
next
}
1
EOF
choice=$(
gawk "$prog" <<< "$clip_list" |
wofi -I --dmenu --cache-file=/dev/null \
-Dimage_size=100 -Dynamic_lines=true \
--xoffset=600 --yoffset=20 --width=45% --height=45% --gtk-dark
)
[ -z "$choice" ] && exit 1
if [ "${choice:0:4}" = "img:" ]; then
thumb_file="${choice:4}"
clip_id="${thumb_file##*/}"
clip_id="${clip_id%.*}"
printf '%s\n' "$clip_list" |
rg "^${clip_id}[[:space:]]" |
head -n 1 |
cliphist decode |
wl-copy
else
printf '%s\n' "$choice" |
cliphist decode |
wl-copy
fi