#!/usr/bin/env bash
set -euo pipefail
cmd=${1:-status}
apply_shell_theme() {
  local theme="$1" extension="user-theme@gnome-shell-extensions.gcampax.github.com"
  if command -v gnome-extensions >/dev/null 2>&1 && gnome-extensions info "$extension" >/dev/null 2>&1; then
    gnome-extensions enable "$extension" >/dev/null 2>&1 || true
  fi
  if gsettings list-schemas | grep -qx org.gnome.shell.extensions.user-theme; then
    gsettings set org.gnome.shell.extensions.user-theme name "'$theme'"
  fi
}
case "$cmd" in
  light)
    gsettings set org.gnome.desktop.interface color-scheme "'prefer-light'"
    gsettings set org.gnome.desktop.interface gtk-theme "'BRZ-HealthOS-Light'"
    apply_shell_theme BRZ-HealthOS-Light
    ;;
  dark)
    gsettings set org.gnome.desktop.interface color-scheme "'prefer-dark'"
    gsettings set org.gnome.desktop.interface gtk-theme "'BRZ-HealthOS-Dark'"
    apply_shell_theme BRZ-HealthOS-Dark
    ;;
  default)
    gsettings reset org.gnome.desktop.interface color-scheme
    gsettings reset org.gnome.desktop.interface gtk-theme
    if gsettings list-schemas | grep -qx org.gnome.shell.extensions.user-theme; then
      gsettings reset org.gnome.shell.extensions.user-theme name
    fi
    ;;
  status)
    printf 'mode=%s\ngtk=%s\nicons=%s\ncursor=%s\n' \
      "$(gsettings get org.gnome.desktop.interface color-scheme)" \
      "$(gsettings get org.gnome.desktop.interface gtk-theme)" \
      "$(gsettings get org.gnome.desktop.interface icon-theme)" \
      "$(gsettings get org.gnome.desktop.interface cursor-theme)"
    exit 0
    ;;
  *) echo 'usage: brz-healthos-theme light|dark|default|status' >&2; exit 2;;
esac

# Retain the identity icon overlay so Ubuntu Dock continues to show BRZ icons.
gsettings set org.gnome.desktop.interface icon-theme "'BRZ-HealthOS'"
gsettings reset org.gnome.desktop.interface cursor-theme
