Files
dotfiles/.config/waybar/scripts/fzf-colors.sh
2025-11-23 11:42:35 +01:00

83 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
#
# NOTE:
# The names, maps, and COLORS arrays are all parallel:
# - names[i]: the color name as defined in theme.css
# - maps[i]: variable to store the hex value
# - COLORS: color config passed to fzf
#
# Add themes by defining the names array in def-colors().
FILE="$XDG_CONFIG_HOME/waybar/theme.css"
def-colors() {
local theme
theme=$(sed 1q "$FILE")
declare -ga names
# Add themes here:
if [[ $theme == *"catppuccin"* ]]; then
names=(
'surface0' 'base' 'rosewater'
'red' 'text' 'red'
'mauve' 'rosewater' 'lavender'
'text' 'mauve' 'red'
'surface1' 'overlay0' 'text'
)
fi
}
get-hex() {
local defs
defs=$(sed -n '3,28p' "$FILE")
local n hex
declare -gA colors
for n in "${names[@]}"; do
read -r _ _ hex < <(grep " $n " <<< "$defs")
hex=${hex%;}
colors[$n]=$hex
done
}
map-colors() {
local -a maps=(
'_cur_bg' '_bg' '_spinner'
'_hl' '_fg' '_header'
'_info' '_pointer' '_marker'
'_cur_fg' '_prompt' '_cur_hl'
'_sel_bg' '_border' '_label'
)
local n
local i=0
for n in "${names[@]}"; do
declare -g "${maps[i]}"="${colors[$n]}"
((i++))
done
}
main() {
def-colors
get-hex
map-colors
# shellcheck disable=SC2154
# These variables are defined dynamically
declare -ga COLORS=(
"--color= bg+:$_cur_bg, bg:$_bg, spinner:$_spinner"
"--color= hl:$_hl, fg:$_fg, header:$_header"
"--color= info:$_info, pointer:$_pointer, marker:$_marker"
"--color= fg+:$_cur_fg, prompt:$_prompt, hl+:$_cur_hl"
"--color=selected-bg:$_sel_bg, border:$_border, label:$_label"
)
export COLORS
}
main