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