|
#!/bin/sh
# TODO:
#
# - support matching multiple extensions
#
# maybe:
#
# - use fzf if called from an interactive terminal (?)
# - what about scripts called from the commandline, but that should
# display stuff? probably they don't exist?
# - allow multiple directories to be searched
# - make "chooser" configurable (e.g. allow regular dmenu)
program="xdg-open"
base="$PWD"
pattern='*.pdf'
choose_rofi() {
rofi -dmenu -matching normal -sort -i -markup-rows
}
choose_dmenu() {
dmenu -l 10 -i
}
choose=choose_rofi
if ! which rofi &> /dev/null; then
choose=choose_dmenu
fi
while [ $# -gt 0 ]; do
case "$1" in
-no-open)
program="echo"
shift
;;
-w|-open-with)
shift
program="$1"
shift
;;
-p|-pattern)
shift
pattern="$1"
shift
;;
-dmenu)
choose=choose_dmenu
shift
;;
*)
break
;;
esac
done
case "$1" in
m)
base="$HOME/m/buffer"
pattern='*.mp4'
;;
p)
base="$HOME/d/books/cs"
;;
*)
if [ -n "$1" ]; then
base="$1"
fi
;;
esac
file="$(find "$base" -type f -name "$pattern" -printf '%P\n' | sed 's/&/&/g' | $choose | sed 's/&/\&/g')"
if [ "$?" -eq "0" ]; then
$program "$base/$file"
fi
|