nsxiv3a68017
Unified rotate actions in key-handler; use lossless operation based on file type
+13 −18
1 file changed
- M exec/key-handler +13 −18
| @@ -11,27 +11,22 @@ | |||
| 11 | 11 | # where C/M/S indicate Ctrl/Meta(Alt)/Shift modifier states and KEY is the X | |
| 12 | 12 | # keysym as listed in /usr/include/X11/keysymdef.h without the "XK_" prefix. | |
| 13 | 13 | ||
| 14 | + | rotate() { | |
| 15 | + | case "$(file -b -i "$2")" in | |
| 16 | + | image/jpeg*) jpegtran -rotate "$1" -copy all -outfile "$2" "$2" ;; | |
| 17 | + | *) mogrify -rotate "$1" "$2" ;; | |
| 18 | + | esac | |
| 19 | + | } | |
| 20 | + | ||
| 14 | 21 | key="$1" | |
| 15 | 22 | shift | |
| 16 | 23 | ||
| 17 | 24 | case "$key" in | |
| 18 | − | "C-c") | |
| 19 | − | echo -n "$@" | xsel -i ;; | |
| 20 | − | "C-e") | |
| 21 | − | for file in "$@"; do urxvt -bg "#444" -fg "#eee" -sl 0 -title "$file" -e sh -c "exiv2 pr -q -pa '$file' | less" & done ;; | |
| 22 | − | "C-g") | |
| 23 | − | gimp "$@" & ;; | |
| 24 | − | "C-comma") | |
| 25 | − | for file in "$@"; do jpegtran -rotate 270 -copy all -outfile "$file" "$file"; done ;; | |
| 26 | − | "C-period") | |
| 27 | − | for file in "$@"; do jpegtran -rotate 90 -copy all -outfile "$file" "$file"; done ;; | |
| 28 | − | "C-slash") | |
| 29 | − | for file in "$@"; do jpegtran -rotate 180 -copy all -outfile "$file" "$file"; done ;; | |
| 30 | − | "C-less") | |
| 31 | − | exec mogrify -rotate -90 "$@" ;; | |
| 32 | − | "C-greater") | |
| 33 | − | exec mogrify -rotate +90 "$@" ;; | |
| 34 | − | "C-question") | |
| 35 | − | exec mogrify -rotate 180 "$@" ;; | |
| 25 | + | "C-c") echo -n "$@" | xsel -i ;; | |
| 26 | + | "C-e") for file in "$@"; do urxvt -bg "#444" -fg "#eee" -sl 0 -title "$file" -e sh -c "exiv2 pr -q -pa '$file' | less" & done ;; | |
| 27 | + | "C-g") gimp "$@" & ;; | |
| 28 | + | "C-comma") for file in "$@"; do rotate 270 "$file"; done ;; | |
| 29 | + | "C-period") for file in "$@"; do rotate 90 "$file"; done ;; | |
| 30 | + | "C-slash") for file in "$@"; do rotate 180 "$file"; done ;; | |
| 36 | 31 | esac | |
| 37 | 32 | ||