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:
| M | sfm | | | 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