aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xdmenu-filepicker26
-rwxr-xr-xold/dmenu-filepicker-old31
2 files changed, 41 insertions, 16 deletions
diff --git a/dmenu-filepicker b/dmenu-filepicker
index 532fb82..7538008 100755
--- a/dmenu-filepicker
+++ b/dmenu-filepicker
@@ -4,28 +4,22 @@
4# Requires: dmenu (or similar) 4# Requires: dmenu (or similar)
5# Usage: dmenu-filepicker [path] 5# Usage: dmenu-filepicker [path]
6 6
7menu=${MENU:-dmenu} 7menu=dmenu
8menuopts="-i -l 15" 8menuopts="-i -l 15"
9 9
10basedir="$(pwd)" 10fullpath=$(realpath ${@:-$(pwd)})
11
12next="${@:-$(pwd)}"
13 11
14while true; do 12while true; do
15 if [ -z "$next" ]; then 13 if [ "$sel" = "." ]; then
16 break 14 echo "$fullpath" | sed 's|/\.||'
17 elif [ "$next" = "." ]; then
18 pwd
19 break 15 break
20 elif [ -d "$next" ]; then 16 elif [ -d "$fullpath" ]; then
21 cd "$next" 17 sel=$(ls -a "$fullpath" | sed 's|.*/||' | $menu $menuopts)
22 next=$(ls -a | $menu $menuopts) 18 fullpath=$(printf "$fullpath/%s\n" $sel)
23 else 19 else
24 echo "$next" | while read line; do 20 echo "$fullpath"
25 echo "$(pwd)/$line"
26 done
27 break 21 break
28 fi 22 fi
29done
30 23
31cd "$basedir" 24 [ -z "$sel" ] && break
25done
diff --git a/old/dmenu-filepicker-old b/old/dmenu-filepicker-old
new file mode 100755
index 0000000..532fb82
--- /dev/null
+++ b/old/dmenu-filepicker-old
@@ -0,0 +1,31 @@
1#!/bin/sh
2
3# A dmenu-based file picker (prints selected file to stdout)
4# Requires: dmenu (or similar)
5# Usage: dmenu-filepicker [path]
6
7menu=${MENU:-dmenu}
8menuopts="-i -l 15"
9
10basedir="$(pwd)"
11
12next="${@:-$(pwd)}"
13
14while true; do
15 if [ -z "$next" ]; then
16 break
17 elif [ "$next" = "." ]; then
18 pwd
19 break
20 elif [ -d "$next" ]; then
21 cd "$next"
22 next=$(ls -a | $menu $menuopts)
23 else
24 echo "$next" | while read line; do
25 echo "$(pwd)/$line"
26 done
27 break
28 fi
29done
30
31cd "$basedir"

Generated with cgit - Back to sebastiano.tronto.net