#!/bin/bash
# ~/bin/matugen-random-wall.sh
export WAYLAND_DISPLAY="${WAYLAND_DISPLAY:-wayland-0}"
export XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR:-/run/user/$(id -u)}"

WALL_DIR="${1:-$HOME/.walls}"
IMAGE_EXTS=("jpg" "jpeg" "png" "webp" "gif")

# Функция получения случайного изображения
get_random_image() {
  local images=()
  for ext in "${IMAGE_EXTS[@]}"; do
    while IFS= read -r -d '' file; do
      images+=("$file")
    done < <(find "$WALL_DIR" -type f -iname "*.$ext" -print0 2>/dev/null)
  done

  if [[ ${#images[@]} -eq 0 ]]; then
    echo "Ошибка: изображения не найдены в $WALL_DIR" >&2
    return 1
  fi
  echo "${images[RANDOM % ${#images[@]}]}"
}

# Функция получения безопасного случайного индекса цвета
get_random_color_index() {
  local image="$1"
  local max_index

  # Запрашиваем JSON с цветами, извлекаем массив и считаем элементы
  # 2>/dev/null скрывает лишние логи, оставляем только чистый JSON
  max_index=$(matugen image "$image" --json hex 2>/dev/null |
    jq -r '.colors[].source_color' 2>/dev/null | wc -l)

  # Если jq не сработал или цветов нет — фоллбэк на 1
  if [[ -z "$max_index" || "$max_index" -eq 0 ]]; then
    max_index=1
  fi

  echo $((RANDOM % max_index))
}

# Получаем случайное изображение
IMAGE=$(get_random_image) || exit 1
echo "→ Выбрано изображение: $IMAGE"

# Получаем валидный случайный индекс цвета
COLOR_INDEX=$(get_random_color_index "$IMAGE")
echo "→ Выбран индекс цвета: $COLOR_INDEX"

# Запускаем matugen
matugen image $IMAGE \
  --source-color-index $COLOR_INDEX \
  -m dark \
  --verbose
notify-send "[INFO]" "wallpapers was changed" -i "$IMAGE"
