.dotfiles/.config/hyde/wallbash/scripts/chrome.sh
2026-01-18 21:08:16 -07:00

87 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
# This script generates a Chrome theme based on the Wallbash wallpaper
# Thanks to https://github.com/metafates/ChromiumPywal for the inspiration
# shellcheck disable=SC2154
# shellcheck disable=SC1091
if ! source "${cacheDir}/wallbash/shell-colors"; then
print_log -sec "chrome" -err "Failed to load" " 'shell-colors' file"
exit 1
fi
THEME_NAME="Wallbash"
THEME_DIR="${cacheDir}/wallbash/$THEME_NAME-chrome-theme"
if [ -e "$THEME_DIR" ]; then
rm -fr "$THEME_DIR"
fi
# Converts hex colors into rgb joined with comma
# #fff -> 255, 255, 255
hexToRgb() {
# Remove '#' character from hex color #fff -> fff
plain=${1#*#}
printf "%d, %d, %d" "0x${plain:0:2}" "0x${plain:2:2}" "0x${plain:4:2}"
}
prepare() {
if [ -d "$THEME_DIR" ]; then
rm -rf "$THEME_DIR"
fi
mkdir "$THEME_DIR"
mkdir "$THEME_DIR/images"
# Copy wallpaper so it can be used in theme
background_image="images/theme_ntp_background_norepeat.png"
# shellcheck disable=SC2154
cp "${cacheDir}/wall.set" "$THEME_DIR/$background_image"
}
# shellcheck disable=SC2154
background=$(hexToRgb "${wallbash_pry1}")
# shellcheck disable=SC2154
foreground=$(hexToRgb "${wallbash_txt1}")
# shellcheck disable=SC2154
accent=$(hexToRgb "${wallbash_1xa1}")
# shellcheck disable=SC2154
secondary=$(hexToRgb "${wallbash_pry2}")
# Generates the manifest.json file
# TODO Make this them better
generate() {
# Theme template
cat >"$THEME_DIR/manifest.json" <<EOF
{
"manifest_version": 3,
"version": "1.0",
"name": "$THEME_NAME Theme",
"theme": {
"images": {
"theme_ntp_background" : "$background_image"
},
"colors": {
"frame": [$background],
"frame_inactive": [$background],
"toolbar": [$accent],
"ntp_text": [$foreground],
"ntp_link": [$accent],
"ntp_section": [$secondary],
"button_background": [$foreground],
"toolbar_button_icon": [$foreground],
"toolbar_text": [$foreground],
"omnibox_background": [$background],
"omnibox_text": [$foreground]
},
"properties": {
"ntp_background_alignment": "bottom"
}
}
}
EOF
}
prepare
generate
print_log -sec "wallbash" -stat "generated" "'Wallbash Chrome Theme' at '$THEME_DIR'"