sfm

Simple File Manager
git clone git://git.emmett1.my/sfm.git
Log | Files | Refs | LICENSE

commit 02a8adadc48bc5b8c28a617d619b6f4a9403a387
parent 1e6fdd9e29f77c955182920744c5c2be706eb3b0
Author: emmett1 <emmett1.2miligrams@protonmail.com>
Date:   Mon, 16 Mar 2026 00:21:22 +0800

fix when browse into empty directory

Diffstat:
Msfm | 18+++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/sfm b/sfm @@ -1,6 +1,5 @@ #!/bin/sh -# sfm - Simple File Manager in POSIX sh (flicker-free) -# version 0.3 +# sfm - Simple File Manager in POSIX sh # --- terminal control --- tput_cmd() { command -v tput >/dev/null 2>&1 && tput "$@"; } @@ -443,7 +442,7 @@ draw_topbar() { draw_botbar() { _rows=$1; _cols=$2 if [ "$SEARCHING" = "1" ]; then - info=" $((SEL + 1))/${COUNT} ${CWD}" + info=" $([ "$COUNT" -eq 0 ] && echo 0 || echo $((SEL + 1)))/${COUNT} ${CWD}" keys=" search: ${FILTER} " maxk=$((_cols - ${#info} - 1)) [ "${#keys}" -gt "$maxk" ] && keys=$(printf '%s' "$keys" | cut -c1-"$maxk") @@ -457,9 +456,8 @@ draw_botbar() { "${YELLOW}${keys}" \ "${RESET}" elif [ -n "$INFO_MSG" ]; then - info=" $((SEL + 1))/${COUNT} ${CWD}" - msg=" ${INFO_MSG} " - padlen=$((_cols - ${#info} - ${#msg})) + info=" $([ "$COUNT" -eq 0 ] && echo 0 || echo $((SEL + 1)))/${COUNT} ${CWD}" + msg=" ${INFO_MSG} " padlen=$((_cols - ${#info} - ${#msg})) [ "$padlen" -lt 0 ] && padlen=0 pad=$(printf '%*s' "$padlen" '') goto "$_rows" 1 @@ -478,7 +476,7 @@ draw_botbar() { [ "$SORT_MODE" != "name" ] && _ind="${_ind} [sort:${SORT_MODE}]" [ "$SHOW_DETAILS" = "1" ] && _ind="${_ind} [details]" hint=" press ? for help " - info=" $((SEL + 1))/${COUNT} ${CWD}${_ind}" + info=" $([ "$COUNT" -eq 0 ] && echo 0 || echo $((SEL + 1)))/${COUNT} ${CWD}${_ind}" padlen=$((_cols - ${#info} - ${#hint})) [ "$padlen" -lt 0 ] && padlen=0 pad=$(printf '%*s' "$padlen" '') @@ -523,6 +521,12 @@ draw() { row=$((row + 1)) idx=$((idx + 1)) done + # show (empty) if directory has no entries + if [ "$COUNT" -eq 0 ]; then + goto 2 1 + printf '%s (empty)%s%s' "${WHITE}" "${ERASE_LINE}" "${RESET}" + row=3 + fi # blank leftover rows (e.g. after entering a smaller directory) while [ "$row" -le $((LIST_ROWS + 1)) ]; do goto "$row" 1