sistema_progs

Programas para customizar o meu entorno de traballo nos meus equipos persoais
Log | Files | Refs

openall (1429B)


      1 #!/usr/bin/env bash
      2 
      3 # Description: Open selected files in nuke one by one or in oneshot
      4 #
      5 # Notes: 1. Opens the hovered file if the selection is empty
      6 #        2. nuke is the default, set OPENER below for custom
      7 #        3. Opener is invoked once for each file in a loop
      8 #        4. Keep pressing "Enter" to open files one by one
      9 #
     10 # Shell: bash
     11 # Author: Arun Prakash Jana
     12 
     13 sel=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection}
     14 OPENER="${XDG_CONFIG_HOME:-$HOME/.config}/nnn/plugins/nuke"
     15 
     16 if [ -s "$sel" ]; then
     17     targets=()
     18     while IFS= read -r -d '' entry || [ -n "$entry" ]; do
     19         targets+=( "$entry" )
     20     done < "$sel"
     21 
     22     elements=${#targets[@]}
     23 
     24     if (( elements == 1 )); then
     25         # If there's only one file selected, open without prompts
     26         "$OPENER" "${targets[0]}"
     27     else
     28         printf "open [A]ll? "
     29         read -r all
     30 
     31         for ((index=0; index <= ${#targets[@]}; index++)); do
     32             "$OPENER" "${targets[index]}"
     33             if [ "$all" != "A" ] && (( index+1 < elements )); then
     34                 printf "press Enter to open '%s'\n" "${targets[index+1]}"
     35                 read -r -s -n 1 key
     36                 if [[ $key != "" ]]; then
     37                     break
     38                 fi
     39             fi
     40         done
     41     fi
     42 
     43     # Clear selection
     44     if [ -s "$sel" ] && [ -p "$NNN_PIPE" ]; then
     45         printf "-" > "$NNN_PIPE"
     46     fi
     47 elif [ -n "$1" ]; then
     48     "$OPENER" "$1"
     49 fi