diff options
| author | emmett1 <emmett1.2miligrams@protonmail.com> | 2026-03-16 00:21:22 +0800 |
|---|---|---|
| committer | emmett1 <emmett1.2miligrams@protonmail.com> | 2026-03-16 00:21:22 +0800 |
| commit | 02a8adadc48bc5b8c28a617d619b6f4a9403a387 (patch) | |
| tree | 8dbbf737b5ba59ac0bc77a5494ff64dcecf3fe6d | |
| parent | 1e6fdd9e29f77c955182920744c5c2be706eb3b0 (diff) | |
| download | sfm-02a8adadc48bc5b8c28a617d619b6f4a9403a387.tar.gz sfm-02a8adadc48bc5b8c28a617d619b6f4a9403a387.zip | |
fix when browse into empty directory
| -rwxr-xr-x | sfm | 18 |
1 files changed, 11 insertions, 7 deletions
@@ -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 |