From b351865a2b3678708d70c6e088c70ae8f7fd923f Mon Sep 17 00:00:00 2001 From: katherine Date: Wed, 17 Feb 2016 02:23:20 -0700 Subject: refactor key handler --- .config/sxiv/exec/key-handler | 71 ++++++++++++++++++++++++++++--------------- 1 file changed, 47 insertions(+), 24 deletions(-) (limited to '.config/sxiv/exec') diff --git a/.config/sxiv/exec/key-handler b/.config/sxiv/exec/key-handler index 43163c3..6668c36 100755 --- a/.config/sxiv/exec/key-handler +++ b/.config/sxiv/exec/key-handler @@ -1,34 +1,57 @@ #!/bin/zsh +source ~/.config/init/vars + # 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. -while read file -do +files=() +while read line; do + files=( "${files[@]}" "$line" ) +done + + +if [[ "${#files[@]}" -eq 1 ]]; then case "$1" in - "y") - echo -n "$file" | xclip -selection clipboard ;; - "C-d") - rm "$file" ;; - "g") - gimp "$file" & ;; + "y") + echo -n "$files" | xclip -selection clipboard + echo -n "$files" | xclip -selection primary + exit + ;; + "r") + dmenu "${dmenu_args[@]}" -q -noinput + exit + ;; + *) ;; + esac +fi + +case "$1" in + "C-d") rm "${files[@]}" ;; + "g") gimp "${files[@]}" & ;; "s") - scp "$file" shmibbles.me:http/tmp/ - basename=$(basename $file) - if [[ $? -ne 0 ]]; then - notify-send "uploading $basename to /tmp/ failed" - else - ssh shmibbles.me "cd http/tmp; chmod o+r '$basename'" - name=$(echo "https://shmibbles.me/tmp/$basename"\ - | sed -e 's/ /%20/g' -e 's/?/%3f/g') - echo $name | tr -d '\n' | xclip -i -selection clipboard - echo $name | tr -d '\n' | xclip -i -selection primary - notify-send "uploaded $basename to /tmp/" - fi + for file in "${files[@]}"; do + scp "$file" shmibbles.me:http/tmp/ + basename=$(basename $file) + if [[ $? -ne 0 ]]; then + notify-send "uploading $basename to /tmp/ failed" + else + ssh shmibbles.me "cd http/tmp; chmod o+r '$basename'" + name=$(echo "https://shmibbles.me/tmp/$basename"\ + | sed -e 's/ /%20/g' -e 's/?/%3f/g') + echo $name | tr -d '\n' | xclip -i -selection clipboard + echo $name | tr -d '\n' | xclip -i -selection primary + notify-send "uploaded $basename to /tmp/" + fi + done ;; - *) - notify-send "command not recognised" + "n") + for file in "${files[@]}"; do + notify-send "$file" + done + notify-send "${#files[@]}" ;; - esac -done + *) + notify-send "sxiv: command not recognised" ;; +esac -- cgit v1.2.3