42 lines
1.1 KiB
Bash
Executable file
42 lines
1.1 KiB
Bash
Executable file
#!/usr/bin/env zsh
|
|
PREVIEW_TENTHS=7
|
|
IMG=$1
|
|
|
|
DESC_FILE=$XDG_RUNTIME_DIR/videsc-${IMG:t:r}.txt
|
|
WINDOW_ID=0
|
|
|
|
if [[ -z $XDG_RUNTIME_DIR ]]; then
|
|
echo "videsc requires XDG_RUNTIME_DIR to be set." >&2
|
|
exit 2
|
|
fi
|
|
|
|
if [[ -f $DESC_FILE ]]; then
|
|
echo That image may already be in an active videsc session. >&2
|
|
echo "If you're sure it isn't, remove $DESC_FILE and try again." >&2
|
|
exit 1
|
|
fi
|
|
|
|
videsc() {
|
|
exiftool -b -Description $IMG > $DESC_FILE || return $?
|
|
cp -p $DESC_FILE $DESC_FILE.stamp || return $?
|
|
|
|
local IMG_PREVIEW_HEIGHT=$((LINES * PREVIEW_TENTHS / 10))
|
|
kitty @ goto-layout fat:bias=$((10 * PREVIEW_TENTHS)) || return $?
|
|
WINDOW_ID=$(kitty @ launch --cwd current --location before --keep-focus kitten icat --place ${COLUMNS}x${IMG_PREVIEW_HEIGHT}@0x0 --hold $IMG || return $?)
|
|
|
|
${EDITOR:-vim} $DESC_FILE || return $?
|
|
|
|
pbcopy < $DESC_FILE
|
|
if [[ $DESC_FILE -nt $DESC_FILE.stamp ]]; then
|
|
exiftool -P "-Description<=$DESC_FILE" $IMG
|
|
else
|
|
echo 'no changes detected, not writing updated description.' >&2
|
|
fi
|
|
}
|
|
|
|
{
|
|
videsc
|
|
} always {
|
|
(( $WINDOW_ID )) && kitty @ close-window -m id:$WINDOW_ID
|
|
rm -f $DESC_FILE $DESC_FILE.stamp
|
|
}
|