90 lines
2.1 KiB
Bash
Executable File
90 lines
2.1 KiB
Bash
Executable File
#!/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 "$@"
|