Skip to content

```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 ```


Comments