#!/usr/bin/env bash
# Commande de réglage du mode lecture e-ink.
#
#   eink                  active ou désactive
#   eink nb               noir et blanc
#   eink clair            couleurs claires (délavées)
#   eink couleur          pleines couleurs (texture et température seulement)
#   eink texture 0-100    intensité de la texture du papier
#   eink chaud 0-100      température du papier (0 = neutre, 100 = chaud)
#   eink contraste 1.35   contraste (1.0 = neutre)
#   eink reglages         affiche les réglages actuels
#   eink etat             état sur une ligne (utilisé par le widget)

QDBUS=$(command -v qdbus-qt6 || command -v qdbus6 || command -v qdbus)
if [ -z "$QDBUS" ]; then
    echo "Outil qdbus introuvable." >&2
    exit 1
fi

effets() { "$QDBUS" org.kde.KWin /Effects "org.kde.kwin.Effects.$1" einkreader; }
regler() { kwriteconfig6 --file kwinrc --group Effect-einkreader --key "$1" "$2"; }
lire()   { kreadconfig6 --file kwinrc --group Effect-einkreader --key "$1" --default "$2"; }

# Quand l'effet vient d'être (re)chargé, il peut garder en mémoire les réglages
# précédents : on lui demande donc toujours de relire la configuration ensuite.
appliquer() {
    if [ "$(effets isEffectLoaded)" != "true" ]; then
        effets loadEffect > /dev/null
    fi
    effets reconfigureEffect
}

case "$1" in
    "")
        effets toggleEffect > /dev/null
        if [ "$(effets isEffectLoaded)" = "true" ]; then
            effets reconfigureEffect
        fi ;;
    nb)        regler Mode 0; appliquer ;;
    clair)     regler Mode 1; appliquer ;;
    couleur)   regler Mode 2; appliquer ;;
    texture)   regler Texture "${2:?Indique une valeur de 0 à 100}"; appliquer ;;
    chaud)     regler Temperature "${2:?Indique une valeur de 0 à 100}"; appliquer ;;
    contraste) regler Contrast "${2:?Indique une valeur, par exemple 1.35}"; appliquer ;;
    etat)
        echo "$(effets isEffectLoaded) $(lire Mode 0) $(lire Texture 50) $(lire Temperature 40) $(lire Contrast 1.35)" ;;
    reglages)
        echo "Actif      : $(effets isEffectLoaded)"
        echo "Mode       : $(lire Mode 0)  (0 = noir et blanc, 1 = clair, 2 = couleur)"
        echo "Texture    : $(lire Texture 50)"
        echo "Chaud      : $(lire Temperature 40)"
        echo "Contraste  : $(lire Contrast 1.35)" ;;
    *)
        sed -n '3,12p' "$0" | sed 's/^# \{0,1\}//'
        exit 1 ;;
esac
