#!/bin/bash
# lastact: arturo@2023-12-12 arturo@2023-11-01
# desc: Lanza nemo-desktop ejecutando previamente instrucciones de configuración y personalización del entorno

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

function vx-xfce4-settings-nemo() {
    # Comprobamos que es el primer inicio gráfico para hacer las configuraciones necesarias, o si se fuerza su ejecución, sino salimos:
    TEXTO="Ejecutamos las configuraciones básicas de xfce4 para poder lanzar nemo-desktop"
    "$(jq -r ".ejecutar.estado" <<<"${FICHCONF}")" && echo "#> ${TEXTO}:" || return 0
    # Ejecutamos las configuraciones especificadas en el fichero JSON
    NUM="1"
    echo "# ${NUM}) Ejecutamos las configuraciones especificadas en ${FICH}"
    IFSANT=$IFS
    IFS=$'\n'
    mapfile -t CONFIGURACIONES < <(jq -c ".configuraciones[]" <<<"${FICHCONF}")
    IFS=$IFSANT
    for CONFIGURACION in "${CONFIGURACIONES[@]}"; do
        DESC="$(jq -r ".desc" <<<"${CONFIGURACION}")"
        EXEC="$(jq -r ".exec" <<<"${CONFIGURACION}")"
        eval "${EXEC}" &&
            {
                RESUL="OK"
                vx-echo_log_ok "# ${DESC} => ${RESUL}"
            } ||
            {
                RESUL="Error"
                vx-echo_log_error "# ${DESC} => ${RESUL}"
            }
    done
}

function vx-nemo-kill() {
    # Matamos nemo-desktop
    TEXTO="Matamos el proceso nemo-desktop"
    vx-colorear_echo "azul" "[$(vx-fecha)] ${TEXTO}"
    pkill -x nemo-desktop
}

function vx-nemo-rm-confuser() {
    TEXTO="Eliminamos ficheros de configuración de Nemo personales"
    vx-colorear_echo "azul" "[$(vx-fecha)] ${TEXTO}"
    LISTADO=(
        ".config/nemo"
    )
    HOMEUSU="$(vx-home-usuario-grafico "${USUARIO}")"
    USUARIO="$(vx-usuario-grafico)"
    getent group "${USUARIO}" >/dev/null 2>&1 &&
        PROPIETARIO="${USUARIO}:${USUARIO}" ||
        PROPIETARIO="${USUARIO}"

    vx-colorear_echo "azul" "=> Eliminando Ficheros de Configuración de Nemo Personales: ${USUARIO}"
    for FICH in "${LISTADO[@]}"; do
        if [[ -e "${HOMEUSU}/${FICH}" ]]; then
            if [[ -e "/etc/skel/${FICH}" ]]; then
                rsync -ah --delete --chown="${PROPIETARIO}" "/etc/skel/${FICH}" "${HOMEUSU}/${FICH}" &&
                    vx-colorear_echo "verde" "=> OK: Se ha reseteado: /etc/skel/${FICH} => ${HOMEUSU}/${FICH}"
            else
                if [[ -f "${HOMEUSU}/${FICH}" ]]; then
                    ! rm -Rf "${HOMEUSU}/${FICH}" &&
                        vx-colorear_echo "rojo" "=> ERROR: No se ha podido eliminar el fichero ${HOMEUSU}/${FICH} ..." ||
                        vx-colorear_echo "verde" "=> OK: Se ha eliminado el fichero ${HOMEUSU}/${FICH} ..."
                elif [[ -d "${HOMEUSU}/${FICH}" ]]; then
                    ! rm -Rf "${HOMEUSU}/${FICH}"/* &&
                        vx-colorear_echo "rojo" "=> ERROR: No se ha podido eliminar el contenido del directorio ${HOMEUSU}/${FICH} ..." ||
                        vx-colorear_echo "verde" "=> OK: Se ha eliminado el contenido del directorio ${HOMEUSU}/${FICH} ..."
                fi
            fi
        fi
    done
    vx-colorear_echo "azul" "=> Terminada eliminación Ficheros de Configuración de Nemo: ${USUARIO}"
}

# 1) Preparamos la auditoria del script:
LOG="$(basename "${0}").log"
vx-log_xsession -o "${LOG}"
TEXTO="Lanzamos el proceso nemo-desktop como gestor del Escritorio"
vx-echo_log_titulo1 "SRV-NEMO-DESKTOP" "${TEXTO}"

# 2) Comprobamos que existe el fichero JSON donde se describen las configuraciones a realizar:
FICH="/usr/share/vitalinux/xfce4/vx-xfce4-settings-nemo.json"
[[ ! -f "${FICH}" ]] && \
echo "# Warning: No existe el archivo de configuración de la sesión de usuario: ${FICH}." || \
{
    FICHCONF="$(<"${FICH}")"
    vx-xfce4-settings-nemo
}

# 3) Comprobamos si se ha recibido el parámetro --reset o --restart
[[ "${1}" =~ ^--reset$|^--restart$ ]] && vx-nemo-kill

# 4) En el caso de resetear eliminamos los ficheros de personalización del entorno de nemo:
[[ "${1}" =~ ^--reset$ ]] && vx-nemo-rm-confuser

# 4) Lanzamos el proceso nemo-desktop:
TEXTO="Lanzando nemo-desktop"
echo "#[$(vx-fecha)]> ${TEXTO}"
nemo-desktop 2> /dev/null &
disown

exit 0