From 3c1645ca904578a7c43ed8e8e7e264cf99f997da Mon Sep 17 00:00:00 2001 From: 0xACE <0xACE@users.noreply.github.com> Date: Sat, 2 Nov 2019 02:24:14 +0100 Subject: [PATCH] Merged drag and drop scripts to 1 file (#372) --- plugins/drag-and-drop | 78 +++++++++++++++++++++++++++++++++++++++++++ plugins/drag-file | 54 ------------------------------ plugins/drop-file | 44 ------------------------ 3 files changed, 78 insertions(+), 98 deletions(-) create mode 100755 plugins/drag-and-drop delete mode 100755 plugins/drag-file delete mode 100755 plugins/drop-file diff --git a/plugins/drag-and-drop b/plugins/drag-and-drop new file mode 100755 index 00000000..6db7d5aa --- /dev/null +++ b/plugins/drag-and-drop @@ -0,0 +1,78 @@ +#!/usr/bin/env sh + +# Description: Open a Drag and drop window, to drop files onto other programs. +# Also provides drag and drop window for files. +# +# Files that are dropped will be added to nnn's selection +# Some webbased files will be downloaded to current directory with curl +# and it may overwrite some existing files +# +# The user has to mm to clear nnn's selection first +# +# Dependency: https://github.com/mwh/dragon +# Shell: POSIX compliant +# Author: 0xACE + +selection=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection +resp=f +all= + +dnd() +{ + if which dragon-drag-and-drop; then + dragon-drag-and-drop "$@" + else + dragon "$@" + fi +} + +function add_file() { + echo -n "$@" >> "$selection" + echo -ne "\0" >> "$selection" +} + +function use_all() +{ + echo -n "mark --all (a) [default=none]: " + read resp + if [ "$resp" = "a" ]; then + all="--all" + else + all="" + fi +} + +if [ -s "$selection" ]; then + echo -n "Drop file (r). Drag selection (s), Drag current directory (d) or drag current file (f) [default=f]: " + read resp +else + echo -n "Drop file (r). Drag current directory (d) or drag current file (f) [default=f]: " + read resp + if [ "$resp" = "s" ]; then + resp=f + fi +fi + +if [ "$resp" = "s" ]; then + use_all + sed -z 's|'"$PWD/"'||g' < "$selection" | xargs -0 dnd "$all" & +elif [ "$resp" = "d" ]; then + use_all + dnd "$all" "$PWD/"* & +elif [ "$resp" = "r" ]; then + echo -n > "$selection" + dnd --print-path --target | while read f + do + if echo -n "$f" | grep '^\(https\?\|ftps\?\|s\?ftp\):\/\/' ; then + curl -LJO "$f" + add_file "$PWD/$(basename "$f")" + elif [ -e "$f" ]; then + add_file "$f" + fi + done & +else + if [ -n "$1" ] && [ -e "$1" ]; then + dnd "$1" & + fi +fi + diff --git a/plugins/drag-file b/plugins/drag-file deleted file mode 100755 index 4bf57baf..00000000 --- a/plugins/drag-file +++ /dev/null @@ -1,54 +0,0 @@ -#!/usr/bin/env sh - -# Description: Open a Drag and drop window, to drop files onto other programs -# -# Dependency: https://github.com/mwh/dragon -# Shell: POSIX compliant -# Author: 0xACE - -selection=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection -resp=f -all= - -dnd() -{ - if which dragon-drag-and-drop; then - dragon-drag-and-drop "$@" - else - dragon "$@" - fi -} - -function use_all() -{ - echo -n "mark --all (a) [default=none]: " - read resp - if [ "$resp" = "a" ]; then - all="--all" - else - all="" - fi -} - -if [ -s "$selection" ]; then - echo -n "work with selection (s), current working directory (d) or current file (f) [default=f]: " - read resp -else - echo -n "work with current working directory (d) or current file (f) [default=f]: " - read resp - if [ "$resp" = "s" ]; then - resp=f - fi -fi - -if [ "$resp" = "s" ]; then - use_all - sed -z 's|'"$PWD/"'||g' < "$selection" | xargs -0 dnd "$all" & -elif [ "$resp" = "d" ]; then - use_all - dnd "$all" "$PWD/"* & -else - if [ -n "$1" ] && [ -e "$1" ]; then - dnd "$1" & - fi -fi diff --git a/plugins/drop-file b/plugins/drop-file deleted file mode 100755 index f43cde14..00000000 --- a/plugins/drop-file +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env sh - -# Description: Provides drag and drop window for files. -# -# Files that are dropped will be added to nnn's selection -# Some web based files will be downloaded to current directory with curl -# and it may overwrite some existing files -# -# The user has to press mm to clear nnn's selection first -# -# Dependency: https://github.com/mwh/dragon -# Shell: POSIX compliant -# Author: 0xACE - -selection=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection - -dnd() -{ - if which dragon-drag-and-drop; then - dragon-drag-and-drop "$@" - else - dragon "$@" - fi -} - -function add_file() { - echo -n "$@" >> "$selection" - echo -ne "\0" >> "$selection" -} - -echo -n > "$selection" - -# which dnd -# upstream calls it dragon - -dnd --print-path --target | while read f -do - if echo -n "$f" | grep '^\(https\?\|ftps\?\|s\?ftp\):\/\/' ; then - curl -LJO "$f" - add_file "$PWD/$(basename "$f")" - elif [ -e "$f" ]; then - add_file "$f" - fi -done &