dotfiles/.local/bin/vconsole-colors.sh

90 lines
2.1 KiB
Bash
Raw Permalink Normal View History

2026-03-09 00:07:31 -04:00
#!/usr/bin/env bash
SCRIPT_NAME=$(basename "$0")
VERSION="1.0.0"
log() {
local level="$1"
local message="$2"
local timestamp
timestamp=$(date "+%Y-%m-%d %H:%M:%S")
echo "[${timestamp}] [${level}] ${message}" >&2
}
check_root() {
if [[ $EUID -ne 0 ]]; then
log "ERROR" "This script must be run with sudo or as root."
exit 1
fi
}
get_real_user() {
USER="${SUDO_USER:-$(whoami)}"
if [[ -z "$USER" ]]; then
log "ERROR" "Unable to determine non-root user."
exit 1
fi
COLOR_FILE="/home/$USER/.cache/wal/colors.sh"
}
validate_color_source() {
if [[ ! -f "$COLOR_FILE" ]]; then
log "ERROR" "Color configuration file not found: $COLOR_FILE"
exit 1
fi
source "$COLOR_FILE"
}
update_vconsole() {
local color_var="$1"
local color_value="$2"
local vconsole_conf="/etc/vconsole.conf"
color_value=$(printf "%s" "$color_value" | tr '[:upper:]' '[:lower:]' | sed 's/^#//')
cp "$vconsole_conf" "${vconsole_conf}.bak"
if grep -q "^COLOR_${color_var}=" "$vconsole_conf"; then
sed -i "s/^COLOR_${color_var}=.*/COLOR_${color_var}=${color_value}/" "$vconsole_conf"
else
echo "COLOR_${color_var}=${color_value}" >> "$vconsole_conf"
fi
}
main() {
while [[ $# -gt 0 ]]; do
case "$1" in
-h|--help)
echo "Usage: (as root) $SCRIPT_NAME [options]"
echo "Updates vconsole.conf with pywal color scheme"
echo " -h, --help Show this help message"
echo " -v, --version Show script version"
exit 0
;;
-v|--version)
echo "$SCRIPT_NAME version $VERSION"
exit 0
;;
*)
log "ERROR" "Unknown option: $1"
exit 1
;;
esac
done
check_root
get_real_user
validate_color_source
for i in {0..15}; do
color_var="color$i"
if [[ -n "${!color_var:-}" ]]; then
update_vconsole "$i" "${!color_var}"
fi
done
log "INFO" "vconsole.conf updated successfully!"
}
main "$@"