1b799e9762
`gls` seems to be installed by default or on most macOS systems, but its default color scheme sucks. This fix will make sure to only use it if it has been customised prior to running OMZ. Related: #5516, #5520.
56 lines
2.3 KiB
Bash
56 lines
2.3 KiB
Bash
# ls colors
|
|
autoload -U colors && colors
|
|
|
|
# Enable ls colors
|
|
export LSCOLORS="Gxfxcxdxbxegedabagacad"
|
|
|
|
# TODO organise this chaotic logic
|
|
|
|
if [[ "$DISABLE_LS_COLORS" != "true" ]]; then
|
|
# Find the option for using colors in ls, depending on the version
|
|
if [[ "$OSTYPE" == netbsd* ]]; then
|
|
# On NetBSD, test if "gls" (GNU ls) is installed (this one supports colors);
|
|
# otherwise, leave ls as is, because NetBSD's ls doesn't support -G
|
|
gls --color -d . &>/dev/null && alias ls='gls --color=tty'
|
|
elif [[ "$OSTYPE" == openbsd* ]]; then
|
|
# On OpenBSD, "gls" (ls from GNU coreutils) and "colorls" (ls from base,
|
|
# with color and multibyte support) are available from ports. "colorls"
|
|
# will be installed on purpose and can't be pulled in by installing
|
|
# coreutils, so prefer it to "gls".
|
|
gls --color -d . &>/dev/null && alias ls='gls --color=tty'
|
|
colorls -G -d . &>/dev/null && alias ls='colorls -G'
|
|
elif [[ "$OSTYPE" == darwin* ]]; then
|
|
# this is a good alias, it works by default just using $LSCOLORS
|
|
alias ls='ls -G'
|
|
|
|
# only use coreutils ls if there is a dircolors customization present ($LS_COLORS or .dircolors file)
|
|
# otherwise, gls will use the default color scheme which is ugly af
|
|
[[ -n "$LS_COLORS" || -f "$HOME/.dircolors" ]] && gls --color -d . &>/dev/null && alias ls='gls --color=tty'
|
|
else
|
|
# For GNU ls, we use the default ls color theme. They can later be overwritten by themes.
|
|
if [[ -z "$LS_COLORS" ]]; then
|
|
(( $+commands[dircolors] )) && eval "$(dircolors -b)"
|
|
fi
|
|
|
|
ls --color -d . &>/dev/null && alias ls='ls --color=tty' || alias ls='ls -G'
|
|
|
|
# Take advantage of $LS_COLORS for completion as well.
|
|
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
|
|
fi
|
|
fi
|
|
|
|
setopt auto_cd
|
|
setopt multios
|
|
setopt prompt_subst
|
|
|
|
[[ -n "$WINDOW" ]] && SCREEN_NO="%B$WINDOW%b " || SCREEN_NO=""
|
|
|
|
# Apply theming defaults
|
|
PS1="%n@%m:%~%# "
|
|
|
|
# git theming default: Variables for theming the git info prompt
|
|
ZSH_THEME_GIT_PROMPT_PREFIX="git:(" # Prefix at the very beginning of the prompt, before the branch name
|
|
ZSH_THEME_GIT_PROMPT_SUFFIX=")" # At the very end of the prompt
|
|
ZSH_THEME_GIT_PROMPT_DIRTY="*" # Text to display if the branch is dirty
|
|
ZSH_THEME_GIT_PROMPT_CLEAN="" # Text to display if the branch is clean
|