#!/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 "$@"