diff --git a/bin/createGif b/bin/createGif new file mode 100755 index 00000000..678101a4 --- /dev/null +++ b/bin/createGif @@ -0,0 +1,49 @@ +#!/bin/bash + +# Creates a gif using a list of files from stdin +tmpdir="/tmp/sxiv-gif/" +rm -rf "$tmpdir" +mkdir -p "$tmpdir" + +framerate="prompt" +format="gif" +extension="" + +while [[ $# -gt 0 ]]; do + case "$1" in + "-r"|"--framerate") + framerate="$2" + shift + shift + ;; + "--mp4") + format="mp4" + shift + ;; + esac +done + +if [[ "$framerate" == "prompt" ]]; then + framerate=$(echo -e "0.25\n0.5\n0.75\n1\n2\n5\n10" | rofi -dmenu -p Timeout) +fi + +i=1 +while read file; do + extension="${file##*.}" + number=$(printf "%03d" $i) + echo "$number" + cp "$file" "${tmpdir}file${number}.${extension}" + i=$((i+1)) +done + +case "$format" in + "mp4") + ffmpeg -f image2 -framerate "$framerate" -i "${tmpdir}file%03d.${extension}" -crf 0 "${tmpdir}out.${format}" + ;; + *) + ffmpeg -f image2 -framerate "$framerate" -i "${tmpdir}file%03d.${extension}" "${tmpdir}out.${format}" +esac + +mv "${tmpdir}out.${format}" "$HOME/Desktop/" + +notify-send "Done" diff --git a/sxiv/exec/key-handler b/sxiv/exec/key-handler index e1967c94..0dd37ba3 100755 --- a/sxiv/exec/key-handler +++ b/sxiv/exec/key-handler @@ -1,18 +1,44 @@ #!/bin/sh -while read file -do - case "$1" in - "greater" ) - convert -rotate 90 "$file" "$file" ;; - "less") - convert -rotate 270 "$file" "$file" ;; - "y") - echo -n "$file" | xclip -selection clipboard ;; - "g") - gimp "$file" & disown ;; - "G") - optirun gimp "$file" & disown ;; - * ) - notify-send "$1" - esac -done + +# This file is run from the sxiv when ctrl+x is pushed and then another key combination +# +# The file names are passed to stdin (1 per line) +# +# The key combination pushed after ctrl+x is sent as the first argument +# +# I have organised this script so when ctrl is pushed, a single command is run using all of the selected images +# e.g. creating a gif out of all selected images +# +# If ctrl is not pushed, the command is run on each image individually +# e.g. rotating images or opening them in gimp + + +case "$1" in + "C-g") + cat | createGif ;; + "C-v") + cat | createGif --mp4 ;; + "C-"*) + # If none of the above were used and ctrl was pushed, send a notificaton with the key combination + notify-send "$1" ;; + *) + # If the above key combinations were not pushed, loop through each of the images and check the combinations below + while read file + do + case "$1" in + "greater" ) + convert -rotate 90 "$file" "$file" ;; + "less") + convert -rotate 270 "$file" "$file" ;; + "y") + echo -n "$file" | xclip -selection clipboard ;; + "g") + gimp "$file" & disown ;; + "G") + optirun gimp "$file" & disown ;; + *) + # If none of the above were used, send a notificaton with the key combination + notify-send "$1" + esac + done +esac