```title=~/.config/sxiv/exec/key-handler
!/usr/bin/bash
shopt -s extglob shopt -s globstar
Example for $XDG_CONFIG_HOME/sxiv/exec/key-handler
Called by sxiv(1) after the external prefix key (C-x by default) is pressed.
The next key combo is passed as its first argument. Passed via stdin are the
images to act upon, one path per line: all marked images, if in thumbnail
mode and at least one image has been marked, otherwise the current image.
sxiv(1) blocks until this script terminates. It then checks which images
have been modified and reloads them.
The key combo argument has the following form: "[C-][M-][S-]KEY",
where C/M/S indicate Ctrl/Meta(Alt)/Shift modifier states and KEY is the X
keysym as listed in /usr/include/X11/keysymdef.h without the "XK_" prefix.
rotate() { degree="$1" tr '\n' '\0' | xargs -0 realpath | sort | uniq | while read file; do case "$(file -b -i "$file")" in image/jpeg) jpegtran -rotate "$degree" -copy all -outfile "$file" "$file" ;; ) mogrify -rotate "$degree" "$file" ;; esac done }
case "$1" in "C-x") xclip -in -filter | tr '\n' ' ' | xclip -in -selection clipboard ;; "C-c") while read file; do xclip -selection clipboard -target image/png "$file"; done ;; "C-e") while read file; do urxvt -bg "#444" -fg "#eee" -sl 0 -title "$file" -e sh -c "exiv2 pr -q -pa '$file' | less" & done ;; "C-g") tr '\n' '\0' | xargs -0 gimp & ;; "C-r") while read file; do rawtherapee "$file" & done ;; "C-g") while read file; do gimp "$file" & done ;; "C-d") while read file; do mv -vf "$file" /tmp/ ; FPATH="${file%/}"; FNAME="${file##/}"; if [[ -e "${FPATH}/.${FNAME}.txt" ]]; then mv -vf "${FPATH}/.${FNAME}.txt" /tmp/ ; fi done ;; "C-m") while read file; do cp -v "$file" /home/vector/Pictures/Marked/ ; done ;; "C-m") while read file; do mv -vf -- "$file" /home/vector/Pictures/Marked/Me/ ; done ;; "C-t") while read file; do FILEPATH="$(realpath "$file")"; mv -vf -- "$file" "${FILEPATH%/}/trash/" ; done ;; "C-p") while read file; do realpath "$file" | xclip -i -selection clipboard & done ;; "C-w") while read file; do feh --bg-fill "$file" & done ;; "C-o") while read file; do FNAME="${file%%-}"; FNAME="${FNAME}.pdf"; PAGEN="${file##-}"; PAGEN="${PAGEN%.}"; PAGEN="${PAGEN##+(0)}"; zathura -P "${PAGEN}" "$FNAME" & done ;; "comma") rotate 270 ;; "period") rotate 90 ;; "slash") rotate 180 ;; esac ```