Files
Nikolaos Karaolidis 8346e89b9f Update theme engine
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
2025-05-20 09:54:36 +01:00

107 lines
2.1 KiB
Bash

# shellcheck shell=bash
wallpaper=""
color=""
mode=""
flavor=""
contrast=""
set_wallpaper() {
if [[ -f "$1" ]]; then
wallpaper="$(realpath "$1")"
else
echo "Invalid wallpaper path: $1"
exit 1
fi
}
set_color() {
local re='^#([A-Fa-f0-9]{6})$'
if [[ "$1" =~ $re ]]; then
color="$1"
else
echo "Invalid color format: $1"
exit 1
fi
}
set_flavor() {
case "$1" in
content|expressive|fidelity|fruit-salad|monochrome|neutral|rainbow|tonal-spot)
flavor="$1"
;;
*)
echo "Invalid flavor: $1"
exit 1
;;
esac
}
set_contrast() {
if [[ "$1" =~ ^-?[0-1](\.[0-9]+)?$ ]]; then
contrast="$1"
else
echo "Invalid contrast value: $1"
exit 1
fi
}
toggle_mode() {
if [[ "$(cat "$CONFIG"/mode)" = "light" ]]; then
mode="dark"
else
mode="light"
fi
}
usage() {
echo "Usage: $0 [-m {light|dark|toggle}] [-w <file>] [-h <hexcolor>] [-f <flavor>] [-c <contrast>]"
echo " Only one of -w (wallpaper) or -h (hex color) can be used."
echo " Valid flavors: content, expressive, fidelity, fruit-salad, monochrome, neutral, rainbow, tonal-spot"
echo " Contrast must be a number between -1 and 1"
exit 1
}
finish() {
[[ -n "$wallpaper" ]] && rm -f "$CONFIG"/wallpaper && ln -sf "$wallpaper" "$CONFIG"/wallpaper
[[ -n "$color" ]] && rm -f "$CONFIG"/wallpaper && magick -size 1x1 xc:"$color" png:"$CONFIG"/wallpaper
[[ -n "$mode" ]] && echo "$mode" > "$CONFIG"/mode
[[ -n "$flavor" ]] && echo "$flavor" > "$CONFIG"/flavor
[[ -n "$contrast" ]] && echo "$contrast" > "$CONFIG"/contrast
"$INIT" > /dev/null
"$RELOAD" > /dev/null
}
# Parse arguments
while getopts "m:w:h:f:c:" opt; do
case "$opt" in
m)
case "$OPTARG" in
light|dark) mode="$OPTARG" ;;
toggle) toggle_mode ;;
*) usage ;;
esac
;;
w)
[[ -n "$color" ]] && usage
set_wallpaper "$OPTARG"
;;
h)
[[ -n "$wallpaper" ]] && usage
set_color "$OPTARG"
;;
f)
set_flavor "$OPTARG"
;;
c)
set_contrast "$OPTARG"
;;
*)
usage
;;
esac
done
finish