Created
July 12, 2015 06:12
-
-
Save michaelmrose/8c052ba76ad524ba2605 to your computer and use it in GitHub Desktop.
Enable Custom Actions in SXIV
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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. The paths of all marked | |
# images--or of the current image, if no image is marked--are passed via stdin, | |
# one file path per line. | |
# 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. | |
readonly KEY="$1"; | |
readonly TAGFILE="$HOME/.config/sxiv/tags" | |
readonly TMPFILE="/tmp/sxiv.$$" | |
rotate() { | |
degree="$1" | |
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 | |
} | |
tag_add() { | |
>>"$TAGFILE" | |
tags=$(dmenu <"$TAGFILE" | tr '\n' ',') | |
[ -z "$tags" ] && return | |
iptckwed -i -a "$tags" | |
echo -n "$tags" | tr ',' '\n' | sort - "$TAGFILE" | uniq >"$TAGFILE.new" | |
mv -f "$TAGFILE"{.new,} | |
} | |
tag_del() { | |
cat >"$TMPFILE" | |
tags=$(iptckwed -iql <"$TMPFILE" | cut -f 2 | tr ',' '\n' | sort | uniq | dmenu | tr '\n' ',') | |
[ -z "$tags" ] && return | |
iptckwed -i -r "$tags" <"$TMPFILE" | |
rm -f "$TMPFILE" | |
} | |
case "$KEY" in | |
"C-c") tr '\n' ' ' | xsel -i ;; | |
"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-h") tr '\n' '\0' | xargs -0 gimp & ;; | |
"C-g") fishstdin gimp ;; | |
"C-w") fishstdin wp ;; | |
"C-a") fishstdin wp slideshow add ;; | |
"C-d") fishstdin wp slideshow remove ;; | |
"C-p") fishstdin wp slideshow pick ;; | |
"C-comma") rotate 270 ;; | |
"C-period") rotate 90 ;; | |
"C-slash") rotate 180 ;; | |
"C-t") tag_add ;; | |
"M-T") tag_del ;; | |
esac | |
# fishstdin hopefully somewhere in your path | |
#!/usr/bin/env fish | |
set somefunction $argv | |
function whateveryouwant | |
while read -l line | |
eval $somefunction $line | |
end | |
return 0 | |
end | |
while read -l line | |
echo $line | whateveryouwant | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment