#!/bin/bash
# lastact: arturo@2023-04-17
# desc: Hace un backup de las configuraciones de xfconf

FICHFUNCS="/usr/bin/vx-funcs-bash"
[ -f "${FICHFUNCS}" ] && . "${FICHFUNCS}" "null"

# 0) Comprobamos que es el usuario root quien quiere ejecutar el programa, sino salimos:
vx-check_user_root

# 1) Preparamos la auditoria:
LOG="$(basename "${0}").log"
vx-log_xsession -o "${LOG}"

[[ "${1}" ]] && getent passwd "${1}" >/dev/null 2>&1 && USUARIO="${1}"
[[ ! "${USUARIO}" ]] && USUARIO="$(vx-usuario-grafico)"
DIRDATA="/usr/share/vitalinux/vx-xfconf-data"
DIR_XFCONF="$(vx-home-usuario-grafico "${USUARIO}")/.config/xfce4/xfconf/xfce-perchannel-xml"

TITULO="XFCONF-BACKUP"
TEXTO="Ficheros XML de ${USUARIO}: ${DIR_XFCONF}"
vx-echo_log_titulo1 "${TITULO}" "${TEXTO}"

function xfconf_backup() {
    CANAL="${1}"
    TEXTO="Se va a generar el archivo el archivo de backup: ${DIRDATA}/${CANAL}.data"
    vx-echo_log_titulo2 "${TITULO}" "${TEXTO}"
    xfconf-query -c "${CANAL}" -l -v | tr -s " " " " | sed -e "s# #:#1" | tee "${DIRDATA}/${CANAL}.data"
}

# Comprobamos los canales xfconf que están actualmente configurados:
[[ ! -d "${DIR_XFCONF}" ]] &&
    echo "=> Error: No existe el directorio contenedor de los ficheros XML de configuración de XFCONF: ${DIR_XFCONF}" &&
    exit 1
for FICH in "${DIR_XFCONF}"/*.xml; do
    CANAL="$(vx-obtener_nombre_archivo "${FICH}")"
    xfconf_backup "${CANAL}"
done

exit 0
