plugins/README.md | 1 + plugins/openall | 42 ++++++++++++++++++++++++++++++++++++++++++ diff --git a/plugins/README.md b/plugins/README.md index 05f0351c5ef33d8dea2df90e8b1247a928a903bb..c13bf10ee6877aa98387a8c2ca41fda08c676594 100644 --- a/plugins/README.md +++ b/plugins/README.md @@ -48,6 +48,7 @@ | [nbak](nbak) | Backs up `nnn` config | sh | tar, awk, mktemp | | [nmount](nmount) | Toggle mount status of a device as normal user | sh | pmount, udisks2 | | [nuke](nuke) | Sample file opener (CLI-only by default) | sh | _see in-file docs_ | | [oldbigfile](oldbigfile) | List large files by access time | sh | find, sort | +| [openall](openall) | Open selected files together or one by one [✓] | bash | - | | [organize](organize) | Auto-organize files in directories by file type [✓] | sh | file | | [pdfread](pdfread) | Read a PDF or text file aloud | sh | pdftotext, mpv,
pico2wave | | [preview-tabbed](preview-tabbed) | Preview files with Tabbed/xembed | bash | _see in-file docs_ | diff --git a/plugins/openall b/plugins/openall new file mode 100755 index 0000000000000000000000000000000000000000..fe382a4e7f6e7cf0ab3da51b24530266746e12ae --- /dev/null +++ b/plugins/openall @@ -0,0 +1,42 @@ +#!/usr/bin/env bash + +# Description: Open selected files in nuke one by one or in oneshot +# Tip: keep pressing "Enter" to open files one by one +# +# Note: Uses nuke by default, easy to replace with preferred opener +# nuke is invoked once for each file in a loop +# +# Shell: bash +# Author: Arun Prakash Jana + +sel=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} +nuke="${XDG_CONFIG_HOME:-$HOME/.config}/nnn/plugins/nuke" + +printf "open [A]ll? " +read -r all + +if [ -s "$sel" ]; then + targets=() + while IFS= read -r -d '' entry || [ -n "$entry" ]; do + targets+=( "$entry" ) + done < "$sel" +fi + +last=${targets[${#targets[@]}-1]} + +for entry in "${targets[@]}"; do + # replace nuke with your preferred opened below + "$nuke" "$entry" + if [ "$all" != "A" ] && [ "$entry" != "$last" ]; then + printf "press Enter to open next\n" + read -r -s -n 1 key + if [[ $key != "" ]]; then + break + fi + fi +done + +# Clear selection +if [ -s "$sel" ] && [ -p "$NNN_PIPE" ]; then + printf "-" > "$NNN_PIPE" +fi