browse.sh - randomcrap - random crap programs of varying quality
 (HTM) git clone git://git.codemadness.org/randomcrap
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       browse.sh (1338B)
       ---
            1 #!/bin/sh
            2 # simple directory browser and file opener using dmenu.
            3 
            4 MENU="$HOME/.config/scripts/dmenu.sh"
            5 APPS="$HOME/.config/scripts/runmenu/list.sh"
            6 
            7 listentries() {
            8         echo '[run mpv on this directory]'
            9         echo '[run sxiv on this directory]'
           10         echo '[run terminal in this directory]'
           11         echo ""
           12         echo "../"
           13 
           14         # linux-ism
           15         ls -1FN --group-directories-first --file-type
           16         #ls -1aFN --group-directories-first
           17 }
           18 
           19 while :; do
           20         item=$(listentries | dmenu -l 50 -i)
           21         # case-insensitive matching (for file extensions that have .JPG, etc).
           22         matchitem=$(printf '%s' "$item" | tr '[:upper:]' '[:lower:]')
           23         #mimetype="$(file -b -b "$item")" # TODO: open text/* with st and less ?
           24 
           25         case "${matchitem}" in
           26         */)
           27                 cd "$item"
           28                 continue;;
           29         *@)
           30                 # strip @ suffix
           31                 item="${item%@}"
           32                 matchitem="${matchitem%@}"
           33 
           34                 # symlink to directory else handle file below.
           35                 if test -d "${item}"; then
           36                         cd "${item}"
           37                         continue
           38                 fi;;
           39         esac
           40 
           41         case "${matchitem}" in
           42         */)
           43                 cd "$item"
           44                 continue;;
           45         "")
           46                 exit 0;;
           47         *.jpg|*.jpeg|*.png|*.gif|*.svg|*.webp)
           48                 sxiv "$item";;
           49         *.mp3|*.flac|*.opus)
           50                 mpv "$item";;
           51         *.mp4|*.webm|*.mkv|*.avi)
           52                 mpv "$item";;
           53         *.pdf)
           54                 mupdf "$item";;
           55         "[run mpv"*)
           56                 mpv .;;
           57         "[run sxiv"*)
           58                 sxiv .;;
           59         "[run terminal"*)
           60                 st;;
           61         *)
           62                 cmd=$($APPS | $MENU $* -p "Run with:")
           63                 test "$cmd" = "" && exit 1
           64                 "$cmd" "$item"
           65                 ;;
           66         esac
           67         exit $?
           68 done