From 60052659b98832c78c902e4f27ecee2663d8e913 Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Wed, 6 May 2026 08:30:49 +0200 Subject: Added scripts --- scripts/dmenu-filepicker | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100755 scripts/dmenu-filepicker (limited to 'scripts/dmenu-filepicker') diff --git a/scripts/dmenu-filepicker b/scripts/dmenu-filepicker new file mode 100755 index 0000000..288cac9 --- /dev/null +++ b/scripts/dmenu-filepicker @@ -0,0 +1,47 @@ +#!/bin/sh + +# A dmenu-based file picker (prints selected file to stdout) +# Requires: dmenu (or similar) + +# Usage: dmenu-filepicker [-m menu] [path] + +menu="dmenu -i -l 15" + +usage() { + echo "Usage: dmenu-filepicker [-m MENU] [PATH]" +} + +while getopts "m:" opt; do + case "$opt" in + m) + menu="$OPTARG" + ;; + *) + usage + exit 1 + ;; + esac +done +shift $((OPTIND - 1)) + +fullpath=$(realpath "${@:-"$(pwd)"}") + +while true; do + if [ "$sel" = "." ]; then + echo "$fullpath" | sed 's|/\.||' + break + elif [ -d "$fullpath" ] || [ -z "$fullpath" ]; then + if [ -z "$fullpath" ]; then fp="/"; else fp="$fullpath"; fi + sel=$(ls -a "$fp" | sed 's|.*/||' | $menu) + if [ "$sel" = ".." ]; then + fullpath=$(echo "$fullpath" | sed "s|/[^/]*$||") + else + fullpath=$(echo "$sel" | sed "s|^|$fullpath/|") + fi + else + echo "$fullpath" + break + fi + + [ -z "$sel" ] && break +done -- cgit v1.3