#!/bin/sh PATTERN="." [ -z "$VIS_MENU" ] && VIS_MENU="slmenu" [ -z "$VIS_MENU_ARGS" ] && VIS_MENU_ARGS="-b" while [ $# -gt 0 ]; do case "$1" in -h|--help) echo "usage: $(basename $0) [-h] [-p prompt] [file-pattern]" exit 0; ;; -p) VIS_MENU_ARGS="$VIS_MENU_ARGS -p $2" shift shift ;; *) PATTERN=$* break ;; esac done if ! type "$VIS_MENU" >/dev/null 2>&1; then if [ ! -z "$DISPLAY" ] && type "dmenu" >/dev/null 2>&1; then VIS_MENU="dmenu" else echo "Neither slmenu nor dmenu found" >&2 exit 1 fi fi DIR="" [ ! -z "$PATTERN" -a "$PATTERN" != "." -a -d "$PATTERN" ] && DIR="$PATTERN" while true; do SEL=$({ echo ..; ls -1 $PATTERN; } | $VIS_MENU $VIS_MENU_ARGS) [ -z "$SEL" ] && exit 1 [ ! -z "$DIR" ] && SEL="$DIR/$SEL" if [ -d "$SEL" ]; then DIR="$SEL" PATTERN="$DIR" else echo "$SEL" exit 0 fi done