#!/usr/bin/env bash # Keep Alacritty in sync with macOS light/dark appearance. # No Nix rebuild: copies a palette into active-colors.toml; Alacritty reloads via live_config_reload. set -euo pipefail [[ "$(uname -s)" == "Darwin" ]] || exit 0 XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" ALACRITTY_DIR="$XDG_CONFIG_HOME/alacritty" ACTIVE="$ALACRITTY_DIR/active-colors.toml" MARKER="$ALACRITTY_DIR/.last-system-theme" LIGHT="$ALACRITTY_DIR/catppuccin-latte-colors.toml" DARK="$ALACRITTY_DIR/catppuccin-mocha-colors.toml" if [[ ! -f "$LIGHT" || ! -f "$DARK" ]]; then echo "alacritty-sync-system-theme: missing $LIGHT or $DARK (run home-manager switch first)" >&2 exit 1 fi appearance="$(defaults read -g AppleInterfaceStyle 2>/dev/null || true)" if [[ "$appearance" == "Dark" ]]; then want="dark" else want="light" fi mkdir -p "$ALACRITTY_DIR" printf '%s' "$want" >"$MARKER" # Neovim (see nixos/neovim.nix): same file as `theme` on WSL; keep in sync with Appearance. NVIM_THEME="${XDG_DATA_HOME:-$HOME/.local/share}/nvim_color_scheme" mkdir -p "$(dirname "$NVIM_THEME")" printf '%s\n' "$want" >"$NVIM_THEME" if [[ "$want" == "light" ]]; then tmp="$(mktemp "$ALACRITTY_DIR/active-colors.toml.XXXXXX")" cp "$LIGHT" "$tmp" else tmp="$(mktemp "$ALACRITTY_DIR/active-colors.toml.XXXXXX")" cp "$DARK" "$tmp" fi chmod 0644 "$tmp" mv -f "$tmp" "$ACTIVE" # Sync theme to rusty-anchor VT console (best-effort, non-blocking) RUSTY_ANCHOR_KEY="$HOME/.ssh/id_ed25519_phantom_ship" RUSTY_ANCHOR_THEME_FILE="/etc/vt-theme" if [[ -f "$RUSTY_ANCHOR_KEY" ]]; then last_rusty="$ALACRITTY_DIR/.last-rusty-anchor-theme" if [[ "$(cat "$last_rusty" 2>/dev/null)" != "$want" ]]; then ( ssh -i "$RUSTY_ANCHOR_KEY" \ -J danny@phantom-ship \ -o ConnectTimeout=5 \ -o StrictHostKeyChecking=no \ danny@10.0.0.2 \ "echo '$want' | sudo tee $RUSTY_ANCHOR_THEME_FILE > /dev/null && sudo /usr/local/bin/vt-theme '$want' /dev/tty1" \ 2>/dev/null \ && printf '%s' "$want" >"$last_rusty" ) & fi fi