71c5766d89
The file names are separated with newlines in the primary and with spaces in the clipboard.
35 lines
1.4 KiB
Bash
Executable File
35 lines
1.4 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# 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-comma") rotate 270 ;;
|
|
"C-period") rotate 90 ;;
|
|
"C-slash") rotate 180 ;;
|
|
esac
|
|
|