summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDylan Araps <dylan.araps@gmail.com>2019-01-13 13:45:17 +0200
committerDylan Araps <dylan.araps@gmail.com>2019-01-13 13:45:17 +0200
commitc1691d082ae40194ec65f10db77b24da54512ec8 (patch)
treef4ac7704830f81624d9cff66efed20acba7093c9
parentb6cfad97c22887e9897ff492baeda2de61d468c8 (diff)
support for LS_COLORS
-rwxr-xr-xfff70
1 files changed, 32 insertions, 38 deletions
diff --git a/fff b/fff
index e139784..cbb7d06 100755
--- a/fff
+++ b/fff
@@ -70,6 +70,13 @@ get_cursor_pos() {
IFS='[;' read -sp $'\e[6n' -d R -rs _ y _
}
+get_ls_colors() {
+ ls_cols="${LS_COLORS//\*./file_}"
+ ls_cols="${ls_cols//=/=\'}"
+ ls_cols="${ls_cols//:/\';}"
+ source <(printf '%s' "$ls_cols")
+}
+
status_line() {
# Status_line to print when files are marked for operation.
local mark_ui="[${#marked_files[@]}] selected (${file_program[*]}) [p] ->"
@@ -127,54 +134,38 @@ read_dir() {
print_line() {
# Format the list item and print it.
- if [[ ${FFF_LS_COLORS:=on} == on ]]; then
- local file_name="${list[$1]##*/}"
- local file_ext="${file_name##*.}"
+ local file_name="${list[$1]##*/}"
+ # local file_ext="${file_name##*.}"
- if [[ -d ${list[$1]} ]]; then
- local ls_color="${LS_COLORS/*':di='}"
- local format+="\\e[${ls_color/':'*}m"
- local suffix+='/'
+ if [[ -d ${list[$1]} ]]; then
+ local format+="\\e[${di:-3${FFF_COL1:-2}}m"
+ local suffix+='/'
- elif [[ -b ${list[$1]} ]]; then
- local ls_color="${LS_COLORS/*':bd='}"
- local format+="\\e[${LS_COLORS/*':'}m"
+ elif [[ -b ${list[$1]} ]]; then
+ local format+="\\e[${bd}m"
- elif [[ -c ${list[$1]} ]]; then
- local ls_color="${LS_COLORS/*':cd='}"
- local format+="\\e[${LS_COLORS/*':'}m"
+ elif [[ -c ${list[$1]} ]]; then
+ local format+="\\e[${cd}m"
- elif [[ -x ${list[$1]} ]]; then
- local ls_color="${LS_COLORS/*':ex='}"
- local format+="\\e[${LS_COLORS/*':'}m"
+ elif [[ -x ${list[$1]} ]]; then
+ local format+="\\e[${ex}m"
- elif [[ -h ${list[$1]} ]]; then
- local ls_color="${LS_COLORS/*':ln='}"
- local format+="\\e[${LS_COLORS/*':'}m"
+ elif [[ -h ${list[$1]} ]]; then
+ local format+="\\e[${ln}m"
- elif [[ -p ${list[$1]} ]]; then
- local ls_color="${LS_COLORS/*':pi='}"
- local format+="\\e[${LS_COLORS/*':'}m"
+ elif [[ -p ${list[$1]} ]]; then
+ local format+="\\e[${pi}m"
- elif [[ -S ${list[$1]} ]]; then
- local ls_color="${LS_COLORS/*':so='}"
- local format+="\\e[${LS_COLORS/*':'}m"
+ elif [[ -S ${list[$1]} ]]; then
+ local format+="\\e[${so}m"
- elif [[ $file_ext != "$file_name" &&
- $LS_COLORS == *."$file_ext"=* ]]; then
- local ls_color="${LS_COLORS/*.${file_ext}=}"
- local format+="\\e[${ls_color/:*}m"
+ # elif [[ $file_ext != "$file_name" &&
+ # $LS_COLORS == *."$file_ext"=* ]]; then
+ # local ls_color="${LS_COLORS/*.${file_ext}=}"
+ # local format+="\\e[${ls_color/:*}m"
- else
- local ls_color="${LS_COLORS/*':fi='}"
- local format+="\\e[${LS_COLORS/*':'}m"
- fi
else
-
- [[ -d ${list[$1]} ]] && {
- local format+="\\e[1;3${FFF_COL1:-2}m"
- local suffix+='/'
- }
+ local format+="\\e[${fi:-37}m"
fi
# If the list item is under the cursor.
@@ -619,6 +610,9 @@ main() {
((BASH_VERSINFO[0] > 3)) &&
read_flags=(-t 0.05)
+ ((${FFF_LS_COLORS:=1} == 1)) &&
+ get_ls_colors
+
get_os
get_term_size
setup_terminal