oh-my-bash/lib/spectrum.sh

50 lines
1.6 KiB
Bash
Raw Normal View History

#! bash oh-my-bash.module
2017-03-20 19:51:00 +07:00
# A script to make using 256 colors in bash less painful.
# P.C. Shyamshankar <sykora@lucentbeing.com>
# Copied from http://github.com/sykora/etc/blob/master/zsh/functions/spectrum/
2022-01-19 16:52:15 +09:00
_omb_module_require lib:omb-prompt-colors
# typeset in bash does not have associative arrays, declare does in bash 4.0+
# https://stackoverflow.com/a/6047948
# This library only works for BASH 4.x to keep the minimum compatible for macOS.
# shellcheck disable=SC2034
if [ "${BASH_VERSINFO[0]}" -gt 4 ]; then
_RED='\033[0;31m' # Red Color (For error)
_NC='\033[0m' # No Color (To reset the terminal color)
declare -Ag FX FG BG
FX=(
[reset]="%{^[[00m%}"
[bold]="%{^[[01m%}" [no-bold]="%{^[[22m%}"
[italic]="%{^[[03m%}" [no-italic]="%{^[[23m%}"
[underline]="%{^[[04m%}" [no-underline]="%{^[[24m%}"
[blink]="%{^[[05m%}" [no-blink]="%{^[[25m%}"
[reverse]="%{^[[07m%}" [no-reverse]="%{^[[27m%}"
)
for color in {000..255}; do
FG[$color]="%{^[[38;5;${color}m%}"
BG[$color]="%{^[[48;5;${color}m%}"
done
2017-03-20 19:51:00 +07:00
OSH_SPECTRUM_TEXT=${OSH_SPECTRUM_TEXT:-Arma virumque cano Troiae qui primus ab oris}
2017-03-20 19:51:00 +07:00
# Show all 256 colors with color number
function spectrum_ls() {
for code in {000..255}; do
2022-01-19 16:52:15 +09:00
print -P -- "$code: %{$FG[$code]%}$OSH_SPECTRUM_TEXT%{$_omb_prompt_reset_color%}"
done
}
2017-03-20 19:51:00 +07:00
# Show all 256 colors where the background is set to specific color
function spectrum_bls() {
for code in {000..255}; do
2022-01-19 16:52:15 +09:00
print -P -- "$code: %{$BG[$code]%}$OSH_SPECTRUM_TEXT%{$_omb_prompt_reset_color%}"
done
}
fi