#!/bin/sh # Alacritty Color Export # Version 0.1.1 # github.com/egeesin # # Exports generated Wal colors to Alacritty config # WARNING: Don't forget to backup your Alacritty config # before execute this script! # # Dependencies: grep, sed # Usage: ./script.sh # ./script.sh # Function to display error and quit die() { printf "ERR: %s\n" "$1" >&2 exit 1 } DEFAULT_MACOS_CONFIG="$HOME"/.config/alacritty/alacritty.yml # Wal generates a shell script that defines color0..color15 SRC="$HOME"/.cache/wal/colors.sh [ -e "$SRC" ] || die "Wal colors not found, exiting script. Have you executed Wal before?" printf "Colors found, source ready.\n" READLINK=$( command -v greadlink || command -v readlink ) # Get config file if [ -n "$1" ]; then [ -e "$1" ] || die "Selected config doesn't exist, exiting script." printf "Config found, destination ready.\n" CFG=$1 [ -L "$1" ] && { printf "Following symlink to config...\n" CFG=$($READLINK -f "$1") } else # Default config path in Mac systems [ -e "$DEFAULT_MACOS_CONFIG" ] || die "Alacritty config not found, exiting script." CFG="$DEFAULT_MACOS_CONFIG" [ -L "$DEFAULT_MACOS_CONFIG" ] && { printf "Following symlink to config...\n" CFG=$($READLINK -f "$DEFAULT_MACOS_CONFIG") } fi # Get hex colors from Wal cache # No need for shellcheck to check this, it comes from pywal # shellcheck disable=SC1090 . "$SRC" # Create temp file for sed results tempfile=$(mktemp) trap 'rm $tempfile' INT TERM EXIT # Delete existing color declarations generated by this script # If begin comment exists if rg -q '^# BEGIN ACE' "$CFG"; then # And if end comment exists if rg -q '^# END ACE' "$CFG"; then # Delete contents of the block printf "Existing generated colors found, replacing new colors...\n" sed '/^# BEGIN ACE/,/^# END ACE/ { /^# BEGIN ACE/! { /^# END ACE/!d; } }' "$CFG" > "$tempfile" \ && cat "$tempfile" > "$CFG" # If no end comment, don't do anything else die "No '# END ACE' comment found, please ensure it is present." fi # If no begin comment found else # Don't do anything and notify user if there's an end comment in the file ! rg -q '^# END ACE' "$CFG" || die "Found '# END ACE' comment, but no '# BEGIN ACE' comment found. Please ensure it is present." printf "There's no existing 'generated' colors, adding comments...\n"; printf '# BEGIN ACE\n# END ACE' >> "$CFG"; fi # Write new color definitions # We know $colorX is unset, we set it by sourcing above # shellcheck disable=SC2154 { sed "/^# BEGIN ACE/ r /dev/stdin" "$CFG" > "$tempfile" < "$CFG" \ && rm "$tempfile" trap - INT TERM EXIT printf "'%s' exported to '%s'\n" "$SRC" "$CFG"