sfm

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

commit fe57971b9192d5ee093df12b288d5d2d9fd119c0
parent 2f8d3e8d9ea4abfff676248c840a8ae4cacd8fb3
Author: emmett1 <me@emmett1.my>
Date:   Sat, 11 Apr 2026 02:11:23 +0800

removed extension colouring, and changed some colours

Diffstat:
Msfm | 45++++++++++++---------------------------------
1 file changed, 12 insertions(+), 33 deletions(-)

diff --git a/sfm b/sfm @@ -22,36 +22,15 @@ file_colour() { _fc_ext="${_fc_name##*.}" _fc_ext=$(printf '%s' "$_fc_ext" | tr '[:upper:]' '[:lower:]') # executable? - [ -x "${CWD}/${_fc_name}" ] && { printf '%s' "${RED}${BOLD}"; return; } - case "$_fc_ext" in - # images - jpg|jpeg|png|gif|bmp|tiff|tif|webp|svg|ico|heic|heif|avif) - printf '%s' "${MAGENTA}" ;; - # video - mp4|mkv|avi|mov|wmv|flv|webm|m4v|mpeg|mpg|3gp|ogv) - printf '%s' "${MAGENTA}${BOLD}" ;; - # audio - mp3|flac|ogg|wav|aac|m4a|opus|wma|aiff) - printf '%s' "${CYAN}${BOLD}" ;; - # archives - zip|tar|gz|bz2|xz|zst|7z|rar|tgz|tbz2) - printf '%s' "${RED}" ;; - # documents / text - pdf|doc|docx|odt|xls|xlsx|ods|ppt|pptx|odp) - printf '%s' "${YELLOW}" ;; - # code / scripts - sh|bash|zsh|fish|py|rb|pl|lua|js|ts|jsx|tsx|\ - c|h|cpp|cc|cxx|hpp|rs|go|java|kt|swift|cs|php|r) - printf '%s' "${GREEN}" ;; - # data / config - json|xml|yaml|yml|toml|ini|conf|cfg|env) - printf '%s' "${CYAN}" ;; - # markdown / text - md|markdown|rst|txt|log) - printf '%s' "${WHITE}" ;; - # default - *) printf '%s' "${WHITE}" ;; - esac + [ -x "${CWD}/${_fc_name}" ] && { printf '%s' "${GREEN}${BOLD}" ; return; } + # node device? + [ -c "${CWD}/${_fc_name}" ] && { printf '%s' "${MAGENTA}${BOLD}"; return; } + # block device? + [ -b "${CWD}/${_fc_name}" ] && { printf '%s' "${MAGENTA}${BOLD}"; return; } + # readable? + [ -r "${CWD}/${_fc_name}" ] || { printf '%s' "${RED}${BOLD}" ; return; } + # writable? + [ -w "${CWD}/${_fc_name}" ] || { printf '%s' "${RED}${BOLD}" ; return; } } goto() { printf '\033[%d;%dH' "$1" "$2"; } @@ -362,12 +341,12 @@ render_row() { entry=$(get_entry "$_idx") case "$entry" in - */) colour="${GREEN}${BOLD}" ;; + */) colour="${BLUE}${BOLD}" ;; *@) _name="${entry%@}" # broken symlink if target doesn't exist if [ -e "${CWD}/${_name}" ]; then - colour="${MAGENTA}${BOLD}" + colour="${CYAN}${BOLD}" else colour="${RED}${BOLD}" fi ;; @@ -471,7 +450,7 @@ draw_preview() { _dl=" ${_dn}/" [ "${#_dl}" -gt "$((_pw - 1))" ] && _dl="$(printf '%s' "$_dl" | cut -c1-$((_pw-2)))~" goto "$_pr" "$_px" - printf '%s%s%s' "${GREEN}${BOLD}" "$_dl" "${RESET}" + printf '%s%s%s' "${BLUE}${BOLD}" "$_dl" "${RESET}" _pr=$((_pr + 1)) done for _fe in "$_path"/*; do