Add videsc, a nice way to edit images' embedded descriptions
This commit is contained in:
parent
c9c512486d
commit
17c95ee9af
1 changed files with 43 additions and 0 deletions
43
dot-local/bin/videsc
Executable file
43
dot-local/bin/videsc
Executable file
|
@ -0,0 +1,43 @@
|
|||
#!/usr/bin/env zsh
|
||||
zmodload zsh/mapfile
|
||||
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 $?
|
||||
|
||||
if [[ $DESC_FILE -nt $DESC_FILE.stamp ]]; then
|
||||
pbcopy < $DESC_FILE
|
||||
exiftool -P -Description="$mapfile[$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
|
||||
}
|
Loading…
Reference in a new issue