36 lines
748 B
Bash
Executable file
36 lines
748 B
Bash
Executable file
#!/bin/sh
|
|
|
|
require() {
|
|
for cmd in "$@"; do
|
|
command -v "$cmd" >/dev/null 2>&1 || {
|
|
echo "doc: missing dependency: $cmd" >&2
|
|
exit 1
|
|
}
|
|
done
|
|
}
|
|
|
|
require sioyek
|
|
|
|
dir="$HOME/doc"
|
|
test -d "$dir" || exit
|
|
|
|
if [ "$XDG_SESSION_TYPE" = x11 ]; then
|
|
require dmenu
|
|
picker() { dmenu -i -l 10 -p "Select file or folder: "; }
|
|
else
|
|
require rofi
|
|
picker() { rofi -dmenu -i -l 10 -p "Select file or folder"; }
|
|
fi
|
|
|
|
while :; do
|
|
choice="$(find "$dir" -not -path "$dir/.*" -mindepth 1 -maxdepth 1 \( -type d -printf "%f/\n" -o -type f -printf "%f\n" \) | picker)"
|
|
|
|
[ -n "$choice" ] || break
|
|
|
|
if [ -d "$dir/${choice%/}" ]; then
|
|
dir="$dir/${choice%/}"
|
|
elif [ -f "$dir/$choice" ]; then
|
|
sioyek "$dir/$choice" &
|
|
break
|
|
fi
|
|
done
|