Fix #1333: plugin openall to open selection

This commit is contained in:
Arun Prakash Jana 2022-03-31 19:13:54 +05:30
parent 0a7742089a
commit 5745597fd5
No known key found for this signature in database
GPG key ID: A75979F35C080412
2 changed files with 43 additions and 0 deletions

View file

@ -48,6 +48,7 @@ Plugins extend the capabilities of `nnn`. They are _executable_ scripts (or bina
| [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,<br>pico2wave |
| [preview-tabbed](preview-tabbed) | Preview files with Tabbed/xembed | bash | _see in-file docs_ |

42
plugins/openall Executable file
View file

@ -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