From 398aa6d63f7613a26f13269f95a82e7a01149fca Mon Sep 17 00:00:00 2001 From: sidd-dino Date: Sat, 5 Sep 2020 10:40:19 +0530 Subject: [PATCH 1/9] Keybinding support for home and end added --- fff | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/fff b/fff index 4e3a992..c2c1963 100755 --- a/fff +++ b/fff @@ -738,13 +738,30 @@ cmd_line() { key() { # Handle special key presses. [[ $1 == $'\e' ]] && { - read "${read_flags[@]}" -rsn 2 + special_keys+=${1} + + # \e A + # \e [ A + # \e [ 6 ~ + # -- - - - + # 1 2 3 4 + + #* read 2 + read "${read_flags[@]}" -srn 1 + special_keys+=${REPLY} + + [[ $REPLY == $'[' ]] && { + #* read 3 + read "${read_flags[@]}" -srn 1 + special_keys+=${REPLY} - # Handle a normal escape key press. - [[ ${1}${REPLY} == $'\e\e['* ]] && - read "${read_flags[@]}" -rsn 1 _ + [[ ${REPLY} == [0-9] ]] && { + #* read 4 + read "${read_flags[@]}" -srn 1 + special_keys+=${REPLY} + } + } - local special_key=${1}${REPLY} } case ${special_key:-$1} in From 7b3c719964491ebbb83463ca8548a97204781170 Mon Sep 17 00:00:00 2001 From: sidd-dino Date: Sun, 6 Sep 2020 06:37:21 +0530 Subject: [PATCH 2/9] CODE: Icons for dir, files with no ext, and hidden files --- fff | 253 ++++++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 204 insertions(+), 49 deletions(-) diff --git a/fff b/fff index c2c1963..813cc08 100755 --- a/fff +++ b/fff @@ -150,6 +150,154 @@ get_mime_type() { mime_type=$(file "-${file_flags:-biL}" "$1" 2>/dev/null) } +get_icon() { + # $1 Absolute path to the file + + local file_path="$1" + local file_name=${file_path##*/} + local file_ext="${file_name##*.}" + + printf "%s\n" "$file_path|$file_name|$file_ext" >> /home/sidd_dino/Documents/PROJECTS/IN_GIT/fff/fff_log + + # Directories + [[ -d "$file_path" ]] && { + case "$file_name" in + # English + '.git' ) printf -- ''; return ;; + 'Desktop' ) printf -- ''; return ;; + 'Documents' ) printf -- ''; return ;; + 'Downloads' ) printf -- ''; return ;; + 'Dotfiles' ) printf -- ''; return ;; + 'Dropbox' ) printf -- ''; return ;; + 'Music' ) printf -- ''; return ;; + 'Pictures' ) printf -- ''; return ;; + 'Public' ) printf -- ''; return ;; + 'Templates' ) printf -- ''; return ;; + 'Videos' ) printf -- ''; return ;; + + # Spanish + 'Escritorio' ) printf -- ''; return ;; + 'Documentos' ) printf -- ''; return ;; + 'Descargas' ) printf -- ''; return ;; + 'Música' ) printf -- ''; return ;; + 'Imágenes' ) printf -- ''; return ;; + 'Público' ) printf -- ''; return ;; + 'Plantillas' ) printf -- ''; return ;; + 'Vídeos' ) printf -- ''; return ;; + # French + 'Bureau' ) printf -- ''; return ;; + 'Images' ) printf -- ''; return ;; + 'Musique' ) printf -- ''; return ;; + 'Publique' ) printf -- ''; return ;; + 'Téléchargements' ) printf -- ''; return ;; + 'Vidéos' ) printf -- ''; return ;; + # Portuguese + 'Imagens' ) printf -- ''; return ;; + 'Modelos' ) printf -- ''; return ;; + 'Área de trabalho') printf -- ''; return ;; + # Italian + 'Documenti' ) printf -- ''; return ;; + 'Immagini' ) printf -- ''; return ;; + 'Modelli' ) printf -- ''; return ;; + 'Musica' ) printf -- ''; return ;; + 'Pubblici' ) printf -- ''; return ;; + 'Scaricati' ) printf -- ''; return ;; + 'Scrivania' ) printf -- ''; return ;; + 'Video' ) printf -- ''; return ;; + # German + 'Bilder' ) printf -- ''; return ;; + 'Dokumente' ) printf -- ''; return ;; + 'Musik' ) printf -- ''; return ;; + 'Schreibtisch' ) printf -- ''; return ;; + 'Vorlagen' ) printf -- ''; return ;; + 'Öffentlich' ) printf -- ''; return ;; + # Hungarian + 'Dokumentumok' ) printf -- ''; return ;; + 'Képek' ) printf -- ''; return ;; + 'Zene' ) printf -- ''; return ;; + 'Letöltések' ) printf -- ''; return ;; + 'Videók' ) printf -- ''; return ;; + 'Számítógép' ) printf -- ''; return ;; + + * ) printf -- ''; return ;; + esac + } + + # Files with no extension + [[ "$file_path" == *"/$file_ext" ]] && { + case "$file_name" in + '_gvimrc' ) printf -- ''; return ;; + '_vimrc' ) printf -- ''; return ;; + 'a.out' ) printf -- ''; return ;; + 'authorized_keys' ) printf -- ''; return ;; + 'bspwmrc' ) printf -- ''; return ;; + 'cmakelists.txt' ) printf -- ''; return ;; + 'config' ) printf -- ''; return ;; + 'configure' ) printf -- ''; return ;; + 'dockerfile' ) printf -- ''; return ;; + 'Dockerfile' ) printf -- ''; return ;; + 'dropbox' ) printf -- ''; return ;; + 'exact-match-case-sensitive-2' ) printf -- 'X2'; return ;; + 'gemfile' ) printf -- ''; return ;; + 'ini' ) printf -- ''; return ;; + 'known_hosts' ) printf -- ''; return ;; + 'ledger' ) printf -- ''; return ;; + 'license' ) printf -- ''; return ;; + 'LICENSE' ) printf -- ''; return ;; + 'Makefile' ) printf -- ''; return ;; + 'makefile' ) printf -- ''; return ;; + 'node_modules' ) printf -- ''; return ;; + 'playlists' ) printf -- ''; return ;; + 'procfile' ) printf -- ''; return ;; + 'Rakefile' ) printf -- ''; return ;; + 'rakefile' ) printf -- ''; return ;; + 'README' ) printf -- ''; return ;; + 'sxhkdrc' ) printf -- ''; return ;; + esac + printf -- ''; return + } + + # Hidden files with no extension + [[ "$file_name" == ".$file_ext" ]] && { + case $file_name in + '.bash_aliases' ) printf -- ''; return ;; + '.bash_history' ) printf -- ''; return ;; + '.bash_logout' ) printf -- ''; return ;; + '.bash_profile' ) printf -- ''; return ;; + '.bashprofile' ) printf -- ''; return ;; + '.bashrc' ) printf -- ''; return ;; + '.dmrc' ) printf -- ''; return ;; + '.DS_Store' ) printf -- ''; return ;; + '.fasd' ) printf -- ''; return ;; + '.fehbg' ) printf -- ''; return ;; + '.gitattributes' ) printf -- ''; return ;; + '.gitconfig' ) printf -- ''; return ;; + '.gitignore' ) printf -- ''; return ;; + '.gvimrc' ) printf -- ''; return ;; + '.inputrc' ) printf -- ''; return ;; + '.jack-settings' ) printf -- ''; return ;; + '.ncmpcpp' ) printf -- ''; return ;; + '.nvidia-settings-rc' ) printf -- ''; return ;; + '.pam_environment' ) printf -- ''; return ;; + '.profile' ) printf -- ''; return ;; + '.recently-used' ) printf -- ''; return ;; + '.selected_editor' ) printf -- ''; return ;; + '.vim' ) printf -- ''; return ;; + '.viminfo' ) printf -- ''; return ;; + '.vimrc' ) printf -- ''; return ;; + '.Xauthority' ) printf -- ''; return ;; + '.Xdefaults' ) printf -- ''; return ;; + '.xinitrc' ) printf -- ''; return ;; + '.xinputrc' ) printf -- ''; return ;; + '.Xresources' ) printf -- ''; return ;; + '.zshrc' ) printf -- ''; return ;; + esac + } + + printf -- ''; return + +} + status_line() { # Status_line to print when files are marked for operation. local mark_ui="[${#marked_files[@]}] selected (${file_program[*]}) [p] ->" @@ -225,6 +373,7 @@ print_line() { local file_ext=${file_name##*.} local format local suffix + local icon # If the dir item doesn't exist, end here. if [[ -z ${list[$1]} ]]; then @@ -299,8 +448,12 @@ print_line() { # Remove all non-printable characters. file_name=${file_name//[^[:print:]]/^[} + icon=$(get_icon "${list[$1]}" ) + + printf "${icon}\n" >> /home/sidd_dino/Documents/PROJECTS/IN_GIT/fff/fff_log + printf '\r%b%s\e[m\r' \ - "${file_pre}${format}" \ + "${file_pre}${format}${icon} " \ "${file_name}${suffix}${file_post}" } @@ -736,9 +889,11 @@ cmd_line() { } key() { + local special_key + # Handle special key presses. [[ $1 == $'\e' ]] && { - special_keys+=${1} + special_key+=${1} # \e A # \e [ A @@ -748,17 +903,17 @@ key() { #* read 2 read "${read_flags[@]}" -srn 1 - special_keys+=${REPLY} + special_key+=${REPLY} [[ $REPLY == $'[' ]] && { #* read 3 read "${read_flags[@]}" -srn 1 - special_keys+=${REPLY} + special_key+=${REPLY} [[ ${REPLY} == [0-9] ]] && { #* read 4 read "${read_flags[@]}" -srn 1 - special_keys+=${REPLY} + special_key+=${REPLY} } } @@ -769,10 +924,10 @@ key() { # 'C' is what bash sees when the right arrow is pressed # ('\e[C' or '\eOC'). # '' is what bash sees when the enter/return key is pressed. - ${FFF_KEY_CHILD1:=l}|\ - ${FFF_KEY_CHILD2:=$'\e[C'}|\ - ${FFF_KEY_CHILD3:=""}|\ - ${FFF_KEY_CHILD4:=$'\eOC'}) + "${FFF_KEY_CHILD1:=l}"|\ + "${FFF_KEY_CHILD2:=$'\e[C'}"|\ + "${FFF_KEY_CHILD3:=""}"|\ + "${FFF_KEY_CHILD4:=$'\eOC'}") open "${list[scroll]}" ;; @@ -781,11 +936,11 @@ key() { # ('\e[D' or '\eOD'). # '\177' and '\b' are what bash sometimes sees when the backspace # key is pressed. - ${FFF_KEY_PARENT1:=h}|\ - ${FFF_KEY_PARENT2:=$'\e[D'}|\ - ${FFF_KEY_PARENT3:=$'\177'}|\ - ${FFF_KEY_PARENT4:=$'\b'}|\ - ${FFF_KEY_PARENT5:=$'\eOD'}) + "${FFF_KEY_PARENT1:=h}"|\ + "${FFF_KEY_PARENT2:=$'\e[D'}"|\ + "${FFF_KEY_PARENT3:=$'\177'}"|\ + "${FFF_KEY_PARENT4:=$'\b'}"|\ + "${FFF_KEY_PARENT5:=$'\eOD'}") # If a search was done, clear the results and open the current dir. if ((search == 1 && search_end_early != 1)); then open "$PWD" @@ -800,9 +955,9 @@ key() { # Scroll down. # 'B' is what bash sees when the down arrow is pressed # ('\e[B' or '\eOB'). - ${FFF_KEY_SCROLL_DOWN1:=j}|\ - ${FFF_KEY_SCROLL_DOWN2:=$'\e[B'}|\ - ${FFF_KEY_SCROLL_DOWN3:=$'\eOB'}) + "${FFF_KEY_SCROLL_DOWN1:=j}"|\ + "${FFF_KEY_SCROLL_DOWN2:=$'\e[B'}"|\ + "${FFF_KEY_SCROLL_DOWN3:=$'\eOB'}") ((scroll < list_total)) && { ((scroll++)) ((y < max_items)) && ((y++)) @@ -817,9 +972,9 @@ key() { # Scroll up. # 'A' is what bash sees when the up arrow is pressed # ('\e[A' or '\eOA'). - ${FFF_KEY_SCROLL_UP1:=k}|\ - ${FFF_KEY_SCROLL_UP2:=$'\e[A'}|\ - ${FFF_KEY_SCROLL_UP3:=$'\eOA'}) + "${FFF_KEY_SCROLL_UP1:=k}"|\ + "${FFF_KEY_SCROLL_UP2:=$'\e[A'}"|\ + "${FFF_KEY_SCROLL_UP3:=$'\eOA'}") # '\e[1L': Insert a line above the cursor. # '\e[A': Move cursor up a line. ((scroll > 0)) && { @@ -840,7 +995,7 @@ key() { ;; # Go to top. - ${FFF_KEY_TO_TOP:=g}) + "${FFF_KEY_TO_TOP:=g}") ((scroll != 0)) && { scroll=0 redraw @@ -848,7 +1003,7 @@ key() { ;; # Go to bottom. - ${FFF_KEY_TO_BOTTOM:=G}) + "${FFF_KEY_TO_BOTTOM:=G}") ((scroll != list_total)) && { ((scroll=list_total)) redraw @@ -856,7 +1011,7 @@ key() { ;; # Show hidden files. - ${FFF_KEY_HIDDEN:=.}) + "${FFF_KEY_HIDDEN:=.}") # 'a=a>0?0:++a': Toggle between both values of 'shopt_flags'. # This also works for '3' or more values with # some modification. @@ -866,7 +1021,7 @@ key() { ;; # Search. - ${FFF_KEY_SEARCH:=/}) + "${FFF_KEY_SEARCH:=/}") cmd_line "/" "search" # If the search came up empty, redraw the current dir. @@ -881,7 +1036,7 @@ key() { ;; # Spawn a shell. - ${FFF_KEY_SHELL:=!}) + "${FFF_KEY_SHELL:=!}") reset_terminal # Make fff aware of how many times it is nested. @@ -894,25 +1049,25 @@ key() { ;; # Mark files for operation. - ${FFF_KEY_YANK:=y}|\ - ${FFF_KEY_MOVE:=m}|\ - ${FFF_KEY_TRASH:=d}|\ - ${FFF_KEY_LINK:=s}|\ - ${FFF_KEY_BULK_RENAME:=b}) + "${FFF_KEY_YANK:=y}"|\ + "${FFF_KEY_MOVE:=m}"|\ + "${FFF_KEY_TRASH:=d}"|\ + "${FFF_KEY_LINK:=s}"|\ + "${FFF_KEY_BULK_RENAME:=b}") mark "$scroll" "$1" ;; # Mark all files for operation. - ${FFF_KEY_YANK_ALL:=Y}|\ - ${FFF_KEY_MOVE_ALL:=M}|\ - ${FFF_KEY_TRASH_ALL:=D}|\ - ${FFF_KEY_LINK_ALL:=S}|\ - ${FFF_KEY_BULK_RENAME_ALL:=B}) + "${FFF_KEY_YANK_ALL:=Y}"|\ + "${FFF_KEY_MOVE_ALL:=M}"|\ + "${FFF_KEY_TRASH_ALL:=D}"|\ + "${FFF_KEY_LINK_ALL:=S}"|\ + "${FFF_KEY_BULK_RENAME_ALL:=B}") mark all "$1" ;; # Do the file operation. - ${FFF_KEY_PASTE:=p}) + "${FFF_KEY_PASTE:=p}") [[ ${marked_files[*]} ]] && { [[ ! -w $PWD ]] && { cmd_line "warn: no write access to dir." @@ -935,7 +1090,7 @@ key() { ;; # Clear all marked files. - ${FFF_KEY_CLEAR:=c}) + "${FFF_KEY_CLEAR:=c}") [[ ${marked_files[*]} ]] && { marked_files=() redraw @@ -943,7 +1098,7 @@ key() { ;; # Rename list item. - ${FFF_KEY_RENAME:=r}) + "${FFF_KEY_RENAME:=r}") [[ ! -e ${list[scroll]} ]] && return @@ -963,7 +1118,7 @@ key() { ;; # Create a directory. - ${FFF_KEY_MKDIR:=n}) + "${FFF_KEY_MKDIR:=n}") cmd_line "mkdir: " "dirs" [[ $cmd_reply ]] && @@ -980,7 +1135,7 @@ key() { ;; # Create a file. - ${FFF_KEY_MKFILE:=f}) + "${FFF_KEY_MKFILE:=f}") cmd_line "mkfile: " [[ $cmd_reply ]] && @@ -997,7 +1152,7 @@ key() { ;; # Show file attributes. - ${FFF_KEY_ATTRIBUTES:=x}) + "${FFF_KEY_ATTRIBUTES:=x}") [[ -e "${list[scroll]}" ]] && { clear_screen status_line "${list[scroll]}" @@ -1008,7 +1163,7 @@ key() { ;; # Toggle executable flag. - ${FFF_KEY_EXECUTABLE:=X}) + "${FFF_KEY_EXECUTABLE:=X}") [[ -f ${list[scroll]} && -w ${list[scroll]} ]] && { if [[ -x ${list[scroll]} ]]; then chmod -x "${list[scroll]}" @@ -1021,12 +1176,12 @@ key() { ;; # Show image in terminal. - ${FFF_KEY_IMAGE:=i}) + "${FFF_KEY_IMAGE:=i}") draw_img ;; # Go to dir. - ${FFF_KEY_GO_DIR:=:}) + "${FFF_KEY_GO_DIR:=:}") cmd_line "go to dir: " "dirs" # Let 'cd' know about the current directory. @@ -1038,23 +1193,23 @@ key() { ;; # Go to '$HOME'. - ${FFF_KEY_GO_HOME:='~'}) + "${FFF_KEY_GO_HOME:='~'}") open ~ ;; # Go to trash. - ${FFF_KEY_GO_TRASH:=t}) + "${FFF_KEY_GO_TRASH:=t}") get_os open "$FFF_TRASH" ;; # Go to previous dir. - ${FFF_KEY_PREVIOUS:=-}) + "${FFF_KEY_PREVIOUS:=-}") open "$OLDPWD" ;; # Refresh current dir. - ${FFF_KEY_REFRESH:=e}) + "${FFF_KEY_REFRESH:=e}") open "$PWD" ;; @@ -1070,7 +1225,7 @@ key() { # Quit and store current directory in a file for CD on exit. # Don't allow user to redefine 'q' so a bad keybinding doesn't # remove the option to quit. - q) + "q") : "${FFF_CD_FILE:=${XDG_CACHE_HOME:=${HOME}/.cache}/fff/.fff_d}" [[ -w $FFF_CD_FILE ]] && From 32a3feef4cb44eb8dfc95e19a2f7ad6322d40e5c Mon Sep 17 00:00:00 2001 From: sidd-dino Date: Sun, 6 Sep 2020 09:19:45 +0530 Subject: [PATCH 3/9] CODE: Icons based on extension and icons for special file --- fff | 317 +++++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 274 insertions(+), 43 deletions(-) diff --git a/fff b/fff index 813cc08..e2917a9 100755 --- a/fff +++ b/fff @@ -157,9 +157,7 @@ get_icon() { local file_name=${file_path##*/} local file_ext="${file_name##*.}" - printf "%s\n" "$file_path|$file_name|$file_ext" >> /home/sidd_dino/Documents/PROJECTS/IN_GIT/fff/fff_log - - # Directories + # Icons for directories [[ -d "$file_path" ]] && { case "$file_name" in # English @@ -223,7 +221,7 @@ get_icon() { esac } - # Files with no extension + # Icons for files with no extension [[ "$file_path" == *"/$file_ext" ]] && { case "$file_name" in '_gvimrc' ) printf -- ''; return ;; @@ -254,48 +252,282 @@ get_icon() { 'README' ) printf -- ''; return ;; 'sxhkdrc' ) printf -- ''; return ;; esac - printf -- ''; return + printf -- ''; return } - # Hidden files with no extension + # Icon for files with the name starting with '.' + # without an extension [[ "$file_name" == ".$file_ext" ]] && { case $file_name in - '.bash_aliases' ) printf -- ''; return ;; - '.bash_history' ) printf -- ''; return ;; - '.bash_logout' ) printf -- ''; return ;; - '.bash_profile' ) printf -- ''; return ;; - '.bashprofile' ) printf -- ''; return ;; - '.bashrc' ) printf -- ''; return ;; - '.dmrc' ) printf -- ''; return ;; - '.DS_Store' ) printf -- ''; return ;; - '.fasd' ) printf -- ''; return ;; - '.fehbg' ) printf -- ''; return ;; - '.gitattributes' ) printf -- ''; return ;; - '.gitconfig' ) printf -- ''; return ;; - '.gitignore' ) printf -- ''; return ;; - '.gvimrc' ) printf -- ''; return ;; - '.inputrc' ) printf -- ''; return ;; - '.jack-settings' ) printf -- ''; return ;; - '.ncmpcpp' ) printf -- ''; return ;; - '.nvidia-settings-rc' ) printf -- ''; return ;; - '.pam_environment' ) printf -- ''; return ;; - '.profile' ) printf -- ''; return ;; - '.recently-used' ) printf -- ''; return ;; - '.selected_editor' ) printf -- ''; return ;; - '.vim' ) printf -- ''; return ;; - '.viminfo' ) printf -- ''; return ;; - '.vimrc' ) printf -- ''; return ;; - '.Xauthority' ) printf -- ''; return ;; - '.Xdefaults' ) printf -- ''; return ;; - '.xinitrc' ) printf -- ''; return ;; - '.xinputrc' ) printf -- ''; return ;; - '.Xresources' ) printf -- ''; return ;; - '.zshrc' ) printf -- ''; return ;; + '.bash_aliases' ) printf -- ''; return ;; + '.bash_history' ) printf -- ''; return ;; + '.bash_logout' ) printf -- ''; return ;; + '.bash_profile' ) printf -- ''; return ;; + '.bashprofile' ) printf -- ''; return ;; + '.bashrc' ) printf -- ''; return ;; + '.dmrc' ) printf -- ''; return ;; + '.DS_Store' ) printf -- ''; return ;; + '.fasd' ) printf -- ''; return ;; + '.fehbg' ) printf -- ''; return ;; + '.gitattributes' ) printf -- ''; return ;; + '.gitconfig' ) printf -- ''; return ;; + '.gitignore' ) printf -- ''; return ;; + '.gvimrc' ) printf -- ''; return ;; + '.inputrc' ) printf -- ''; return ;; + '.jack-settings' ) printf -- ''; return ;; + '.ncmpcpp' ) printf -- ''; return ;; + '.nvidia-settings-rc' ) printf -- ''; return ;; + '.pam_environment' ) printf -- ''; return ;; + '.profile' ) printf -- ''; return ;; + '.recently-used' ) printf -- ''; return ;; + '.selected_editor' ) printf -- ''; return ;; + '.vim' ) printf -- ''; return ;; + '.viminfo' ) printf -- ''; return ;; + '.vimrc' ) printf -- ''; return ;; + '.Xauthority' ) printf -- ''; return ;; + '.Xdefaults' ) printf -- ''; return ;; + '.xinitrc' ) printf -- ''; return ;; + '.xinputrc' ) printf -- ''; return ;; + '.Xresources' ) printf -- ''; return ;; + '.zshrc' ) printf -- ''; return ;; esac + printf -- ''; return } - printf -- ''; return + # Icon for files whose names have an extension + [[ "$file_name" == *"."* ]] && { + case $file_name in + '.gitlab-ci.yml' ) printf -- ''; return ;; + 'cmakelists.txt' ) printf -- ''; return ;; + 'a.out' ) printf -- ''; return ;; + 'config.ac' ) printf -- ''; return ;; + 'config.m4' ) printf -- ''; return ;; + 'config.mk' ) printf -- ''; return ;; + 'config.ru' ) printf -- ''; return ;; + 'docker-compose.yml' ) printf -- ''; return ;; + 'exact-match-case-sensitive-1.txt' ) printf -- 'X1'; return ;; + 'favicon.ico' ) printf -- ''; return ;; + 'gruntfile.coffee' ) printf -- ''; return ;; + 'gruntfile.js' ) printf -- ''; return ;; + 'gruntfile.ls' ) printf -- ''; return ;; + 'gulpfile.coffee' ) printf -- ''; return ;; + 'gulpfile.js' ) printf -- ''; return ;; + 'gulpfile.ls' ) printf -- ''; return ;; + 'LICENSE.md' ) printf -- ''; return ;; + 'LICENSE.txt' ) printf -- ''; return ;; + 'Makefile.ac' ) printf -- ''; return ;; + 'Makefile.in' ) printf -- ''; return ;; + 'mimeapps.list' ) printf -- ''; return ;; + 'mix.lock' ) printf -- ''; return ;; + 'package-lock.json' ) printf -- ''; return ;; + 'package.json' ) printf -- ''; return ;; + 'react.jsx' ) printf -- ''; return ;; + 'README.markdown' ) printf -- ''; return ;; + 'README.md' ) printf -- ''; return ;; + 'README.rst' ) printf -- ''; return ;; + 'README.txt' ) printf -- ''; return ;; + 'user-dirs.dirs' ) printf -- ''; return ;; + 'webpack.config.js' ) printf -- ''; return ;; + esac + case $file_ext in + '7z' ) printf -- ''; return ;; + 'a' ) printf -- ''; return ;; + 'ai' ) printf -- ''; return ;; + 'apk' ) printf -- ''; return ;; + 'asm' ) printf -- ''; return ;; + 'asp' ) printf -- ''; return ;; + 'aup' ) printf -- ''; return ;; + 'avi' ) printf -- ''; return ;; + 'awk' ) printf -- ''; return ;; + 'bash' ) printf -- ''; return ;; + 'bat' ) printf -- ''; return ;; + 'bmp' ) printf -- ''; return ;; + 'bz2' ) printf -- ''; return ;; + 'c' ) printf -- ''; return ;; + 'c++' ) printf -- ''; return ;; + 'cab' ) printf -- ''; return ;; + 'cbr' ) printf -- ''; return ;; + 'cbz' ) printf -- ''; return ;; + 'cc' ) printf -- ''; return ;; + 'class' ) printf -- ''; return ;; + 'clj' ) printf -- ''; return ;; + 'cljc' ) printf -- ''; return ;; + 'cljs' ) printf -- ''; return ;; + 'cmake' ) printf -- ''; return ;; + 'coffee' ) printf -- ''; return ;; + 'conf' ) printf -- ''; return ;; + 'cp' ) printf -- ''; return ;; + 'cpio' ) printf -- ''; return ;; + 'cpp' ) printf -- ''; return ;; + 'cs' ) printf -- ''; return ;; + 'csh' ) printf -- ''; return ;; + 'css' ) printf -- ''; return ;; + 'cue' ) printf -- ''; return ;; + 'cvs' ) printf -- ''; return ;; + 'cxx' ) printf -- ''; return ;; + 'd' ) printf -- ''; return ;; + 'dart' ) printf -- ''; return ;; + 'db' ) printf -- ''; return ;; + 'deb' ) printf -- ''; return ;; + 'diff' ) printf -- ''; return ;; + 'dll' ) printf -- ''; return ;; + 'doc' ) printf -- ''; return ;; + 'docx' ) printf -- ''; return ;; + 'dump' ) printf -- ''; return ;; + 'edn' ) printf -- ''; return ;; + 'eex' ) printf -- ''; return ;; + 'efi' ) printf -- ''; return ;; + 'ejs' ) printf -- ''; return ;; + 'elf' ) printf -- ''; return ;; + 'elm' ) printf -- ''; return ;; + 'epub' ) printf -- ''; return ;; + 'erl' ) printf -- ''; return ;; + 'ex' ) printf -- ''; return ;; + 'exe' ) printf -- ''; return ;; + 'exs' ) printf -- ''; return ;; + 'f#' ) printf -- ''; return ;; + 'fi' ) printf -- '|'; return ;; + 'fish' ) printf -- ''; return ;; + 'flac' ) printf -- ''; return ;; + 'flv' ) printf -- ''; return ;; + 'fs' ) printf -- ''; return ;; + 'fsi' ) printf -- ''; return ;; + 'fsscript' ) printf -- ''; return ;; + 'fsx' ) printf -- ''; return ;; + 'gem' ) printf -- ''; return ;; + 'gemspec' ) printf -- ''; return ;; + 'gif' ) printf -- ''; return ;; + 'go' ) printf -- ''; return ;; + 'gz' ) printf -- ''; return ;; + 'gzip' ) printf -- ''; return ;; + 'h' ) printf -- ''; return ;; + 'haml' ) printf -- ''; return ;; + 'hbs' ) printf -- ''; return ;; + 'hh' ) printf -- ''; return ;; + 'hpp' ) printf -- ''; return ;; + 'hrl' ) printf -- ''; return ;; + 'hs' ) printf -- ''; return ;; + 'htaccess' ) printf -- ''; return ;; + 'htm' ) printf -- ''; return ;; + 'html' ) printf -- ''; return ;; + 'htpasswd' ) printf -- ''; return ;; + 'hxx' ) printf -- ''; return ;; + 'ico' ) printf -- ''; return ;; + 'img' ) printf -- ''; return ;; + 'ini' ) printf -- ''; return ;; + 'iso' ) printf -- ''; return ;; + 'jar' ) printf -- ''; return ;; + 'java' ) printf -- ''; return ;; + 'jl' ) printf -- ''; return ;; + 'jpeg' ) printf -- ''; return ;; + 'jpg' ) printf -- ''; return ;; + 'js' ) printf -- ''; return ;; + 'json' ) printf -- ''; return ;; + 'jsx' ) printf -- ''; return ;; + 'key' ) printf -- ''; return ;; + 'ksh' ) printf -- ''; return ;; + 'leex' ) printf -- ''; return ;; + 'less' ) printf -- ''; return ;; + 'lha' ) printf -- ''; return ;; + 'lhs' ) printf -- ''; return ;; + 'log' ) printf -- ''; return ;; + 'lua' ) printf -- ''; return ;; + 'lzh' ) printf -- ''; return ;; + 'lzma' ) printf -- ''; return ;; + 'm4a' ) printf -- ''; return ;; + 'm4v' ) printf -- ''; return ;; + 'markdown' ) printf -- ''; return ;; + 'md' ) printf -- ''; return ;; + 'mdx' ) printf -- ''; return ;; + 'mjs' ) printf -- ''; return ;; + 'mkv' ) printf -- ''; return ;; + 'ml' ) printf -- 'λ'; return ;; + 'mli' ) printf -- 'λ'; return ;; + 'mov' ) printf -- ''; return ;; + 'mp3' ) printf -- ''; return ;; + 'mp4' ) printf -- ''; return ;; + 'mpeg' ) printf -- ''; return ;; + 'mpg' ) printf -- ''; return ;; + 'msi' ) printf -- ''; return ;; + 'mustache' ) printf -- ''; return ;; + 'nix' ) printf -- ''; return ;; + 'o' ) printf -- ''; return ;; + 'ogg' ) printf -- ''; return ;; + 'pdf' ) printf -- ''; return ;; + 'php' ) printf -- ''; return ;; + 'pl' ) printf -- ''; return ;; + 'pm' ) printf -- ''; return ;; + 'png' ) printf -- ''; return ;; + 'pp' ) printf -- ''; return ;; + 'ppt' ) printf -- ''; return ;; + 'pptx' ) printf -- ''; return ;; + 'ps1' ) printf -- ''; return ;; + 'psb' ) printf -- ''; return ;; + 'psd' ) printf -- ''; return ;; + 'pub' ) printf -- ''; return ;; + 'py' ) printf -- ''; return ;; + 'pyc' ) printf -- ''; return ;; + 'pyd' ) printf -- ''; return ;; + 'pyo' ) printf -- ''; return ;; + 'r' ) printf -- 'ﳒ'; return ;; + 'rake' ) printf -- ''; return ;; + 'rar' ) printf -- ''; return ;; + 'rb' ) printf -- ''; return ;; + 'rc' ) printf -- ''; return ;; + 'rlib' ) printf -- ''; return ;; + 'rmd' ) printf -- ''; return ;; + 'rom' ) printf -- ''; return ;; + 'rpm' ) printf -- ''; return ;; + 'rproj' ) printf -- '鉶'; return ;; + 'rs' ) printf -- ''; return ;; + 'rss' ) printf -- ''; return ;; + 'rtf' ) printf -- ''; return ;; + 's' ) printf -- ''; return ;; + 'sass' ) printf -- ''; return ;; + 'scala' ) printf -- ''; return ;; + 'scss' ) printf -- ''; return ;; + 'sh' ) printf -- ''; return ;; + 'slim' ) printf -- ''; return ;; + 'sln' ) printf -- ''; return ;; + 'so' ) printf -- ''; return ;; + 'sql' ) printf -- ''; return ;; + 'styl' ) printf -- ''; return ;; + 'suo' ) printf -- ''; return ;; + 'swift' ) printf -- ''; return ;; + 't' ) printf -- ''; return ;; + 'tar' ) printf -- ''; return ;; + 'tex' ) printf -- 'ﭨ'; return ;; + 'tgz' ) printf -- ''; return ;; + 'toml' ) printf -- ''; return ;; + 'ts' ) printf -- ''; return ;; + 'tsx' ) printf -- ''; return ;; + 'twig' ) printf -- ''; return ;; + 'vim' ) printf -- ''; return ;; + 'vimrc' ) printf -- ''; return ;; + 'vue' ) printf -- '﵂'; return ;; + 'wav' ) printf -- ''; return ;; + 'webm' ) printf -- ''; return ;; + 'webmanifest' ) printf -- ''; return ;; + 'webp' ) printf -- ''; return ;; + 'xbps' ) printf -- ''; return ;; + 'xcplayground' ) printf -- ''; return ;; + 'xhtml' ) printf -- ''; return ;; + 'xls' ) printf -- ''; return ;; + 'xlsx' ) printf -- ''; return ;; + 'xml' ) printf -- ''; return ;; + 'xul' ) printf -- ''; return ;; + 'xz' ) printf -- ''; return ;; + 'yaml' ) printf -- ''; return ;; + 'yml' ) printf -- ''; return ;; + 'zip' ) printf -- ''; return ;; + 'zsh' ) printf -- ''; return ;; + esac + printf -- ''; return + } + + + printf -- ''; return } status_line() { @@ -448,12 +680,11 @@ print_line() { # Remove all non-printable characters. file_name=${file_name//[^[:print:]]/^[} - icon=$(get_icon "${list[$1]}" ) - - printf "${icon}\n" >> /home/sidd_dino/Documents/PROJECTS/IN_GIT/fff/fff_log - + (( ${FFF_FILE_ICON:=0} == 1 )) && \ + icon="$(get_icon ${list[$1]}) " + printf '\r%b%s\e[m\r' \ - "${file_pre}${format}${icon} " \ + "${file_pre}${format}${icon}"\ "${file_name}${suffix}${file_post}" } From 5ea62e1c75e6905d03767d90849caeb736e67d89 Mon Sep 17 00:00:00 2001 From: sidd-dino Date: Sun, 6 Sep 2020 09:30:29 +0530 Subject: [PATCH 4/9] CODE: Icons bug fix --- fff | 57 ++++++++++++++++++--------------------------------------- 1 file changed, 18 insertions(+), 39 deletions(-) diff --git a/fff b/fff index e2917a9..5023b87 100755 --- a/fff +++ b/fff @@ -152,14 +152,12 @@ get_mime_type() { get_icon() { # $1 Absolute path to the file - - local file_path="$1" - local file_name=${file_path##*/} - local file_ext="${file_name##*.}" - + # $2 name of the file/directory + # $3 the extracted extension from the file name + # Icons for directories - [[ -d "$file_path" ]] && { - case "$file_name" in + [[ -d "$1" ]] && { + case "$1" in # English '.git' ) printf -- ''; return ;; 'Desktop' ) printf -- ''; return ;; @@ -222,8 +220,8 @@ get_icon() { } # Icons for files with no extension - [[ "$file_path" == *"/$file_ext" ]] && { - case "$file_name" in + [[ "$2" == *"/$3" ]] && { + case "$2" in '_gvimrc' ) printf -- ''; return ;; '_vimrc' ) printf -- ''; return ;; 'a.out' ) printf -- ''; return ;; @@ -257,8 +255,8 @@ get_icon() { # Icon for files with the name starting with '.' # without an extension - [[ "$file_name" == ".$file_ext" ]] && { - case $file_name in + [[ "$2" == ".$3" ]] && { + case "$2" in '.bash_aliases' ) printf -- ''; return ;; '.bash_history' ) printf -- ''; return ;; '.bash_logout' ) printf -- ''; return ;; @@ -295,8 +293,8 @@ get_icon() { } # Icon for files whose names have an extension - [[ "$file_name" == *"."* ]] && { - case $file_name in + [[ "$2" == *"."* ]] && { + case "$2" in '.gitlab-ci.yml' ) printf -- ''; return ;; 'cmakelists.txt' ) printf -- ''; return ;; 'a.out' ) printf -- ''; return ;; @@ -330,7 +328,7 @@ get_icon() { 'webpack.config.js' ) printf -- ''; return ;; esac - case $file_ext in + case "$3" in '7z' ) printf -- ''; return ;; 'a' ) printf -- ''; return ;; 'ai' ) printf -- ''; return ;; @@ -681,7 +679,7 @@ print_line() { file_name=${file_name//[^[:print:]]/^[} (( ${FFF_FILE_ICON:=0} == 1 )) && \ - icon="$(get_icon ${list[$1]}) " + icon="$(get_icon "${list[$1]}" "$file_name" "$file_ext") " printf '\r%b%s\e[m\r' \ "${file_pre}${format}${icon}"\ @@ -1120,34 +1118,15 @@ cmd_line() { } key() { - local special_key - # Handle special key presses. [[ $1 == $'\e' ]] && { - special_key+=${1} - - # \e A - # \e [ A - # \e [ 6 ~ - # -- - - - - # 1 2 3 4 - - #* read 2 - read "${read_flags[@]}" -srn 1 - special_key+=${REPLY} - - [[ $REPLY == $'[' ]] && { - #* read 3 - read "${read_flags[@]}" -srn 1 - special_key+=${REPLY} + read "${read_flags[@]}" -rsn 2 - [[ ${REPLY} == [0-9] ]] && { - #* read 4 - read "${read_flags[@]}" -srn 1 - special_key+=${REPLY} - } - } + # Handle a normal escape key press. + [[ ${1}${REPLY} == $'\e\e['* ]] && + read "${read_flags[@]}" -rsn 1 _ + local special_key=${1}${REPLY} } case ${special_key:-$1} in From 2e44ce3d712ec3080d5061a84c816b3bdbac2e34 Mon Sep 17 00:00:00 2001 From: sidd-dino Date: Sun, 6 Sep 2020 09:40:05 +0530 Subject: [PATCH 5/9] CODE: Icons bug fix --- fff | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fff b/fff index 5023b87..9b704ac 100755 --- a/fff +++ b/fff @@ -154,10 +154,10 @@ get_icon() { # $1 Absolute path to the file # $2 name of the file/directory # $3 the extracted extension from the file name - + # Icons for directories [[ -d "$1" ]] && { - case "$1" in + case "$2" in # English '.git' ) printf -- ''; return ;; 'Desktop' ) printf -- ''; return ;; From 6cd51931fac1e8bff0f162190759022349700907 Mon Sep 17 00:00:00 2001 From: sidd-dino Date: Sun, 6 Sep 2020 13:59:24 +0530 Subject: [PATCH 6/9] CODE: code cleanup --- fff | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/fff b/fff index 9b704ac..85a309e 100755 --- a/fff +++ b/fff @@ -249,8 +249,8 @@ get_icon() { 'rakefile' ) printf -- ''; return ;; 'README' ) printf -- ''; return ;; 'sxhkdrc' ) printf -- ''; return ;; + '*' ) printf -- ''; return ;; esac - printf -- ''; return } # Icon for files with the name starting with '.' @@ -288,8 +288,8 @@ get_icon() { '.xinputrc' ) printf -- ''; return ;; '.Xresources' ) printf -- ''; return ;; '.zshrc' ) printf -- ''; return ;; + '*' ) printf -- ''; return ;; esac - printf -- ''; return } # Icon for files whose names have an extension @@ -521,7 +521,6 @@ get_icon() { 'zip' ) printf -- ''; return ;; 'zsh' ) printf -- ''; return ;; esac - printf -- ''; return } From e70edbf5dffcc755d705c28cb34545062649f3ed Mon Sep 17 00:00:00 2001 From: sidd-dino Date: Sun, 6 Sep 2020 18:44:24 +0530 Subject: [PATCH 7/9] CODE: code cleanup --- fff | 505 ++++++++++++++++++++++++++++-------------------------------- 1 file changed, 234 insertions(+), 271 deletions(-) diff --git a/fff b/fff index 85a309e..e549c5b 100755 --- a/fff +++ b/fff @@ -222,34 +222,34 @@ get_icon() { # Icons for files with no extension [[ "$2" == *"/$3" ]] && { case "$2" in - '_gvimrc' ) printf -- ''; return ;; - '_vimrc' ) printf -- ''; return ;; - 'a.out' ) printf -- ''; return ;; - 'authorized_keys' ) printf -- ''; return ;; - 'bspwmrc' ) printf -- ''; return ;; - 'cmakelists.txt' ) printf -- ''; return ;; - 'config' ) printf -- ''; return ;; - 'configure' ) printf -- ''; return ;; - 'dockerfile' ) printf -- ''; return ;; - 'Dockerfile' ) printf -- ''; return ;; - 'dropbox' ) printf -- ''; return ;; - 'exact-match-case-sensitive-2' ) printf -- 'X2'; return ;; - 'gemfile' ) printf -- ''; return ;; - 'ini' ) printf -- ''; return ;; - 'known_hosts' ) printf -- ''; return ;; - 'ledger' ) printf -- ''; return ;; - 'license' ) printf -- ''; return ;; - 'LICENSE' ) printf -- ''; return ;; - 'Makefile' ) printf -- ''; return ;; - 'makefile' ) printf -- ''; return ;; - 'node_modules' ) printf -- ''; return ;; - 'playlists' ) printf -- ''; return ;; - 'procfile' ) printf -- ''; return ;; - 'Rakefile' ) printf -- ''; return ;; - 'rakefile' ) printf -- ''; return ;; - 'README' ) printf -- ''; return ;; - 'sxhkdrc' ) printf -- ''; return ;; - '*' ) printf -- ''; return ;; + '_gvimrc' | '_vimrc' |\ + 'bspwmrc' |'cmakelists.txt'|\ + 'config' | 'Makefile' |\ + 'makefile' | 'sxhkdrc' |\ + 'ini' ) printf -- ''; return ;; + + 'authorized_keys' |\ + 'known_hosts' |\ + 'license' |\ + 'LICENSE' ) printf -- ''; return ;; + + 'gemfile' |\ + 'Rakefile' |\ + 'rakefile' ) printf -- ''; return ;; + + 'a.out' |\ + 'configure' ) printf -- ''; return ;; + + 'dockerfile' ) printf -- ''; return ;; + 'Dockerfile' ) printf -- ''; return ;; + 'dropbox' ) printf -- ''; return ;; + 'exact-match-case-sensitive-2' ) printf -- 'X2'; return ;; + 'ledger' ) printf -- ''; return ;; + 'node_modules' ) printf -- ''; return ;; + 'playlists' ) printf -- ''; return ;; + 'procfile' ) printf -- ''; return ;; + 'README' ) printf -- ''; return ;; + '*' ) printf -- ''; return ;; esac } @@ -257,37 +257,40 @@ get_icon() { # without an extension [[ "$2" == ".$3" ]] && { case "$2" in - '.bash_aliases' ) printf -- ''; return ;; - '.bash_history' ) printf -- ''; return ;; - '.bash_logout' ) printf -- ''; return ;; - '.bash_profile' ) printf -- ''; return ;; - '.bashprofile' ) printf -- ''; return ;; - '.bashrc' ) printf -- ''; return ;; - '.dmrc' ) printf -- ''; return ;; - '.DS_Store' ) printf -- ''; return ;; - '.fasd' ) printf -- ''; return ;; + '.bash_aliases' |\ + '.bash_history' |\ + '.bash_logout' |\ + '.bash_profile' |\ + '.bashprofile' |\ + '.bashrc' |\ + '.dmrc' |\ + '.DS_Store' |\ + '.fasd' |\ + '.gitattributes' |\ + '.gitconfig' |\ + '.gitignore' |\ + '.inputrc' |\ + '.jack-settings' |\ + '.nvidia-settings-rc' |\ + '.pam_environment' |\ + '.profile' |\ + '.recently-used' |\ + '.selected_editor' |\ + '.Xauthority' |\ + '.Xdefaults' |\ + '.xinitrc' |\ + '.xinputrc' |\ + '.Xresources' |\ + '.zshrc' ) printf -- ''; return ;; + + '.vim' |\ + '.viminfo' |\ + '.vimrc' ) printf -- ''; return ;; + '.fehbg' ) printf -- ''; return ;; - '.gitattributes' ) printf -- ''; return ;; - '.gitconfig' ) printf -- ''; return ;; - '.gitignore' ) printf -- ''; return ;; '.gvimrc' ) printf -- ''; return ;; - '.inputrc' ) printf -- ''; return ;; - '.jack-settings' ) printf -- ''; return ;; '.ncmpcpp' ) printf -- ''; return ;; - '.nvidia-settings-rc' ) printf -- ''; return ;; - '.pam_environment' ) printf -- ''; return ;; - '.profile' ) printf -- ''; return ;; - '.recently-used' ) printf -- ''; return ;; - '.selected_editor' ) printf -- ''; return ;; - '.vim' ) printf -- ''; return ;; - '.viminfo' ) printf -- ''; return ;; - '.vimrc' ) printf -- ''; return ;; - '.Xauthority' ) printf -- ''; return ;; - '.Xdefaults' ) printf -- ''; return ;; - '.xinitrc' ) printf -- ''; return ;; - '.xinputrc' ) printf -- ''; return ;; - '.Xresources' ) printf -- ''; return ;; - '.zshrc' ) printf -- ''; return ;; + '*' ) printf -- ''; return ;; esac } @@ -295,231 +298,191 @@ get_icon() { # Icon for files whose names have an extension [[ "$2" == *"."* ]] && { case "$2" in - '.gitlab-ci.yml' ) printf -- ''; return ;; - 'cmakelists.txt' ) printf -- ''; return ;; - 'a.out' ) printf -- ''; return ;; - 'config.ac' ) printf -- ''; return ;; - 'config.m4' ) printf -- ''; return ;; + 'cmakelists.txt' |\ + 'Makefile.ac' |\ + 'Makefile.in' |\ + 'mimeapps.list' |\ + 'user-dirs.dirs' ) printf -- ''; return ;; + + 'README.markdown' |\ + 'README.md' |\ + 'README.rst' |\ + 'README.txt' ) printf -- ''; return ;; + + 'config.ac' |\ + 'config.m4' |\ 'config.mk' ) printf -- ''; return ;; + + 'gruntfile.coffee' |\ + 'gruntfile.js' |\ + 'gruntfile.ls' ) printf -- ''; return ;; + + 'package-lock.json' |\ + 'package.json' |\ + 'webpack.config.js' ) printf -- ''; return ;; + + 'gulpfile.coffee' |\ + 'gulpfile.js' |\ + 'gulpfile.ls' ) printf -- ''; return ;; + + 'LICENSE.txt' |\ + 'LICENSE.md' ) printf -- ''; return ;; + + + '.gitlab-ci.yml' ) printf -- ''; return ;; 'config.ru' ) printf -- ''; return ;; 'docker-compose.yml' ) printf -- ''; return ;; 'exact-match-case-sensitive-1.txt' ) printf -- 'X1'; return ;; 'favicon.ico' ) printf -- ''; return ;; - 'gruntfile.coffee' ) printf -- ''; return ;; - 'gruntfile.js' ) printf -- ''; return ;; - 'gruntfile.ls' ) printf -- ''; return ;; - 'gulpfile.coffee' ) printf -- ''; return ;; - 'gulpfile.js' ) printf -- ''; return ;; - 'gulpfile.ls' ) printf -- ''; return ;; - 'LICENSE.md' ) printf -- ''; return ;; - 'LICENSE.txt' ) printf -- ''; return ;; - 'Makefile.ac' ) printf -- ''; return ;; - 'Makefile.in' ) printf -- ''; return ;; - 'mimeapps.list' ) printf -- ''; return ;; 'mix.lock' ) printf -- ''; return ;; - 'package-lock.json' ) printf -- ''; return ;; - 'package.json' ) printf -- ''; return ;; 'react.jsx' ) printf -- ''; return ;; - 'README.markdown' ) printf -- ''; return ;; - 'README.md' ) printf -- ''; return ;; - 'README.rst' ) printf -- ''; return ;; - 'README.txt' ) printf -- ''; return ;; - 'user-dirs.dirs' ) printf -- ''; return ;; - 'webpack.config.js' ) printf -- ''; return ;; esac case "$3" in - '7z' ) printf -- ''; return ;; - 'a' ) printf -- ''; return ;; - 'ai' ) printf -- ''; return ;; - 'apk' ) printf -- ''; return ;; - 'asm' ) printf -- ''; return ;; - 'asp' ) printf -- ''; return ;; - 'aup' ) printf -- ''; return ;; - 'avi' ) printf -- ''; return ;; - 'awk' ) printf -- ''; return ;; - 'bash' ) printf -- ''; return ;; - 'bat' ) printf -- ''; return ;; - 'bmp' ) printf -- ''; return ;; - 'bz2' ) printf -- ''; return ;; - 'c' ) printf -- ''; return ;; - 'c++' ) printf -- ''; return ;; - 'cab' ) printf -- ''; return ;; - 'cbr' ) printf -- ''; return ;; - 'cbz' ) printf -- ''; return ;; - 'cc' ) printf -- ''; return ;; - 'class' ) printf -- ''; return ;; - 'clj' ) printf -- ''; return ;; - 'cljc' ) printf -- ''; return ;; - 'cljs' ) printf -- ''; return ;; - 'cmake' ) printf -- ''; return ;; - 'coffee' ) printf -- ''; return ;; - 'conf' ) printf -- ''; return ;; - 'cp' ) printf -- ''; return ;; - 'cpio' ) printf -- ''; return ;; - 'cpp' ) printf -- ''; return ;; - 'cs' ) printf -- ''; return ;; - 'csh' ) printf -- ''; return ;; - 'css' ) printf -- ''; return ;; - 'cue' ) printf -- ''; return ;; - 'cvs' ) printf -- ''; return ;; - 'cxx' ) printf -- ''; return ;; - 'd' ) printf -- ''; return ;; - 'dart' ) printf -- ''; return ;; - 'db' ) printf -- ''; return ;; - 'deb' ) printf -- ''; return ;; - 'diff' ) printf -- ''; return ;; - 'dll' ) printf -- ''; return ;; - 'doc' ) printf -- ''; return ;; - 'docx' ) printf -- ''; return ;; - 'dump' ) printf -- ''; return ;; - 'edn' ) printf -- ''; return ;; - 'eex' ) printf -- ''; return ;; - 'efi' ) printf -- ''; return ;; - 'ejs' ) printf -- ''; return ;; - 'elf' ) printf -- ''; return ;; - 'elm' ) printf -- ''; return ;; - 'epub' ) printf -- ''; return ;; - 'erl' ) printf -- ''; return ;; - 'ex' ) printf -- ''; return ;; - 'exe' ) printf -- ''; return ;; - 'exs' ) printf -- ''; return ;; - 'f#' ) printf -- ''; return ;; - 'fi' ) printf -- '|'; return ;; - 'fish' ) printf -- ''; return ;; - 'flac' ) printf -- ''; return ;; - 'flv' ) printf -- ''; return ;; - 'fs' ) printf -- ''; return ;; - 'fsi' ) printf -- ''; return ;; - 'fsscript' ) printf -- ''; return ;; - 'fsx' ) printf -- ''; return ;; - 'gem' ) printf -- ''; return ;; - 'gemspec' ) printf -- ''; return ;; - 'gif' ) printf -- ''; return ;; - 'go' ) printf -- ''; return ;; - 'gz' ) printf -- ''; return ;; - 'gzip' ) printf -- ''; return ;; - 'h' ) printf -- ''; return ;; - 'haml' ) printf -- ''; return ;; - 'hbs' ) printf -- ''; return ;; - 'hh' ) printf -- ''; return ;; - 'hpp' ) printf -- ''; return ;; - 'hrl' ) printf -- ''; return ;; - 'hs' ) printf -- ''; return ;; - 'htaccess' ) printf -- ''; return ;; - 'htm' ) printf -- ''; return ;; - 'html' ) printf -- ''; return ;; - 'htpasswd' ) printf -- ''; return ;; - 'hxx' ) printf -- ''; return ;; - 'ico' ) printf -- ''; return ;; - 'img' ) printf -- ''; return ;; - 'ini' ) printf -- ''; return ;; - 'iso' ) printf -- ''; return ;; - 'jar' ) printf -- ''; return ;; - 'java' ) printf -- ''; return ;; - 'jl' ) printf -- ''; return ;; - 'jpeg' ) printf -- ''; return ;; - 'jpg' ) printf -- ''; return ;; - 'js' ) printf -- ''; return ;; - 'json' ) printf -- ''; return ;; - 'jsx' ) printf -- ''; return ;; - 'key' ) printf -- ''; return ;; - 'ksh' ) printf -- ''; return ;; - 'leex' ) printf -- ''; return ;; - 'less' ) printf -- ''; return ;; - 'lha' ) printf -- ''; return ;; - 'lhs' ) printf -- ''; return ;; - 'log' ) printf -- ''; return ;; - 'lua' ) printf -- ''; return ;; - 'lzh' ) printf -- ''; return ;; - 'lzma' ) printf -- ''; return ;; - 'm4a' ) printf -- ''; return ;; - 'm4v' ) printf -- ''; return ;; - 'markdown' ) printf -- ''; return ;; - 'md' ) printf -- ''; return ;; - 'mdx' ) printf -- ''; return ;; - 'mjs' ) printf -- ''; return ;; - 'mkv' ) printf -- ''; return ;; - 'ml' ) printf -- 'λ'; return ;; - 'mli' ) printf -- 'λ'; return ;; - 'mov' ) printf -- ''; return ;; - 'mp3' ) printf -- ''; return ;; - 'mp4' ) printf -- ''; return ;; - 'mpeg' ) printf -- ''; return ;; - 'mpg' ) printf -- ''; return ;; - 'msi' ) printf -- ''; return ;; - 'mustache' ) printf -- ''; return ;; - 'nix' ) printf -- ''; return ;; - 'o' ) printf -- ''; return ;; - 'ogg' ) printf -- ''; return ;; - 'pdf' ) printf -- ''; return ;; - 'php' ) printf -- ''; return ;; - 'pl' ) printf -- ''; return ;; - 'pm' ) printf -- ''; return ;; - 'png' ) printf -- ''; return ;; - 'pp' ) printf -- ''; return ;; - 'ppt' ) printf -- ''; return ;; - 'pptx' ) printf -- ''; return ;; - 'ps1' ) printf -- ''; return ;; - 'psb' ) printf -- ''; return ;; - 'psd' ) printf -- ''; return ;; - 'pub' ) printf -- ''; return ;; - 'py' ) printf -- ''; return ;; - 'pyc' ) printf -- ''; return ;; - 'pyd' ) printf -- ''; return ;; - 'pyo' ) printf -- ''; return ;; - 'r' ) printf -- 'ﳒ'; return ;; - 'rake' ) printf -- ''; return ;; - 'rar' ) printf -- ''; return ;; - 'rb' ) printf -- ''; return ;; - 'rc' ) printf -- ''; return ;; - 'rlib' ) printf -- ''; return ;; - 'rmd' ) printf -- ''; return ;; - 'rom' ) printf -- ''; return ;; - 'rpm' ) printf -- ''; return ;; - 'rproj' ) printf -- '鉶'; return ;; - 'rs' ) printf -- ''; return ;; - 'rss' ) printf -- ''; return ;; - 'rtf' ) printf -- ''; return ;; - 's' ) printf -- ''; return ;; - 'sass' ) printf -- ''; return ;; - 'scala' ) printf -- ''; return ;; - 'scss' ) printf -- ''; return ;; - 'sh' ) printf -- ''; return ;; - 'slim' ) printf -- ''; return ;; - 'sln' ) printf -- ''; return ;; - 'so' ) printf -- ''; return ;; - 'sql' ) printf -- ''; return ;; - 'styl' ) printf -- ''; return ;; - 'suo' ) printf -- ''; return ;; - 'swift' ) printf -- ''; return ;; - 't' ) printf -- ''; return ;; - 'tar' ) printf -- ''; return ;; - 'tex' ) printf -- 'ﭨ'; return ;; - 'tgz' ) printf -- ''; return ;; - 'toml' ) printf -- ''; return ;; - 'ts' ) printf -- ''; return ;; - 'tsx' ) printf -- ''; return ;; - 'twig' ) printf -- ''; return ;; - 'vim' ) printf -- ''; return ;; - 'vimrc' ) printf -- ''; return ;; - 'vue' ) printf -- '﵂'; return ;; - 'wav' ) printf -- ''; return ;; - 'webm' ) printf -- ''; return ;; - 'webmanifest' ) printf -- ''; return ;; - 'webp' ) printf -- ''; return ;; - 'xbps' ) printf -- ''; return ;; - 'xcplayground' ) printf -- ''; return ;; - 'xhtml' ) printf -- ''; return ;; - 'xls' ) printf -- ''; return ;; - 'xlsx' ) printf -- ''; return ;; - 'xml' ) printf -- ''; return ;; - 'xul' ) printf -- ''; return ;; - 'xz' ) printf -- ''; return ;; - 'yaml' ) printf -- ''; return ;; - 'yml' ) printf -- ''; return ;; - 'zip' ) printf -- ''; return ;; - 'zsh' ) printf -- ''; return ;; + '7z' | 'apk' |\ + 'bz2' | 'cab' |\ + 'cpio'| 'deb' |\ + 'gem' | 'gz' |\ + 'gzip'| 'lha' |\ + 'lzh' | 'lzma' |\ + 'rar' | 'rpm' |\ + 'tar' | 'tgz' |\ + 'xbps'| 'xz' |\ + 'zip' ) printf -- ''; return ;; + + 'bat' | 'conf' |\ + 'cvs' |\ + 'htaccess' |\ + 'htpasswd' |\ + 'ini' | 'rc' |\ + 'toml'| 'yaml' |\ + 'yml' ) printf -- ''; return ;; + + 'asp' | 'awk' |\ + 'bash'| 'csh' |\ + 'efi' | 'elf' |\ + 'fish'| 'ksh' |\ + 'ps1' | 'rom' |\ + 'zsh' ) printf -- ''; return ;; + + 'avi' | 'flv' |\ + 'm4v' | 'mkv' |\ + 'mov' | 'mp4' |\ + 'mpeg'| 'mpg' |\ + 'webm' ) printf -- ''; return ;; + + + 'bmp' | 'gif' |\ + 'ico' | 'jpeg' |\ + 'jpg' | 'png' |\ + 'ppt' | 'pptx' |\ + 'webp' ) printf -- ''; return ;; + + 'aup' | 'cue' |\ + 'flac'| 'm4a' |\ + 'mp3' | 'ogg' |\ + 'wav' ) printf -- ''; return ;; + + 'c' | 'c++' |\ + 'cc' | 'cp' |\ + 'cpp' | 'cxx' |\ + 'h' | 'hpp' ) printf -- ''; return ;; + + 'docx'| 'doc' |\ + 'epub'| 'pdf' |\ + 'rtf' | 'xls' |\ + 'xlsx' ) printf -- ''; return ;; + + 'ejs' | 'haml' |\ + 'htm' | 'html' |\ + 'slim'| 'xhtml'|\ + 'xml' ) printf -- ''; return ;; + + 'a' | 'cmake' |\ + 'jl' | 'o' |\ + 'so' ) printf -- ''; return ;; + + 'asm' | 'css' |\ + 'less'| 's' |\ + 'sh' ) printf -- ''; return ;; + + 'db' | 'dump' |\ + 'img' | 'iso' |\ + 'sql' ) printf -- ''; return ;; + + 'f#' | 'fs' |\ + 'fsi' | 'fsx' |\ + 'fsscript' ) printf -- ''; return ;; + + 'markdown' |\ + 'md' | 'mdx' |\ + 'rmd' ) printf -- ''; return ;; + + 'gemspec' |\ + 'rake'| 'rb' ) printf -- ''; return ;; + + 'dll' | 'exe' |\ + 'msi' ) printf -- ''; return ;; + + 'eex' | 'ex' |\ + 'exs' | 'leex' ) printf -- ''; return ;; + + 'class' |\ + 'jar' | 'java' ) printf -- ''; return ;; + + 'mustache' |\ + 'hbs' ) printf -- ''; return ;; + + 'json' |\ + 'webmanifest' ) printf -- ''; return ;; + + 'py' | 'pyc' |\ + 'pyd' | 'pyo' ) printf -- ''; return ;; + + 'cbr' | 'cbz' ) printf -- ''; return ;; + 'clj' | 'cljc' ) printf -- ''; return ;; + 'cljs'| 'edn' ) printf -- ''; return ;; + 'hrl' | 'erl' ) printf -- ''; return ;; + 'hh' | 'hxx' ) printf -- ''; return ;; + 'hs' | 'lhs' ) printf -- ''; return ;; + 'js' | 'mjs' ) printf -- ''; return ;; + 'jsx' | 'tsx' ) printf -- ''; return ;; + 'key' | 'pub' ) printf -- ''; return ;; + 'ml' | 'mli' ) printf -- 'λ'; return ;; + 'pl' | 'pm' ) printf -- ''; return ;; + 'vim' | 'vimrc' ) printf -- ''; return ;; + 'psb' | 'psd' ) printf -- ''; return ;; + 'rlib'| 'rs' ) printf -- ''; return ;; + 'sass'| 'scss' ) printf -- ''; return ;; + 'sln' | 'suo' ) printf -- ''; return ;; + + 'coffee' ) printf -- ''; return ;; + 'ai' ) printf -- ''; return ;; + 'cs' ) printf -- ''; return ;; + 'd' ) printf -- ''; return ;; + 'dart' ) printf -- ''; return ;; + 'diff' ) printf -- ''; return ;; + 'elm' ) printf -- ''; return ;; + 'fi' ) printf -- '|'; return ;; + 'go' ) printf -- ''; return ;; + 'log' ) printf -- ''; return ;; + 'lua' ) printf -- ''; return ;; + 'nix' ) printf -- ''; return ;; + 'php' ) printf -- ''; return ;; + 'pp' ) printf -- ''; return ;; + 'r' ) printf -- 'ﳒ'; return ;; + 'rproj' ) printf -- '鉶'; return ;; + 'rss' ) printf -- ''; return ;; + 'scala' ) printf -- ''; return ;; + 'styl' ) printf -- ''; return ;; + 'swift' ) printf -- ''; return ;; + 't' ) printf -- ''; return ;; + 'tex' ) printf -- 'ﭨ'; return ;; + 'ts' ) printf -- ''; return ;; + 'twig' ) printf -- ''; return ;; + 'vue' ) printf -- '﵂'; return ;; + 'xcplayground' ) printf -- ''; return ;; + 'xul' ) printf -- ''; return ;; esac } From ce3645a71cd9932417ebb42bdfbac356e3d3c492 Mon Sep 17 00:00:00 2001 From: sidd-dino Date: Fri, 11 Sep 2020 09:25:06 +0530 Subject: [PATCH 8/9] [code] added ability to toggle icon during runtime --- fff | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/fff b/fff index e549c5b..97f22a7 100755 --- a/fff +++ b/fff @@ -1352,6 +1352,12 @@ key() { draw_img ;; + + "${FFF_DISPLAY_ICON:=I}") + FFF_FILE_ICON=$(( $((FFF_FILE_ICON + 1)) % 2 )) + redraw + ;; + # Go to dir. "${FFF_KEY_GO_DIR:=:}") cmd_line "go to dir: " "dirs" From cde6d5a480d2c9c3d101ee31ca84b181cdf159e6 Mon Sep 17 00:00:00 2001 From: sidd-dino Date: Fri, 11 Sep 2020 09:55:55 +0530 Subject: [PATCH 9/9] [rdme] readme update --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index e993f4a..5eed471 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # fff (*Fucking Fast File-Manager*) +## (/◕ヮ◕)/ with devicons/nerd-font support img @@ -178,6 +179,10 @@ Ctrl+C: exit without 'cd'. # (Off by default) export FFF_HIDDEN=1 +# Show/Hide file icons on open +# (Off by default) +export FFF_FILE_ICON=1 + # Use LS_COLORS to color fff. # (On by default if available) # (Ignores FFF_COL1) @@ -335,6 +340,9 @@ export FFF_KEY_EXECUTABLE="X" # Toggle hidden files. export FFF_KEY_HIDDEN="." + +# Toggle file icons +export FFF_DISPLAY_ICON="I" ``` ### Disabling keybindings.