#!/bin/bash
# lastact: arturo@2023-03-31
# desc: script encargado de sincronizar el contenido del Escritorio del usuario con lo que haya en el patrón del Descritorio

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

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

# 2) Comprobamos la lista de usuarios afectados:
EJECUTOR=$(whoami)
declare -a LISTA_USUARIOS
# Comprobamos si esta instalado el paquete vx-dga-l-congelar-escritorio, el cual guarda en /tmp/vx-lista-usuarios-iniciado-sesion los usuarios que han iniciado sesión gráfica:
FICH_LISTA_USUARIOS_INICIO_SESION="/tmp/vx-lista-usuarios-iniciado-sesion"
[[ "${EJECUTOR}" == "root" && -z "${1}" && -f "${FICH_LISTA_USUARIOS_INICIO_SESION}" ]] &&
    LISTA_USUARIOS=($(cat "${FICH_LISTA_USUARIOS_INICIO_SESION}"))
((${#LISTA_USUARIOS[@]} == 0)) && LISTA_USUARIOS=($(vx-funcs-users vx-obtener_lista_usuarios "${@}"))

SERVICIO="SRV-RSYNC-DESKTOP-FILES-RESET"
function vx_reset_files_desktop() {
    USUARIO="${1}"
    DIR_DESKTOP="${2}"
    TEXTO="Reseteamos los ficheros del Escritorio del usuario: ${USUARIO}"
    if [[ -d "${DIR_DESKTOP}" && -d "${DIR_PATRON}" ]]; then
        vx-echo_log_titulo2 "${SERVICIO}" "${TEXTO}"
        PROPIETARIO="${USUARIO}:$(id -gn "${USUARIO}")"
        if rsync --delete -ah --chown="${PROPIETARIO}" "${DIR_PATRON}/" "${DIR_DESKTOP}/" >/dev/null 2>&1; then
            # Hacemos confiables los lanzadores del Escritorio: gio y permiso de ejecución (Xubuntu)
            # vx-gio-desktop-launchers-trusted "${USUARIO}" # Para Lubuntu 22.04
            chmod +x "${DIR_DESKTOP}/"*.desktop # Para Xubuntu 22.04
            vx-colorear_echo "verde" "=> OK: Se ha sincronizado el ${DIR_DESKTOP} del usuario: ${USUARIO}"
        else
            vx-colorear_echo "rojo" "=> ERROR: No se ha sincronizado el ${DIR_DESKTOP} del usuario: ${USUARIO}"
        fi
    fi
}

# 3) Resetemos el contenido del Escritorio del usuario:
DIR_PATRON="/usr/share/vitalinux/skel/Escritorio"
for USUARIO in "${LISTA_USUARIOS[@]}"; do
    #DIR_DESKTOP="$(vx-desktopdir-usuario-grafico "${USUARIO}")"
    DIR_DESKTOP="$(vx-xdg-getdir "${USUARIO}" "XDG_DESKTOP_DIR")"
    vx_reset_files_desktop "${USUARIO}" "${DIR_DESKTOP}"
done
