#!/bin/bash
# lastact: arturo@2024-02-23
# desc: Configurar las opciones del gestor de energía, salvapantallas y bloqueo en XFCE Vitalinux

# 1) Importamos la funciones de bash:
FICHFUNCS="/usr/bin/vx-funcs-bash"
[ -f "${FICHFUNCS}" ] && . "${FICHFUNCS}" "null"

# 2) Preparamos la auditoria:
LOG="$(basename "${0}").log"
vx-log_xsession -o "${LOG}"
TEXTO="Gestión de Energía y Salvapantallas"
vx-echo_log_titulo1 "SRV-GESTION-ENERGIA-Y-SALVAPANTALLAS" "${TEXTO}"

function set_configuracion() {
    # "${COMANDO[@]}" --channel "${CANAL}" --property "${PARAM}" --set "${VALOR}"
    # Comprobamos si existe el parámetro indicado en el canal:
    _VALOR="$("${COMANDO[@]}" --channel "${CANAL}" --property "${PARAM}" 2> /dev/null)"
    if [[ "${_VALOR}" ]] ; then
        "${COMANDO[@]}" --channel "${CANAL}" --property "${PARAM}" --set "${VALOR}"
        elif [[ ! "${_VALOR}" && "${TIPO}" != "null" ]]  ; then
        echo "#> ${PARAM} no existe. Se va a tratar de crear..."
        "${COMANDO[@]}" --channel "${CANAL}" --property "${PARAM}" --set "${VALOR}" --create --type "${TIPO}"
    fi
    echo "#> $(whoami)/${USUGRAF} - ${CANAL}: ${PARAM} => ${VALOR}"
}

function salir() {
    # Help-Begin: Descripción de la ayuda de la función:
    AYUDA='Ayuda: Debes pasar al menos tres parámetros:
    # 1) "canal": xfce4-power-manager xfce4-screensaver
    # 2) "parámetro": Parámetro a configurar del canal seleccionado
    # 3) "valor": Valor a asignar al parámetro anterior
    # 4) "tipo": Tipo de variable (necesario en el caso de que el parámetro no exista)'
    EJEMPLOS=("${0} xfce4-power-manager /xfce4-power-manager/dpms-on-ac-off 30")
    EJEMPLOS+=("${0} xfce4-power-manager /xfce4-power-manager/blank-on-ac 15")
    EJEMPLOS+=("${0} xfce4-screensaver /lock/enabled true")
    EJEMPLOS+=("${0} xfce4-screensaver /lock/saver-activation/enabled true")
    # Help-End
    vx-show_help "${0}" "${AYUDA}" "${EJEMPLOS[@]}" && exit 0
}

if vx-check_need_help "${1}" || [[ -z "${3}" ]]; then
    salir
fi

# Comprobamos si el canal indicado es correcto:
CANAL="${1}"
! [[ "${CANAL}" =~ ^xfce4-power-manager$|^xfce4-screensaver$ ]] && salir
PARAM="${2}"
VALOR="${3}"
TIPO="${4:-"null"}"
USUGRAF="$(vx-usuario-grafico)"

# Comprobamos si el usuario que lanza el script es el root:
[[ "$(whoami)" != "root" ]] && \
{
    COMANDO=("DISPLAY=:0" "xfconf-query")
    ISROOT="false"
} || \
{
    COMANDO=("vx-runas" "${USUGRAF}" "xfconf-query")
    ISROOT="true"
}

LISTA=(/xfce4-power-manager/blank-on-ac
    /xfce4-power-manager/dpms-on-ac-off
    /xfce4-power-manager/dpms-on-ac-sleep
    /xfce4-power-manager/power-button-action
/xfce4-power-manager/show-tray-icon)

set_configuracion

FICH_SKEL="/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/${CANAL}.xml"
FICH_HOME="$(vx-home-usuario-grafico)/.config/xfce4/xfconf/xfce-perchannel-xml/${CANAL}.xml"
if "${ISROOT}" && [[ -f "${FICH_SKEL}" && -f "${FICH_HOME}" ]] ; then
    cp "${FICH_HOME}" "${FICH_SKEL}" && \
    echo "#> Copy as Root: ${FICH_HOME} => ${FICH_SKEL}"
fi

exit 0